Yeah, this is basically my life.

Programming

I started coding when I was seven and it’s still my favourite hobby almost a decade later. Here are the projects I’m proudest of, and where it all started.

How I got into it

I started with Lua

My first language was Lua. I quickly moved on to Python, which is still my favourite and the one I know best. I also use JavaScript, HTML and CSS, and I’ve done some stuff with C++. I do a lot of web development, like this website and Namesake.

I consider myself lucky to have started programming before the age of AI. I think it’s unlikely I would ever have bothered to learn properly if I were starting now. I think that’s something we will notice...

Since then I’ve made physics simulations, 2D and 3D games, websites, mobile apps and Windows software. One of my first big projects was a YouTube channel where I made Roblox Studio and Lua tutorials.

I also made a website for Friends of St John’s Garden, a local park group. It’s on Volunteering.

Things I’ve made and contributed to

The projects I’m proudest of

Namesake purple snail logo

A before-and-after screenshot of the homepage support map, and a screenshot of the live directory.

Open source · age 16

Namesake

What it is

Namesake is a US non-profit that publishes free name-change guides and tools for trans people, built by and for the trans community. It’s an open source project.

What I did

Five changes accepted into Namesake’s code in my first week, the summer after Year 11. A pull request is a proposed change that the maintainers review and accept. Mine:

  • fixed the interactive support map on the homepage, where clicking a state had stopped working
  • fixed a bug that stopped images loading for developers
  • rewrote how website addresses are shown in the support directory, with tests
  • added seven organisations to the directory
  • made the developer tooling set itself up

I also proposed and co-authored the idea of the blank-forms downloads. I’m now doing some research for the project, which is still in progress.

What was hard

The map fix took the longest: I spent a lot of time running scripts in the browser to debug why the bug was happening. It was a real ‘problem solving’ bug fix instead of simple human error. Hovering over a state reordered that state so that the cursor was no longer selecting it when you clicked it. The fix was to draw the outlines on a separate layer so hovering doesn’t move anything, which I then pushed.

Aside from the code, the cause also matters to me; especially with everything going on in the US.

What I took from it

My first project involving true collaboration between many people in a large codebase. I learnt many best practices for collaborating with code and it has made me start looking for more opportunities like this. It also got me further invested in the cause.

  • 24 July 2026: #717 support map click fix
  • 27 July 2026: #725 local image fix, #728 address formatting with tests, #729 seven directory entries (co-authored), #735 tooling setup
  • 11 September 2026: the blank-packet download, #753 (co-authored)
  • Role: volunteer contributor, age 16
The homepage of thomaswhite.me

Web development · since age 14

This website

What it is

The site you’re on: HTML, CSS and JavaScript, with lots of little features I wanted to build dotted around.

What I did

Everything, I use this site as a test ground to see what I can build. So, there’s a lot that most people never see: end-to-end, visual regression and accessibility tests across three browsers, Lighthouse performance budgets, linting, checks that run on every change, a public status page with uptime monitoring, and analytics.

As I incorporate AI more into my work, it being such a powerful tool, I have been offloading the more tedious jobs, like design. My favourite code is always the backend so getting AI to write some CSS is a big relief. All of the initial website was hand-coded, before AI was big.

What was hard

Learning all the best practices and techniques. I use this website as a way to experiment, so adding a new feature usually means learning how to do it properly first: visual regression tests, accessibility checks, and analytics that only load after consent.

Also, I tend to over-engineer, and never actually write any content. The hardest part is often just making the content to fill up all the pages and features I add.

What I took from it

I have been able to implement many cool features, many of which cannot be seen. I have learnt much about coding techniques and third-party-app integration. It is also a test of whether I can keep a project up-to-date consistently through a long period of time.

  • Online since 2025; still changing most weeks
  • Hosted on GitHub Pages; every change is checked by GitHub Actions; Better Stack checks the live pages every three minutes
  • Automated tests added in August 2026
TechAssist logo

Two or three screenshots of the guides and the backup app.

Built for my grandparents · age 13

TechAssist

What it is

Simple written and video guides for everyday computer tasks, plus a separate one-click encrypted backup app, made for my grandparents.

What I did

It was my biggest project at the time: about 6000 lines of Python, using Tkinter, among other modules. I spent a massive amount of time on this project.

What was hard

Designing for people who aren’t confident with computers: every step had to make sense without me there to explain it. Keeping it all consistent as the codebase grew so big was hard too - I admit it was a mess.

It was an early build for family instead of a finished app: restoring a backup was manual, and the guide videos were hosted on Dropbox and aren’t online any more.

What I took from it

One sentence. Also: what your grandparents said.

  • Built at 13, over about three months; written in Python with Tkinter
  • Guide videos were hosted on Dropbox and are no longer online

Using AI

How I use AI

I think I was very lucky to learn to code before AI could do it all for me.

I believe I have learnt a lot about how to effectively use AI, both for everyday stuff and specifically for coding. I use it daily, sometimes giving it a single job that will run for over a day autonomously.

When it is writing code for a production or public app, I also ensure to review and understand the code myself. For example, this website. However sometimes, I just want an app quickly to do something for me personally. In that case, I plan it out and then just use what it gives me. ‘Vibe coding’, if you will.

Where I started

My earliest projects

A small selection - I have hundreds of unfinished projects that I could list.

Some are useful, most are not... While very few are polished, they all taught me something that went into the next one.

  • Age 10 Chrome Dino: my first game, a Python version of the Chrome dinosaur game. Code
  • Age 12 Minesweeper: made in Python, with three difficulty levels. Just like the original, really. Code
  • Age 14 Bouncing Ball Physics Simulation: balls bounce off one another with gravity and friction. You can tell the graphics weren’t very good, but I put my focus on the physics. Even back then, I wasn’t a fan of the design aspect of code. Code
  • Age 14 Game of Life: click or drag to add live cells, then watch which patterns survive. Playable: clone the repo and run it. Code
  • Age 14 SplitMate: my first mobile app, to work out how a group should split shared expenses. Code
  • Ages 10 to 13 leopardbookshop on YouTube: I taught Roblox Studio and Lua; just over 400 subscribers and 108,000 views. The channel is still up. The channel