RSSAmplifier

Blog

charlotte's blog

thoughts and ideas

char.ltRSS feed ↗10 posts

Latest posts

some software talks i like

there are lots of recorded software talks! i have seen some of them. like anything with high volume & high variance in quality (tiktok, music, etc), it’s often best to go through an intermediary for prefiltering. i will be your software talks filter today. the type of talks i like are mostly about the craft of creating software, rather than any software itself: it’s way more interesting to me to…

charlotte's jujutsu tutorial

okay. you know already know what jj (jujutsu for long) is, right? like, vaguely? it’s like a git but it’s compatible with git and your most annoying oomfs all love it and you always say you’ve been meaning to give it a try some day but like you aren’t really pressed because git is like, good enough…? that one. let me teach you how to become one of those annoying oomfs. you’re gonna love it.…

plox: lazy-trust verifiable, on-PDS bulk did:plc operation archival

tl;dr: plox is a canonical encoding of the did:plc directory, stored in an atproto PDS. as of may 2026 at://cerulea.blue/blue.cerulea.plox.bundle is taking up 35 GB on disk ( zstd -compressed; ≈80 GB raw). you can use it to bootstrap a PLC directory mirror in minutes rather than hours, and since anyone can recompute and verify the plox CIDs against the canonical plc.directory, we have lazy-trust…

Hosting an AT Protocol PDS without containerization

Bluesky is a popular microblogging platform built on the federated AT Protocol . You can host your own PDS and connect it to the Bluesky network. The turnkey solution for running a PDS is the bluesky-social/pds repo on GitHub . It has an installer that guides you through setting up Docker (with docker-compose) on Ubuntu/Debian, likely on a VPS dedicated to running the PDS server. For my personal…

ngx: a TypeScript DSL for nginx config generation

hi! i made a thing - it kind of sucks but it saves me lots of time. a taste of ngx so, just this month I moved my whole blog from its old domain to this one, but since i’d like to do my best to prevent link rot, i’d like to redirect all the pages to the new site! there are a million ways to “serve http 3xx”, and i have half-invented countless solutions: a productized redirection SaaS with…

"Reverse Engineering" MultiMC on windows to get its MSAClientID

The MultiMC maintainers are being kind of annoying to packagers right now. If you’d like to package your own build of MultiMC, you’d best be able to get an MSA Client ID, right? I’ve created this handy guide for you to get it yourself, in case it changes! Please note, I am not affiliated in the slightest with PolyMC or MultiMC. Setup This guide is for Windows, since that’s the operating system I…

Circumventing my university's Cisco Duo app requirements

I go to Loughborough University . Recently, I got an email saying from university’s IT Services saying “hey, we’re going to force the use of multi-factor authentication”. This is a good idea for security, but the implementation of MFA that they have chosen is subpar. TL;DR: I don’t like to be mandated to run commercial software on my own devices, so I did some reverse engineering and reimplemented…

Hiding phone number display on Signal Desktop

Today, we’re going to patch the Signal desktop app to hide phone numbers. I need this functionality because of shoulder surfing / screen sharing / whatever. Introduction A while ago, I submitted a PR to Signal to hide the phone numbers in the conversation view, to bring the desktop app the same functionality offered by an update to the mobile app. After having to sign a CLA, and after three…

Circumventing the JVM's bytecode verifier

An adventure with Java bytecode, HotSpot VM internals, sun.misc.Unsafe , and the power of Java. Please don’t do this in production (or do, but as a prank). Introduction & Motivation Hi. I’m Charlotte, and for the last three years, I have been the author of a Java bytecode obfuscator . Because of this, I’ve been messing with the JVM almost daily for a long time, and have built up a comprehensive…

Pro tip: Push-to-deploy Git repositories

I recently wrote a static site generator which, incidentally, powers this site. This means that making a site is pretty easy, but what about putting it online? If you have your own server, you can easily self-host static websites, just point your HTTP server (I use nginx ), and use this pro tip : The push-to-deploy git repo Setting up a push-to-deploy git repo is really simple - All you need to do…