Graphene (2018 - now)
Graphene is a long-term project to reinvent the structure of code. It's not a new programming language. Instead, it's an attempt at unifying programming languages into a universal structure.
I see Graphene as the foundation for a better future. It could help build a significantly better developer experience, eliminate entire categories of bugs, erase the unnecessary division between developer communities and, who knows, maybe even contribute to the fight against climate change thanks to drastic improvements in compiler optimisations across all languages.
The project is named after the graphene carbon structure, which scientists have high hopes for.
I'm also working on a book that explains exactly what Graphene is, how it works and why it's designed the way it is.
Expect to hear more about Graphene in 2021.
React Screenshot Test (late 2019 - now)
React Screenshot Test is a testing library that makes it easy to implement visual regression testing of individual UI components.
I created this library because I found existing visual regression testing solutions cumbersome and difficult to set up. For more details and an overview of the technical architecture, check out the journey of building React Screenshot Test.
I gave a talk on visual regression testing approaches at React Sydney. The library is slowly getting traction as visual regression testing is becoming more popular (+8,000 weekly downloads in May 2020).
CircleDash is a performance dashboard for CircleCI.
We use CircleCI at Airtasker. We found that CircleCI's "Insights" view isn't quite as flexible as we needed.
CircleDash offers a better way to visualise performance of specific jobs. This was instrumental in unlocking significant performance improvements and cost savings for various test suites at Airtasker.
Spot (2018 - now)
Spot is a developer tool to easily describe a JSON-based API.
I created Spot because I noticed that OpenAPI, which is the de-facto standard to describe JSON-based APIs, is impossibly hard for a human to read or write. Developers typically have to rely on graphical tools to manipulate OpenAPI documents, and OpenAPI changes cannot be easily code reviewed.
Spot uses TypeScript as a DSL, which makes it incredibly easy to describe JSON payloads. This is not a novel idea. Spot takes it further by enabling you to describe HTTP endpoints entirely in TypeScript.
Spot has become a key element of Airtasker's software engineering practices, and the project now lives under the Airtasker organisation, contributed to by a number of talented engineers.
PR Monitor (2018 - now)
PR Monitor is a browser extension to keep track of incoming and outgoing pull requests on GitHub.
I have seen first-hand the frustration of software engineers whose pull requests aren't being reviewed in a timely manner. Often this isn't intentional, as pull request notifications are lost in a stream of emails and Slack notifications.
The extension is now used by a few hundred developers, including most software engineers at Airtasker.
I learned a lot while building PR Monitor. This led me to give a talk at React Sydney: Building a browser extension with React.
Proxay is a record/replay proxy server.
I created Proxay as part of redesigning the end-to-end tests suite at Airtasker. In our industry, most end-to-end tests are slow because they hit a real backend. It doesn't have to be that way.
Proxay allows end-to-end tests to run in two modes: record and replay. Record mode does what you'd expect, but every request and response is recorded on disk. Replay mode doesn't hit the backend at all. Instead, every previously recorded response is replayed, simulating the behaviour of a real backend. Of course, Proxay also offers passthrough mode, allowing you to re-run tests against a real backend whenever you want to.
After two years of service, Proxay remains an essential part of the end-to-end tests for the Web platform at Airtasker. It's also used in server-side tests, and the same approach is achieved with platform-specific libraries on Android and iOS.
Comet is a release management tool based on GitHub and Jira.
I created Comet to make it easier for software engineers to manage mobile app releases at Airtasker. It lets you easily compare branches or tags, and automatically see the status of each commit in Jira, across multiple projects.
In late 2019, we decommissioned Comet after a successful move towards fully automated releases :)
Code Review (2018, functional prototype)
Code Review is a code review tool that integrates with GitHub.
Unlike GitHub's pull requests or Phabricator, Code Review focuses on reviewing an entire codebase, not just a changeset.
I got to the stage where a conventional React app could be compiled successfully, including hot reloading functionality.
I stopped working on this project because I no longer had a concrete application for it. I might come back to it one day.
Visual (2018, prototype)
Visual is a visual, interactive code editor.
I was inspired by Bret Victor's talk to build a code editor that's less about code and more about interaction. Visual lets you drag&drop blocks around, while keeping the Python code synchronised.
Visual is a prototype that helped me pave the way towards Graphene, a much more ambitious project that aims to reshape the foundations of programming. It may come back as a full-featured product.
Instant (2017, prototype)
Instant is a proof-of-concept for a programming environment with instant feedback. Your code is re-run on every keystroke.
Deploy is a CLI tool that automates the creation of AWS resources (including EC2 instances, load balancer, VPC, security group, ECS cluster, ECS service) to deploy a Docker container in a few keystrokes.