( 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
:)