Hi there, I’m carrot 👋. I’m a rabbit on the internet, and software architect / staff engineer, with particular interests in payments, Kotlin, and the JVM.

This is my personal website, to share my links, and writing - often about my open-source projects, and streaming. You can find out a bit more about me, and links to my various social media pages, over at /about.

Follow me on Twitch @carrot Follow me on Bluesky @lopcode.com Follow me on GitHub @lopcode

Posts #

Keeping on top of things at work, and in my personal life, is a challenge. I’m neurodivergent, and struggle to form habits, even for things that others might find natural or easy. In this post, I share the framework that I use to stay organised, and offer some tips and tricks for getting things done.

Prior to the platform’s buyout, I had a Twitter/X account since 2008 (nearly from the start!). Almost two years since Elon Musk bought it, it’s been long enough to make a judgement on the platform’s new direction. This post details why I feel it’s time to move on to bluer skies, and shares some practical tips on how to do so.

With Twitter being a mess at the moment, I decided to try out Mastodon as an alternative. Mastodon is a federated social media platform, built on top of a protocol called ActivityPub. It can be self-hosted, letting you own your data, and I wanted to do so using Nomad as a cluster orchestrator. This post shows how I did it, and will hopefully inspire you to give Mastodon a try if you haven’t already! You can find me on the Fediverse at @lopcode@mastodon.social 🐘.

This is a short post to say that I published an open-source project, which added Stream Deck support for OBS 28, including Qt 6, and native Apple Silicon (M1 / M2 processor) support. It’s since been archived because Elgato published their own. You can find the archived repository on GitHub ✨.

An important part of web applications is how they route incoming requests to appropriate request handlers. This post details how I implemented Pellet’s first routing system, with room to grow in the future, whilst staying consistent with Pellet’s wider design goals of being fast, concise, and correct. Like the last post, it includes lots of code samples to help you follow along 🧑‍💻.

This post is about building a logging system for Pellet - an opinionated Kotlin web framework I’m working on, with the intention to build best-practices in from the start. I’ll discuss features I think a good logging system should have, introduce the concept of “structured logging”, and talk about implementing everything (with plenty of code examples along the way) 🚀.

This post is an end-to-end description of how I built and shipped a new feature for this website - the live-updating sponsor list on the support page ✨. I wanted a way to recognise sponsors on the website, and I really wanted it to be live, so that someone could sponsor and almost immediately see their bunny show up on the page.

This is the February 2022 progress update. I’ve thought about it and I’m going to include all my projects in these updates, as focusing on a single project felt a bit too constraining. I’ll talk about the website, stream, the bunnies.io project, and the Discord server.

I’ve set up a YouTube Channel, and I’ll be posting Twitch streams to it as a way of archiving them! If you can’t catch the streams live, now you can enjoy them as a VoD instead 🎉. You can find the channel here: https://www.lopcode.com/videos.

This is a post unlike the others that have come so far on this blog. It’s about living with autism, growing up queer, making improvements to make life easier, and building self-confidence in doing so. I’m nervous about posting it because it’s quite personal, but reading other people’s writing on the topics helped me figure out a lot of stuff in my life, so I hope this post might help others do the same.

This post is about laying some foundations, to help make the Pellet project a success. I’ll talk about prototyping APIs and testing ideas out, to make sure the end result is pleasant to use; integration and load testing, to make sure the project is fast and stable; and finally, I’ll finish up with some work on a “buffer pool” that I’ve been experimenting with, which is a more specific kind of performance improvement.

Since writing the last blog post about streaming with my MacBook Pro, I’m very happy to say I’ve been accepted in to the Twitch Affiliate program, over at https://www.twitch.tv/carrot 🎉 That means there’s a new subscription button on the channel, and you can cheer with bits in the chat.

I’ve been having fun streaming games on Twitch this week, and thought it might be interesting to document my setup in late 2021. The last time I streamed was around 4 years ago, so I was interested to see what had changed in that time. You can follow and watch on Twitch: https://www.twitch.tv/carrot

Pellet is a new, experimental, open-source, Kotlin-based web framework I’m working on. I’ve used numerous web frameworks in various languages over the years, and want to better understand the advantages and disadvantages of their choices — from the perspective of both their internal architecture and their developer-facing APIs. You can find the work so far here: github.com/lopcode/Pellet