|My Favorite Languages|
|Assembly||various, ranging from beginner to advanced|
|Object Pascal||advanced beginner|
|Standard ML||advanced beginner|
Michael T. Richter
My first exposure to computers was a dumb little kit with 16 sliding switch/connectors and 8 light bulbs. It required manual wiring of "programs" and I used it to solve, among other things, the farmer/wolf/goat problem. Of course at that point I didn't know what a computer was; the kit was sold as a "logic electronics" kit or some such – one of those "educational toys" that are the favourites of parents and hated by most children. (Oddly, I loved mine.)
The first time I heard the word "computer" was in entering an uncle of mine's workplace in about 1976. It was a huge room filled with blinking lights and switches, not to mention the banks of tape drives and even a magnetic drum (used as main memory, not storage!). That was when I decided I wanted to learn to program. I couldn't actually scratch that itch, however, until my school in Germany brought in a bank of Commodore 8032 computers (networked together using a "Muppet" system). My schedule didn't allow for me to take computer classes, so I spent all my lunch hours and all my after school time in the computer lab until I was forcibly removed each day. I learnt BASIC and 6502 Assembler in that lab.
My first professional piece of software was also written in this time. I wrote a system for keeping track of bad cheque writers for my father's office, a finance office for CFB Lahr. This was pre-9/11, so giving a teenager the key to an office that held sensitive accounts so he could work on a computer that held sensitive information so that bad cheque writers could be tracked made perfect sense. Or something. The thing is that I didn't even know it was my first professional software job at the time. I thought my father was letting me play and gave me the challenge so I'd have something to do. When I was handed a $500 cheque for my work I realized I could make money doing something I loved.
This was a mistake.
I did the usual stuff geeks do after that. I went to university. I entered the software sector. I learnt to hate writing software for a living with a blinding passion. I therefore did the only logical thing: I quit the industry and moved to China to teach instead. (Yeah, I can't figure it out either, but it seems to have worked out!)
Strangely, I never learnt to hate software or programming; just the "for a living" part. Now I'm a programming dilettante which you can probably guess by looking at the "My Languages" block. That list is actually a subset of the languages I've used and learnt; it's just that some are so rusty now I don't consider myself even competent at novice levels with them any longer.
Me and Rosetta Code
I like to learn languages. I find that I learn languages better if I use them. Before I can use them for real work, however, I need to use them in small tasks to wrap my head around concepts. I'm not a maths geek (and indeed I hate the field and learn what I have to to program only under duress). As such, Project Euler is not suited to me. I like tasks that are at least vaguely practical and perhaps a little bit quirky. Rosetta Code looks perfect for this.
What you can expect to see from me, then, is code from whatever language I'm learning or reviewing at the moment, frequently edited and re-edited constantly as I learn better ways to do things. There are two sources of this desire to learn or review: my whimsy (for example at the time of this writing I'm learning) and my vanity page (sadly rarely updated).
Getting in touch
I'm open to communication. You can leave messages on my talk page. You can email me at [email protected] or add me on XMPP/Jabber at the same address. I also hang around on FreeNode under the handle ttmrichter, especially in the #yfl channel.