( I was pointed out that the prose could use some re-reading and correction, I will do so when as soon as I have some time (and feel like doing so, fixing someone else's errors is different))
I'm a General Linguist by education and software developer by trade. I use Linux whenever I can, for specific tasks I use Windows or an Arduino (I prefer the Arduino: less restrictions).
I like U&L as I found answers to many of my questions there or better solutions than I have come up with myself over the years. It also points out interesting (that is of course subjective) subjects that I never thought I wanted to know about in the first place. I don't read the new questions systematically, but being active on the review queues show me a fair share of them.
Some history
I used to play with my brother's slide-ruler (he was a few years older and has a more technical education), and I was fascinated by the electronic calculator I did see at the evoluon. Mine graduation year was the last year that was not allowed to use a calculator for the final exams (the ones before going to university), and I am glad of that, because I think that forced me to learn to be able to do calculations on paper or in my head quickly.
In the final year in school I almost did some programming. But the teacher explained that that would have involved sending pencil marked punch-cards to a university, equipped with a computer to process the programs, and that would have been a week or two round-trip time (this was 1978).
Not until I started studying Mathematics (there was no separate computer science at that time) at Leiden University at seventeen, did I have my first real experience with programming, on a IBM 370 compatible Amdahl system. We, the first year students, had limited resources allocated for our "jobs". This was determined by the job-control punch-cards that you put in front of your actual program cards (in ALGOL 60). I soon found out how to increase the run-time limitations we had to several seconds and to more than 4 pages of printed output. The first program I wrote for my self was Conway's game of life, which got me an official warning when I picked up the output of running the program on the R-pentomino (the output was cut of at 100 pages of folding line printer paper and the admins could not fail to notice this unusual amount of paper output for single job for a first year student). One of the worst things that could happen to you in those days, was that the elastic band that kept the punch cards of your program together, would break.
At University I worked with Algol 68, APL (from which my dislike for the write only family of programming languages), Lisp. I got interested in microprocessors, particularly liked the 6809 architecture: it was the first microprocessor with SEX (an instruction for sign-extending an 8 bit value to 16 bit). I played my first interactive computer game on my friends Sinclair (Timex) ZX80: you would run around a maze trying to find an exit, or until a dinosaur blocked your way and you lost.
I co-founded and chaired the Dutch Hobby-Computer-Club chapter for Motorola 68000 processors. However I did not have the money to buy a full fledged 68000 system like the Apple Lisa. So I settled for a 6502 based BBC Micro computer and wrote a cross assembler in BASIC that allowed me to upload programs to my, self-soldered, 68000 board (with 4K ROM and 4K RAM!). The BBC first had a cassette-tape (some programs were broadcast on Dutch radio that you could record and upload to your system), later a floppy drive (2x100Kb per 5.25" disc. Apart from Basic and 6502 assembler the BBC allowed me to try Forth, BCPL, MicroProlog and Pascal.
I went to University and an early age and that had kept me out of the draft for military service, but by the time I started studying Japanese I was older and should have done that service first. Of course this was found out and I got drafted on very, very, short notice. I was not very happy in the service, among other things because I could not find a place to meditate, like I was used to do every morning. I was stationed at the Tonnet Kazerne military base "'t Harde" where in the classroom next to where I was, an AP-23 mine (which had the colouring of an instruction mine, but was a real one) exploded, killing the instructor and six of my collegues. Afterwards I asked our commander how to get out of the army in an interview, and I was told to apply as an conscientious objector. I applied as such and was back being a civilian within 24 hours. I think they were glad to have one less person with potential trauma to worry about.
I did not make sense too much to continue studying full time, because, as conscientious objector, I would soon have to do public service for 18 months (1.5 times the length of the military service). Public service normally involved something like changing bedding in a hospital or home for the elderly, but I was lucky.
First I landed a temporary job as a Basic programmer and sysadmin on a PDP-11 using multi-user basic under RT-11. I wrote software for pupils to learn basic math and fill out blanks with correct words in sentences. That system was about to be upgraded to Xenix, and I had to program in Pascal (and some parts in C), translating the Basic programs by hand at high speed. At the same time I started to use curses instead of the programmed in escape sequences used to move the cursor on the 6 different (second hand) serial line based CRT terminals we were using. The PDP had 8" floppys for making backups, I still have some adhesive labels for those, if someone needs them.
The software development was a university project and when I told the director I could not sign on for a longer period because of my work as a conscientious objector, he made arrangements so that I could continue to do the same work as fulfilment of that requirement. The software development and sysadmin work was way better than any other work I could have hoped for, but the (prescribed) pay level was about a fifth of my previous pay for the same job. Therefore I worked a bit on the side selling computers. My company name: "Antron", as tacky as it gets, but which I thought a cool name at the time.
By 1984 I had a 300 baud modem at home, and was the only student in our student housing (170 rooms) having a private phone. The modem was hooked up to my BBC micro running Kermit. I continued studying, but combining Japanese with work was difficult. I switched to master in General Linguistics, which allowed me to include courses like "computability" and "formal languages and automata" in my general linguistics master program. Those courses were held at the now opened computer science faculty, the CS students didn't understand why a guy would do such subjects out of his own volition.
Before I could pick-up some speed in my studies again, some friends from my high-school asked me to join a start-up. In that company we instructed students at the Academy of Architecture in Amsterdam in the use of computers and ran a laboratory for specialised computer usage (with an A0 plotter etc.). I co-wrote a 3D modelling program running on Atari ST and IBM PC AT (Autocad was still 2.5D only). And I modified my Atari ST: it had more available memory (by piggy-backing memory chips, soldering all but one pin to the existing 16 memory chips); it had the processor de-soldered (60+ pins, not so easy) and replaced by it a socket, in which I put a board with the original processor, a PAL based address selector and a 68881 floating point coprocessor; and on the ROM module I installed a modified C't design with dual ISA slots (on a read only bus!). In the ISA slots I had a IBM PGA graphics board.
Our software was in Modula-2 and I rewrote the software floating point library to use the 68881 math coprocessor and rewrote part of the library calling the GEM based graphics driver to redirect to the PGA. That way we could generate images much faster than on a the PC, with significantly larger models (but rendering was still far from real-time).
For our first real walk-through we drove an IBM monitor which was fixed to a 2 meter long board, and shot images with a film camera that was adapted for single shot recording on the other side of the board (triggered by the Atari once an image was ready). After running for 2 days and developing the film we found that the CRT monitor had overheated (because of the cardboard casing that was there to keep the light out) and that the monitor had gone completely off-color.....
During that time (late 80s) I also published my first open source contribution in a magazine (an optimized quick-sort implementation in Modula-2)
We switched to a separate Z-buffer based renderer after I had calculated that with the number of polygons we were handling (we did back to front painting on the hardware accelerated PGA board), that Z-buffer would be more efficient. We needed to store the resulting images, and GIF was selected as there was software from CompuServe to show these images on MSDOS computers with various graphics boards, as well as a program from IBM to show these on their PS/2 systems (which IBM had donated to the Academy). However there was no program to go from software frame buffer to GIF, so I reverse engineered that, with the help of the original article on LZW compression and checking the output against the two viewers that we had. Once that was done I also wrote our own viewer for the special graphics boards that were becoming available for AutoCAD (already at that time the GPU was often more powerful than the PC the board was put into). This was all done in Zortech C++. On the PC we had a minimal program (1.5Kb) to switch from renderer to viewer and back, so the viewing code did not take valuable memory (always at a premium on the PC). I had not been in England that often and I called the viewing program 'shower.exe' as it showed our images. The guy reviewing our manuals had a hard time, as he, as a native speaker of English, had difficulty not to associate "shower" with a bathroom activity.
We tried to speed things up using Transputers and parallel processing at some time, but this was quite difficult. Occam, a nice language with indentation as indication of block structure (like Python), was a far call from C and Modula-2. Things looked much better when I tried the Transputer under Helios (a Unix like OS) on the system Atari developed, but unfortunately that never took of commercially.
The Academy bought two Sun machines, which were fast, except that the FPU did not do square roots (as did the 68881) in hardware. And we needed square rooting a lot in our software for vector normalisation. Since the vectors multiplied were limited in input values because of they were already normalized, I figured out we could use a 1024 entry lookup table of floating point values. which nicely speeded up calculations by an order of magnitude. The Sun machines brought me back to using Unix and I have worked on Unix on a daily basis since then (1990).
The shower program was much wanted by graphic board manufacturers (SPEA, ELSA, Artist Graphics, etc. all with proprietary hardware as well as several VESA manufacturers). That was because we had architectural images that showed very well on their 256 colour graphic boards. Their alternative were dithered GIF images based on photos of scantily (if at all) clad women, not always a good thing to use on trade shows. Adapting the back-end of the "shower" to a new board was a matter of routine after the first few that I did. I used to visit the companies to have access to the latest (unreleased) hardware and had several experiences of managers not believing they work was finished in good cooperation with their engineers within an hour or two.
By now we were using DOS-extender on 386 and while visiting Artist Graphics, the spare time (I had flown to Dublin for 2 days, just in case things would take longer) was put to good use. After adapting the rendering program to map in the Z buffer in the high-memory mapped graphics board space I could see the rendering taking place in real time at an acceptable resolution. This slowed down the rendering slightly, but made it much more easy for us to see where the rendering process went wrong (if it did). Once SPEA found out, they did not want to be outdone by the competition and we got an Intel 860 based board from them, on which we could do the whole rendering, and see the progress and it was faster than the state of the art 386 PC in which the board was inserted.
Our single shot camera was exchanged for a videorecorder (rollback, roll forward, take a single shot, roll back ....) and a targa/vista graphics board (without file format description, but that was an easy one to figure out). Some very nice video walkthroughs resulted from that.
However the technical successes were not followed by enough sales and investor money disappeared as in a black hole. I sold my shares, and decided to use the money to finish my long postponed thesis. For the research I used my 386 machine and dos-extender to run the text analysis programs. It ran in an hour what the VAX machine at the Linguistics Institute could only do in several days (the difference being mainly due to the whole dictionary of words fitting in memory on the 16Mb RAM of the 386, so lookups of word associated codes were much faster than on the VAX where this had to come from disc repeatedly, as it had only 256Kb memory and that shared with the processes the others ran).
At that time I also still had my Atari ST, often used by friends for typesetting papers and thesis'. I had been using LaTeX since the mid 80s. Fortunately laser-printers became available, until that time I had printed LaTeX output on my 9 needle STAR printer, going over each line three (3!) times, I normally switched on the printer in the evening and went to sleep somewhere else if I had to print more than 4 pages. I also helped set the book on Generative Grammar by one of my professors and earned the gratitude of several people by converting Word documents close to the deadline of submission, documents that Microsoft Word would no longer render in any acceptable way (after an image was inserted, or a table of contents requested).
With my thesis finished, I started as manager at the other 3D graphics software company in Amsterdam. The software there ran on SGI Iris, DEC Ultrix and on Sun, later also on HPUX and on Linux (mid 90s). The software was a solid modeller and ray-tracer with all kinds of modules for NURBS, blobs and particles as extensions. I did not program much as a manager but I kept an eye on the process and the revision control system. The program was in K&R C, parts of the interface in TCL and an internally developed functional language called Intercol was used for specification of surface "materials' and also for interactive interface design. When I took over the management of the project, one of the features of Intercol was that there was no normal way of documenting the software by inserting comments (the developer said that if you really needed comments, you could just write a conditional that was never true with a string in the non-evaluated part of the conditional acting as some form of documentation...).
We had 50 DEC Ultrix machines in the basement (an expensive heat source) for parallel rendering, each with 16Mb of memory, but enough swap-space on disc (storage was on the network). Unfortunately the users of the system (some extremely creative art students) did rather want to use scanned images for textures (so they knew what it would look like) than try and write some (Intercol) program that might approached the visual effect of what they wanted. The memory consumption was by these images was huge as our software memory mapped the images and the rendering machine spent most of its time on swapping. My main software development contribution in that time was to write a Targa to tiled TIFF converter and then a caching mechanism for those tiles in the renderer. That way we did not need to read in the multi-megabyte images in memory completely. Because of the way the ray-tracer used the pixels from these images (mostly requiring pixels from the image close to each other) this helped speed things up a lot. This immediately prompted the students to use much finer detail images (read: higher resolution), but fortunately the tiling mechanism still worked out fine for those as well.
Here was also the first time I had to work with HTML in setting up the first website I was involved in (late 1993). Some of my new employees had introduced me to Python (which they had used at the CWI in Amsterdam where Guido van Rossum was begin employed). I liked the design of that language, but did not want a fourth language in our software. So it took a few years before I actually did something with that.
In the mid 90s I spent two years in the USA, where I managed the development of a multimedia database and associated front-end. Warner Brothers, The Discovery Channel and Spielberg (his Survivors of the Shoah project) were among our customers. During that time I was almost exclusively involved with SGI (and IRIX) which was approaching the top of their dominance in the graphics market. I also had my first off-shore development team (to port the front-end to the Mac), with often broken email communication to Bangalore that was not a very successful experience.
After moving back to Europe, I started working in Las Palmas de Gran Canaria, (voted best place to live before San Diego and Casablanca). We would work in the morning, have lunch at 2pm, visit Las Canteras beach until five, shower and then work until nine. I was still doing graphics, this time editing and compositing software on SGI. Unfortunately that was only a year of employment to get the development organised.
One thing I will never forget is that we had 10base2 (coaxial) Ethernet at the office in Las Palmas. Twice a week the workstations of the developers could not reach each other or the server because the cleaners would have swiped the floor and touched one of the Ethernet transceivers, breaking the loop. Finding where the loop was broken often took an hour. The company had money for SGI Indigo2 machines but had not invested in a better network, so until we could get something faster I used an unused 10baseT hub (unused because it was 110V for use on trade shows) and telephone cable and RJ45 connectors to hook the machines up and discard large tracts of the cheapernet that had of course become very expensive because of the downtime.
Because the founder of the company was afraid of people remotely accessing our computers and steal the software, we had no internet connection to our desktop like I was used to, and we also had no email. I convinced the owner that the "old" way of doing emails would really be safe enough and one spare Personal Iris system was set up with a dial-out modem to pick up and sent emails. That system was connected to another machine in our network using a serial port. UUCP (initiated from the internal network) was used to communicate the emails. At least that way we could just write and receive emails at our own desk. The revision control system I had set up while I was in Las Palmas, was still operating after 12 years, when I did help the company to upgrade to mercurial.
I would come back to Las Palmas but not after spending two years on something completely different: Applying the lessons learned in the software development process on molecular nanotechnology (there are parallels, as both engineering activities require little in the form of raw material, resulting in less careful design). I invested (and lost) most of my savings on that project, but it was fun. That although Brussels was a dreary place, especially after sunny Gran Canaria.
In Brussels I had ISDN, and set up my first Linux based machine at home as a workstation and router (for my and my wifes laptops). The server was SuSE based, as ISDN was popular in Germany and SuSE had stable ISDN support out of the box.
Also during that time I started developing software in Python, which quickly became my favourite language for non-time-critical jobs. I did part-time development work after my son was born, while my wife was travelling over Europe (helping her customers with ISO 9000 certification, I was supporting those customers with browser and Python based software solutions). I contributed to some open source projects (implemented new string matching specifications in file/magic, packaged the ReiserFS software into RPMs before it was part of the normal distributions). Since then I have made contributions on a regular basis for many a project that I needed to improve for my own use. During that time (1999/2000) I also put a second Pentium III in my computer to calculate the 196 palindrome problem to 10 million places (John Walker of Autodesk fame had gone to 1 million a few years earlier on a Sun machine).
With a second child on its way I moved back to the USA to do some more serious (and above all serious money making) work. I just managed to hit the dot-com crash at the end of 2000, but found another job, had to fly back because of visa issues but finally everything got resolved before the money ran out. I first managed a small development group in Sausalito (CA) making compositing software (used by ILM for the StarWars movies). I was returning to Windows and Mac for development, but I had Linux based machines for revision control. My personal system was a Win98 based Sony laptop, that ran SuSE under VMware. So Outlook Express would read the emails via IMAP from the SuSE based IMAP server. Later I switched to a DELL D800 and ran it natively under Linux with a Windows VM for compatibility (you learn when OpenOffice mangles your bosses Word document).
By 2004 I had set up the engineering in most of the companies 10+ engineering locations in 5 countries (a result of acquisitions). It used replication of compiled libraries, a whole development method around that, remotely triggered builds and tests. The most problematic group was in Germany and I (was) moved there to make sure they got integrated in the process. Unfortunately our company was sold, and the promises for my position in Germany over time were not kept by the new management. Apart from that, the new mother company had 4 engineers for maintaining ClearCase, where I had supported the CVS/cvsup based revision control (later mercurial) for all locations remotely on my own and next to my normal management responsibilities for several products. I certainly did not see it as a career move to learn ClearCase and work on that full-time. Politics started playing up as well as some other indigestible management decisions, so I decided to work as a freelancer again, which I have done since then.
Where I am now
I would say at least 25 of the 30 years I have been professionally involved in software development, I have been working on some sort of Unix or Linux. Initially with csh, then ksh (Sun IIRC), tcsh (on Irix) and now bash. I like the maintainability of Python (I share much of Eric S. Raymonds experience with fetchmail in that respect http://www.linuxjournal.com/article/3882).) and switch from bash to using Python before the quotes and its syntax start to irritate me. I know how to use sed, but never bothered much with awk, essentially because I can do anything that would require awk in Python (I'm not saying Python is better, but I am certainly better at Python).
SuSE was problematic after Novell's takeover, it landed me with inaccessible support pages and all kinds of problems not good for persoal use of Linux, unacceptable for professional use. I attended the Ubuntu delopment conference in Paris (2006) and switched first myself and then the company, 15 machines or so, to Ubuntu. Currently I am running 12.04 (in classic mode) and I am considering switching to Linux Mint full time as I really don't like the direction the default Ubuntu UI has taken.
I never was a full time adminstrator of Unix or Linux, but the last 15 years I did delve into many things U&L related and contributed when possible. ReiserFS, mdadm, LUKS encrypted /home, sendmail, postfix, bind, Apache & mod_wsgi, file/magic, spamassassin, IMAP, all have taken their fair share of my attention (as did several not direcly U&L related projects, such as implementing the ordereddict libary in C for Python).
On U&L I am more inclined to be a reviewer than that I have broad knowledge of U&L issues (maybe that is my managerial role showing itself). I like the U&L atmosphere, and even though I sometimes (necessarily) get corrected by the experts here, I think I make my contribution.
Outside of U&L I am online active on Khan Academy, where I refreshed my rusty math skills ( https://www.khanacademy.org/profile/avdn/ ) and try to keep a good Energy Points and Badges earned score.
I am a board member of the EuroPython Society, that is responsible for the EuroPython conferences.
When I'm not at my PC (it happens) I can be found in the local dojo, training Shotokan Karate (I got my nidan in 2014). If you are stuck in software problem and want some distraction there is nothing like a fist that is quickly approach your face, to get back to reality.
Since I don't watch TV all, that still leaves me time to cook for my daughter (who lives with me) and my girlfriend on a daily basis (and bake bread because the Germans don't know how to do that).
Timeline/location:
1961 -> Netherlands 1994 -> Ohio/California 1996 -> Gran Canaria 1997 -> Brussels 1999 -> Gran Canaria 2000 -> San Francisco -> 2001 Gran Canaria 2001 -> Sausalito (CA) 2004 -> Braunschweig, Germany
/fun:)