101 reputation

Chris Haas

Building a computer system is like building a Rube Goldberg machine: you have an expected outcome and you've got a collection of things that someone else made but how you put those together is completely up to you. Sure, there's constraints like gravity and friction, but the more you understand them the more you can use them to your advantage.

There's a great video by Clifford Stoll where he says:

The first time you do something, it's science. The second time, it's engineering. A third time, it's just being a technician.

That simple outlook completely resonates with me because I'm a software engineer. I have no delusions that I'm a computer scientist inventing new things, I'm using tools made by other people - and I love it!

As an engineer, I also like to take things apart to learn how things work. If I don't know how something works then it is effectively magic as far as I'm concerned and I really don't want to use it.

On the extreme end of this, for some weird reason I know a lot about PDFs. I actually even have a printed copy of the 1.6 PDF spec that I took on vacation to read. You know, for fun. What's weirdest of all is that I have almost no need of this knowledge in my day job, I just find the PDF language to be very well thought out. This has also lead me to be very knowledgeable in the PDF libraries iText and iTextSharp which, once again, I don't actually use in my day job.

But my passion is for languages and frameworks that allow me to express my ideas in a consistent manner. I grew up with BASIC and have learned probably a dozen variants of it over the years so I have a special place in my heart for VB.Net although most of my .Net work has been in C# lately. The languages are so close these days that I sometimes don't even notice which one I'm in!

Lately, however, PHP has been my language of choice. I don't think it is the best language out there and in fact I agree with many people's sentiments that it is inconsistent, confusing and non-discoverable but man can you do a lot with it!

I also really enjoy JavaScript ECMAScript but weirdly don't know jQuery or any other framework. Don't get me wrong, I'm not against jQuery, I just don't have a need for it.

And please hear me out on this last one. I love WordPress. I've built dozens of custom content management solutions over the years and implemented many open source as well as very, very expensive proprietary ones and WordPress combines all of the best features of these. True, you generally have to write more code to customize WordPress than other CMSs out there, but I think that's a good thing! Everyone has their own specific content model and trying to create an interface that works for everybody just leads to impossible to use clutter.