I walk the line between designer and developer. Some days I feel like a designer trying to muddle my way through code, other days I think I'm a developer struggling to make something look nice.



I got into web design in 1998 so that I could help out with my game clan's website. Within a few months, I was writing markup by hand and using CSS to style it. My first table-less design was in 2002, and my last active table-based design was converted to using CSS in 2004. I started exploring responsive web design in 2012 for work.

My style has evolved quite a bit throughout the years. A lot of my early designs feature digital paintings that frame the site's content, now I let the content drive the design. The one thing that hasn't change is my commitment to progressive enhancement. The user should never think they're looking at a broken design, but users with a modern browser will receive the best experience.

  • HTML
  • CSS
  • Sass
  • Responsive Web Design
  • User Experience
  • Photoshop
  • Illustrator
  • Inkscape


Programming became a part of my skill set in 2002 when I needed to write small programs and web applications. I picked up a bit of Scala in 2012, but quickly moved on to Haskell. Writing code involves a lot more trial and error and Google-fu than my other skills. When it comes to solving complex programming problems, I find that it helps to draw them out on paper.

  • Haskell
  • Scala
  • Pike
  • PHP
  • JavaScript


Working with databases is a relatively new discipline for me. I was introduced to the world of databases in 2002 with MySQL for managing my online diary, but I didn't take it seriously until 2005 when I started working on Gamependium. I began exploring triggers and query optimization in 2012 when I started working with millions of rows of data.

  • Data Modeling
  • PostgreSQL
  • PLpgSQL
  • MySQL
  • Query Optimization

Work Experience

Data Modeler/Haskell Developer, Zalora


My primary project was to redesign their MySQL database and convert it to PostgreSQL. Of the ~400 tables that comprised their database, ~200 of them were responsible for storing product data. I devised a schema that would use ~30 tables to manage the same amount of data while still being normalized. The simpler schema meant a simpler code base and would provide a better experience for the user. This project was canceled while I was in the process of writing the conversion.

Data Modeler/Web Developer, snapd Inc.


My first project was a web application to manage the planning of flyers for a grocery store. We used as an experiment on how we were going to rewrite a similar application that runs snapd. The first version was written in PHP using the Zend framework, but I found it to be difficult to maintain in the long run. After exploring frameworks in both Scala and Haskell, I settled on Haskell's Snap framework. Over the course of 2 months, the application was completely rewritten and included a number of improvements over the original.

Open Source Contributions

Digestive Functors (Haskell)


I've submitted a few patches to improve support for the HTML standard. Such changes include fixing a minor validation error in the digestive-functors-heist package and adding support for the multiple attribute on select and file input elements (the later is new for HTML5).

Digestive Functors Scotty (Haskell)


I made a minor adjustment to make the library compatible with Scotty 0.7 and Digestive Functors 0.7. I needed to use the newer versions of those libraries for a project I was working on at Zalora.

Sass (Ruby)


My primary contributions here are in the form of support on the issue tracker. I assist in helping triage new issues, from pointing out duplicates to resolving user errors.

Compass (Ruby, Sass)


I rewrote their collection of Flexbox mixins for the 0.12 version. The original mixins were for the 2009 Flexbox specification, but a few browsers had been supporting the standard specification from 2012 for quite a while when I made the pull request.