This page contains short articles about projects I'm doing myself or that friends of mine have expressed some interest in and for which I've decided to write short summaries. It also contains some short notes on how to solve some particular problems to keep an easy to access repository for friends and other people who might have the same problems. Please note that many of these articles are written late at night or in short breaks so if you spot any errors any correction is welcome.
The topics covered include:
Some source-code of hobby projects and/or partially externally used code as well as some unfinished stuff that I've released under BSD or BSD-like licenses can be found in my GitHub repositories. Most of the finished and released projects are automatically built for every release and every GitHub commit by Jenkins Pipelines on dynamically created Xen virtual machines for FreeBSD (amd64, arm6, aarch64), Linux (amd64) and Windows (amd64) as well as automatically tested by the pipeline scripts (using Unit-Testing for components, Frama-C with it's wp plugin against RTEs and to prove certain correctness constraints on C applications as well as Selenium with Java to emulate users on Web applications using chromedriver). I plan to auto deploy the artifacts in near future to a public artifact repository (like this webpage is automatically deployed on every commit into the corresponding repository).
If you like to read books on interesting subjects you can also refer to my list of recommended books
I've been noticed that not all browser refer to the atom feed that's supplied by this blog and that not everyone notices the presence of such a feed even if interested. Of course one can subscribe using an RSS/ATOM reader using the ATOM feed at https://www.tspi.at/atom.xml or the corresponding onion URI http://jugujbrirx3irwyx.onion/atom.xml
Due to the situation in Europe I've added some automatically updated graphs to somehow visualize the severity of the COVID-19 outbreak. These are of course by no means guaranteed to be valid and no important differences like community structure, healthcare capabilities, different testing methods have been included.
Sometimes it's convenient to add annotations to Grafana dashboards and panels using Grafanas flexible HTTP API instead of writing them into a database and fetching them from there using Annotation queries. Since I lacked a complete example and it took me some minutes to find out how this works this blog post summarizes the process.
A description of a simple implementation of a system clock module for AVRs supporting delay, millis(), etc. This blog post tries to shed some light onto these simple and basic functions as well as some common pitfalls.
A common problem in industry and laboratories - accessing a serial port via the network to allow multiple machines or VMs access the same physical serial port. This blog post explains how to build such an console server on a FreeBSD host offering physical serial ports an FreeBSD as well as Windows clients who are able to access the ports like local ones.
In case one wants to push one's Jenkins RSS feeds to some internal devices or publish them with different credentials than are needed to access the Jenkins server this is a simple scripted solution on how to do this.
Mini summary about the ADC on the ATMega328p and ATMega2560
This blog post is a little summary or introduction on how to calculate Eigenvalues and Eigenvectors using power iterations that tries to use a little less formal jargon to provide a short overview.
A mini summary on how to do OpenGL context creation without using external utility libraries on X11 systems.
A summary on a procedure on how to use a galvanic process to plate 3D printed objects made out of PLA or PET-G with copper and possibly also other metals
Mini note on robust serial communication with microcontrollers (basically: use checksums and synchronization patterns)
A mini summary on how to perform impedance matching for antennas or other devices using the NanoVNA v2 together with the NanoVNASaver and SimSmith applications based on the impedance matching of an electron deflection system
A short summary about Kalman filtering
Mini blog post that shows how I integrated DHCP events into my automation solution by pushing commit, release and expiry events into my message broker infrastructure
A short summary about the basic conditions in a pierce type electron gun
A short summary about the operation and characteristics of thermionic emission cathodes, the current limiting factors and the most important failure modes
Mini blog article that summarizes the build of a simple 2 mA beam current electron gun from common of the shelf components gathered from the hardware store as well as some 3D printed components.
A rather unusual blog post for this site, a collection of various doomsday scenarios predicted or at least allowed by physics that might happen for sure (but don't be frightened, usually with a really low probability). Note that this is not an in depth article but just a short overview of some scenarios.
A pretty short blog post about a small nuance that might lead to a huge hit in your search ranking when using static site generators that use nested pre and code tags and may trigger even more errors in case one doesn't use mobile first approach for one's stylesheets
One approach to recover a Windows 10 system from damaged registry hive files in case of missing restore points and registry backups.
Something easy and simple. How to cut glass tubes and other glass parts using electrically heated hot wire.
Summarizing a method to use RS485 with MAX485 driver ICs on Atmel AVRs (specifically on the ATMega328P) utilizing the on chip USART.
This blog post summarizes how one can access common webcams from C on operating systems supporting the video4linux (V4L) API. This information can be used to built robots, surveillance systems or simply communication applications.
Since I always have to lookup how this works in some examples or hidden deep in the manual I decided to write a short summary about linear extrude, rectangular extrude and rotate extrude
A short summary on how to generate a sitemap for search engines automatically when using the Jekyll static site generator
Just a short description of what I've tried (and didn't expect to work) about the usage of 3D printed parts made out of PLA in the typical desktop FDM 3D printing process, i.e. a method to build really low cost parts at home.
Mini introduction into the nature of the Internet and it's basic working principles.
Summary of the most basic OpAmp circuits that are usually built as well as their basic properties
Mini summary about a problem that is mentioned as a regression but is not easily found on the internet when using Intel or amdgpu graphic drivers on FreeBSD
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.
A short view on the role of message brokers in two different context, which problems they solve and what one should be aware of.
A short summary about the basic idea behind Cherenkov radiation
A short summary about the basic properties of Maxwell equations, the resulting electromagnetic wave equations and commonly used gauges (Lorenz, Coulomb).
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.
Short summary of various commonly used Gaussian integrals (1 dimensional) most of the time not shown in school textbooks.
This blog post describes the protocol used by many currently sold cheap spectrum analyzer boards as far as I've been able to gather information.
A summary and short comparison of various generic (non application specific) data serialization techniques and formats
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.
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.
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.
This blog post summarizes the steps for disaster recovery on MariaDB or MySQL in case the database system doesn't start up any more or contains damaged table definitions which might even prevent one from dropping tablespaces or databases.
Short blog post about the casting of a simple epoxy countertop with embedded sink.
Since it seems to be a huge mystery to many people this blog post tries to summarize some of the parts relevant to the consumer side of power grid systems.
In this blog article I'm describing a small automated plant watering solution that's used indoor to grow basil, capsicum and chili pepper indoor.
A short summary about the different meaning and interpretation of impedance, ABCD, scattering and transfer parameters in simple (linear) two port networks.
Mini post about an unusual error when using RabbitMQ - or mnesia in general. This is something that shouldn't happen and was also not expected to happen.
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.
Mini article about the measurement of capacitance with AVRs with a minimum of external components (in it's most extreme form none external components exploiting the gate capacitance of the micro-controllers input)
Mini article about the usage of the Aspell spell checker on FreeBSD on the command line and inside the automated build pipeline for static webpages
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 runtime environments and it's harder to achieve on other platforms but the approaches work nevertheless.
Mini Blog-Post that describes modeling 4 digit NACA airfoil profiles in OpenJSCAD
This is an opinion article on the future of web development. Currently there is a trend about building more and more logic into the client - even for simple tasks. That trend has been there previously and it has been a bad idea back then. This article tried to present a few arguments why I don't think that this is or should be the future of the web.
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.
Since a friend required this - a short write up on how to use your Raspberry-Pi (with FreeBSD) with an UMTS/LTE modem to provide internet connectivity to your local network.
A really short introduction of the basic anatomy of a Unix-like or Linux daemon process.
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.
Short summary about the k-means algorithm and it's usage
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)
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.
Really short primer on ACSL predicates for formal verification of ANSI C code with Frama-C.
How to use Frama-C static analysis and proof assitant with ACSL annotations for function pointers in ANSI C.
A short summary on how this page is built using the Jekyll static website generator as well as a really simple Jenkins job that's triggered by a GitHub webhook.
Short introduction on how to use lagg(4) to perform automatic seamless switching from ethernet to WiFi (when they represent the same network on the same IP subnet) and back on FreeBSD.
A short introduction into neuronal networks and backpropagation
Summary on how to enable a bluetooth mouse on FreeBSD
A short primer on how to get started using Kerberos for authentication inside your network. This includes setup of an kerberos key distribution center (KDC) on an secure host as well as of the server machines against which one will authenticate as well as the required configuration on the clients.
Real first mini steps when using Amazon webservices. Adding 2FA to your root user, creating an administrative user, enabling 2FA there and creating access keys for CLI tools.
A short review about the T4EU1C Sonoff Switch as well as an example how to flash Sonoff basic switches with custom firmware
A short tutorial on how to setup node red and configure the first flows to be used with sonoff basic switches and other data sources as well as XMPP/MQTT interfaces and some other ideas how one can use node red in various areas
Since I often hear confusion about the level or type of privacy when I talk with people about onion routing services like TOR, tunneling services like VPN, DNS encryption via DOH, using proxyservers, using alternate DNS services, using encryption and signature, etc. I've decided to write a short blog post about that different stuff and what it provides - and what not (in my personal opinion).
Example on how one can use the ESP8266 NONOS SDK to build applications using a custom Makefile (i.e. not using the nested Makefiles of espressifs SDK) to build one of the most simple microcontroller projects.
A short description on what the ESP8266-NONOS-SDK really does (step by step) to build the firmware images that get uploaded to the microcontroller via esptool.
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.
Because it's sometimes said TOR hidden services are only used by criminals this post lists a few more credible services and some reasons why one might use them.
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.
A really short *unfinished* introduction into the various memory models of the x86 architecture
How to get an IPv6 network connection working if your ISP doesn't support IPv6 even today. Also includes a short description on how to do this on an connection using dynamic endpoint adresses.
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.
A really short description on how to build OpenHantek on FreeBSD and how to configure the system - and how to create a FreeBSD port.
A short summary on how to configure mpd5 to authenticate against an external PPP provider for PPPoA usage (via PPTP). This is required for authentication with most Austrian (A)DSL providers when using their modems in single user mode.
A short rant on the incapability of Android Studio to be portable over various POSIX operating systems and a hackish solution on how to keep the feeling of a local application while running it remotely on a Linux machine.
Description of an easy way of using piezo disks as touch sensors to perform bed leveling with 3D printers or other CNC machines. This blog entry describes the most basic possible way without much external circuits (only an ATtiny13A and two resistors are used)
How to use the GIT client to interoperate with a remote SVN server or how to migrate an SVN repository to GIT including it's full history.
A short tutorial on designing and applying digital filters.
This article contains a short tutorial about multifactor authentication, various factors that may be used and a tutorial on how to use the Yubikey hardware token for web- and local as well as SSH (pam) authentication on FreeBSD.
A short description how to use TOR as a normal user and what to be aware of when using TOR
A short primer on how to use Frama-C to proof properties about C-code.
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.
A short summary on how to embed authentication and generally signing with the Austrian citizien card
This is the description of a small carrier board for two DRV8825 breakout boards (or compatible) that are controlled by an AVR (ATMega328p) which runs a small (linear) motion processor that gets it's commands via I2C.
A short cheat sheet on how to use the git version control system (most basic operations)
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
Basic definitions for topology (notes taken during various lectures)
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.
This post describes a simple derivation of the complex inpedance formulas well known from electronics.
Short explanation on how to use the 28BYJ-48 geared stepper motor with the ULM2003 7-way Darlington transistor array.
Something most drivers don't want to hear - a basic pallpark calculation of the optimal maximum speed that offers the maximum car througput on streets.
How to use the GPIO pins on the AVR microcontrollers when using avr-gcc
This blog post should provide a short overview of TAN alternatives and methods as well as their pitfalls and security
This is an article (in German because of it's specific audience) about SPF and DKIM features that prevent mail spoofing and it's effects on mail forwarding
This article describes some of the ideas and thoughts during building my first FDM printer and which lessions have been learned from that project.
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.
An easy method to add tags to your static Jekyll generated pages and blogs
A short summary of the algorithms required for linear accelerated and decelerated stepper motor control on microcontrolers.
A short description how to setup a TOR hidden service or an stealth hidden service and why one would want to do that even if one doesn't offer illegal content
How to get started with the STM32F401RE nucelo development board on FreeBSD with gcc and openocd
Example how to flash Sonoff basic switches with custom firmware (using cli tools or the Arduino IDE)
The following article leads the reader through building an LoRA-WAN gateway from an iMST ic880a concentrator board and an RaspberryPi. Optionally is shows the reader how to add GPS, enable remote configuration via the tinc VPN daemon and via a TOR stealth hidden service.
How to get started with Android development on FreeBSD (using Android Studio)
Just a collection of comments on 3D printing
A tutorial on how to automatically manage TLS certificates for various services with DNS challenges and an zone served out of a bind zonefile that is protected via DNSSEC.
A really simple colinear coaxial 1090 MHz antenna for ADS-B, one of the most simple antenna constructions that can be used to receive automatic dependent surveillance squitters using low cost software defined receivers such as DVB-T sticks.
A short description of the davlik.vm.* tuneables for memory management tuning on Android devices
How to use ADB over TCP/IP instead of USB
How to automate DNSSEC signatures on a manually managed zone
A short description (in german) how to use the facebook chat with it's XMPP interface.
A short description how to enable EAP-MD5 authentication for wired 802.1x authentication on Windows 7 since it has been (correctly) disabled for security reasons