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
Since a friend of mine started a new blog a few weeks ago: If you're interested in their DIY projects (some in German, some in English) as well as motorcycle repair projects you may also look at www.thing1thing2.at
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.
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.
This blog post summarizes one of the methods that can be used with CSS3 adjacent sibling selectors or general sibling selectors in combination with attribute selectors to implement a simple collapsible menu without any JavaScript
The most simple implementation of a cookie banner as long as the banner is only required with active JavaScript
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 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.
A dive into programming using the WebAuthn API in JavaScript and the requirements on the server side to perform 2FA using HSM's like the YubiKey, platform embedded TPMs or similar solutions supported by webauthn.
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 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 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.
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. (Update - In addition an implementation in Python has been added to show a short draft on how one can get started with Selenium in Python as well.)
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.
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
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)
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
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
Dipl.-Ing. Thomas Spielauer, Wien (webcomplains389t48957@tspi.at)
This webpage is also available via TOR at http://jugujbrirx3irwyx.onion/