I’ve been a geek all my life. I started writing code when I could barely see over the table on an Atari, and then grew into it more when I got a Commodore \64. I was fascinated by this machine that could do so much, but you had to tell it everything.
I first started C years and years ago when I bought a used Amiga 500 and a C compiler–which was years ahead of it’s time, by the way. Later, my father got an 80286 which was about the size of most workstations today but significantly less powerful. At this point it was pretty clear that IBM spinoffs were going to be the computers that went mainstream. So I… um… borrowed my father’s computer rather often, and learned all the ins and outs. I learned how the processor worked, how DOS read from a disk, how text was put on the screen, how the sound card worked, etc. I left no part of the computer unexplored. By the time I finished high school, I had written a text windowing library, my own disk recovery routines, dealt with most common data structures, was very proficient in C–although I had no understanding of real good design, and was writing GUIs for Windows 95–which was painful without MFC. I also had paid my dues. Ever low-level format an MFM hard drive? I did. That was a painful lesson in the difference between decimal and hexadecimal!
In the years after that, I played with anything I could get my hands on. COM, DCOM, MFC, ATL, C++, FreeBSD, Linux… you name it. But for whatever reason, I chose to get a degree in Electrical Engineering. I suppose that it was the love of knowing went on inside a processor… or perhaps it was because there was such a pay difference between Electrical Engineering and Computer Science at the time. Whatever the case, I knew one thing… the computer was a tool that I would rely on for the rest of my life, so I kept tinkering.
Fast forwarding to now, I’m currently a Senior Engineer at a small consultant company. I’ve done everything from Embedded and FPGA designs to programming in Java and Python, and I love it all. I love operating systems, and really enjoy kernel level development. I’ve written a number of device drivers for Windows and Linux, and enjoy the concurrency and difficulty that surrounds most kernel development. I’m also fascinated by compilers, languages, reverse compilers, high-speed computing, and especially fascinated by digital signal processing.
I also contribute to open source projects quite often. My biggest contribution is probably to Subversion–I helped get it to 1.0. But I’ve contributed substantially to Neovim and Nose, and have made numerous smaller contributions to more projects than I can count.
I’ve often visited sites who have articles that have been commented on by a large number of people who seem incapable of criticism and love ad hominem attacks. To make the matter worse, there are probably a few useful comments that have been buried in the one thousand comments fuckwad tried to make. As a result, I’ve disabled commenting on my site. If you want to learn more about why I’ve done this, then see this article written by the infamous Joel Spolsky. If you must make a comment… then set up your own blog, or send me an email.
If for some reason you need to contact me–a revision is broken, to correct something on my site, etc.–shoot me an e-mail. I can be reached at firstname.lastname@example.org. Be forewarned, I get a fair amount of spam. I do go through it occasionally, but it may take me a bit to get back to you.