Software I use, programming languages I love, and other things I recommend.

I get asked a lot about the things I use to build software and stay productive. Here’s a big list of all of my favourite stuff.

Programming Languages

  • Rust

    Rust is my favourite programming language, thanks to its powerful type system and modern tooling. When it successfully compiles, you know that it will run with a high degree of safety and you get unparalled runtime performance 🚀.

  • Typescript

    I’ve spent most of my career in the Typescript/Javascript/Node.js ecosystem. Despite having my frustrations with Typescript, it is an excellent upgrade to vanilla Javascript and I’ve used it extensively.

  • Go

    Go is a great choice for backend web servers. It’s a very productive language, and you get a nice fast binary at the end. It can get a little frustrating when you think like a Rust developer (no enums!) but I would take a Go project over a Node.js project.

Web Technologies

  • React

    I have been using React since 2015. I have built more applications using React than I can count, of all sizes and complexity: there's a reason React is now the defacto choice.

  • React Native

    I have been using React Native since 2016. I have developed 5+ applications that were published in the app stores. With the Hive app being the largest and most complicated.

  • Tailwind

    My preferred way to style websites.

  • WASM

    My love of the Rust programming language has me playing with Rust web tech such as Leptos, Dioxus, and Yew. Although not as mature as the big Javascript frameworks, they give you the full power of the Rust programming language and great performance to boot.

  • Exploring

    I always have my eye on new technologies. I am exploring Svelte, Qwik and SolidJs as alternatives to React.

Workstation

  • 15” MacBook Pro (2019)

    This is an Intel-based MacBook Pro, and has served me well over the years. Ready to upgrade to the new Apple Silicon though!

  • Custom-built PC (Windows & WSL)

    This PC is my workhorse. Although the host OS is Windows, I mostly stay in WSL, which is fantastic. WSL lets me keep my hard-won unix knowledge from my years on macOS. I should probably just install a linux distro directly, but Windows has its conveniences for non-dev tasks.

  • Custom-built Keyboards

    I regularly use two custom-built keyboards. One is an ortholinear split keyboard and the other is a plank-style 40% board. Both have small form factors, which means I’m always a one key distance away from whatever I need to type, but has the tradeoff of needing to remember many custom combinations and layers. Both keyboards are configured using QMK.

Development tools

  • Neovim

    When I just want to focus and code, nothing beats Neovim. I’ve been using Neovim has my primary editor for around 5 years and love it. Vim is well known for efficiency and speed, and my flow-state is best achived when coding in nvim.

  • JetBrains

    Along side Neovim, I use IntelliJ IDEA Ultimate (with vim bindings enabled). Despite configuring nvim to have an IDE grade feature set, the JetBrains IDEs are best-in-class for intellisense, refactoring and debugging. When I need to do big refactors, like moving files/folders or use the debugger, I always reach for Intellij.

  • kitty

    On my Macbook, I use Kitty. It’s is a very fast terminal emulator that supports ligatures, so my nvim setup is still aesthetic.

  • Windows Terminal

    On my Windows PC, I use the Windows Terminal. Pleasantly suprised how good this terminal emulator is. Easily customisable, very fast, and is my gateway to WSL.

  • Zellij

    I use Zellij for my terminal workspace. I used tmux for years, but Zellij comes configured how I like out-of-the-box.

  • LazyVim

    I built up a large vim config over the years, but got fatigued maintaining it. Intellij was a dream to use as it hardly needs any configuration, so I started to get jaded with my vim config. But then I discovered LazyVim, which transforms Neovim into a full-fledged IDE with hardly any effort from me. I’ve tried other vim config systems before, but this hits the sweet spot as it’s super fast and easy to customize and extend.