i made a boggle solver (last year)
I started writing this post at the end of 2025... and forgot to finish or post it. Oops!
tl;dr - I made a web app for Boggle lovers! Take a photo of the board and see all the words you could have found on it. It runs completely in browser.

Growing up, Boggle was a staple in our house. My brother and I still have a playful (maybe?) but fierce rivalry over who is the best at the game. A quick primer for those that might not have had such a "learning is fun!" upbringing: Boggle is a word game where the aim is to find the most unique words on a 4x4 grid of letters with a 3 minute timer. Longer words score more points!
One question I always have after a round is whether we found the best words on the board. I'm sure the answer is usually no, and there are six, seven, or even eight letter words hiding in there.
If you have a list of allowable words, it's fairly easy to create an algorithm that will find all of the words on the board. If you haven't tried to implement this algorithm before, it's a fun puzzle! I was even asked to implement it in an Amazon technical interview.
Obviously you can just do an exhaustive search, but it can be made much more efficient by using a data structure that lets you efficiently check if a string is a prefix of any of the words, such as a trie/prefix tree. Then the algorithm is:
- Create an empty set for found words
- Pick a starting letter and start with an empty string, then:
- Add the letter to the string
- Check if the string is a word
- If it is, add it to the set
- Check if the string is a prefix
- If it isn't, return
- Recurse on any unvisited adjacent letter
- Repeat for all starting letters
I've tried to make an app that implements this algorithm and use it in between rounds of Boggle before, but my implementations always required manually typing in the letters from the board, which is quite clunky. For years I've had this vision of an app that would let you take a picture of the Boggle board, recognise the letters, then show you all the words, but it's always seemed slightly out of reach. But recently my brother reminded me of this idea, and I decided to see if I could implement it as a weekend project.
It was a fun romp through writing a lot of bad Javascript, understanding how the ONNX runtime works on the web, doing image processing in browser, and making some fun tools to do data collection. This was also the first project (this was in late 2025) that I really leant on AI tools (specifically ChatGPT) to help with my coding. A lot has changed since then!
tags:
projects,
ai,
coding,
games,
boggle
permalink | posted by nathan on Wednesday, the 16th of September, 2026, when he should have been sleeping
time capsule
I stumble upon this blog every now and again when I remember that it exists. I stopped writing in it in 2022 when I started bullet journalling instead, which I did for two years, pretty consistently. But I still love this blog as a time capsule of my time during the last year of lockdown, and reading the posts let me understand the feelings I had and the mindset I was in at the time - which, if I'm honest, wasn't super positive.
Well, it's been 3 and a half years since the last post, and life has changed a lot. One thing that's stayed the same, however, is that I really feel like I'm missing some kind of creative outlet. I think writing is an incredibly value skill, and I want to spend more time coalescing my thoughts into tangible ideas. So, here we are - back again, ready to post some more!
I've made some upgrades to the blog - I'm genuinely surpised how grim the codebase is for it. One exicting new development is that I can now include code - wow!
# Look at me ma, I'm coding!
def foo():
bar("Hello, blog!")
I'd like to make some posts about more technical topics, as well as normal life things. There's a lot that's been swishing around in my brain about topics like building strong engineering teams or developing in the world of """AI""". We'll see how it goes.
tags:
self,
meta
permalink | posted by nathan on Friday, the 11th of July, 2025, when he should have been sleeping
happy birthday, blog
It's been a year since I first posted on this blog. This will be the 67th post, which is a bit more than one a week.
I'm still not really sure what I want this to be. Writing posts takes a fair amount more effort than I thought, and I find myself often wanting to write something cohesive rather than just some random thoughts. When I'm busy and I have things that I've done that I want to write about, I feel I don't have interest or time to do so.
Maybe I need to care less about what I post. I did that a bit more over the summer and enjoyed that. Maybe that will be the focus of the blog's second year!
tags:
meta,
self
permalink | posted by nathan on Friday, the 21th of January, 2022, when he should have been sleeping
two more christies
Just after Christmas I was feeling a bit sad - I was hearing my friends all make plans back home, and felt a bit homesick over Christmas. So I went for a walk and bought myself some of books to cheer myself up. One was new, but the others came from a second hand bookstore that I am definitely going to return to.
The two I've got round to reading have both been Agatha Christies (it's about time I read some more to keep up my 50% Christie rate). The first was At Bertram's Hotel, a Miss Marple book. It was okay; I think I enjoy Miss Marple for the small village, countryside setting, as well as Miss Marple's shrewd and understated comments. Sadly, both were mostly missing from this book, and the mystery felt a bit forced.

The second was Dead Man's Folly, which was a Poirot. I thought the setup was very well done - a murder mystery hunt at an old English Manor, with a wide array of potential suspects, and a possible solution to the murder that would mirror the solution to the mystery hunt? Again, sadly, it didn't quite land: the solution felt a little rushed and like it came out of the blue. It was a little far-fetched as well, which was unfortunate.

Still, two more down!
tags:
books,
christie
permalink | posted by nathan on Saturday, the 15th of January, 2022, whilst sipping tea in the morning
i didn't run every day in january
It was a little goal Beth and I had set ourselves to get us into marathon training properly, and also just to see if we could.
Sadly, I've been ill the last couple of days and thought it prudent to recover properly before starting training again.
I think that's okay though. 29/31 days isn't awful - bring on the rest of January!
tags:
running,
life
permalink | posted by nathan on Saturday, the 15th of January, 2022, whilst sipping tea in the morning