Work portfolio

A screenshot or a code repo is worth a thousand words, so below you’ll find those where I was able to provide them, along with some details about my past projects.

Recent experiments

  • AL FINE Rails - a minimal app for tracking music practice. Experimenting with Rails 7.1 together with Hotwire for that smooth SPA feel, and Tailwind.

  • AL FINE React - a minimal app for tracking music practice; an experiment in using React and create-react-app in combination with Tailwind.

  • snap_assert - an experiment in self-modifying code, or, unit tests that autocomplete themselves in Elixir.

GeoInsight

Forestry Catchment Planner is a web application built on the MapHQ platform which I architected and led the initial implementation of. It aims to improve accessibility of information regarding forestry stand locations, anticipated future harvesting, landslide susceptibility, and visualise change at a landscape and regional scale.

Forestry Catchment Planner screenshot

Forestry Catchment Planner screenshot

Forestry Catchment Planner screenshot

Notable features of the MapHQ platform:

  • Developed on an extremely compressed timeline of about 4 months from concept to launch.
  • A timeline playback visualisation of the map layers to help identify times of higher combined hazard for planning purposes.
  • Measurement features for measuring distances and areas, as well as displaying an elevation profile.
  • Data-driven visualisation of map layers and information panels.
  • Authentication and authorisation system (used for another customer but not the Forestry Catchment Planner).

Tech: TypeScript, React, Vite, shadcn/ui, Node, JavaScript, Express, Ramda, Tailwind, AWS (Cognito, RDS, SES, CloudWatch, CloudFront), PostgreSQL, Render.com, Mapbox.

“Just wanted to say a massive thanks for laying such a solid foundation for MapHQ and paving the way forward for our technical maturity journey. I’ve personally learnt a great deal from you and have really appreciated all the clarity you’ve provided, how concise you’ve been with things and working with you has been great.” - Rob Besaans, MapHQ founder and director

Cogo

Business Carbon Manager

I led a team that created a SaaS web app for SMEs to estimate their carbon footprint from accounting data and take actions to reduce it. This application allowed users to import their accounting data via the Xero API and then augment automatic categorisation of their business suppliers with manual input.

Business Carbon Manager screenshot

Business Carbon Manager screenshot

Notable features:

  • An organisation and user model with a many-to-many relationship between users and organisations
  • Continuous sync of user data in the background, which required dealing with rate limits, retries etc.
  • OAuth based authentication with support for multiple auth providers per user. We started with Xero and later added login with Cogo credentials via AWS Cognito.
  • An onboarding flow that guides the user through initial supplier categorisation.
  • Supplier categorisation, including auto-categorisation based on supplier name or transaction account, and bulk categorisation.
  • Ability to enter usage data for transactions in specific categories (eg electricity or gas) driven by an API-supplied spec.
  • Tracking of actions users are taking, including a list of tasks inside each aciton.
  • PDF report generation
  • Generated API client code based on OpenAPI specs
  • Live support chat via Zendesk integration
  • An admin interface with access to feature flags, a live dashboard and a limited view of the data
  • Feature flag system
  • User management system with user roles, including things like being able to transfer ownership of an organisation
  • User invitation system with email invitations and limited duration invitation tokens
  • Public organisation profiles
  • Premium subscriptions with additional features (via Xero subscriptions)
  • [Unreleased] Integration with the Codat API for multi-accounting system support.

Tech: Elixir, Phoenix, LiveView, JavaScript, Tailwind, AWS (ECS, Cognito, Aurora, SES, CloudWatch, CloudFront), PostgreSQL, Redis, Docker.

“Thank you for your enormous contribution to Cogo, particularly with the BCM App. Under your leadership your team has always delivered on its commitments, which is the gold standard of engineering. I’ve always appreciated your wisdom, directness and healthy challenge in our catch ups, and I will miss that.” - Rachel Collingridge, CTO

“In addition to capably leading an engineering team that consistently delivered excellent work on time and on budget, Alex was also a critical member of our core product team, extending his input deep into the early discovery and design process. Every so often you work with someone in your career and think, ‘Yeah, I’d do a startup with this person.’ Alex is one of those people.” - Christina Baldarelli, Head of Product

Carbon Footprint API

I was part of the team that delivered the first version of Cogo’s Carbon Footprint API.

Carbon Footprint API screenshot

Achievements on the project:

  • Introduced functional programming using Ramda and coached other developers
  • Reduced the integration test suite run time from 2 minutes to 30 seconds
  • Worked on load testing, in particular generating a multi-terabyte test database and using jMeter to run load testing scenarios
  • In use by 500K+ customers of NatWest, a major UK bank, as well as other banks around the world
  • Product successfully delivered in 6 months, to a fixed deadline.

Tech: Node, JavaScript, Express.js, Ramda, AWS (Lambda, Aurora, SQS, API Gateway, CloudWatch), PostgreSQL, Docker.

Power Trip

Loyalty scheme ledger microservice API

I created a microservice API for recording loyalty scheme data for points issuers and consumers in a ledger-like setup with features like balance transfer and transaction reversal.

Tech: Node, JavaScript, Express.js, PostgreSQL, Redis, AWS (EC2).

Weather adjustments for EV route planning microservice

I created a microservice that ingests EV route plans and make them more accurate by augmenting them with weather data. It did this by breaking a route into grid cells, then obtaining current and forecast weather data from OpenWeather API, and then calculating a number of adjustments to incorporate factors like precipitation, wind, insolation, temperature etc. for each cell.

Tech: Node, JavaScript, Express.js, PostgreSQL, AWS (EC2).

Company website and EV guide

The company website for Power Trip, including a headless CMS integration for blog content. A key feature of the site was an EV guide with data-driven page generation and features like dynamic sorting and collapsible sections. I open sourced the code for EV guide.

Power Trip screenshot
Power Trip screenshot

Tech: Elm, Sanity.io (headless CMS), Netlify.

Open source: Elm

I’ve been participating in the open source Elm community for a number of years, creating software tools and learning resources, and writing about Elm. Two of my projects are shown below: json2elm tool that generates Elm JSON encoders and decoders from JSON samples, and Elm Catalog which helps people find Elm packages and tools.

Elm screenshot

Elm screenshot

I’ve also created Elmstatic, an Elm-based static site generator which has been used by a number of sites, including this one.

Cloudscape

I was the technical co-founder of a company that created a SaaS product to provide productivity analytics and geospatial tracking for the heavy construction industry. The solution consisted of a web frontend, a hybrid mobile application plus several services on the backend. The system collected millions of data points per month, with real-time dashboards and reporting.

As I retained ownership of the code, you can check it out, warts and all:

Cloudscape screenshot

Cloudscape screenshot

Cloudscape screenshot

Cloudscape screenshot

Cloudscape screenshot
Cloudscape screenshot

Notable features:

  • Real time display of vehicle positions on the map, including features like filtering & search and clustering at lower zoom levels
  • Map-based replay of activity on site, including timeline scrubbing, adjustable playback speed, activity heatmap, and filtering of vehicles included in playback
  • Display of complex map overlays such as cut/fill geometries, chainages, and site boundaries
  • A set of complex real-time reports with filtering etc, such as time-in-area breakdown for vehicles on site
  • Tracking of selected vehicles with dynamic viewport adjustment
  • Placing of persistent point-of-interest markers on the map
  • Support for custom drone-captured imagery for high zoom levels
  • Multi-user account system
  • Drawing tools for creating geofences
  • Geofence-based break time tracking for truck drivers, including reporting on time-to-break for trucks on site.
  • Real-time reporting for paving operations on highway projects, including the number of concrete loads delivered, concrete production per hour, and distance covered by the paver
  • Vehicle safety checklists with support for notes and photos (uploaded to S3) on mobile
  • Recording of site observations with photos on mobile.
  • Contacts for other users on site with ability to call or text and sort by distance.
  • QR code scanning for concrete quality control
  • Bluetooth beacon tracking for proximity detection and asset tracking
  • Reporting of current weather conditions (using an external API).

Tech: Node, Express.js, PostgreSQL, Postgis, CoffeeScript/JavaScript, Ramda, Redux, JSVerify for property-based tests, Heroku, AWS (S3), Cordova for iOS and Android apps, jQuery Mobile, and Mapbox APIs.

Trimble

Landfill data vis

I created a web application (both backend and frontend) allowing landfill operators to monitor density of the material in landfills. The application visualised density and weight of deposited material over time with a dynamically adjustable time range.

Landfill screenshot

Tech: C#, ASP.NET, JavaScript, Angular, AWS (EC2, S3), Google Maps API, D3.js, MySQL, internal APIs.

I delivered a mobile web application that provided construction site supervisors with near real-time visualisation of site activity such as cut/fill volumes, compaction coverage and elevation of site surface displayed as overlays on a map. Additionally, the map displayed things like site boundaries and detailed linework.

The app also included a reporting component, displaying truck activity breakdown and stats such as cut and fill volume.

Tech: JavaScript/CoffeeScript, Google Maps API, internal APIs.

Prime Requirements

This was an advanced prototype for a SaaS product that would help business analysts track requirements. Finding a viable enterprise marketing approach proved challenging, and I end up pivoting into educational materials for BAs instead. No screenshots survive but the code is available to have a look at.

Tech: Ruby, Ruby on Rails, JavaScript/CoffeeScript, PostgreSQL, Heroku.

OnlineChecklists

Created a SaaS for managing business compliance checklists. Short lived as I didn’t find product-market fit. You can check out the code for this project.

OnlineChecklists screenshot

Tech: Ruby, Ruby on Rails, JavaScript/CoffeeScript, PostgreSQL, Heroku.

Want to work with me?

I work remotely in the New Zealand time zone which is either UTC+12 or UTC+13, depending on the time of the year. Conveniently, it has a 3-5 hour overlap with the work hours on the west coast of North America (PST/PDT).

Get in touch: