Programming / Software development

Android ADB ├╝ber TCP/IP

How to use ADB over TCP/IP instead of USB

Android development on FreeBSD

How to get started with Android development on FreeBSD (using Android Studio)

Linear stepper motor control - A summary

A short summary of the algorithms required for linear accelerated and decelerated stepper motor control on microcontrolers.

Adding tags for indexing webpages with Jekyll

An easy method to add tags to your static Jekyll generated pages and blogs

How to handle LoRA messages from thethingsnetwork from JavaEE with TTNClientJ2

This article is a (really) short tutorial on how one can handle messages from LoRA nodes that are routed via thethingsnetwork inside an self-contained JavaEE application.

The Blogsphere - How pingbacks work

The blogsphere is a web of interconnected websites. As usual websites are linked like all pages in the WWW but on the other hand they provide an easy way of notifying each other of being referenced by a third party. Pingback is - besides trackbacks - the (XML-RPC based) technology used for that notification.

I2C communication between RaspberryPi and an AVR based I2C slave

04 May 2019 - tsp

This article explains how to use an AVR as I2C slave device (basically how to set registers for the TWI controller) and how to interface that to an RaspberryPi running FreeBSD

Using Git / Git Cheatsheet

07 May 2019 - tsp

A short cheat sheet on how to use the git version control system (most basic operations)

Authenticating and signing using Austrias citizen card

28 Oct 2020 - tsp

A short summary on how to embed authentication and generally signing with the Austrian citizien card

What are JSON web tokens any why would one want to use them?

28 Oct 2020 - tsp

Just a short description of what a JWT is, what it can do for one and how they are realized - and why one would want to use them to identify users in one's web application by using JWTs instead of session IDs.

OpenHantek on FreeBSD for USB oscilloscope

02 Oct 2019 - tsp

A really short description on how to build OpenHantek on FreeBSD and how to configure the system - and how to create a FreeBSD port.

Setting up the ESP32 and ESP8266 build environment

07 Oct 2019 - tsp

Short summary on how to setup the development environment for ESP8266 (Non-OS and RTOS) as well as ESP32 (RTOS) including a short shellscript that's capable of setting up the development environment.

x86 and x86-64 memory models

03 Nov 2019 - tsp

A really short *unfinished* introduction into the various memory models of the x86 architecture

Clone or pull all your github repos (possible as basis for a backup)

07 Nov 2019 - tsp

A short summary on how to use the GitHub API with access tokens to mirror all your GitHub repositories and keep them up to date.

How to use Frama-C to proof correctness of AVR microcontroller code

27 Nov 2019 - tsp

This is a short article that shows how one can use Frama-C and the WP plugin to proof correctness or some properties of ANSI C code written for AVR microcontrollers.

Using Sonoff T4EU1C non-neutral switches with own firmware

15 Jan 2020 - tsp

A short review about the T4EU1C Sonoff Switch as well as an example how to flash Sonoff basic switches with custom firmware

Selenium with Chromium and Java on FreeBSD

10 Feb 2020 - tsp

This is a short description on how to get started using Selenium with chromedriver on FreeBSD with a Java application. This can be used to develop automatic test applications for web applications or simple bots that scrape content from webpages or automate actions on the web using a full browser capable of running JavaScript, running browser plugins, etc.

Neuronal network basics

25 Feb 2020 - tsp

A short introduction into neuronal networks and backpropagation

Frama-C with wp-dynamic and function pointers

02 Mar 2020 - tsp

How to use Frama-C static analysis and proof assitant with ACSL annotations for function pointers in ANSI C.

Frama-C predicates

06 Mar 2020 - tsp

Really short primer on ACSL predicates for formal verification of ANSI C code with Frama-C.

NodeMCU based PIR motion sensor supporting WiFi and MQTT

19 Mar 2020 - tsp

Mini tutorial on how to use the NodeMCU Amica and a cheap PIR sensor module to build a pretty simple motion sensor that supports reporting via MQTT messages.

Simple JPEG image I/O with libjpeg

20 Mar 2020 - tsp

Short tutorial on how to use libjpeg for simple image I/O (to read and write JPEG files to/from disk or memory and represent them as simple in-memory bitmap for simple CV experiments)

k-Means clustering algorithm

22 Mar 2020 - tsp

Short summary about the k-means algorithm and it's usage

WebRTC Media Streams

14 Apr 2020 - tsp

This blog post is part of a short series about WebRTC. It describes the different media sources available as well as how one can do local loopback of a datastream. Note that data transfer is not described in this blog post, only access to webcam and screen sharing streams and direct pixel manipulation.

Anatomy of a typical Unix-like/Linux daemon

25 Apr 2020 - tsp

A really short introduction of the basic anatomy of a Unix-like or Linux daemon process.

A method to write objectoriented code in ANSI C

24 May 2020 - tsp

This blog post summarizes a method that can be used to develop software in the same way one would when using object oriented techniques with C++, Java or similar languages. It's based on the method used by the previously mentioned languages to implemented that stuff on bare metal.

What (in my opinion) one can learn from Erlang/OTP for other programming languages

01 Jul 2020 - tsp

Since I'm a huge fan of the Erlang programming language and the OTP toolkit but normally aren't working with projects where Erlang is suited or in case some existing code is using already other languages and so I'm not capable of using Erlang I tried to summarize some of the things that I think one can learn from programming in Erlang/OTP even when using other programming languages. Of course this stuff is not enforced by the runtimes and it's harder to achieve on other platforms but the approaches work nevertheless.

Runtime swapable and upgrade-able modules in ANSI C

09 Jul 2020 - tsp

This article describes an trick that I'm using in some of my applications to allow one to exchange modules or plugins inside an application at application runtime as well as keeping old versions active as long as they're required.

LoRA WAN stuff often not seen

18 Aug 2020 - tsp

A short summary of LoRA WAN stuff that's often not seen by device and application manufacturers and developers. This blog post tries to give a short overview of network behavior and internals.

Simple XML serialization and deserialization in C#

19 Aug 2020 - tsp

Since a student of mine struggled realizing simple structured serialization and deserialization to and from XML in C# I decided to put together a small tutorial.

LoRA WAN device activation (OTAA and ABP)

19 Aug 2020 - tsp

Minimal description of the two possible activation procedures of LoRA WAN device activation and the meaning of device activation for the network. This article has been written since the difference between OTAA and ABP as well as the reasoning seems to be a problem for some developers.

Comparison of generic data serialization methods

24 Aug 2020 - tsp

A summary and short comparison of various generic (non application specific) data serialization techniques and formats

A look at the pastry distributed hashtable

19 Sep 2020 - tsp

This blog post takes a look at the pastry distributed hashtable. This is a hashtable that allows resilient and scaling distributed key value stores and that can be used to build a variety of applications on top.

The role of message brokers in IoT and microservice scenarios

12 Oct 2020 - tsp

A short view on the role of message brokers in two different context, which problems they solve and what one should be aware of.

Automatic Jenkins udpate using Shellscripts and Jenkins

13 Oct 2020 - tsp

This article describes a simple and working solution to automatically upgrade jenkins running on a local servlet container such as Apache Tomcat by using a simple POSIX compliant shellscript (working on Linux, Unices, etc.) as well as a simple Jenkins job itself.

Dipl.-Ing. Thomas Spielauer, Wien (

This webpage is also available via TOR at http://jugujbrirx3irwyx.onion/

Valid HTML 4.01 Strict Powered by FreeBSD IPv6 support