Tuesday, November 17, 2009

I've written this text originally over 10 years ago but just wanted to preserve here. It shed's a bit of light on my long history of computers, coding, hacking etc.

Phil's story of his life


I was born on the 11th of august 1970 in Esslingen a.N., South Germany. My family only spent three years there until we moved to a small village called Kirchentellinstfurt close to Tübingen, a city only about 20 miles away from Esslingen as my father got a job there as a university professor and teacher for gymnastics.

I had a rather uneventful and standard youth but with parents which after looking back now really did a good job.

The big change in my life which put me on a different path than most of my childhood friends happend when i was introduced to computers in 1981. It was at our mid school (called Gymnasium in Germany) where we had an old Pet 2001, a machine with a 6502 CPU with 1 Mhz and 1KB of main memory. At the same time a friend of mine bought an Atari 800XL on which we played a little and typed in BASIC games from game magazines which we utterly didn't understand and sometimes just randomly changed lines and values (which actually sometimes lead to really interessting results). During that year Commodore released the C64 in Germany for a very reasonable price and so i asked my mother if i could get one from my saved money and she agreed.

I guess that was here first and only big mistake she made ;) (just kidding).

After i bought the C64 together with a tape drive i started also typing in programs from magazines and changing stuff again, but it was very dissatisfying that i didn't understand what and why things happened, so i started buying books and read them. Over the period of several years and spending nearly every afternoon and evening in front of the machine i started understanding the machine and at the end knew every single register and all the peeks and pokes of it. During that time i also first started writing own programs in BASIC, but after a while and with the need for more speed i switched to assembly language.

The books included logically Rodney Zak's "Programming of the 6502" and the big books of Data Becker, a German publishing company which did a pretty good job on books about the C64, the Atari 800XL, the Atari ST and the Commodore Amiga later on. I still have nearly all of my old books at home, although most of them are very outdated by now.

After about 5 years i nearly knew everything there was to know about the C64 and basically programmed everything i needed on my own, so i began to feel the need for a new challenge.

Again by pure coincidence Commodore came out with the Amiga in 1986, and due to a serious motorcycle accident i had in that year where i spent 4 weeks in hospital i got a good amount of money of the lawsuit against the driver and i was able to buy one of the first Amiga 1000 in Germany.

This was now a whole new dimension for me, the Motorola 68000 CPU with 7.44MHZ and 512KB of main memory. I now could do things i never was able to do on my C64 and started the same process as on my C64, mainly learning the BASIC dialect of the included BASIC and getting accustomed to the machine. But just the operating system itself was already much more complex and getting to know the rest of the special hardware took again some more books and time.

I started learning C and Assembly on the Amiga as well, but never quite grew comfortable with the whole system itself and at that time wasn't able to appreciate the underlying multitasking system with which i would be confronted later in my life again, namely UNIX, but more about that later.

The few mid and later high school friends who also worked with computers during that time nearly all switched to the Atari ST which had a little more speed and basically was much cheaper, so after 1 1/2 years i also got an Atari ST in 1987.

Here i felt comfortable much quicker as the Atari was much more like the old C64 than the Amiga, a much simpler design and architecture, so i started doing most of my work on this machine, also because the few computer people i knew mostly all worked with the Atari and so we were able to exchange information and learned from experiences of the others as well.

We started a small "group" for which we did some projects and demos which in turns we then displayed at the Atari fair in Duesseldorf every year and had a lot of fun there hanging around. Sometimes to push our abilities to the limit we did small coding competitions where we set a goal for a project and whoever did the best/fastest code won. During that time i learned a lot about very low level optimization techniques, real time computing and algorithms. The things i did included 3D vector and pixel routines for starfield and object simulations, scanline colormap switching to get really nice color effects, very fast sprite routines for arbitrary objects, 2- and 3D function plotters, fractal programs, a few small board and card games with AI and various simulations based on articles of A. K. Dwendey in Scientific American, one of my favourite authors up to today. I probably did a lot more things with my Atari and my Amiga but nearly 10 years have past since then... Man, time really flies by doesn't it?!

At the end of my high school time in 1989 i did my first commercial software for a company in our area. They needed a program that build a cross reference list for their variables in their special BASIC dialect. I didn't get a lot of money for it, but i learned a lot about project plans, deadlines and a quite a few other things. After i finished high school and a few very productive years in very low level programming i started my studies of computer science at the University of Tübingen in 1990. There i was confronted for the first time with UNIX machines and the Internet which should change my view of computers once more.

I had already done a lot of stuff with my modem at home but mainly with BBSs' so the impact of the Internet really hit me after a while. At first i didn't really get it, but after long night hours in Nightfall, a M(ulti) U(user) D(ungeon) running on one of the UNIX machines at our university i started to understand the concept of multiuser and multitasking systems like UNIX and how and what a network was and how the Internet resp. TCP/IP worked.

After long years of resistance against Intel machines in 1991 i finally decided to buy a 486/33Mhz with 8MB RAM and a 500MB IDE drive. I did this because i really was pissed by the marketing and development by Atari and Commodore because the new machines were way to expensive and didn't offer any reasonable advances over the old ones. I still have the floppy and the keyboard of my my first PC in one of the machines i am using these days now at home.

In the beginning i didn't use the PC for much else than playing games as most game companies shifted more and more to the PC. I still did all the programming and development on my Atari ST or my Amiga though.

This changed between 1992 and 1993. I already was quite comfortable with UNIX as we had some nice workstations pools there, including good ole Suns, HP and AIX machines. UNIX was really something new for me, but i already shifted more and more of the development i did to those machines due to stability and performance.

During that time i also had a job at the computer science center at our university as assistant for the C programming course exercises. I was already pretty good in C and more or less did the teaching as well as the professor who taught the course wasn't the best teacher i ever had seen to put it nicely. During that time i also won the first price in a programming competition from a magazine. The task was to write the shortest C programm to calculate and display all prim numbers between 1 and 100000. The final result was this 67 byte long program here:


main(){int i=9,j=99999;for(;--i;j%i?1:--i?i=--j:printf("%d\n",j));}

Try to figure out what happens here on your own. If you have problems feel free to drop me an email, i'll give some hints :). I probably could have submitted that line to the OCC, the obfuscated C contest, but wasn't sure about the legal stuff as i had been published in that magazine so i didn't do it.

So i really got accustomed to UNIX quite quickly due to the work there and the time i spent there to port software packages from one UNIX to another and writing my own programs, e.g. a X11 display program for the pictures rayshade, the predecessor of povray, produced.

In the summer of 1992 i accidental found out about Linux and installed it on my PC at home. Most people don't know these versions anymore, but the first kernel i used on my machine was the 0.96. Since then Linux has been my main platform for my software development and probably will stay it for quite some time more.

During those first years at the university i wrote a lot of programs on the UNIX machines to learn how they worked. One of the biggest projects i did during that time was a battleship program with a very good computer AI and a really usable text based user interface and TCP/IP network support.

In the end of 1993 i quite the job at the computer science centre due to some problems i had there with the people. I also had an offer for a much more interesting job at a workgroup at the Max Planck Institute for biological cybernetics. They were in the process of building up their system which consisted of a dozen SGI workstations and an Onyx RE 1. They needed someone to do software installations and every day jobs to get some load off the system administrator there, so i took it.

I had and still have a very nice time there as the people and especially the boss there are very open minded and flexible. A lot of it had to do with the fact that Prof. Buelthoff had been 7 years in the USA and therefore it was kind of a 'DO-IT' mentality there. If you knew how to solve a problem you just did it and didn't have to ask 1001 people and sign 1001 stupid papers before doing so. I also learned a lot more about the internals of UNIX there as in 1995 the second system administrator quit and i took over the whole job as sysadmin for a lab of 40 SGI and several Macs and PCs', including two Onyx machines as a half day jobs while i was still studying computer science. Looking back it was really hard but all in all i think i did a very good job.

Between 1993 and 1996 i also had a weekend job as a freelance PC consultant and technician where i would advise people which machines to buy for specific tasks, install new components or software and help them with hard- and software related problems. A lot of the PC knowledge i have now is due to that work i did back then.

I didn't do much own software development during that time anymore as i had my daytime job at the MPI and my studies at the university.

In 1995 i went to the USA for a two month holiday during my semester break with my former girlfriend. She came from California so we first visited her mother and her uncle in Carmel by the Sea and Monterey. After two weeks we rented a car and started our long trip through the whole country. We first drove to LA to visit another friend of her. The next stop was in Denton/Texas which is about 50 miles north of Dallas, where two friend of use lived. Then the trip took us to Boston to another friend of ours where we rested for a week and i had a chance to see the MIT and Harvard and the nice little pubs all over the place. The next stop was in Guelph, Canada, about 50 miles west of Toronto where we only stayed two days or so. Luckily we drove by the Niagara falls which was really impressive. On we went from there to Seattle where a old high school mate of Dana was living with a friend of him. On that way we passed Mount Rushmore with the four faces of the presidents on it, over the Rocky Mountains and through Montana. From Seattle we drove back over Portland and Euegene to Carmel. I think i still can say that this has been my most favourite holiday i ever had, especially as we went through more than 20 states, more than many native people do in their whole life.

It was during that time that i decided that i want to move to the USA someday and work there. It really was kinda love at first sight.

In mid 1996 the lab at the MPI finally got a new full time sysadmin and i was released from the heavy duty job. It was also during that time that i got an offer from one of the most famous computer science places in the world, the Bell Labs of AT&T. One of the guys from the MPI was doing some cooperation with a department there and they needed someone with good CS knowledge during the summer and he recommended me. Logically i instantly said yes and i had the luck to be selected.

It spent nearly three months there working on a project to bring an in-house software for computer learning into the Internet via a webserver and lots of tools around it. I had to do a lot of cleanup work on the code first as stability and speed were two of the major factors of the whole thing, so i had to understand the C++ library of 30 000 lines of code first and then do the necessary changes. This left only a couple of weeks at the end for the webserver project itself which was scheduled for two months, but with some late night shifts i managed to do that also in time which none of the people there belived anymore. I hacked in the last lines of code 4 hours before my plane left from Newark, and the webserver is still up and running.

The in-house software for computer learning developed there is based on a completely new idea for computer learning called the Support Vector Machines or short SVM. If you are interested in this kind of thing take a look at this page.

The people there were very pleased with my performance and work and wanted me to come back as often as possible, so since then i always spent my semester breaks there to do more work on the software itself and the webserver. They also already offered me a pretty good job there which i definitely will take as soon as i am finished with my MS in CS.

As real programmers should know all of the founders of Unix and C are employees of AT&T, namely Brian Kernighan, Dennis Ritchie and Ken Thompson. I had the unbelievable luck to meet one of them, Brian Kernighan. It's a nice story so i'll simply tell it from the beginning.

A very good friend of mine, Frank Siegert (also one of the wizards.de guys) offered to pick me up from the airport after my first trip to the Bell Labs in 1996. The day i came back happened to be also his birthday, the 1st of November. So i figured i had to get something really special for him as a birthday present. I usually tend not to give any birthday presents to anyone because i often don't know what to give and i never expect to get anything on my birthday either. But this was a little different as i knew that he was a geek as well and that i should be able to find something geeky in the Labs somewhere.

One afternoon i was talking with some of the other guys from the department and we somehow came across the fact that the founders of Unix all were still working in the Bell Labs. I instantly got the idea for the present: An edition of 'The C Programming Language' by Brian Kernighan and Dennis Ritchie signed by one of them. As i already knew a little more about Kernighan i decided to get in contact with him and ask him if he would do that. So i searched for his email address and wrote him a mail with this idea i had. 15 minutes later i got a reply from him saying that he would be happy to do that, the only problem being that he was in Boston for a sabbatical right now to teach the introductory course for computer science at Harvard. As i had already plans to go to Boston for a weekend anyway i quickly replied that i would be in Boston for a couple of days and asked if we could meet somewhere there. He responded that this should be possible and gave me his phone number there and that i should call him as soon as i got to Boston.

So the weekend finally came when i went to Boston. I had already bought three books (one for my friend, one for me and one for another German guy who was working during the semester break in the same department as i) and called him up. We fixed a date for a Saturday afternoon in the cafeteria of the CS building on Harvard campus (which i luckily already knew where to find) where i went the next day. I think the moment i saw him coming through the door of the CS building was one of the few moments i will never ever forget in my whole life. I still get tears in my eyes when i think about that moment like now. It is probably hard to understand for non-geeks, but this was like meeting your favourite actor or band member, something you might dream of but which hardly ever happens.

We first shook hands (which i didn't wash for a couple of days, honest!) and then went to the cafeteria. We talked about tons of things and he showed me the lecture hall where he held the intro course for CS. One might say a lot about Harvard, but i really have to say having Brian Kernighan do the intro course in CS is really cool and absolutely has style. He talked a little about the things he did and does, asked some questions about what i was doing, a little about my past and my future plans and things like that. Time went by much to quickly but after about one hour he had to get back home. I luckily remembered in the end why i wanted to meet him in the first place and so he signed the three books. I accompanied him to the subway station where we finally parted.

It was really something special for me and i will always remember him as a nice and humble person. He was nearly like i imagined he would be, just like a nice old professor.

When i came back to Germany and my friend picked me up i already had told him that i had a very special gift for his birthday. When he finally open his present he was at first a little puzzled and disappointed as he already had an edition of this book, so i mentioned to him to look at the first page. He nearly got a fit when he saw the signature and his hands were shaking. I guess the idea was really good :). For those of you not believing this story take a look at this image.

In 1997 and 1998 i also begun working for various companies as a freelance programmer on software projects in different areas. As i am very proficient in quite a few computer languages like C, C++, Java, BASIC, sed, awk, perl, sh, tcsh, SQL and some others and have been actively working in the CS field for over 16 years now and did nearly everything from low level assembly programming up to complete software packages i am quite busy now. It is really very satisfying to be able to have a job which started as a hobby and which i really like.

Currently (meaning summer 1998) my day job is to do my social service year here in Germany which every male has to do (or army service). This will last until end of spring next year after which i will continue my studies and want to finish them asap to finally get to the USA for good.

Monday, July 6, 2009

Linuxtag/FUDCon 2009 Berlin

From June 23rd till June 28th i spent my time in Berlin at the Linuxtag/FUDCon conferences together with several other people from my team. Arriving on late Tuesday evening we settled down in the hotel and went to bed early to get a fresh start early in the morning the next day.

Wednesday was the actual 1st day of the Linuxtag. Fedora had a small booth in the 3rd hall at the end on the left side where we had a couple of Fedora 11 laptops up and running and showed people what you can do with it nowadays. It was a real blast and organisational was pretty well done. We always had 2-3 people at least at the booth doing "duty" while others could either go around and check out other booths or meet with people to hack or discuss things.

I personally had lots of good talks and hack sessions with Hans Picht and Steffen Maier from IBM regarding IBM System Z on Fedora 11. We've made tremendous progress over the last few months on that, mainly thanks to Karsten Hopp who nearly single-handedly bootstrapped a Red Hat Enterprise Linux 5 to a Fedora 11, over 8000 source packages all in all... You can find his blog here:

http://karstenhopp.livejournal.com/

The main focus for us was to get all the necessary stuff sorted that was still unclear or unfinished. Those boiled down to 3 pieces:

* Network interface support (in anaconda and the live system)
* Storage support (especially DASD as parted is incomplete in that respect atm as well as FCP configuration)
* Anaconda images and installation

I've managed to put together a completely working and bootable hercules emulator image of our current state together with some config and startup files and a readme to make things easier. They can be found here:

http://secondary.fedoraproject.org/pub/alt/spins/S390/

At the end of the week Steffen managed to basically do a complete dry-run of anaconda in a live-system, so with the exception of missing DASD support and bootable install images things are already looking pretty good.

Joel Granados, the parted package and upstream maintainer will be looking into fixing the DASD problems over the next few weeks, he already tried and tested the hercules images and they seem to work for him.

On Friday i then had a full day at the booth (my booth "duty" day ;) which was really fun. I hadn't done that in ages and really enjoyed it. Especially working together with the Fedora Ambassadors that were present a lot at the booth and on the whole conference was really nice. It showed once more how attractive Fedora has become over the years and why it's really worth doing.

Saturday then the i held a short presentation about Power Management history for Linux/Fedora with a short outlook of whats to come in the near future at the FUDCon. As it was the last talk of the day most people had already left, so attendance wasn't that big. Nonetheless i've had a few chats afterwards with some interested people and tried to figure out some of the issues they saw on their machines.

Sunday we then met again at the FUDCon, mainly me, Stefen and Hans from IBM and Hans de Goede and hacked the day away until our planes left for home.

Overall i saw so many people talking with each other that i was once more baffled how extremely important it is to get together personally and do things. The internet with emails and irc and whatnot only goes so far, doing things together in person is still the most efficient way to work in teams. But anyone who ever worked in a team probably knows that.

In my view the whole conferences were a big success, although i'd wish for the next time that Linuxtag and FUDCon wouldn't overlap as that really thinned out both conferences during that day.

Thursday, February 5, 2009

It began in 1981...

Granted, this might not be some relevant information of TODAY, but i wanted to have at least one post at the start of the blog with a small background of myself.

As mentioned in the profile already, i had my first contact with computers when in 1980 when i was 10 years old. We had a Commodore Pet 2001 in our middle school. Hardly anyone used it though except for a few dedicated geeks, most of which were already close to high school. That piece of hardware really fascinated me, and soon some of the geeks showed me programs that they had written on it. This got me totally hooked, and after 1 year i had saved enough money to buy myself a Commodore C64. In a matter of a few months i went from not knowing anything at all over just typing in some silly sample programs and randomly changing stuff to buying some books and learning for real how this machine worked. After initially using the BASIC interpreter i quickly learned that this was a very inefficient way to program, so i started directly learning 6502 assembler instead.

After several years and at a point where i started to grow out of the capabilities of the C64 Commodore announced the Amiga 1000. Totally excited about the incredible features i immediately began saving money for it and managed to buy one when they came out in Germany in 1985. With an additional 256k extension it had a whooping 512k memory and 2 floppy drives when i got it.

It took me quite a bit longer to get into the details of the Amiga due to it's much more complex nature with all the additional co-processors and operating system capabilities. I've again started with the simple BASIC interpreter that came with it but soon switched over to learn and use C and 68k assembler.

Unfortunately most of my school friends bought the much cheaper (and simpler) Atari ST, so after 2 years i followed suit and got myself one of those as well. I found myself at home immediately, in contrast to the Amiga. In my eyes the Atari ST is still the "real" successor of the Commodore 64. It's simplicity made it so much easier to use and understand and being able to squeeze the last bit out of it.

I then did most of my programming work on the Atari from then on. What did i program? Anything that i was interested it, basically. It ranged from simple math tasks over to spreadsheet and word-processing apps up to low level hardware programming with exact cycle and time counting (which was still possible back in those days). I've had many programming "competitions" with a good friend of mine, Michel Hipp. He was as obsessed with speed as i was, and we've spent often times weeks to optimize just for a couple less cycles.

One real example here was one of those famous "Starfield" simulations where you basically travelled through space like the Enterprise and stars would rush you past. The basic rules were:

  • Max Stars per VBE was the goal
  • 3D effect (dark grey stars in the distance, white ones when close)
  • "real" 3D simulation

Unfortunately due to the vague rules in the end Michel beat me after i managed to deliver a version that did 148 stars/vbe. What he did was to pre-compute basically every screen and the "loop" through them. This way he managed 5000 stars/vbe. Up until today i still consider that cheating though. ;)

The next few years i then spent doing all my work on the Atari until in 1991 i finally got convinced to get myself a PC. Up to that date i only ever worked on them at friends places and never really seriously. The reason why i got myself a PC was very simple: The year before i started my CS studies at the University and got introduced to Unix in various flavours (AIX, SunOS, Ultrix, HPUX and many more) and in the end of 1991 i heard about a crazy student from Helsinki releasing a Unix-like operating system for i386 and i486.

Said and done, so i got myself a 386 with 16 mhz and 1mb of memory and a small 40mb harddisk. Compared to my Atari and my Amiga that machine was pretty dirt cheap, and it worked flawlessly with Linux. At that time you still had to basically copy over a disk image to an empty partition and booted it with a load from DOS. Very crude, but it worked. :)

More to come in one of my next entries...

Wednesday, February 4, 2009

All things start small

After quite a few years of watching the new "hip" online way of communicating and expressing yourself i've finally decided to join the club. Having started what seems now aeons ago with bulletin board systems in the 80s blogging seems to have established itself as the continuation of what has a long history of online communication.

I remember back when i started reaching out using my 14.4k modem using BBS, Usenet and Fido (http://www.fidonet.org/) things were in many ways already similar to what we have today. Be it news boards on locate BBS's, newsgroups or anything else the same rules still apply today as they did back then: People want to communicate and share information. And not much has changed, just the media and the format, but the principles still hold true.

And other things are still valid as well. Finding specific information is still not as easy as one would like to believe it should be. But i think thats just inherent in the way we humans communicate in general. We aren't "designed" to be perfect in that sense, and that reflects in our various forms of communication as well (beginning with languages itself!).

But enough babling for now. More useful content later.