Profile photo I started programming at 7 years old, when my father bought the family a Commodore 64. I quickly grew tired of playing games on it, and instead wanted to make things on it myself. Since then, I’ve never really stopped.

I believe in creating software architectures that are elegant, functional and minimal — agile software development that doesn’t attempt to over-architect, or add unnecessary complexity.

I believe in the importance of design. I believe in pixel-level perfection which makes websites and user interfaces a pleasure to use.

I believe in beautiful code, constant refactoring, and intelligent code commenting. I believe in the importance of good documentation.

I believe in knowing your tools inside and out. I believe it pays off to do things correctly from the very start, rather than spend time later on fixing your errors.

But above all, I believe in balance and practicality. While elegant, pixel-perfect, beautifully refactored software is always the ideal goal, shipping working software that meets a deadline is what pays the rent. Successful software development is not a rigid science, but rather an art honed by experience, and aims to produce the best possible product given time and resource constraints.

I have experience programming on my own, programming in teams, and leading teams. In my most recent employment at Globosat in Brazil, I led a team of four other programmers in my last project to deliver a brand-new dynamic video and photo gallery site ahead of schedule. I was the technical liaison while the site was being conceived, and was responsible for working with the client to determine a timeline of delivered functionality, for setting the site’s technical standards, for organizing its development, and for training and assisting other developers as necessary.

Overall, I have over nine years’ experience in commercial software development, and many more when including my own projects. In 1993, I wrote software which implemented Internet protocols like FTP and Telnet. Then, as the World Wide Web was just starting to begin its commercial potential, I began building websites which were viewed in Mosaic, and then in the first version of Internet Explorer. Since then, I have kept up-to-date with the emergence and evolution of technologies like CSS, JavaScript, AJAX, and much more.

I have the technical chops necessary for pure programming and establishing technical architectures and standards, but also enjoy the warmer/fuzzier “people side” of things. I find organizing and supervising development work to be just as rewarding as doing it myself, and also enjoy working with clients to transform their visions into the best possible products. I pay great attention to keeping clients updated and comfortable throughout the entire development process. Any surprises when a product is delivered should be good surprises.

I created this portfolio site from scratch. All of graphic design and programming on it are my own, and it serves as an example of my work.

All HTML/CSS is W3-validated, and no tables are used (although I believe in using tables where appropriate). Modern CSS3 effects like rounded corners and gradients work in supported browsers, but degrade gracefully in older or non-compliant browsers. While the site is best viewed in the most recent versions of Firefox, Chrome or Safari, it is still fully functional all the way back in IE6.

While the site uses jQuery, all other JavaScript is my own, including code for viewing images when hovered over on the home page. If JavaScript is disabled, the site degrades gracefully as well — all portfolio images appear immediately, and can be viewed by simple clicking.

Attention has been paid to lots of little details too: in large browser windows, the content is centered, but in narrower windows, it shrinks accordingly. On short pages like the Contact page, the footer is pushed to the bottom of the window. And typographical niceties are attended to as well, with em-dashes, en-dashes, and hyphens used correctly, curly quotes instead of straight ones. Line heights, letter spacing, paragraph spacing, column widths, and contrast levels have all been chosen to maximize readability.

Tech skills

HTML/CSS + browser quirks
JavaScript, jQuery, Node.js
MySQL table & query design
User interface programming
Website architecture
Amazon Web Services
User interface design
Version control (git)
Algorithm design
Graphic design
Apache, cron, etc. config.
Linux administration
Flash programming

I also have extensive past experience in Win32, C++, and VB6, back in a previous era of programming.