felix's blog
Here you'll read stuff related to programming - either me showing off, debating interesting problems, or crying about JavaScript.
System Design 3
Architecture: Transactions and Isolation Levels database Dirty reads, lost updates and write skew, what the four isolation levels actually prevent, and why your database's default is weaker than you think. With two transactions you can step through yourself. Architecture: Database Sharding database When database sharding actually makes sense, and the simpler scaling options worth exhausting first. Sharding keys, horizontal scaling, and the trade-offs. Architecture: Relational Databases database A practical look at two foundations of relational databases: how indexes speed up reads at the cost of writes, and how transactions keep your data consistent.
Projects 10
OpossumTS.net - Where I Learned to Build Things php For a few years I ran a public TeamSpeak server that gave away free permanent channels, ended up with 11,812 tracked identities across 51 countries, and grew a sprawl of PHP around it: a channel garbage collector, League of Legends rank badges generated from Riot's API, post-match analysis delivered into voice chat, self-hosted video calls, and a currency you earned by voting. The database is gone. This is what I could piece back together. MCA Benches - GW2 Benchmark Tracker next.js A Discord-gated web app for tracking Guild Wars 2 build benchmarks. It ingests dps.report logs, auto-validates submissions against the official bench, and diffs a player's rotation against the reference cast by cast. It's since grown into raid night planning and cross-guild tournaments, on a stack that idles at $0.40 a month. Brightness Lock - Dimming a Pixel for China's Transit QR Gates android An Android app born from a very specific travel bug: Chinese transit fare gates would not scan the Alipay/WeChat QR on our Pixels because the apps force the screen to full brightness and blow out the OLED. Brightness Lock dims it back, but only while those apps are in the foreground. Unyap - On-Device Voice Note Transcription android An Android app that transcribes voice notes to text entirely on your phone with whisper.cpp. No audio or text ever leaves the device, words stream in as they decode, and it picks the right CPU kernels at runtime so it never crashes on older hardware. MCA Hackathon - A Bot Battle Arena rust A two-day hackathon for my friend group, built around one game: everyone writes a bot that fights in a turn-based arena. A Rust WebSocket server runs the match, a language-agnostic JSON protocol lets you compete in any language, and a React app renders it live.
5 more
A Combat Analysis Mod for Guild Wars 2 c++ Reverse-engineering Guild Wars 2 to build a DPS meter and combat overlay: DLL proxying to get code into the client, hooking the network layer through leftover assert strings, and simulating condition damage to within ~0.12% of the real numbers. Dinermind - University Project android A native Android app built by a team of three in six weeks: it sends you random recipes when you leave a geofence, so you stop eating the same meals every day. IconGenerator.eu - FontAwesome Icon Maker php A quick web tool for generating coherent-looking icons: it composes FontAwesome glyphs on a canvas, styles them to your taste, and exports a PNG. PHP and jQuery. TeamSpeak.gg - VoIP Server Toolkit serverless A multi-tenant toolkit for TeamSpeak servers, built after other server owners asked to run the tooling from my own public server. Analytics, gamification and moderation over a protocol that only speaks telnet, plus end-to-end encrypted video chat on a forked Jitsi. StudentVoice - Voting by Pointing a Camera at a QR Code php A live poll on the screen in the university hallway. Two QR codes, one per answer, and the answer rides through Azure AD in the OAuth state parameter, so a single scan logs you in and votes at the same time. Plus a QR code with a logo punched through the middle that still scans.
Tinkering 3
What I learned for my next Web Summit (2019) events Practical tips from my first Web Summit in Lisbon: grab your badge at the airport, plan ruthlessly, time your lunch, and actually use the event app to find people. Measuring LiPo Voltage using an Arduino electronics Building a permanent Arduino monitor for the cells of an FPV drone's LiPo battery, using a voltage divider to bring 16.8 V down into the Arduino's 3.3 V range. How this Blog works with Serverless Workers javascript How a free Cloudflare Worker can rewrite a shared Notion page into a blog on your own domain - the original setup behind this site, since rebuilt.