Java

2021

Printing the version of a Maven project -

Minimal example of a Maven pom for a mixed Kotlin and Java project -

2020

Shutdown order consistency: how Rust helps -

Profile a Java unit test (very quickly, with no external tools) -

Example Android project with repeatable tests running inside an emulator -

2019

KotlinJS: First impressions (formed by writing Snake) video -

Dependency Injection frameworks: reasons to avoid them video -

Building an all-in-one Jar in Gradle with the Kotlin DSL -

Creating a self-signed certificate for Apache and connecting to it from Java -

ACCU Talk "How Kotlin makes your Java code better" -

Examples of Kotlin making your Java code better video -

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

Scheduling a task in Java within a CompletableFuture -

Gradle: what is a task, and how can I make a task depend on another task? -

Performance of Java 2D drawing operations (part 3: image opacity) -

Performance of Java 2D drawing operations (part 2: images) -

Performance of Java 2D drawing operations (part 1: types of operation) -

2018

You must rewind your incoming buffer when you fail to encode a character in a CharsetEncoder or you'll get an IllegalArgumentException -

2017

maven-assembly-plugin descriptor for a simple tarball with dependencies -

Make Android Gradle display unit test failure messages -

Iterating over the lines of a file in Java -

2016

Setting up a sane Maven project -

Simple example of Netty 4 usage -

Ambiguous names in Java due to non-normalised unicode - but all OK in Python -

How to analyse a .phd heap dump from an IBM JVM -

What's new in Java 8 -

2015

Java HTTPS to a server with a self-signed certificate -

Code for detecting when you leave an Android app -

Snake in Dart -

Rabbit Escape 0.3.1 - now with zoom! -

Java game programming: image rendering hints make no difference to rendering time -

Snake in Ruby -

Why Rabbit Escape is Open Source / Free Software -

How to make your own levels for Rabbit Escape -

Rabbit Escape v0.1 out now for Linux, Windows and Mac video -

Rabbit Escape (a bit like Lemmings) v0.1 released for Linux, Windows and Mac -

Snake in Groovy -

Programmatic equivalents of web.xml sections for Tomcat -

JAX-RS (using Apache CXF) in embedded Tomcat example -

2014

Encoding URLs in Java -

Using hexdump to represent a binary file in Java source code -

Android development - saving state -

Android development - Rabbit Escape really working on Android -

Android programming - a non-Android, Android Game -

Android programming - drawing bitmaps in a game loop -

Android programming - a menu using Activities and Intents -

Android programming - setting up Android Studio -

A mini mocking framework -

Avoid mocks by refactoring to functional -

Using the final keyword in interface method parameters does nothing -

2013

Avoid backslashes anywhere in Java code (Java error "illegal unicode escape") -

Behaviour of Java String.split() when some answers are the empty string -

Checking the case of a filename on Windows -

Goodness in programming languages, part 4 - Ownership & Memory -

setUp and tearDown considered harmful -

Everybody loves build.xml (test-driven Ant) -

Everybody hates build.xml (code reuse in Ant) -

Dry run mode for Ant (ant -n, ant --dry-run) -

2012

Launching an OSGi app on the command line -

Lambda functions timeline -

Goodness in programming languages, part 3 " not doing the same thing more than once -

Scheme 7: Macros video -

Goodness in programming languages, part 2 " getting your code running -

Building jEdit from source -

2011

Entertain your baby using your Android phone -

2009

FreeGuide 0.10.11 -

2008

An actual difficult bug fixed -

FreeGuide 0.10.9 -

FreeGuide 0.10.8 -

Public bzr branch of FreeGuide -

2007

FreeGuide updated to latest XMLTV, and bug fixes -

FreeGuide 0.10.5 -

FreeGuide SVN now useable -

FreeGuide - putting recording on hold -

(Badly wrong) usage statistics for FreeGuide -

Recording in FreeGuide -

2006

Over-engineering gone mad -