The Coding Flow

Code Clean Or Die Tryin’

  • Goodbye Wordpress, hello Hugo!

    Today I wiped off Wordpress from my webspace and switchted to Hugo, a static site generator - just in case you are wondering.

  • FT-450 Hamlib Timeout Glitch

    I control my FT-450D using Hamlib. This worked fine if only a single program was connected to the rig. To be able to connect multiple programs at the same time, I wanted to run the rigctld server as a service and connect the programs using the model #2 (“NET rigctl”). This setup works fine, but every now and then the connection to the FT-450D stopped working. Here is how I found out what’s going on and how I fixed it.

    Read more…
  • Automatically resetting an USB-to-serial adapter

    I read the temperatures and other data from my heating controller using a python script. The heating controller is connected via a serial line to a raspberry pi, using an FTDI USB-to-serial adapter. From time to time, the adapter stops working. Plugging it out and in again helps, but eventually I found out how to restart it automatically. You need to find out the device number of your adapter (here it is device 4):

    Read more…
  • keeb.io Iris

    I built my own keyboard. It is an Iris from keeb.io. The Iris has a split 56-key ortholinear layout and it is fully programmable, running the QMK firmware. Step 1: Choose wisely Coming from the Kinesis Freestyle II, I wanted to go one step further and have all keys (especially the cursor keys) right at my fingertips, without the need to move my hands. And I wanted to have this luxury everywhere, therefor I looked for a fully programmable solution with split layout.

    Read more…
  • Learning to Go

    In May I started into a breakneck adventure: new job, new programming language, new tech stack - everything starting over. I was hired at Paessler to be a Go developer. Coming from the Java planet, I had to learn everything from scratch: the Go language itself the “state-of-the-art” development environment for Go: VS Code GitLab with its concept of CI/CD pipelines Vue.js for some frontend work (see below) Docker and Kubernetes as runtime environment I can’t remember a moment in my career where I had to master so many different technologies at once.

    Read more…
  • Using the myAVR “mySmartUSB light” under Linux in the Arduino IDE

    I recently bought a handful of Arduino Nano clones, just in order to learn that for a price of 4€ per CPU it is not granted that there is a bootloader on the ATmega328P. Hence I needed an “in-system-programmer” to be able to install the bootloader. I found the “mySmartUSB light” from myAVR at Conrad for a reasonable price. The device works in principle on Linux with avrdude, given that you have a driver for the “CP210x USB to UART Bridge” already installed.

    Read more…
  • Help! Gradle is using a different version of a library to build my extension/plug-in!

    Just a note for myself that might also help others. Symptoms: When building your Gradle extension/plug-in, strange compile errors occur. E.g. the compiler can’t find methods, which are obviously there when you look into the library’s code. Problem: Gradle carries a lot libraries. It is likely that you want to use one of those libraries in a more recent version. Gradle adds its libraries to the classpath when you add compile gradleApi() to your dependencies.

    Read more…
  • The secret step to save your software from the creeping death of unmaintainability

    Abstract Software which is developed over several years usually tends to come into a state, where the effort and risk of change increases dramatically with each new feature. This often ends at the point, where either nobody dares to take the risk of any further change, or it is simply too expensive to implement a new feature. What is necessary to guard against this destiny and keep a software fit for change even after years of development?

    Read more…
  • null

    The Problem References to objects may be empty, i.e. they may not reference a particular object at all. In this case, their value is null. Whenever you want to access an object using such a reference, you have to make sure, that the reference is not null. Otherwise Java punishes every access to null with a NullPointerException. There are different ways to take care of the null case in Java.

    Read more…
  • Oomph vs. Groundhog Day

    Ahh, summertime: sunny weather, lots of barbecue and new a Eclipse release. As every year, this also means finding out again, which useful plug-ins you did install during the course of the last year, which tweaks you did to your Eclipse installation. All this just in order to reproduce your development environment based on the latest and greatest features from Mars. Sure, there is this new installer based on Oomph, that does the downloading and all this crazy stuff to prepare your workspace.

    Read more…