---
title: "Blog"
description: "Notes on infrastructure, bots, performance work, side projects, and the occasional system that broke strangely."
permalink: "https://obviy.us/blog/"
---
# Blog

## 2026

- 2026-06-16 [The Wrong Layer](/blog/the-wrong-layer/) - A leak doesn't come from the app where you finally see it. India blacked out Telegram to chase one anyway.
- 2026-01-22 [Optimizing Anthropic's VLIW SIMD Assignment](/blog/vliw-optimization/) - I started this on a quiet evening, thinking 'I'll just poke at it for an hour.'
- 2026-01-12 [The Vigilance Tax](/blog/the-vigilance-tax/) - On the accumulated cost of living somewhere that demands constant suspicion.

## 2025

- 2025-12-30 [The 2025 Retrospective](/blog/2025-retrospective/) - La rétrospective annuelle.
- 2025-12-30 [161 km/h on India's First Regional Rapid Transit](/blog/rrts/) - Taking the Delhi-Meerut RRTS and feeling like I'm in a different country.
- 2025-11-27 [My Claude Code YOLO Setup](/blog/yolo-mode-with-claude/) - Dockerizing --dangerously-skip-permissions so you can let Claude LLM cook.
- 2025-10-26 [Fastest multi-arch Docker builds on Github Actions](/blog/fastest-gha-multi-arch-docker/) - Using Github's new hosted arm64 runners to make multi-arch Docker builds actually fast.
- 2025-07-30 [Debugging a Cloudflare Routing Blackhole](/blog/cloudflare-blackholed/) - When hop 5 is full of asterisks: tracing a hung Cloudflare-proxied host to an ISP peering blackhole, and giving up on the orange cloud.
- 2025-03-30 [Migrating GOTM from MySQL to Turso](/blog/mysql-2-turso/) - Notes from moving GOTM's voting database from MySQL to Turso after PlanetScale killed its hobby tier: ENUMs, timestamps, and one .env incident.
- 2025-02-27 [Ranked Choice Voting for Game of the Month](/blog/pg-gotm/) - Building the voting site for the patient gamers Discord server
- 2025-01-24 [DIY plane spotting at home with a Raspberry Pi](/blog/pilane-spotting/) - Building a plane spotting system with a Raspberry Pi and an old Android phone

## 2024

- 2024-12-31 [The 2024 Retrospective](/blog/2024-retrospective/) - La rétrospective annuelle.
- 2024-10-31 [Running Remix with Bun](/blog/running-remix-with-bun/) - Swapping Remix's Node server for Bun.serve: a small server.ts, static file handling, and no benchmarks. bun install is just fast.
- 2024-10-04 [iOS 18's vehicle motion cues really work](/blog/ios-vehicle-motion-cues/) - How the new Vehicle Motion Cues feature helps me with motion sickness
- 2024-08-26 [Using a Pico W for wake-on-LAN... Remotely](/blog/pico-w-for-remote-wol/) - Wake-on-LAN needs layer 2 and Tailscale stops at layer 3, so a ₹539 Pico W and an MQTT broker now wake my gaming PC from anywhere.
- 2024-06-07 [To sshfs or to rclone mount?](/blog/comparing-sshfs-rclone-mount/) - A totally non-scientific comparison of sshfs and rclone-mount for mounting remote filesystems
- 2024-05-23 [The 2024 edition of How I deploy my Telegram bot](/blog/deploying-ssgbot-2024/) - Using semantic release, Docker and k3s to deploy my Python Telegram bot.

## 2023

- 2023-12-30 [The 2023 Retrospective](/blog/2023-retrospective/) - La rétrospective annuelle.
- 2023-08-15 [What does HN love about HN?](/blog/what-hn-loves-about-hn/) - Running sentiment analysis over HN's 250 most-upvoted comments about HN, to see how often the middlebrow dismissal applies to itself.
- 2023-03-09 [Plotting taxi fares for fun and profit (?)](/blog/plotting-uber-for-fun-and-profit/) - Running some scripts to plot the fares of taxi rides in Hyderabad and Bangalore.

## 2022

- 2022-12-30 [The 2022 Retrospective](/blog/2022-retrospective/) - La rétrospective annuelle.
- 2022-12-02 [10x faster arm64 builds on Github Actions](/blog/gha-arm/) - A simple one-liner mix of Github's managed runners for x86 and a self-hosted runner for arm64.
- 2022-11-28 [Making Cloudfront Signed URLs work with response-content-disposition](/blog/cloudfront-signed-disposition/) - A workaround for the Node.js AWS SDK to make Cloudfront Signed URLs work with response-content-disposition.
- 2022-10-11 [Are MySQL UUID inserts really that slow?](/blog/benchmarking-uuid-mysql/) - Exploring insert performance of UUIDs in MySQL in a worst-case scenario.
- 2022-09-24 [How I deploy my ~4,000 MAU Python Telegram bot](/blog/deploying-my-python-telegram-bot/) - Using semantic release, Docker and watchtower to deploy my Python Telegram bot.
- 2022-06-28 [Cross-compiling Rust on GitHub Actions](/blog/cross-compiling-rust-on-gha/) - Cross-compiling HamVerBot for Oracle's Ampere machines: cross freezing at 400% CPU, an OpenSSL pkg-config failure, and the vendored fix.
- 2022-05-14 [Learning French (efficiently) 🇫🇷](/blog/learning-french-efficiently/) - My progress, methods and timelines of learn French efficiently.
- 2022-03-05 [Working with HEIC/F images with Node.js' sharp on AWS Lambda](/blog/sharp-heic-on-aws-lambda/) - Compiling libjpeg, libde265, libheif, libvips and sharp to process HEIC/F images in AWS Lambda using layers.
- 2021-12-31 [Bucket List](/blog/bucket-list/) - This is a living, ambitious (perhaps too much), and certainly incomplete list.

## 2021

- 2021-12-30 [The 2021 retrospective](/blog/2021-retrospective/) - The annual retrospective of 2021
- 2021-12-15 [The Piquarium Project](/blog/the-piquarium-project/) - Building a fish tank monitoring system using serverless databases and a Raspberry Pi B+ 🍇
- 2021-11-02 [How to automate GitHub releases using GitHub Actions](/blog/automated-github-release/) - Using GitHub Actions to push new releases without manually tagging commits.

## 2020

- 2020-12-30 [Experiments with Time Tracking - 2020 Edition](/blog/experiments-with-time-tracking-2020-edition/) - Continuing my experiments with time tracking, this time the year 2020.
- 2020-11-01 [GSoC 2020 @ CERN - Part I](/blog/gsoc-part-1/) - Community bonding and the first evaluation of GSoC 2020 at CERN: onboarding into ALICE's O2 tooling and building walnut, a workflow linting utility.
- 2020-11-01 [GSoC 2020 @ CERN - Part II](/blog/gsoc-part-2/) - Wrapping up GSoC 2020 at CERN: a DPL-dump-to-template converter, YAML marshaling pain, and 19 pull requests over 90 days.
- 2020-09-17 [GSoC 2020 @ CERN - Part 0](/blog/gsoc-part-0/) - Parts of the process before applying including shortlisting projects, reading and choosing what to work on.
- 2020-09-16 [My Experience with GSoC 2020](/blog/my-experience-with-gsoc-2020/) - A 3 part series on my experience with Google Summer of Code 2020  CERN

## 2019

- 2019-08-23 [Interpreting Computer Programs](/blog/interpreting-computer-programs/) - Working my way through and solving exercises from Structure and Interpretation of Computer Programs
- 2019-07-10 [Experiments with Time Tracking](/blog/experiments-with-time-tracking/) - Rudimentary time tracking with a Google Sheets template and a Sankey diagram: thirty seconds a day of guesstimating where the year went.
- 2019-06-20 [Astrophotography at the Edge of Tibet](/blog/tibet/) - Doing some (amateur) astrophotography in Sangla at the edge of Tibet.

