Stuff (mostly Software) I use
These are some of the tools I use for writing, web design and development, game development, and all the other random things I do.
Operating System
CachyOS
CachyOS is an Arch-based Linux distribution focused on performance, with optimised packages, custom kernels and a straightforward installation process.
It is my main operating system and gives me the flexibility of Arch Linux while removing some of the initial setup work. I particularly like having access to the Arch ecosystem without sacrificing a polished desktop experience. Moved away from Windows and MacOS in 2025 and haven't looked back since. And yes, its great for gaming also.
Graphics and Design
Figma
Figma is a collaborative interface design tool for designing, prototyping and building products. It is particularly useful for UI design and for experimenting with layouts before implementing them in a game or application.
Blender
Blender is a free and open-source 3D creation suite. It covers modelling, sculpting, animation, rendering and much more.
Pixelorama
Pixelorama is a free and open-source pixel art and sprite editor.
MagicaVoxel
MagicaVoxel is a free, lightweight voxel editor.
I was very tempted to make my first game using voxels, but in the end I decided to stick to more familiar territory. However, I love playing around in MagicaVoxel. It has that magical Lego-like quality that not only makes you feel as though you could build anything, but makes you want to.
PureRef
PureRef is a simple application for collecting and arranging reference images on a single canvas.
It is especially useful when working on visual ideas because I can keep concept art, screenshots, photographs and other references together rather than constantly switching between folders and browser tabs.
Lucidchart
Lucidchart is a browser-based diagramming tool for creating flowcharts, system diagrams, process maps and other visual representations of ideas.
I find diagrams particularly useful when thinking through software architecture, application flows and systems before committing them to code.
Making Games
Godot Engine
Godot is a free and open-source 2D and 3D game engine. It provides a huge collection of common game-development tools, allowing you to concentrate on making the game rather than reinventing the wheel.
Notes and Knowledge and Writing tool of choice.
Obsidian
Obsidian is a Markdown-based note-taking and knowledge-management application.
I use it for organising notes, ideas, research and project information. I particularly like that the underlying notes are ordinary Markdown files rather than being locked inside a proprietary database.
Web Browsing
Zen Browser
Zen is a privacy-focused browser built around a highly customisable interface.
I like its emphasis on keeping the browser interface calm and unobtrusive, particularly when I have a large number of tabs open while researching or developing.
Utilities
LocalSend
LocalSend is a free and open-source application for transferring files directly between nearby devices over a local network.
It removes much of the friction from moving files between computers, phones and tablets without needing cloud storage, accounts or cables.
General Software Development
Zed
Zed is a high-performance code editor from the creators of Atom and Tree-sitter.
It is my primary editor. I particularly like its speed and minimal interface, which keeps the editor focused on the code rather than surrounding it with unnecessary UI.
Ghostty
Ghostty is a fast, GPU-accelerated terminal emulator designed to provide a native desktop experience while retaining a rich set of terminal features.
A terminal is one of the applications I spend the most time using during development, so responsiveness and a clean interface matter considerably.
GitHub
GitHub is critical to my workflow. It gives me confidence that my code is stored somewhere safe, versioned and easy to recover.
Godot and GitHub also work very well together, making version control a natural part of the development process.
Preferred Web Development Stack
My preferred development stack is deliberately fairly small. I prefer tools that solve a particular problem well without introducing unnecessary abstraction or ceremony.
React
React is my preferred library for building component-based user interfaces.
Its component model provides a useful balance between composition, state and reusable UI without dictating the architecture of an entire application.
TypeScript
TypeScript adds static typing to JavaScript.
I use TypeScript for essentially all serious JavaScript development. Good types make refactoring safer, improve editor tooling and make the intent of APIs much clearer.
TanStack Start
TanStack Start is a full-stack React framework built around TanStack Router, providing features such as server-side rendering, streaming and server functions.
I like its relatively explicit approach to application architecture and its close integration with the rest of the TanStack ecosystem.
TanStack Query
TanStack Query provides tools for fetching, caching, synchronising and updating asynchronous server state.
It removes a large amount of repetitive data-fetching logic while keeping server state separate from ordinary client-side application state.
Zustand
Zustand is a small and deliberately uncomplicated state-management library.
I prefer it when application state genuinely needs to be shared globally because it introduces very little boilerplate and does not require adopting a large architectural framework.
CSS Modules
CSS Modules provide locally scoped class and animation names while allowing stylesheets to remain ordinary CSS.
I prefer writing modern CSS directly rather than introducing a styling abstraction. CSS Modules give components sensible isolation while allowing me to use the full capabilities of the platform.
Biome
Biome provides formatting, linting and related tooling for JavaScript, TypeScript, JSX, JSON, CSS and other web-development formats.
I like having formatting and linting handled by one fast tool rather than maintaining several overlapping utilities.
Playwright
Playwright is a browser automation and end-to-end testing framework supporting Chromium, Firefox and WebKit through a common API.
I use it for testing behaviour from the perspective of an actual browser, particularly workflows that cannot be adequately covered by unit tests alone.
Vitest
Vitest is a fast testing framework designed around the Vite ecosystem.
It is my preferred choice for unit and integration testing in modern TypeScript projects because it integrates naturally with the same tooling used by the application itself.