>moria.de >Michael's home page >Computing >Personal history

My history of hacking

My first experience with computers was in 1983/1984. I modified the circuit schematics of a small microprocessor system using the SC/MP processor to use a Z80 instead, because I failed to get a SC/MP. After building the system, which had no OS, but a front panel, I learned Z80 programming at machine level. 256 bytes was certainly enough for that, so was 1 MHz clock rate. I always wanted to get a SC/MP for building the original systems, but it should take a very long time to do so.

1985 I bought an Acorn Electron, a 6502 based micro computer with a structured BASIC. At the same time I started to learn Pascal in school on a Apple IIe under CP/M 2.2. I finished version 1.0 of PFC, a program to generate Point&Figure Charts for stock market analysis, written in GWBASIC on a Wang PC.

In 1986, I bought a CP/M 3.0 machine. For the first time I used and wrote public domain software, first in JRT Pascal, then Turbo Pascal. A second terminal connected to the machine for input and output of a modified debugger helped development a lot, and caused the wish for multi tasking, but UNIX based machines were not just affordable yet. Version 2.0 of PFC, now written in Turbo Pascal and running on PCDOS 2.11 got finished.

1987 I learned C, because Pascal got boring. Mixed with some Assembler, I had my fun writing some graphics software under CP/M.

1988 I replaced that computer by a 80386 PC. DOS, a better C compiler, a better Pascal compiler, but still no multitasking. The available word processors were just unsatisfying, so I hacked roff4 and used a text editor which I developed on the CP/M machine. After finishing school in the middle of the year, I had to do my duty in the army. Luckily I ended up at an old IBM terminal at the human resources department after the first three months of cleaning clean guns and finding out how being exhausted and muddy feels. I won't ever forget the login name u31b3hs when I started working at that terminal. I founded my own company and sold version 2.1 of PFC.

I started studying Informatik (German, it could usually be translated with applied math, and only rarely with computer science) at RWTH Aachen in 1989. It was a busy year with studying and PFC.

Being unsatisfied with DOS, 1990 I bought a copy of Minix and started using it almost exclusively and became quite active, porting and writing various free software programs. At the same time I discovered Usenet and Internet, using SunOS 4.0 running on Sun3s at university. After getting a set of UNIX v7 documentation for free, I developed Michael's roff (mroff), a small troff-like text formatter and preprocessor to write Hindi, one of the many Indian languages. (I didn't speak it, but some friends of mine at the time did. :)

In 1991, I started working on improving Origami, an folding/outline text editor, together with Wolfgang Stumvoll. The result was incrementally rewriting it entirely, which took until 1993, when I quit active work on it to free time for other projects. I bought and an empty PCB for a transputer board, soldered it and started writing an assembler and linker for 32 bit INMOS transputers.

In spring 1992, I switched to GNU/Linux. I worked a while for the Linux Documentation Project (LDP) writing Linux manual pages, and also worked at MGR, a window system originally developed by Stephen A. Uhler for Sun workstations, for about a year; debugging and improving the Linux and the Sun version. I ported the 8086 version of Small-C to the transputer, which relies on my assembler and linker.

1993, I wrote a lcc back end for transputers. Now as/ld/lcc run under Stuart Menefy's port of Transputer Minix. I quit selling PFC, now version 2.3, by the end of the year in order to finally get rid of DOS and the pains caused by it.

I closed my company in spring 1994 and bought a 80486 PC to exclusively run GNU/Linux. In June that year, I became system administrator at the Lehr- und Forschungsgebiet Theoretische Informatik to administer a SparcStation 10/MP and its clients, a few Sun3 and Sun4 machines as well as some X-terminals, a FAX system, the WWW and ftp server etc. My transputer software improved a lot and a second transputer board joined the first one.

The first bigger project in 1995 was teapot, a spread sheet program for UNIX. The 80486 PC got company from a second one in order to learn more about networking. I wrote the floppy user guide due to the otherwise big lack of documentation concerning floppies. It just wasn't 1986 any more, where such information was easily available. After having learned a lot from hacking Origami, I wrote a successor from scratch: fe, a new folding editor, saw the light of the world. Before the previous IRC admin from Aachen left university, he handed his task to me. What seemed unimportant at first ended up with performance analysis of ircd some time later.

In 1996, I could call a small transputer cluster my own. For that reason, a transputer network bootloader got written to experiment with farming applications. A Sun 3 joined my GNU/Linux PCs for being used as X-terminal with a decently sized screen. A third PC, built from spare parts, became part of my little network to refresh my DOS knowledge, in particularly networking under DOS (lack of multitasking like back in 1988 is still not funny). I hacked a few Linux manual pages, wrote cs, a cscope-like program, improved teapot and fe and started to learn Java. I also quit working as admin to free time for studying.

1997 had just begun and the soft spot for CP/M in my heart caused development of cpmtools, a package to access CP/M floppies. I have run P2DOS, a CP/M 2.2 clone, on a Z80-PC simulator every now and then since some time for mental refreshment (instead of watching reruns of TV-shows that should never have been shown in the first place!). In March I moved to Bonn and start to work at GMD for the ``social agent platform'' project, which distributed runtime environment is the topic of my thesis. If you never heard the acronym CSCW, it means ``computer supported cooperative work'', aka groupware. I have missed the UNIX tools style and diction for quite some time on my PC, but now I really needed them for my thesis, so I wrote free versions. Somehow an old XT found its way into my home to get part of my LAN using NCSA telnet.

1998 began with much work to finish my thesis. I realized that all I still did with my transputers was to dust them off every now and then, so I sold all transputer equipment. Another XT showed up and got part of my LAN, but it was just collecting dust for now, too. After getting my diploma, I bought hardware for a diskless X11 terminal and I upgraded one 80486 PC to an AMD K6. I had some job interviews and finally started working as postmaster for roka GmbH, a German internet backbone provider. I moved to Krefeld and developed a distributed email system based on GNU/Linux and Exim to process all mail for the internet dialup business of Mobilcom. An XT 286 joined the other XTs, helping them to do nothing really. By the end of the year, finally things settled down and I wrote a POP3 proxy daemon (at home, because I need silence for hacking). I also finally made moria.de a registered domain and got some official IP space for my LAN.

The year 1999 began much less stressful. Only a day hardware maintenance and the XT 286 works again entirely. I installed Minix on it and worked on various things, having the same fun like I had back then. I also wrote some smaller programs for mail systems in my spare time. I left roka and start working for freenet.de, which overtook various internet services like the email system from roka. Besides being a postmaster, I also became ftpmaster, running a large FTP mirror. At the end of November I started writing my own BASIC interpreter, because I wanted to run some old BASIC programs and none of the available free interpreters was suitable for that.

In 2000, the BASIC interpreter grew from first becoming mature enough to run a couple programs to a full featured, stable interpreter. I saved three broken Sun SparcStations from the garbage, bought RAM and some other parts and built one working SS 1+ from that, using NetBSD as operating system. Further, I got an 19 inch rack and remounted my servers in 19 inch cases, mostly bought at ebay. One XT got sold, the other thrown away--no room for them. I designed and installed a distributed usenet news system at work, which took quite some time, so the year went by quickly. Additionally, I changed the ftp server into a cluster that served 8000 parallel downloads. Finally, I bought a new server, a shiny new Athlon 900 with 256 MB RAM at christmas.

A new machine joined moria.de in 2001: Elrond, a small PC in an 19" case, hosting my web site at the computing center. Finally my own machine that's 24h/day on the net! Unfortunately, Elrond only had 16 MB RAM and existing FTP daemons are fat these days and new AT boards rather hard to get for decent prices. I was unhappy with the configuration of the existing daemons, so I wrote my own, not yet having a clue how awful of a protocol FTP really is. By now I know, but it was fun and it works great in a fraction of RAM. The FTP cluster at work has so many concurrent users, that RAM is an issue, too. Elrond ftpd solved the problem there as well. Then people start using my BASIC and new features are asked for. Finally, cpmtools are still popular enough to develop them further. Software of the eighties has not yet died. At home, BNC cable is thrown out and replaced by TP, because I moved to switched ethernet.

2002 I replaced 10 Mbit/s TP by 100 Mbit/s for server and workstation. The workstation got replaced by a black desktop with a LCD that became part of the stereo rack underneath the TV. Regular CD players don't make much sense anymore. I added IPv6 support to elrond FTP and hacked various smaller things. Elrond got a new board with a faster CPU, more RAM and a tape drive. Now it spent its idle time way faster. :) The IBM PC/XT Model 286 running Minix machine left the machine room and is given to someone who cares for it well. I rarely ever used it during the year and I needed some space.

The new year 2003 began with new hardware: I upgraded my NetBSD machine from the SparcStation 1+ to a SparcStation 5, and a SparcStation 4 with Solaris 9 as well as a HP735 with HP-UX 11 joined it (ebay rules). Four kinds of UNIX at home make it easy to develop portable software and make administration more interesting. I added virtual servers, traffic shaping and NLS to Elrond ftpd. To ease development on Elrond, I upgraded it with a dual CPU board. Spam has gotten so bad, that I decided to start using a mail filter. But which? There is only one interoperable solution, so I decided to add Sieve support to Exim. I hacked a lot on my BASIC interpreter, adding features users ask for. Due to lucky occasions, I was able to upgrade the two Suns to two SparcStation 20s. I was always interested in chipcards, but somehow never found the time to play with any. Did I say ebay rules? I got a Siemens B1 chip card reader almost for free and hacked an openct driver to work with it.

And chip cards were indeed fun enough to last until 2004. By now I had a nice collection of various cards and there was still much to learn. I exchanged a SparcStation 20 against an UltraSparc 1 to run NetBSD on faster hardware. I always wanted to have a webcam, so I bought a Casio QV-100, because I knew some old and still running webcams use that camera, and gphoto2 supported it. Unfortunately, it just contained a driver framework for it, so I wrote the driver code itself to finish it. In spring, just when it was almost done, I bought a house and did construction work until the end of the year, which ate all spare time. Besides many common things, I decided to build a dedicated machine room in the basement and have Cat5e cabling in the entire house, so at least there was some kind of hacking involved.

2005 began like 2004 ended: With construction work and little spare time, which I used to hack again on my BASIC. I improved the Sieve code, implementing some extensions, and got active on the IETF Sieve mailing list. By the end of the year, I wrote a small wiki wiki engine used primarily by my girlfriend and me to note food and stuff we need to get. Working on the house still took lots of time.

The first big project in 2006 was finishing work on the server room. After two years, finally all systems were back online. I worked some on my Basic interpreter and the wiki engine, and then decided I wanted a new workstation. I felt like doing a casemod and finally, a Sun IPC with a speakerbox sat on my desk, working with a Pentium-M mini-ITX board. What a refreshing change after all those PC cases I had over the years! I couldn't get enough of it and modified a Sun speakerbox by using an active PC speaker inside, and then went on to modify an external Sun SCSI enclosure to an external USB enclosure.

Reconstructing still took most spare time of 2007. I switched from 4U to 2U cases for some systems and, sadly, finally bought a Windows XP license to run some windows-only software. What a shame, after all the years.

2008: After 8 years, I got a new server. The old one was still fine, but I got afraid after seeing several capacitors break that it would die eventually. And, after 24 years, I went back to building microcomputers and started developing a single board computer with a 8048 CPU.

In 2009, I finished the single board computer and started writing a Forth monitor for it. Further I got a backplane and a subrack, and designed a bus extender for developing I/O boards.

By the end of 2010, I worked 12 years for my employer and felt it was time for a change. Being a systems programmer, the natural options are old fashioned administrator jobs that include writing the software to be administered or system software development. Up to now, I went for the first, but such positions disappeared more and more, so how about the second from now on? I hacked a lot at the Basic interpreter and started building an I/O board for the SBC.

2011 started with a full month of vacation. I finished working at the MCS-48 SBC by ordering a fab made PCB. What a beautiful board! In february I started working at Cognex as system software engineer. As exhausting as it was (when they speak of hard work, they mean it), as good was it. After completing the essential parts of the Forth core, I decided Forth just wasn't made for me. The MCS-48 is perhaps the most unsuitable target for C, so I designed a VM for C that could run efficiently on the MCS-48, reworked my old transputer toolchain for the VM and besides being more comfortable with C, got more performance for less work than by using Forth.

2012 started with finally getting a Sun 3 system again, although a virtual one. I added a tap driver for the great emulator tme, getting a regular virtual machine with its own virtual network interface. Playing with SunOS 4 after 20 years again was much fun. The MCS-48 VM toolchain became mature and I implemented a small scheduler and message passing for the system.

2013 the feedback for cpmtools increased more than ever before. Further I continued work on the BASIC interpreter. Since serial ports slowly got out of fashion, I reworked a USB serial converter to a rackmount version. Finally, the patch rack got too small. I got a larger one and changed it, a few hours of sweat that told me to never ever repeat that mistake.

2014 I noticed that the last server upgrade was already 6 years ago, so I built a new one, which offers much more performance at a fraction of the electricial power used by the old one: 30 W. I always wanted to measure environment radio activity, so I built a small PIN diode detector and hooked it up to my PC for pulse counting. Measuring radio activity is by far more complicated than it seems at first, and very interesting. Finally having got a telescope, I modified a webcam for using it with astrophotography and started to learn about the needed image processing.

For both work and astronomy, 2015 I learned a lot about image sensors and their properties. It is fascinating how much fun a Microsoft Lifecam can be due to the complete lack of documentation. Why didn't I get to know the file format FITS earlier? It is far more useful than just for astronomy.

Lucky me, in 2016 I got a system for free that I always wanted to own since the eighties: A NDR Klein computer, a fascinatingly modular system that just encourages to play with it when you own it, which is why there is still an active community. I extended its firmware and CP/M for being able to run from SD Card. I also added a 1-wire network and a GPS time receiver to the house, using a Raspberry Pi as 1-wire network interface and NTP master.

After the bit banged SD Card adapter worked, a friend and me developed an all TTL SPI controller to build the fastest SD Card controller for classic micros ever and learned a lot more about digital electronics. Astronomy brought me deep into camera analysis, so I started building my own integrating sphere along with illumination and a photo sensor to allow decent camera analysis. Two big projects, much work, and much fun when they first worked in 2017.

In 2018 I worked at the folding editor to bring it into the UTF-8 age. When I came across an article that used matched filters to decode DCF77, I had to write my own version and finally the aged DCF77 decoder delivered a reliable time. I finished the integrating sphere illumination and photo sensor.

2019 I got in contact with the Arduino world when I decided to motorize my telescope mount with OnStep. Nothing ever works at first try, but by the end of the year the mount was connected with Ethernet and moved under software control. The attempt to build a better mount failed, though, verified by vibration analysis using an accelerometer. Lots of cloudy sky brought up the idea of switching from visual to radio astronomy. After visiting a public radio telescope, I learned that indeed even small dishes are fascinating toys, so spent much time to learn what's possible and how. I also started to build a Hypercube Evolution 3D printer.

In 2020, the idea of playing with a small radio telescope became real when I built a LNB power supply and a radiometer after mounting a satellite TV dish on my telescope mount. After learning more about electronics, finally "first light" delivered a beautiful sun drift scan. I finished the Hypercube Evolution 3D printer and started to create a profile for it.

2021 showed that although 3D printing has been a common thing for a long time, little was known about how to set up a printer. I developed a systematic approach to setup my printer, or in fact any printer. Finally, after way too many years, I built a SC/MP CPU card for the NDR Klein Computer to fulfil the wish I had since childhood. I dived deeper into the problems of radio astronomy with my own and learned about the Allan variance and how to get rid of some weird noise, which finally led to converting my LNB to a Dicke-switch style configuration by removing one antenna.

2022 I completed the SC/MP system with a new generation HEXIO card - childhood wish satisfied! Sourching the components was tough, but finally I terminated the reference channel of the LNB of the radio telescope. Further investigation showed its limits to be the thermal coupling of both channels, though.