17 Apr, 2026
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…
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…
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…
March 05, 2019 [Android, Games, Rabbit Escape, Tech] Rabbit Escape’s newest feature, water, has been in the making for a long time, but now we think it’s ready: Water can…
April 05, 2019 [Java, Programming] When we want to do something later in our Java code, we often turn to ScheduledExecutorService. This class has a method called schedule(), and we…

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

Rabbit Escape 0.12 is out now, with water

March 05, 2019 [Android, Games, Rabbit Escape, Tech] Rabbit Escape’s newest feature, water, has been in the making for a long time, but now we think it’s ready: Water can flow, can put out fire, and can drown rabbits. Rabbits seem to be immune… Check out the 20 new levels we’ve released! (This makes a […]

1 min read

Scheduling tasks in Java in CompletableFuture

April 05, 2019 [Java, Programming] When we want to do something later in our Java code, we often turn to ScheduledExecutorService. This class has a method called schedule(), and we can pass it some code to run later like this: ScheduledExecutorService executor = Executors.newScheduledThreadPool(4); executor.schedule( () -> {System.out.println(“..later”);}, 1, TimeUnit.SECONDS ); System.out.println(“do…”); // (Don’t forget […]

5 mins read

Rabbit Escape T-Shirt – Andy Balaam’s Blog

April 13, 2019 [Games, Rabbit Escape, Tech] If you want to help promote Rabbit Escape, my free software Android/PC game, how about a t-shirt? Use the links below to design your t-shirt: Rabbit Escape T-shirt Note: there is no profit for us – this is just for promotion. If you would like to contribute financially, […]

2 mins read

Breaking down the entire Billion Row Challenge line

Interestingly, our temperature parser can be easily extended to find the start of the temperature, so we can use it to parse the entire row! Follow me on mastodon: @andybalaam@mastodon.social PakarPBN A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build […]

1 min read

Build with a different version of Java (e.g. 11) using Docker

April 23, 2019 [Docker, Java] To run a temporary environment with a different version of Java without touching your real environment, try this Docker command: docker run -i -t –mount “type=bind,src=$PWD,dst=/code” openjdk:11-jdk bash (Change “11-jdk” to the version you want as listed in the README.) Then you can code inside the current directory like this: […]

2 mins read

What is a Monad? Videos

A slightly joking video about what Monads are, but with a sincere explanation, all in about 5 minutes. First delivered as a short talk at the ACCU Conference in 2019. Slide: What is a Monad? Slides PakarPBN A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or […]

1 min read

Improving our billion-row parser and benchmarks

Improved our Billion Row Challenge benchmarks, and implemented some better implementations. Follow me on mastodon: @andybalaam@mastodon.social PakarPBN A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines […]

1 min read