Contents tagged with My History in Computing
Over the last years I have blogged about various things, but a quick look at the tag cloud of my weblog shows that a large number of posts had one specific topic: My hobby project GhostDoc. It’s easy to forget how long GhostDoc has been in the making (with large pauses in between, of course), so for this “blogiversary” I guessed I’d take a look at the history of GhostDoc in the context of this weblog.
2003–07–02: First Blog post. Just another blogger making his first appearance. Hey, give me some credit, I didn’t use the “Hello World” line…
2003–11–28: Release of GhostDoc 0.5 consisting of a macro, a helper assembly and a looong list of installation instructions. The silence in the blogosphere regarding this release is deafening. Sometimes people see a tool, look past the limited scope of the first release and get excited about what that tool could do in the future. Not in this case.
2004–01–13: Screenshots of GhostDoc 0.9. That version never sees a public release, just a bunch of my colleagues are crazy enough to install it...
2004–08–13: 1st Place for GhostDoc. One of the prizes: A tour of the Microsoft Campus in Redmond – but I have to get there by myself. Did I mention I live in Germany?
2005–04–15: A GhostDoc Feature I Will Not Implement – this is a classic.
2005–09–07: Microsoft Campus Tour. A slight detour to Redmond on the way to PDC 05. I get there by myself (remember?), I get a tour of the campus. What a cool day.
2005–10–03: GhostDoc 1.3.0. The last version for Visual Studio .NET 2003, and (praise the gods of Extensibility) the last time I have to mess with COM registration of Visual Studio add-ins.
2005–10–04: GhostDoc on Channel 9 – sort of. No interview, just the video that was shown before at the “Show Off” session at PDC 05. Please don’t ask how much time and effort went into these 4:36. It’s ridiculous. And by the way: yes, that’s a German accent.
2005–11–11: GhostDoc is one of "10 Must-Have Add-Ins" in MSDN Magazine –sounds good. Depending on the point of view, the fact that the article was written by James Avery (author of Visual Studio Hacks mentioned above) may have helped, but people seem to agree.
2006–04–01: A Sneak Peek at GhostDoc 2.0. Some people obviously didn’t check the date. The “real” 2.0 is released in May 2007.
2006–09–21: GhostDoc Wins the Audience Award at BASTA! Conference. Imagine yourself standing on a stage in full stage light, looking at a pretty huge audience. Imagine ten nominated projects to be voted for by show of hands. Imagine your project getting virtually as many hands as the SharpDevelop project (what? wow!). And then imagine a completely different project receiving the prize, causing overall confusion. That’s what happened on that day. And before things could be cleared up, the tight schedule forced everybody off the stage. Fortunately a review of the notes taken by the beautiful, but slightly numerically challenged hostesses responsible for the counting followed. In the end it turned out that GhostDoc received three votes more than SharpDevelop. Three votes. Funny, that’s two votes by guys of my .NET user group, and one vote by somebody who later told me that he had no idea what GhostDoc was before I gave my elevator speech on stage.
2006–10–20: Whoops... I Just Asked a Question and Now I Won a Prize… Strange stuff happens to me at the Microsoft Visual Studio Extensibility Contest.
2007–01–30: A chapter on GhostDoc in yet another book. Needless to say, mum and dad are proud again.
2007–05–01: GhostDoc 2.0.0 is out. No more thanking my girlfriend in the help file – we married one week after the release of 1.9.5 in August 2006. Version 1.9.6 took much longer than expected and finally became 2.0.0. The huge number of downloads makes me check my hosting package. OK, enough headroom left for many more downloads.
2007–06–24: GhostDoc 2.1.0 is out. VB.Net developers love me again.
2007–07–02: Four years of blogging. Time flies by. Development on GhostDoc will slow down again over the next months as I’ll be working on another hobby project. But I’ll stay in touch with the topic of Visual Studio Extensibility – GhostDoc has turned me into a speaker. Small user group meetings (Paderborn, Leipzig, Braunschweig), the BASTA! conference in September and other appearances are in the pipeline. Things promise to stay interesting.
OK, enough blogging, back to preparing the talk on Friday.
The game of blog-tag has finally reached me: i got tagged by Albert. While this is obviously a pyramid scheme which at some point will collapse, I must admit that I have enjoyed reading the “five things” entries of other bloggers so far. So here we go, five things you probably don’t know about me:
- As a child back in the 70s, the children’s TV series “Wickie der Wikinger” (Vicky the Viking) and “Sendung mit der Maus” have played a big role in getting me interested in science and technology.
- At primary school, I was the first in my class to borrow a book from the public lending library in our school building. I went to the library on the day we received the ID cards, right after school, even though I knew that I would miss the school bus (that was before I was allowed to ride the bike to school); fortunately the walk home was only 20 minutes. The first book I borrowed was a children’s book about the exploration of space.
- I have a long list of failed hobby projects in the time between 1983 and 1986. Overambitous designs, fragile architectures collapsing after minor changes, lack of documentation causing incomprehensible code, loss of interest after a few weeks – all the things you can expect from a typical teenager. Looking back I learned some of the most valuable lessons in that time.
- I once wrote a Sidekick clone called SideWorx for the 8bit computer CPC 464 (by Amstrad, sold by Schneider in Germany). Even though the program worked very well with other programs, its reliance on a rarely-used third-party memory expansion kit prevented any success. Computer magazines I sent the program to ignored it, presumably because the editors weren’t able to try it out. This was before the Internet and access to a BBS was out of reach for me at that time, so without any chance to spread the word, SideWorx had in total the impressive number of four users (my father, two of his colleagues, and myself).
- As a student at university, I got hired more or less immediately after using a self-written tool in a programming class. Students had to develop a program in Turbo Pascal, teaming up in pairs. I ended up with some other guy I didn’t know and we started coding. After some time we ran into a situation where we needed to modify the source code in a very repetitive way. I left the IDE, grabbed a disk out of my backpack and started up a text editor with a macro recorder. The other guy asked where I got the editor from and I told him that I wrote it myself. What I didn’t know was that he – at age 19 – had his own software company and a fat BMW standing in front of the university building…
Today, exactly ten years ago, I started working at Comma Soft here in Bonn, Germany, coming straight out of university. Just amazing how fast time has gone by. Ten years at the same company is even more amazing considering the fact that I originally had planned to stay maybe one or two years, just enough to gain some professional experience, and then move on.
But towards the end of 1997 I joined what would later become the infonea product team. Working in a team of nice and intelligent people (neither nice bozos nor intelligent back-stabbers are helpful in the long run), using a wide array of different technologies over the years, made me stay. And I'm pretty sure that I may stay just a bit longer, because there must be really good reasons to leave a workplace where I have these two very nice TFT monitors (24” @ 1920x1200 + 20” @ 1650x1080) on my desk ;-)
(Photo published with kind permission of Comma Soft AG)
Update: The story "How I got Hired Straight out of University" is now online.
How I got Hired Straight out of University
Monday, January 6th, 1997: This was the first day of the new year back at the Institute of Physics at Bonn University, and at the same time I knew it was about to be one of my last days. The past 14 months I had worked on my diploma thesis, which involved developing a C++ library for accessing data acquisition and motor controller modules for various bus systems. I had already turned in the thesis paper and given a talk about the project back in December, but had to wait for the results. In the meantime I was wrapping up loose ends in the code base, getting ready to move out the office, and surfing the web for a job as a software developer.
While I did have a (somewhat vague) job offer at a company I had worked for as a student, the actual job interview (more or less pro forma I was assured) had been delayed over and over again as an important meeting deciding on how many people should be added to the company hadn’t taken place. It was now scheduled for end of January ("this time for sure").
After some time in my office I thought a hot chocolate would be nice. I went to the vending machine in the hallway, where I ran into one of the two professors who had read and evaluated my thesis paper. The professor told me he liked my work and asked me about my plans after university. When I answered that I was looking for a job as a software developer, he said he knew some people at a local company and could make a contact. Of course I accepted his offer, but having been promised many things in my life before (with only a fraction actually coming true) I remained a bit sceptical. It was quite a surprise when only 15 minutes later I received an email from a person at Comma Soft, asking me to call him on the phone. I called and we talked a bit about my work. After about 10 or 15 minutes he asked me if I’d like to come over for a job interview – the next day!
Tuesday, January 7th: The job interview. I was nervous, my heart pounding. After all, it was my very first job interview, ever. The interview wasn’t done by the person I had talked to on the phone, but two developers. The interview started with some questions about my diploma thesis which went pretty well. After that came questions about how I would approach future projects, how I would design class hierarchies, what I thought about multiple inheritance, and so on - nothing too technical. Then one of the interviewer changed the topic:
- Interviewer: "Ok, let's see... Well, we could ask you about X…"
- Me: "..." (hmm, I hope he won’t go too deep)
- Interviewer: "…or we could ask you about Y"
- Me: "…" (ouch, I’d have to look that up)
- Interviewer: "But these are things that we assume you either know…"
- Me: "…" (hmm…)
- Interviewer: "…and if you don’t, you could look them up."
- Me: "…" (phew)
- Interviewer: "So here’s a question that may be a bit unfair, I’m not sure, just to get a picture of you, not necessarily a problem if you can’t answer that…"
- Me: "…" (uh uh, this doesn’t sound good…)
- Interviewer: "Do you have a rough idea what a C++ compiler does with virtual methods behind the scenes, i.e. how they are translated?"
Tons of rocks dropped from my heart. What a coincidence.
When I started my diploma thesis, I had to debunk the myth that C++ was automatically much slower than C, otherwise I wouldn’t have been allowed to use something so "advanced" as C++. Among other things, I had to do perform some benchmarks on the various possible types of C++ function calls (standalone functions, class member methods, and of course virtual methods), compared to C functions calls (standard call, via a function pointer, via a pointer to a function pointer). I included the benchmark for the call via a pointer to a function pointer reasoning that if I had to reproduce in C what I could do with a virtual function call in C++, pointers to function pointers would be something I'd use. Not surprisingly, the times measured were comparable.
When I started mentioning that fact, the interviewer cut my answer short and said "yeah, there’s this vtable thing, and then these function pointers and stuff, … I guess we stop here, thank you". The two devs left the room, a couple of minutes later the door opened and somebody else came in, turning out to be the person I had talked to on the phone. When he started a monologue about what a great company Comma Soft is, I knew they wanted me. But we didn’t close a deal yet, instead we agreed that I would send them my final results as soon as I got them from university and that I would hear from them.
Wednesday, January, 8th: In the morning I received my final results (sooner than expected), and faxed them over to Comma Soft. A couple of hours later I received a call from Comma Soft and was asked how much money I wanted. I told the person what the other company was offering, he said that it sounded reasonable and asked me if I would like to come over the following Monday to sign a contract.
Monday, January, 13th: With the contract ready to be signed, one final question remained: When would be my first day at Comma Soft? I told them I would like to start as quick as possible. At that time I didn’t have money for a journey and my idea of fun was spending my spare time learning Windows programming (prior to that, I had developed in private mostly DOS, and the diploma thesis was for *ix systems). They said "well, we don’t have a computer ready for you by tomorrow, but what about Wednesday?". I agreed and signed the contract.
Wednesday, January, 15th 1997: My first day of work at Comma Soft. Funny, originally I had planned to choose my first company very carefully - and here I was sitting at a desk just nine days after my first contact with an unknown company! On the other hand, the people I met and my overall impression of the company seemed nice enough to convince me. I reckoned that I could start looking for another company if things wouldn't work out, making some money and gaining some experience in the mean time.
Well, things worked out better than expected. An important step was that in fall 1997 I joined what would later become the infonea team that I’m still a part of. But that's another story...
P.S. I received an email from the other company at the end of January. Now they were ready for a job interview - but I wasn't anymore.
(continued from part 1, "How it all began")
My First Computer - The "CoCo"
So in May 1983 a green screen showing 32x16 black characters appeared on the TV screen in my room. From this day on, I was completely hooked. At first, my father tried to learn BASIC, too, but after some time he lost interest in programming and became what could be best described as an "advanced user". Programming turned out to be very frustrating. With about 5 days of programming experience I tried to write a "Space Invaders" clone - the first of my many software development disasters.
What became pretty clear after rather short time was that the "TRS-80 Color Computer" was a rare thing in Germany. It was only sold in Tandy stores, definitely not to be found in every town. One day we were told by word-of-mouth that a newspaper shop in Cologne (about 25km from Bonn) sold imported US magazines exclusively covering the Color Computer: "Hot CoCo" and "The Rainbow". That was a turning point, because the program listings where the first "large" programs I could use as programming examples. My father, being a fast typist, did the monotoneous work of typing in the listings line by line, page by page. After playing around with e.g. a game typed in from a magazine for some time, I began modifying the code. I learned a lot reading other people's code, but still it was pretty tough.
It was a strange situation. More and more people around me started using computers, but no one was seriously into programming. To them, I was the "guy who could really program", but I knew how limited my abilities were. I started project after project, few of them were actually finished. Loss of interest, or code I could not understand myself after a few days - there were many reasons. One of the few projects I did actually finish was the inevitable "Lunar Lander":
Note that the game used a black/white graphics mode (256x192 Pixels). The colors blue and green are in fact produced by the TV set, depending on the pattern of vertical black and white lines. This trick didn't really work too well on the PAL system used in Europe; in the US, with its NTSC system, a lot more colours could be produced.
I also attempted to learn assembly language using a book about the 6809 processor - but I simply had too little information about the computer itself to do anything useful. At least I learned the absolute basics (e.g. binary and hexadecial numbers).
In 1984 I had the opportunity to take a Pascal course. Coming from a completely self-taught BASIC background, without any education about algorithms and data structures, I was pretty much shocked. It was so hard for me to write code without GOTOs. The implementation of the Pascal compiler running on a Philips P2000 machine wasn't too exciting; everything was slow and I didn't really see any advantage over the BASIC of my CoCo. I finished the course to get a certificate, but couldn't envision myself programming in Pascal.
In fall 1984 it became pretty clear that the CoCo was some kind of a dead-end. The Commodory C64, after dropping in price significantly, became really popular, and games for the C64 showed what this computer could do, pushing the limit more and more. But I wanted a computer that would be easy to write programs on, and that definitely wasn't the case on the C64 (at least compared to my CoCo). To my rescue came a new computer that got a lot of hype in the magazines: the Schneider CPC 464, the German version of the Amstrad CPC 464. With a monitor showing 80x25 characters included, that machine was pretty hot. It lacked the hardware sprites and the sound capabilities of the C64, but that didn't matter to me. I wanted such a computer so badly, that I cannot count how often I sat on my bed reading every bit of information I could get my hands on over and over again. Fortunately my father got equally excited, so Christmas 1984 a CPC 464 was standing next to the christmas tree.
(To be continued in part 3: "My Second Computer - Codename Arnold")
In fall 1982 the local department began selling strange looking typewriters connected to TV sets - so-called "home computers". Interesting, but not really lighting a burning desire in me to get one of these machines. Sure, I saw that they could be used to play video games, but for a video game, the price was incredibly high. The presentation of the machines wasn't too clever as well. Nobody could really demonstrate anything useful on the computers and the "information" printed on glossy paper didn't generate this "I have to get this" feeling, either. At that time, the computers were either switched off or would run game software from modules, so no chance to watch somebody typing the typical
10 PRINT "Hello" 20 GOTO 10
to impress everybody else (especially parents and salesmen) standing behind.
In January 1983 German television started broadcasting the "Computer Club". I watched it a couple of times, but this was all a bit too much for me. At age 13, being just an average kid, without anybody around me knowing anything about computers, I just didn't understand what they were talking about on TV. What I needed was somebody giving me an introduction, just for the first, very small steps.
Arund easter 1983 I spent two weeks at my uncle's house, visiting the youngest of three cousins. At that time the oldest cousin served his (mandatory) military service in the German army. When he came back for the weekend, he showed me what he had bought: a ZX81 computer. Simple, but affordable. I watched him writing small BASIC programs for a whole weekend, tried to write some code on my own and I now knew that this was something I was really interested in.
My parents weren't too excited though, remembering all too well the money spent on the model railway that was catching dust, never really being used. But my father slowly got interested in computers, too. So the research for the "right computer to buy" began. The ZX81 was not seriously considered, as its limits were already too obvious. The TI99/4a and the VIC20 couldn't convince us, either. Technically, the C64 was an attractive machine (really nice looking graphics), but it did cost around 1400,- DM (714 EUR), which was a lot of money back then. The computer my father eventually bought was a TRS-80 Color Computer (around 800,- DM). The manual was perfect for beginners, even though it was written in English, and the "Extended Color BASIC" had commands for drawing lines and circles (the C64 BASIC did not).
(continued in part 2: "My First Computer")