Category: Software Development

  • Introducing JLauncher

    The JVM has become a standard execution environment for a lot of server code. It’s no longer only Java, but also languages such as Scala, Kotlin and Clojure that target the JVM. However, for creating everyday command line tools I have quite often used languages such as bash, python or ruby, because it is much…

  • New jproc Release

    I have just released version 2.2.0 of jproc, a handy library to run external programs from Java. It is nice to use a serious programming language (whichever JVM language you consider serious) rather than just bash, if things get a bit more complicated (set -eux anyone?). This version comes with a couple of minor improvements.…

  • Wrapping Exceptions with Context

    A good error / exception message should provide enough information to pinpoint a problem. In most modern languages there is a stack trace feature that will show how the program got to the point where it broke. Unfortunately this information is very static in nature; all the dynamic context is lost. To solve this problem…

  • Shades of Green – The Release Candidate Report

    On our current project we practise continuous integration and we perform weekly releases. To simplify the decision whether a particular build is fit for production we introduced a release candidate report that contains all the information that we usually take into account as well as instructions on how to interpret this information. In this article…

  • Dealing with Flaky Tests using Data

    I recently wrote a sbt plugin that produces tabular test reports. My motivation was to get better insights into the reliability of our test suite. Due to good discipline most failures that occur are caused by flakiness of tests that usually pass on developer machines, but are causing problems on the faster build machines. We…

  • Managing Configuration

    The Problem In almost every serious software development effort that entails integrating different systems multiple environments are being used throughout development, testing and the production use of the system. Each of these environments typically contains a number of systems, that interact with each other. Each system needs to know how to talk to the systems…

  • Go Defrustrator

    At programmiersportgruppe I blogged about the go-defrustrator, a userscript that dynamically improves Go’s user interface.

  • Readability vs Runtime Feedback

    In my scala explorations I also came across the problem of testing and verifying mocks. In scala it is trivial to pass around predicates, however these are function objects, that can be applied, but don’t know much about their implementation. So while the code is readable the feedback can be quite bad. Groovy’s assert statement…

  • Scala Compiler Quirks

    Recently I have been dabbling with scala a bit. As it happens I found a few quirks in the compiler. So does the following bit of code compiler and, if so, what does it print? object Example { val x = y val y = true def main(args: Array[String]) { print(x); } } Yes you’ll…

  • Don’t use DITA if you don’t have to

    I am currently for a large organisation that seems to embrace DITA for their documentation. In theory this is a nice thing. There is a wealth of tools to edit dita files and to transform them to all sorts of formats. The reference implementation is the DITA OPEN TOOLKIT. First of all I am not…