Software is a static list of instructions, which is constantly changing.

About Me

I'm a software developer, amateur writer and occasional photographer.

Well, at least that's how I like to summarize it :-)

I started programming back in the mid-80s in university, where I studied Computer Science (CS) and combinatorics & optimization (C&O). For one of my later co-op jobs I ported a symbolic algebra calculator for nearly two years, but I also had a great mentor who taught me how to code effectively.

Once out of school, I worked in the financial industry for a long time, writing calculation engines, multi-process caches and other systems-level programming. I switched to consulting for a while (to get enough money to go traveling for a long time), and then eventually found myself as the CTO of a little startup.

That experience broadened my perspective on building software, so when I finished I decided to write a lot of it down (even though I had never really written anything other than research reports before). The difficulties in getting the book published lead me to start blogging about similar issues. The Programmer's Paradox was the name of the original book and is my second blog. These days I've been working on commercializing complex technology (for a domain which will be left unspecified). I prefer working on commercial products because the constraints are more demanding

Over the years, and the many different experiences, my attitude towards programming has changed a lot. I started out seeing the process as more of an art-form, but generally as I gained more knowledge and a deeper understanding, I came to realize that even with the difficult systems, most of what we are doing was well understood at some point. Software development is rather unfocused as a profession, which often causes us to ignore the fifty or so, years of built up experience and understanding. Once you've been building things long enough, the smaller problems are no longer as challenging, the answers are more obvious. It's the big issues that people keep ignoring that become important.

If I am trying to get say anything significant with these posts, it is that we are constantly forgetting that so many people have walked this route before us. I was guilty of that when I started, and I know a lot of programmers who fall into the same trap. As long as we continue to re-invent the basics, over and over again, we'll never be able to push past our current limited state of development. It's a problem that has changed little in twenty years.

If you have any questions, comments or experiences please feel free to comment. One of the best ways to solidify your knowledge is by trying to communicate it. It all sounds reasonable in your head until you try to get it out. That has certainly been a big lesson I've learned while blogging :-)

PS. The photography thing? I did a lot of work with graphic designers, which influenced me into delving into my creative side. I think it's the contrast between that part of my experiences, and the coding part that help delineate the line between problem solving and artistic efforts. There are similarities, but then there are big differences.