About computing and software development

What are your Computers’ Specifications?

My primary machine is a desktop machine with a:

  • An Intel Core i3 CPU (x86-64).
  • 8 GB of RAM.
  • Intel Corporation Sandy Bridge Integrated Graphics Controller (rev 09)
  • A 2 TB hard-disk.
  • A 21″ Wide LCD Screen by LG.
  • Intel Corporation Cougar Point High Definition Audio Controller.
  • Intel Corporation 82579V Gigabit Network Connection.

I’m running Mageia Linux on it. This desktop computer replaced my older computer which was a:

  • Pentium 4, 2.4 GHz CPU.
  • 2.5 GB of RAM.
  • An ATI Radeon HD 2600 card.
  • One 160 GB Hard-disk and two smaller ones of 80 GB or so.
  • A 19″ LCD Screen by ViewSonic.
  • A standard built-in AC’97 sound-card.

I’m using mostly Free and Open Source Software (FOSS) on it, and try not to depend on non-FOSS software. I documented the reason why I no longer trust non-FOSS software on my technical weblog.

I also have an Acer Aspire 5738DZG laptop with the following specs:

  • Intel Pentium(R) Dual-Core CPU T4300 @ 2.10GHz. (x86-64).
  • ATI Mobility Radeon™ HD 4570 (r700)
  • 15.6″ 3D HD LCD Screen.
  • 3 GB Memory
  • 320 GB Hard Disk Drive.
  • “DVD Super Multi DL drive”
  • Acer Nplify™ 802.11b/g/n.

This dual-boots between Windows 7 Home something and Fedora Linux (which is what I’m using most of the time.).

Which Programming Language did you start with? Which programming languages do you know now?

When I was in the 4th grade (back around 1987), my father bought my family a PC XT machine, with 640 KB of memory, and a colour CGA screen. Using this, my friends and I started learning how to program, first using the BASIC interpreter that was installed on the BIOS and was invoked if you didn’t put a diskette inside, and then using some of the BASIC variants that ran on DOS such as BASIC.COM, GWBASIC and BASICA. So for better or for worse, BASIC was my first language.

I’ve neglected programming for a long while and just played games on the computer, and possibly did some work on it. However, I returned to programming when I was in the 9th grade, this time on a 386 SX with QBasic which came with some later versions of DOS, and later on with Borland Turbo C++ 3.0 (which sported a much more primitive variant of C++ compared to today’s flavours). Despite knowing C and C/C++, I still found QBasic of use, due to my ability to rapidly develop code in it (what Larry Wall later called “whipuptitude” in some of his talks.). I also may have dabbled with Excel’s Visual Basic for Applications (VBA) before I graduated from high school, and during my 10th grade, I learned some Pascal using Microsoft QuickPascal on DOS.

After I graduated from high school, I worked at three firms. In some of them I've done C or C++ development on Windows, but I also studied some SQL, and became familiar with some UNIX flavours and with Perl 5 and the UNIX shells. UNIX has been an epiphany for me: until then I used DOS and Windows, and considered them bad, but did not know what a good system is. UNIX was the first genuinely good system that I have encountered. I also fell in love with Perl, and it became my favourite language.

By the time I started studying the Technion, I had a relatively early distribution of Linux installed on my computer, and started playing with various languages available there.

You can find a list of languages that I currently know on my résumé.

Which text editors are you using? What is your favourite text editor?

Well, I'm usually using gvim (the Gtk+/GUI version of the Vim programmer’s editor) for coding and for writing purely-Latin texts. For bidirectional (mixed Hebrew+Latin / etc.) texts, I sometimes use Kate instead, with a fallback on gedit. Sometimes, I use Vim (the console version) for quick edits or when I cannot or would prefer not to use a GUI editor.

The reason I am using gvim instead of vim, is because many terminal emulators on Linux (including Konsole which is my preferred one) mess up with the Hebrew/Latin bidirectionality too much (enough to confuse vim), because the syntax highlighting looks nicer there, because the mouse support is better, and because it does not start much slower than Vim. If the console-based Vim works for you, feel free to use it.

Regarding Emacs: from what I know, it should be a fine text editor, but I could never get used to it, so that’s not what I’m using. I was told about the Evil mode which provides partial Vim compatibility, but I didn’t try it, in part because I’m now using quite a lot of Vim extensions written in vimscript and in Vim’s extension languages, which are not supported by Evil.

Why are you using your choice of an operating system (= Mageia Linux)?

The short answer is that Mageia is what I’m used to, what I like, and what I’m most comfortable with, and that I find the community of contributors and users friendly and helpful, so that is what I’m staying with for now.

My original motivation for trying out Mandrake Linux (which later was renamed as “Mandriva Linux” and was even later forked into Mageia), was that I bought a 40 GB hard-disk (which was a large capacity for its time) and sought a distribution to install on it, that supported ReiserFS which was a file system that had journaling, so I won't have to spend a lot of time in running “ext2.fsck”. Eventually, it turned out that ReiserFS caused my hard disk to become faulty (and had no way to gracefully handle bad blocks) but in the meanwhile I grew to like Mandriva and used it and later its Mageia fork since.

That put aside, I still willingly try to help people, who are using other Linux distributions, or even non-Linux operating systems, with their technical problems. Part of my motivation is this quote from “The Cathedral and the Bazaar”.

What were your B.Sc.'s Final Projects?

They were:

  1. The IP Noise Simulator. The user-land version should still work and may be of interest.

  2. Zavitan - a web-based seminars manager written in Perl 5.

Why are you using DuckDuckGo? (Instead of Google?)

  1. To prevent Filter bubble.

  2. I like their keyboard navigation (left/right/up/down keys).

  3. Their search URLs have less junk than Google's.

  4. I like the bang commands ("!g" for a Google search; "!gh" for a GitHub search; etc.).

Also note that DuckDuckGo claims to avoid tracking the users, but I personally do not care too much about that.

Why are you still using XML?

With the advent of JSON, and similar formats such as YAML, some hipster geeks have proclaimed that XML-based grammars no longer have any legitimate use. However, while I use JSON and YAML for many tasks, I still find XML (and related technologies such as DocBook 5, XPath, RELAX NG, and XSLT ) of use. Part of the reason is that XML can be used to add markup to a substring of the text (like the <a> element).

About Free and Open Source Software (FOSS)

How can I become an open-source contributor?

See what I wrote about it on my homepage. I’m giving instructions there. You may also wish to read my “Advice for the Young” essay.

Can you help me intrude into/exploit (so-called “crack” or “hack”) someone’s server/instagram account/IRC account/Twitter/Facebook/etc.?

No, and that is because I am not a computer intruder or a “cracker”, and even if I were versed in that, I wouldn't try to get myself and other people in trouble by trying to exploit vulnerabilities on useful, ethical, services.

There are better ways to handle your online problems than to try to do cracking. For more insights, see:

  • “Master Foo and the Script Kiddie” - a modern UNIX koan by Eric Raymond.

  • Q: Would you help me to crack a system, or teach me how to crack?

    A: No. Anyone who can still ask such a question after reading this FAQ is too stupid to be educable even if I had the time for tutoring. Any emailed requests of this kind that I get will be ignored or answered with extreme rudeness.

    Q: How can I get the password for someone else's account?

    A: This is cracking. Go away, idiot.

    Q: How can I break into/read/monitor someone else's email?

    A: This is cracking. Get lost, moron.

    Q: How can I steal channel op privileges on IRC?

    A: This is cracking. Begone, cretin.

    From Eric Raymond’s “How to Become a Hacker”

Are you a hacker?

The word "Hacker" can mean several things. It can mean a computer intruder, in which case, see the question above - I am certainly not one. Otherwise, it can mean a clever and competent enthusiast of a certain field of endeavour, primarily used by and for computer workers, but not exclusive to them. As I note, by inspiration from other sources, hacking is at least several millennia old.

Anyway, a "hacker" is something that normally other people call you rather than something you call yourself. I aspire for excellence and continuous improvement in several fields of endeavour (including software development), but only other people can judge whether I am indeed a hacker of them. And my policy is to encourage criticism rather than fanboy/fangirl-ism.

You’re using Mercurial (on Bitbucket.org/etc.) for some of your projects. How can I learn how to use it?

There are some links to tutorials on the Mercurial page of the Better-SCM site. More can be found in a web search for “mercurial tutorial”. Mercurial is not too hard to learn.

When building some of your CMake-based projects, I am getting an error for a missing “Shlomif_Common.cmake” file

Yes, you can find it in this repository. Just put it in the source directory. Such a problem should not be encountered when building a source release from the source archive downloads.

How many Projects are you Working on?

I have originated, maintain, or contribute to more than one project and keep switch-tasking between them. Some of them have sub-projects or individual tasks. You can find some lists and activity logs on this page.

Do you have a GitHub account?

Yes, see this link for more information.

Why are you working on this non-Perl 5/6 project? I thought you were a Perl guy!

While I have written a lot of Perl 5 code, and often still maintain it because it cannot be all reimplemented in something else overnight, Perl is not the only language I know and use. Perl is not exactly a religion that requires full devotion to its belief, and I actually met a woman who considers herself both a Christian as well as a Buddhist so…

For more information, see:

Why did you publicly share your solutions to Project Euler problems despite their request to avoid doing that?

For several reasons:

  1. Making the GitHub project public allows me to use Travis-CI and other CI services free of charge.

  2. I enjoy sharing my work with others.

  3. I think that Linus Torvalds’ quote that Only wimps use tape backup: real men just upload their important stuff on FTP, and let the rest of the world mirror it ;) has a grain of truth in it.

  4. It may be useful as evidence of the fact I solved these for prospective employers and other interested parties.

Do you solve the Project Euler problems in their order?

No, I don't. I often skip problems which I find too difficult or not interesting enough. I did solve 149 out of the first 150 problems (excluding No. 143).

How do you keep organised? What do you use for To-Do lists?

First of all, see this post I wrote about why E-mail is not only a to-do list and other resources that serve as virtual to-do lists. For my proper to-do lists, I use gvim/vim, either using plaintext or using the vim-quicktask plugin.

What is the “Expat License”?

It is what the FSF calls the so-called MIT License (or SPDX: MIT ). The original X11 licence has an extra clause.