If you like this site, see my recent campaign for collecting money for my works of fiction.

Shlomi Fish at Cortext: HTML, UNIX and Perl - oh my!

Document Information

Written By:
Shlomi Fish
Finish Date:
17-August-2006
Last Updated:
17-August-2006

How I started Working for Cortext

One qualm I had about working at Elpas was that my pay was very low. At first I received minimum wage (which in Israel is even lower than in Europe or in the United States), and later it was raised a bit. However, my friend told me on a phone talk with him that programmers earned much more, because there was a genuine lack of them. He later on introduced me to Ran Eilam who was about to found Cortext.

Ran had long hair with huge strands (he still does), and he sat next to a Silicon Graphics Instruments (SGI) Indy computer, that ran IRIX (a flavour of Unix that ran on SGI computers), and he was busy editing some code. We started talking. I already knew about Berkeley sockets, from my then work, where I started working on TCP/IP. Ran said one can write a Berkeley sockets client in Perl in 10 lines and a Berkeley socket’s server in 20 lines. This sounded very impressive to me. As I looked at the Perl code he wrote, I could not understand it.

Ran accepted me to the job, and said I could start working in a few weeks, when they moved to their office in Southern-Middle Tel Aviv (Near Migdal Shalom, in Herzl street). Ran said “It takes 10 years to learn UNIX - I want you to learn it in a month”. So I set out to learn both UNIX and Perl.

Preparations

Ran instructed me to buy a Linux CD-ROM and play it, and I went to a computer store down town and bought a CD. I partitioned our 800 MB drive using the given DOS utility and installed the Slackware of that time (1996) on the freed 200 MB. Retrospectively, I can say it had a lot of junk on it, and since my computer had a relatively small amount of memory - 8 MB, it quite crawled, and more so when I started the X Window System.

It still came with version 4 of the perl interpreter, not version 5, which was what I needed. Also since my primary system was a Windows 3.11, I had to download a suitable Perl for it and for DOS could also only find perl 4. I started reading about Perl from a monolithic PDF that contained what was then known as “the perl man pages” and now also known as perl*.pod or the perldocs. This was a long and exhausting read, and, since they referred to many UNIX idioms that I were not familiar with, I didn’t fully understand them. And I believe that if I hadn’t had a lot of programming and computing background back then, and general good intuition, I would have had a much harder time.

I had to practically work “on dry”, because I only had perl 4 at home. I also started experimenting more with UNIX. I experimented previously with UNIX on my ISP’s servers, and at Elpas. As it turned out, I didn’t learn UNIX to a level that my boss could have hoped I would learn in a month (or in 10 years), but it turned out to be enough to be productive there.

The Story of The Enemy

My work at Cortext proved to be a catalyst for my writing of the story The Enemy and How I Helped to Fight it. I’ve told the more complete story here, but I’d like to tell it from a more Cortext-oriented perspective. Before going to Cortext, I had spent some time reading the Neo-Tech book my father had bought when I was in the 9th grade. Neo-Tech is highly enlightening, but very easy to misunderstand at first and I misunderstood it to a large extent back when I still worked for Elpas, but it started sinking in at Cortext. While Neo-Tech is technically primarily based on Ayn Rand’s Objectivism, but takes a different approach in conveying it, and deviates on many points.

When I was in Cortext, I also read some introductory pages about the original philosophy of Ayn Rand herself, which I also found enlightening (that was a long time before the Wikipedia really took off and even Google did not exist yet, which made research back then more difficult). Moreover, my boss, Ran, referred me to the story The Bastard Operator From Hell which I read (originally as a big MS Word document) and loved. It proved to be the main literary inspiration for my The Enemy story, with some secondary previous inspiration from Kafka’s The Metamorphosis which I had to read and learn in high-school.

I originally got the idea for my story during a trip my family took to Britain. I told my father about it, and he said it was a good idea, but I still kept planning it. From some reason, I was so excited (I had an Hypomania - a state below mania), and eventually could not function very well. I was so glad to be at home, and started writing the story on my home computer - using the Windows MS Write / MS WordPad program, if I remember correctly.

After I had most of the story written, I printed it, and took the printed sheets to a friend of mine, who lived in the neighbourhood, who said it was funny but not overly so. I immediately understood why he thought so, but it took me a long time to revamp it, and then several months later in the Israeli winter (when I no longer worked for Cortext), I wrote the first part of the story in a paper notebook I had, and when I read it to this friend and his younger brother (whom I was also friends with), they gave a pretty good review and it served as the basis for all future versions of the story.

The Enemy and How I Helped to Fight it proved to be the first really serious story that I wrote, and was followed by other stories and screenplays, which other people seem to have liked, or liked to a large extent. I think it had to do with me reaching a certain kind of personal philosophy that enabled me to be really creative and is actually reflected to a large extent in them.

The Cortext Computers

Cortext was quite an operation. The main computer I worked on was a Pentium I (about 100 MHz - can’t remember the exact number), that first ran Linux and was later converted to a FreeBSD installation. I used it as a UNIX workstation to write code on. Most of the other Cortextuals used the vi editor, but I could not get used to it and so installed Emacs (under /usr/local I think) and tried to learn it. I didn’t get too far (and until this day could never really get used to Emacs). However, I ended up watching a different Cortext worker use an editor which he said was called “joe” (Joe’s Own Editor) and after installing it was able to become accustomed to it, and had been using it for a long time since as my default terminal editor.

At Cortext, we consistently used the tcsh shell, but back then I didn’t notice a lot of difference between it and GNU Bash that I had at home on my Linux system, despite the fact that they are radically different (I now wouldn’t recommend tcsh for any use). One thing I remember is that I often resorted to writing short scripts to administrate my systems in Perl instead of in shell, because I was not familiar with the constructs of shell programming too well, and Perl was all I knew.

Aside from my Pentium I running FreeBSD, Ran's SGI Indy workstation system, we also got an old Sun-compatible server with about 4 GB of disk space (a very large amount of disk for that time), and some pentium machines running Windows 3.x or Windows 95. We also bought an SGI Challenge server which was hosted at the ISP. Finally, we eventually got a Macintosh computer running an old pre-Mac OS X version of Mac OS, which was quite quirky and buggy. So quite a zoo of different systems.

All these computers served for our job in setting up sites for clients, using HTML (a very old version, where best viewed in the Netscape browser, was the de-facto standard), the Apache web server, and CGI scripts written in Perl 5. Ah, the bad old days.

What I Learned?

Cortext was my first serious introduction to the Perl 5 programming and to the UNIX family of operating systems, which I have considered my preferred technologies, for a long time after that. They were both an epiphany for me: Perl 5 because it combined what I heard Larry Wall later call, the “Manipulexity” of C and C++, and the “Whipuptitude” of the various BASIC dialects I had learned, and allowed to write code quickly, but still create large manageable systems; and UNIX was an epiphany, because while I knew that DOS and Windows 3.x sucked, but didn't know why, the various UNIX systems I used at Cortext, were actually good, and I found them a joy to use.

Aside from Perl and UNIX, I also dealt extensively with early versions of HTML (not a spectacular technology, but got the job done), as well as some basic JavaScript, even before Dynamic HTML and AJAX, to say nothing of more recent trends. This JavaScript was still quirky and buggy even for its limited functionality. I have also dealt with Java applets, miniSQL (now largely superseded by MySQL and later some other SQL databases), various pieces of software from the GNU archive (from its old FTP location at prep.ai.mit.edu), the Apache web-server, and a lot of other software for UNIX and Windows.

I recall that the GNU site seemed like an FTP site with lots of cool software that came as source tarballs, and which I knew was free to download, compile and use, but did not delve too much into its Free (as in speech) and open source software (FOSS) ideology, and did not care too much. I knew miniSQL was shareware with source, and understood I can use the GNU software without paying, but it took some time for me to get to the bottom of the whole “Free-as-in-speech Software” ideology.