Although I did my PhD. in Biology I've been programming since (oh wait..) 30 Years now. That means since the day of the famous Commodore C64 although I never had one. My mother bought one for her computer courses. I jumped the bandwagon when the Amstrad CPC464 hit the market. This enormous machine with incredible 48kb of Ram which you even could pump up to a breathtaking 64kb at least if you started to work on the video memory via bank switching. And when the soon to be doomed 3'' floppy-disk format was available you even could run CP/M on it with Turbo Pascal, Editor and compiler all in memory (*sigh*).
Oh well -- let me not dwell into old memories of times where the operating system still could be published (and understood !) as a printed disassembler listing.
I think I did the usual stuff like coding an address database in Locomotive BASIC without any real need for one since the addresses I had to remember could easily be memorized (at least at that age). Trying to code TIC-TAC-TOE to impress girls, which didn't really work though. I mean the girl part.
Then something really intoxicating happened. Some people from Data Becker publishing Inc. released the CPC464 Assembler Book and the CPC464 ROM Listing, and they also printed a complete Assembler written in BASIC. It took me a couple of days to type all of this into the little machine, without really knowing what I was doing and voilà I had my very first Z80 assembler working on my computer and still something like 8kb memory left for executable code. That was my first experience of real speed. I never touched BASIC again and proudly called myself an Assembler Hacker !
Of course the next natural step to go was the rewriting of the assembler in assembler including macro processing and pseudo-code for floating point arithmetic. For this I hung out way to often in the library of the mathematics department instead of doing my biology homework. I came in touch with the work of Donald Knuth and Wirth .
For me the ultima ratio of Computers at that time of course was the Mac® I mean this little shoebox with the tiny square screen with mouse and windows. No I don't mean Windows® I just mean Windows -- I mean these little squares you could move around and type text into. And text wasn't just green flickering characters all of the same size it was Times, and Helvetica and stuff.
Furthermore they where running on 680xx architecture where you really have something like a von Neumann Machine without a stupid 640kb barrier. Thank god I never really got in touch with such horrible things. My brother did a lot of code on 80286 at the time and he actually was proud to interact with some hard to handle library code which allowed him to handle memory of decent size
I always wanted linear address space. And may be 1MB or even more !! But Apple had this horrible price-politic at the time. And simple fellows like yours sincerely just pressed their nose at the windows of the Apple-Shops where arrogant dealers sold their high-price computers to arrogant costumers, Well -- I would have loved to turn arrogant too if I just could effort it.
Then the Atari ST and the Commodore Amiga came to the rescue of the little people. It was a hard decision but I went for the Amiga 1K and that was just to good to be true. Not only the hardware but the operating system was great. Real multitasking instead of this "cooperative multitasking" loadable libraries, and a nice device abstraction layer. And you still had a command prompt. So you got the best of both worlds.
I got my first Emacs which still is my preferred IDE (Yes I prefer Emacs over Vi) on Linux and my first C-Compiler (Aztek).I did a lot vector graphics and ray-tracing stuff, still trying to optimize a lot in 680xx-Assembler until I had a look at the Assembler code generated by the C-Compiler. It really wasn't worth the effort.
Due to all this coding I was a bit afraid of not getting my acts together as a Biologist, but I was lucky enough to get a good Ph.D. student position at the "Institut für Genbiologische Forschung" which later merged with the "Max-Planck Institute of Molecular Plant-Physiology" one of the best places in Germany to do Molecular Biology.
Beside a very good laboratory equipment and extraordinary good funding, compared with the laboratories of the near by Free University they also had this wonderful MicroVAX they shared with the near by "Max-Planck-Institute for Molecular Genetics" . All the programming resources I ever dreamed of plus my first encounter with the internet which meant e-mail via pine, filetransfer with ftp and "browsing" with gopher . At the end of my thesis they even got Mosaic 1.0 on the system.
Working in the lab very often meant working after hours, waiting for a sequencing gel to do it's job or a hybridization wash step to finally remove enough radioactivity from the filter. Which gave me lots of time to work on programs dealing with the DNA database available in the institute. The result was my first publication in the field of Bioinformatics.D5scan
Luckily enough this was just the beginning. Of course there always were software packages like GCG around and specific algorithms have been developed to solve biological problems for decades, but since the set-up of the large sequencing projects biologists just have been drowned in information, and the art of programming computers hasn't been as well established in the community as for example in the fields of physics and math where almost every student is required to state a solution in FORTRAN at least.
My firstJob after leaving the lab didn't have anything to do with biology. I worked for a company building and programming RIPS They were in need of a Assember expert teaching a Z80 based micorcontroler the ECP parallelport protocol for which my experiences with my good old Amstrad CPC464 was just the right education.
Then things finally converged. Another Max-Planck facility established a new Bioinformatics group specialized on the management and analysis of Expression Profiling data. This new discipline promised to make sense out of genetic regulation on a previously unparalleled level and was soon producing data in volumes formaly unknown to biologists.
They offered me a position as the head of the new group. My main responsibilty was the establishment of a web based data store and processing system which involved a lot of Perl and JAVA code under Apache at the time. Number crunching routines were written in C++.
Another importand issue in the field of Expression Profiling was the investigation of novel statistic methods or at least the sensible import of well established methods from other fields of science. One thing I came up with was the so called "Mutual Information" (MI)". I extended the method by applying B-Spline weight functions to the binning problem of the MI and published the result inform of my mis_calc program.
Expression Profiling served as a business model for many start up companies at the time and I couldn't resist the call of the free market and moved over to Scienion AG which specialized in the production of Microarrays and the provision of services thereon. My main responsibilies as head of Bioinformatics at Scienon was the development of a workflow system which automatically generated and cataloged large sets of Primers and other Oligomers from whole genomic data. This includes the parsing and interpretation of large scale XML based datasets and other more archaic data formats like GenBank and ASN.1. After identification of DNA-Sequences with good experimantel properties these small DNA pieces had to be archived for later references in RDBM systems when the experiments were performed. Working for a company was quiter a challange as compared for the research environment. Data provided by customers were very often badly formated and dead lines were very often much tighter. This very often made it necessary to unleash the power of Perl in order to process large amounts of Text date for preprocessong.
So although I didn't have a formal education in Computer Science I may call myself a Bioinformatician.
The next step removed the Bio completely from my CV. I started to work as a freelance coder especially in the field of Digital Printing. This involves such divergent assignment as the work on hardware interfaces to ink-jet print heads, JAVA and FastCGI Perl frontends for User Interfaces and dynamical generation of PDF Documents with the Adbobe™ PDF Library.
Since output speed is key in the field of Digital Printing it is very importand to leverage the full power of all cores a CPU has to offer. It is the perfect environment to optimize your C++ skills in the field of multi-threading and data caching to circumvent I/O bound code since any I/O operation with the potential of incalculable delays may result in undesirable slowdowns. Interprocess communication via shared memory segments, proper handling of mutexes, semaphores and pthreads as well as the internal caching of SQL Database results are the most important tools in this field.
Of course one also has to inderstand PDF and Postscript as well as various bitmap fileformats and color space manipulations.
Since the Operating System which drives the Printers very often was Linux I also provided patches to Open Source projects whenever a component used in the Printing engine showed a bug. This included a patch for the Samba Network filesystem which allows the access to files >4GB and a contribution to the Linux kernel USB 2.0 stack which prevents a kernel freeze during high volume data transfer.
Inspide of all the after hour work stress and chaos my Ph.D thesis imposed on me I was lucky enough to meet and fall in love with a wonderful woman. In autumn of 1998 we married and in February 1999 our wonderful son Leonard. was born. In February of 2002 he was followed by our sweet daughter Valerie.
As you might know from a statisticians point of view marriages at least in industrial nations turns out to be almost a 50%/50% game and unfortunately we didn't make it, but I'm still gifted with my two little (well actually not so little anymore) offsprings.
And the world really would be a cold and empty space if we'd be all statisticians. No offense intended. I guess the same holds true for programers, biologists.. and.. and.. and.
That will be hidden in the brain of a 1 year old toddler for all times. It's one of the very early words of my son, or at least mom and dad thought so. This wonderful time when the trouble and stress slowly (very very slowly) diminishes and we were both proudly listening to any reaction of the little one and any blurb and other signs of development seem just like a wonderful unique gift.
It seemed so greek and eloquent at the time, but may be it just meant "gimme more of that banana...!" , or "god dammit just let me play for a while and stop staring it me" , or may be it was just a halluzination induced by sleep deprivation and it didn't really occur...