17 Mei, 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 […]

5 mins read

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 […]

2 mins read

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 […]

1 min read

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 […]

3 mins read

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 […]

2 mins read

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 […]

2 mins read

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 […]

1 min read

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? […]

11 mins read

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 […]

2 mins read

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 […]

1 min read