Mia's Roundup 2025

(unofficial subtitle: Mia writes 10x more about her escapades on the internet than she wrote in her day job’s annual review.)

An Introduction

My bio isn't useful because I suck at writing them and my pinned post was written as a quick joke when I started getting more followers, so, a quick introduction:

Hi, I’m Mia, a 23 year old trans woman from the UK. I’ve been on the internet for over 13 years and making things on it for the better part of 11, under various different names.

I am, and pretty much always have been, chronically online, more so in recent years - hence, I am a Bluesky elder (my first account is mostly inactive). I’m also a nerd for A/V stuff, stats, and automation, and occasionally these things all clash together into a nightmare project.

My day job is not in programming, social media, or systems administration (although I am our resident programming and automation expert) and my boss cannot understand why I go home from work and spend my evenings writing code and wrangling servers.

When I’m not doing the above, I relax with video games, yell about media, and occasionally do a spot of photography.

This roundup is going to be mostly about my online projects, although there’ll be some personal items interspersed. We’re going to start with where we started at the end of 2024 and the start of the year, catch up to where we are now, and then look forward, to 2026 and beyond.

Where did we start?

At the end of 2024 I commented to Poppy about a Bluesky AppView being nerdsnipe material... it was.

Parakeet got kicked off at the end of the year and I built a first version which proved it was possible, although with more thought required. In January of 2025 I started attempt 2, which is the current version and works fairly well. I kept some of the code (there’s only so many ways to write a firehouse consumer) but significant parts of the server changed, along with stats counting.

I spent the majority of the first quarter building parakeet without really doing much else.

I also started kicking off several medical and administrative items, including joining several of the NHS’ trademark waiting lists. Part of this was coming out to a small group of people at work and quietly getting them to sign a name change.

Where are we now?

Parakeet is kinda useable now! At time of writing, I need to wrap up timelines, but that's more testing than writing code.

I’ve learned a hell of a lot about server administration, including more about docker networking than anyone should have to.

It’s also been a massive learning experience in writing performance sensitive code! A few silly mistakes can make the difference between (full network) backfill taking a month or five days.

Database management is a place that I vaguely understand—like, I know my way around Postgres—but not to the extent that I have had to for Parakeet. I’ve spent a lot of time poking around in system tables to try build views useful for monitoring, and tweaking system parameters for better performance.

Before we move on, there's a few people that deserve thanks:

Teq has been running an instance of Parakeet with their own additions and tweaks - on the way they discovered several really silly bugs and errors that have been fixed.

Dax also flagged a few bugs, along with just how bad the docs are, especially for those wanting to contribute to parakeet.

Towards the end of this year, I’ve been working on Flashback, a service for generating Spotify Wrapped like data for teal.fm and rocksky.app users. It’s using Bluesky’s new Tap tool for firehose ingest and backfilling of repos. I ended up building a MusicBrainz replica as part of this which I intend to release on its own eventually (which is good when you consider I did not want to build a replication agent...)

I streamed some of the work on the frontend (although didn’t do much actual work) which was fun.

This project has been put on hiatus, because I was very close to burning myself whilst crunching to get it done for the new year, but I still intend to work on it in future. There’s a load of fun possibilities, and while there are other options, I don’t think there are any that tie the two distinct services together into one.

I also got off one of my annoying NHS waiting lists at the end of October, by doing my best Abigail Thorn impression by submitting a formal complaint about the waiting time - suspiciously I got an appointment within 36 hours. Next year should be much easier without a medical issue that triggers more often under stress.

The homelab has once again doubled in size, from two servers in 2024 to four (two at home, two in cloud) in 2025. The cloud servers run a PLC mirror, ATProto relay (indexing only the third party network), Parakeet, and my PDS, while I run a whole host of other services including Jellyfin, Immich, file storage, and DNS locally. It is all a right mess with hardly any central control apart from the docker compose files on my laptop.

Where are we going?

Where is Parakeet going?

2026 is lining up to be another big year. Parakeet is going to get (in no particular order) the last few big ticket items like notifications and search, before work on integrated moderation tooling, a control panel, tools for indexing a subset of the network, and hopefully a big optimisation pass. If I can get the performance high enough, I’d like to implement the inductive firehose verification stuff from Sync v1.1 .

I’d also like to get some time to properly document the thing, although I may finish 2025 / start 2026 with this, as there’s a low chance I actually remember how to do it properly. I’m also going to build a proper nix flake (more below).

I’ve had some thoughts recently about doing string interning to try save space, so I may look at that. I think just the AT URIs would be sufficient, replacing them all with bigint i64 IDs pointing to a central table, but I need to do analysis to work out how much space this could save. This would be a very large piece of work, though, so it’ll likely come after the above actual feature-parity work.

In an ideal world, I’d start running a public Parakeet instance for the ‘third-party’ network, as I call it (essentially, anyone not on a Bluesky PDS, so blacksky/northsky/witchcraft/bridgy/etc, and all the self hosted users). Unfortunately, I expect there would be UK based users and that means I’d have to comply with the Online Safety Act, which I don’t want to do because I don’t want your passport details. If anyone else wants to run a Parakeet (bonus points for full network), I’m more than happy to play support and ops.

Depending on how I do with the above goals, I’d like to do more work on Pelican - a database tailored specifically for ATProto services, written in Rust. I have some concepts and tests for this but it needs a lot of fleshing out, such as its storage backend and client/server protocol (y’know, the small things).

The main goal is to make it possible to compress some (all?) of the data in the network, especially older records, and to do string interning transparently to save space for larger-scale AppViews. If I end up doing this, I will no doubt post about it, and write a blog or two.

I’d really like to turn my findings from the database adventures (including my time using Postgres) into a talk, but I can’t guarantee if/when it’d happen.

The Homelab

In the homelab (citation needed), I’m planning on a move to nix(os|darwin) for all but one machine (which runs TrueNAS). At time of writing I’ve started on the config , although it only runs in full on my Mac for now (ignoring my testing VM).

I’m hoping that a centralised, version controlled config will make my sysadmin time a lot easier, and it is looking to be the case - even if switching the servers over will be a big task, especially since two of them are in frequent use.

My white whale is still working out how to get a user syncing between my IDP and TrueNAS, although, to be quite honest, I think it requires MS AD?

The server collection will probably grow too. I need at least one more (as a Tailscale PoP at a relative’s house) and I’ve considered a Raspberry Pi 5 AppView before too (if I can find somewhere to put it with fast enough internet).

I’m going to end up making nix flakes for some of my projects then too, notably Parakeet and plc-mirror, because their server is one being moved, and I know how those work enough to be a good starting point.

AOB

Flashback should get some more work too - I want to get it properly working and hosted somewhere. I’ve began work on breaking out the MusicBrainz replica which will include a proper search system too.

I'd also like to spend some time planning out and working on the relay admin tool that Phil and I were discussing on bsky and Discord . There were a few other folks that had good points about discovery and user/rate limits in the discord chat too.

If I can work up to it, I’d like to get back into streaming on a regular basis. I’ve started doing some occasionally, but I want to get something more scheduled in. I used to stream under a different name years ago, and I’ve got a few ideas left over from the last time I said this that it’d be nice to finally do (catching all the Pokémon, anyone?). stream.place is shaping up to be what I’ve wanted in a streaming service for a while now, so whatever I end up doing will be on there. It’ll also be on Twitch, I guess.

On a more personal note, amongst an ever growing pile of administrative and healthcare items, I’m trying to get better at interacting with people and being less socially awkward/anxious. I could save significant amounts of time by not rewriting every reply to someone five times before sending, and the feeling of “oh god did I screw up and make them hate me” whenever I reply is not fun. Combined with trying to get out more, I’d love to try go to an ATProto meetup eventually (EU conference when?) and meet some of the folks I see around on the internet near daily.

Conclusion

So that’s everything - I’ve spent an awful amount of time this year on Parakeet, and intend to next year too. If anyone is interested in contributing, even just docs, please feel free. If you decide to run an instance, give me a shout, I’d love to hear about any attempts! I’ll be attempting another run of the 3P network at the start of 2026, which I will document, of course.

p.s., in Europe and looking for a Rust dev with a bit of database, frontend, and ops knowledge, or know someone looking? I’m reiterating a previous post about being interested in Rust work, preferably in social media (with an ATProto focus), AV / media, or video games (other interesting options also considered) - I’d quite like to move to somewhere in Europe that doesn’t suck for trans people, too. I likely lack the clout to be able to pull this off but it’s worth a punt nonetheless.

Ultimately something that allows me to work full time on Parakeet would be good but my options are extremely limited in that regard, not least wrt moving.