Department of Psychology, Utah State University
My first paid web job. I built the department's web pages in Dreamweaver. It was almost all HTML and CSS, and every layout was a table inside another table.
Dreamweaver, HTML, CSS
I started building websites for a living in December 2005. This page lists the 20 years that followed, in order.
My first paid web job. I built the department's web pages in Dreamweaver. It was almost all HTML and CSS, and every layout was a table inside another table.
Dreamweaver, HTML, CSS
The first job I count as real development. I moved the site from ASP to ASP.NET 2.0 and built a quiz engine, a poll system and a forum.
ASP.NET 2.0
October 2006 to May 2007
I built a web-based jail management system. That is not a joke.
May 2007 to January 2013
I built news sites for the meat and hotel industries: meatingplace.com, carnetec.com and hotelsmag.com. I worked on them, on and off, for nearly six years.
ASP.NET MVC, jQuery
January 2008 to June 2009
I was one of the main developers on the AJAX redesign of crateandbarrel.com, written in jQuery and C#. I also built the shared code that the company's three sites ran on.
C#, jQuery, AJAX, JSON
December 2009 to April 2010
A contract. I built the public site for the Air National Guard, a tool for running it, and a service that connected Salesforce to the site.
ASP.NET MVC, jQuery, C#
January 2013 to November 2014
I built the main data analytics application that our business customers used, working remotely. ASP.NET MVC 5, Knockout and Bootstrap.
ASP.NET MVC 5, Knockout, Bootstrap
November 2014 to June 2016
I owned one reporting application used across the company, from asking people what they needed to keeping it running.
In 2015 I left .NET for Node.js and Windows for a Mac. I had written C# for nine years.
Node.js
A side project. An augmented reality app where you leave a post of yourself at a real place, and other people find it there with their phones. Written in Swift, with Node.js and Parse behind it.
Swift, Node.js, Parse
June 2016 to February 2018
My first React Native app: a custom Android app that drove a specialised printer.
React Native, Redux, Android
February 2018 to March 2019
I led a small team building a React Native app for Android. We shipped it in four months.
React Native
March 2019 to March 2021
I built Life Fasting, an app that timed people's fasts, for iPhone and Android. I also moved it to a new navigation system. Nobody noticed, which was the point.
React Native, TypeScript, Apollo GraphQL
A side project. An augmented reality game where you curse your friends with demons, and they have to go and kill them. Players cursed so far: mostly me.
React Native
March 2021 to April 2023
I worked on the Bloomberg Connects app and was technical lead on the Bloomberg News app. I built dark mode, sign-up without a password, and a pipeline that prepared video automatically.
React Native, TypeScript, Node.js, GraphQL, AWS
December 2021
AWS Certified Solutions Architect, Associate level.
AWS
Freelance work under my own company: Sound Like Us, Mae, Edgeli and Flutter Connect.
React, Next.js, React Native, Node.js, Python, PostgreSQL
An app that tells stories in your own voice. I built the app and the audio pipeline behind it.
A model I trained to find people in photos. It drew the line around my photo on this site.
YOLO
January 2026 to September 2026
Full-stack development in React Native, Expo and TypeScript. My last job before the sabbatical.
React Native, Expo, TypeScript
After 20 years I am taking one year off. I am not available for work. I am available for a chat.
Development sabbatical. I'm taking an extended sabbatical from software development, so I'm not accepting freelance, consulting, or full-time development work. You're still welcome to get in touch, but my reply may take a little longer.