Below you will find a link to my résumé. It serves well as a brief and formal introduction to my skills, education, and employment history. If, after reading my résumé, you are interested, the rest of this page exists to provide you with a more complete picture.

Select examples of my experience which may be of interest:

  • Implemented DOM 1.0 in Java optimized for memory efficiency. Used 25% of the memory of the Apache Xerces implementation on a data set of 100,000 nodes.
  • Implemented a fully compliant XML 1.0 parser/analyzer in Java.
  • Implemented HTTP 1.0 compliant servers in Java and C++ for embedded systems.
  • Credited as one of the many contributors to the design of SAX.
  • Created "Dig-Zone" in 1995, which in its original C/CGI/HTML incarnation was one of the WWW's first interactive multi-user graphical web games, peaking at 125,000 hits/week.
  • Created "Your Wacky WWW Adventure" in early 1995, one of the WWW's first user-written interactive fiction stories, which eventually had over 130,000 pages contributed.
  • Implemented an Ethernet packet sniffer in C on Linux.
  • Implemented, at age 13, math drilling software in Basic on the Apple IIe, used for practice by primary school students. This included a somewhat crude but object oriented graphics library.
  • Implemented, at age 9, simple graphics demo's in Basic on the Apple IIe.

Basically, you should hire me because I'm a "geek". No, that doesn't mean I don't have social skills, and it doesn't mean I'm not a well rounded person. It means technology is more than just a job for me. If you read the points above you will see that I have been using computers, and programming, since before I was ten years old. That says something, it says that I enjoy technology. I didn't ask for a Nintendo game system for my sixteenth birthday, I asked for an HP programmable calculator. I program in my free time for fun. I have been known to get home and curl up on the couch with a good Internet specification.

So, what does all that mean to an employer? For starters, it means a knowledgeable employee. I have written hundreds of thousands of lines of code in a plethora of different languages. There are very few "black boxes" in the computing world for me, because I'm interested in understanding how things work - from what the VM layer of my operating system is doing, to what exactly occurs when loading a web site. I have read RFC specifications for things like ARP, Ethernet, TCP/IP, and HTTP, amongst many others. This intimate level of understanding allows me unique insight into isolating and debugging problems, which translates directly to increased productivity.

Computing is obviously far too large for any one person to master all aspects. To avoid spreading myself too thin, I chose to specialize in a certain few key areas, and work to master those. I selected what I felt were a few "best of breed" technologies, which you will find under the skills section of my resume. I chose the technologies I did because they were powerful, open, and could work together providing the synergy and scope necessary to accomplish a wide variety of tasks. The drawback to this is that I'm not always open to learning a new technology for an employer. For instance, with excellent knowledge of two great general purpose programming languages, Java and C++, which are good for just about any task, I won't program in either Visual Basic or Power Builder. That's not at all to say I won't learn new tools, but it's hard enough just to keep up with the rapid advancement in technology, so I would prefer to upgrade the tools in my toolbox, or add more, rather than replace those I already have. Given the choice, I also tend to shy away from closed technology tied to any one vendor, when possible. With my attention focused in this manner, if you need someone who knows, for example, Java or XML, I know it "forwards, backwards, upside down, and inside out". I'm not a team by myself, rather, my targeted skill set can fill a specific area of need on a team. That is also to say, I'm a great choice for a few jobs, rather than an OK choice for many.

Being a geek also means that I am very passionate about my work, I take great pride in my results, and tend to be a perfectionist. But this can have a negative side as well. If you want a quick hack job to throw away later, and don't really care if it's done right, I'm not your man. If you want intelligent, well designed, object oriented, extensible, and maintainable software, that's what I'm good at.

As you saw on my resume, I'm about more than just technology, I also have a Bachelor of Commerce degree from the School of Business. This is what gives me the big picture of how the technology integrates with the rest of the enterprise. I understand marketing, accounting, and management. I know how to talk to users and assess their needs, as well as those of the customer and business as a whole.

Why have I told you all this? Because I want the right employer just as much as you want the right employee. So, if all of the above sounds good, please feel very free to contact me. I also encourage you to read the rest of this site, in particular, you might find the sections with my biographical information and projects informative.