20 days since last post...
2026
-
The Wrong Layer
A leak doesn't come from the app where you finally see it. India blacked out Telegram to chase one anyway.
-
Optimizing Anthropic's VLIW SIMD Assignment
I started this on a quiet evening, thinking 'I'll just poke at it for an hour.'
-
The Vigilance Tax
On the accumulated cost of living somewhere that demands constant suspicion.
2025
-
The 2025 Retrospective
La rétrospective annuelle.
-
161 km/h on India's First Regional Rapid Transit
Taking the Delhi-Meerut RRTS and feeling like I'm in a different country.
-
My Claude Code YOLO Setup
Dockerizing --dangerously-skip-permissions so you can let Claude LLM cook.
-
Fastest multi-arch Docker builds on Github Actions
Using Github's new hosted arm64 runners to make multi-arch Docker builds actually fast.
-
Debugging a Cloudflare Routing Blackhole
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.
-
Migrating GOTM from MySQL to Turso
Notes from moving GOTM's voting database from MySQL to Turso after PlanetScale killed its hobby tier: ENUMs, timestamps, and one .env incident.
-
Ranked Choice Voting for Game of the Month
Building the voting site for the patient gamers Discord server
-
DIY plane spotting at home with a Raspberry Pi
Building a plane spotting system with a Raspberry Pi and an old Android phone
2024
-
The 2024 Retrospective
La rétrospective annuelle.
-
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.
-
iOS 18's vehicle motion cues really work
How the new Vehicle Motion Cues feature helps me with motion sickness
-
Using a Pico W for wake-on-LAN... Remotely
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.
-
To sshfs or to rclone mount?
A totally non-scientific comparison of sshfs and rclone-mount for mounting remote filesystems
-
The 2024 edition of How I deploy my Telegram bot
Using semantic release, Docker and k3s to deploy my Python Telegram bot.
2023
-
The 2023 Retrospective
La rétrospective annuelle.
-
What does HN love about HN?
Running sentiment analysis over HN's 250 most-upvoted comments about HN, to see how often the middlebrow dismissal applies to itself.
-
Plotting taxi fares for fun and profit (?)
Running some scripts to plot the fares of taxi rides in Hyderabad and Bangalore.
2022
-
The 2022 Retrospective
La rétrospective annuelle.
-
10x faster arm64 builds on Github Actions
A simple one-liner mix of Github's managed runners for x86 and a self-hosted runner for arm64.
-
Making Cloudfront Signed URLs work with response-content-disposition
A workaround for the Node.js AWS SDK to make Cloudfront Signed URLs work with response-content-disposition.
-
Are MySQL UUID inserts really that slow?
Exploring insert performance of UUIDs in MySQL in a worst-case scenario.
-
How I deploy my ~4,000 MAU Python Telegram bot
Using semantic release, Docker and watchtower to deploy my Python Telegram bot.
-
Cross-compiling Rust on GitHub Actions
Cross-compiling HamVerBot for Oracle's Ampere machines: cross freezing at 400% CPU, an OpenSSL pkg-config failure, and the vendored fix.
-
Learning French (efficiently) 🇫🇷
My progress, methods and timelines of learn French efficiently.
-
Working with HEIC/F images with Node.js' sharp on AWS Lambda
Compiling libjpeg, libde265, libheif, libvips and sharp to process HEIC/F images in AWS Lambda using layers.
-
Bucket List
This is a living, ambitious (perhaps too much), and certainly incomplete list.
2021
-
The 2021 retrospective
The annual retrospective of 2021
-
The Piquarium Project
Building a fish tank monitoring system using serverless databases and a Raspberry Pi B+ 🍇
-
How to automate GitHub releases using GitHub Actions
Using GitHub Actions to push new releases without manually tagging commits.
2020
-
Experiments with Time Tracking - 2020 Edition
Continuing my experiments with time tracking, this time the year 2020.
-
GSoC 2020 @ CERN - Part I
Community bonding and the first evaluation of GSoC 2020 at CERN: onboarding into ALICE's O2 tooling and building walnut, a workflow linting utility.
-
GSoC 2020 @ CERN - Part II
Wrapping up GSoC 2020 at CERN: a DPL-dump-to-template converter, YAML marshaling pain, and 19 pull requests over 90 days.
-
GSoC 2020 @ CERN - Part 0
Parts of the process before applying including shortlisting projects, reading and choosing what to work on.
-
My Experience with GSoC 2020
A 3 part series on my experience with Google Summer of Code 2020 CERN
2019
-
Interpreting Computer Programs
Working my way through and solving exercises from Structure and Interpretation of Computer Programs
-
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.
-
Astrophotography at the Edge of Tibet
Doing some (amateur) astrophotography in Sangla at the edge of Tibet.