April 2026
Performance of Java 2D drawing operations (part 2: drawing)
08 February 2019 [Java, Performance, Programming, Rabbit Escape] Series: operation, image, opacity In my previous post I examined the performance of various drawing operations in Java 2D rendering. Here I looked at some specifics around image rendering, with the goal of finding optimizations I could apply to my game Rabbit Escape. You can find the […]
A simpler blog commenting system
April 26, 2026 [Tech] Since I created this blog statically using Zola, I have been using Remark42 as my commenting system. I wanted something self-hosted and simple, and it worked. I currently get comments every few months, and about half of them are spam. Remark42 seems to forget who I am every time, so deleting […]
Building a Rust command line tool: towncrier clone
April 24, 2026 [Programming, Rust, Tech, Videos] Enthusiastically embracing test-driven development as usual, we attempted to write a minimal clone of a useful tool, towncrier, that allows us to create changelogs from individual “news fragment” files. In the end we had the outline of a viable solution that passed the first and only test! You […]
Performance of Java 2D drawing operations (part 3: image opacity)
February 11, 2019 [Java, Performance, Programming] Series: operation, image, opacity Not because I enjoyed it, I seemed compelled to continue my quest to understand the performance of various Java 2D drawing operations. I’m hoping to make my game Rabbit Escape faster, especially on the Raspberry Pi, so you might see another post sometime actually trying […]
Keybase chat bot in 10 lines of bash
February 14, 2019 [bash, JSON, Keybase, Programming] I’ve become very interested in keybase.io lately, mainly because it offers secure conversations, and you can have bots. I wrote a quick bot to simulate Arnold Schwarzenegger that I thought I’d share to show how easy it is. It’s based on the keybase command line tool (which comes […]
Billion line challenge: splitting lines using SIMD in Rust
April 17, 2026 [Programming, Rust, Tech, Videos] I was scared to do it, but it’s actually fine! This time we look at the fastest way to split a large text file into separate lines, first by implementing our own zero-copy version. BufReader::lines and then using SIMD, which allows us to process 64 bytes simultaneously, using […]
Python Async basics video (100 million HTTP requests)
I discovered something difficult in Python, which was a first, so I wrote a whole blog series about it, and now a whole video: Slide: Async Python Basics Slide Blog posts: asyncio basics, large numbers in parallel, parallel HTTP requests, additions to stdlib PakarPBN A Private Blog Network (PBN) is a collection of websites that […]
Gradle: what is a task, and how to make a task depend on another task?
February 27, 2019 [Gradle, Groovy, Java] In this crazy world, Gradle sometimes seems like the most sensible choice for building Java or Kotlin projects. But what does everything inside build.gradle actually mean? And when does my code run? And how to create tasks? And how do you convince a task to depend on another task? […]
Convert videos to GIFs with reasonable colors
March 05, 2019 [bash, Programming, Tech] Here’s a little script I wrote to avoid copy-pasting ffmpeg commands from superuser every time I need them. It converts videos into GIF files by first calculating a good palette, then using that palette. Use: ./to_gif input.mp4 output.gif to_gif file (which should be executable): #!/bin/bash set -e set -u […]
Rust: reading very large files for the billion line challenge
Checking if memmap can help us read very large files as fast as possible, and wondering how wc managed to be so fast. This is the next part of the Billion Row Challenge, and perhaps the part closest to black magic. Follow me on mastodon: @andybalaam@mastodon.social PakarPBN A Private Blog Network (PBN) is a collection […]