spietzonke (at) gmail (dot) com
GPG key to send safe E-mails
edX Microsoft DEV210x: Introduction to C++
Coursera C++ programming for C programmers part A
Coursera C++ programming for C programmers part B
Coursera Machine Learning for All
I’m open for job offers for software development. Feel free to contact me.
2014 - 2017:
I developed “Nano VM”, a virtual machine with lots of functions. Running on multiple platforms.
2015 - 2016:
I worked for PACKT publishing as a “technical reviewer” for the book: “Raspberry Pi Networking Cookbook - Second Edition” by Rick Golden. In the book you can find lots of examples for networking stuff possible with a Raspberry Pi.
2017 - 2019:
Working for a IT-company doing the same work as a systems engineer: building PCs and installing software. The range did go from mini PCs like Intel NUC up to high end workstations. I also did create installation images for the operating system install.
Do DGUV V3 electronics check at work. I’m developing a new VM, called “L1VM”. And work on other projects on GitHub.
My open source projects are hosted on GitHub: koder77
A tiny but very fast and powerful virtual machine, written in C and C++.
The VM can be expanded by modules (shared libraries).
So there is no limit in doing things.
The L1VM is an incredible small executable: only about 40 KiB in size.
I did develop an assembler to generate bytecode for the VM.
And also wrote a compiler for my own language “Brackets” by hand.
This includes the full parser and the assembly output generator.
I developed a JIT-compiler for the L1VM. The programmer can mark parts of the program which are then compiiled by the JIT-compiler.
The JIT-compiler has a limited opcode set: the math opcodes (integer, double), the “if” opcodes (logical operators) and jumps.
I did some benchmarks with my L1VM and Node.js (V8 JIT-compiler). My L1VM was a bit slower in the benchmarks.
So it can compete with other VMs out there!
You can find more information on the GitHub project page.
See the links on the top right of my pages.
The L1VM now runs on Linux (testet on Debian, Ubuntu, Fedora), Windows 10, 11 (via WSL) and macOS. On the Raspberry Pi the serial port and the GPIO pins can be programmed with my rs232 and gpio module. I use them to control a robot with my Raspberry Pi.
Here is an example of my SDL GUI module “povedit” program for my
8 LED POV electronic kit. With it you can draw the patterns into the air.
The kit can be connected to a PC with the USB/serial adapter. The designed
patterns can be flashed with my flash tool or a serial terminal program.
The povedit program can be installed via my repository script in the “l1vm/distribution” directory.
Here is a short video: L1VM - pov edit
A database for data exchange between programs.
The database can be saved to disk if needed.
The commands are send as plain text. So you can use “nc” to connect to the server and send commands. GitHub: L1VM data
L1VM go data
A new key/value pair based database written in Go.
It saves the data as strings. The data or key can be searched by regular expressions.
The database can be saved and load. The commands are send as plain text.
And you can use “nc” to connect to it.
GitHub: L1VM go data
Zerobuild is a small build tool for building C and C++ programs.
It is very easy to write the build files.
Cells is a library to connect FANNs together to a bigger
neural network. The neural networks are placed as nodes
into layers. The output of the nodes in one layer can be linked
to the inputs in a node on the next layer.
If the neural networks run then the library does run the layers
Tools, I use
Text editors: Atom, Kate, VSCode and Emacs. For debugging: Valgrind, memory leaks
and error checker.
Electronics and PCB layout: KiCad, Ktechlab.
MPLAB IDE for PIC microcontroller development.
Office: Libre Office. Others: Gimp, Inkscape.
C and C++
I have very good knowledge of C. And did some projects in C++.
I know how to debug software with Valgrind. I used it for debugging my L1VM project programs.
For the L1VM project I developed the compiler and assembler.
I have experts knowledge in compiler building and VM design.
For the L1VM JIT-compiler I had to learn some x86_64 assembly and how to use the “asmjit” library.
For L1VM I started nearly from scratch, developing a new language I call “Brackets”.
I am learning Go and did write my “L1VM go data” database in Go. You can connect via “nc” program to the database and type in the commands. There is also a web browser form to put or get data in it.
The database is designed to share data between programs. You can run multiple worker clients and get the data to work on from the database.
The clients store their results in the database.
The calculator is in RPN (reverse polish notation) math style.
So you have to input like this: “5 10 * =”.
So in infix notation this would be: “5 * 10 =”.
This whole blog is written in Markdown. It is converted to a static web page by the “Jekyll” Markdown tool.
I use Fedora GNU/Linux on my notebook since Fedora 34. I did work with Sabayon, Arch and Debian before. And I also know Windows 7, 10 and 11. For my Raspberry Pi projects I use Raspberry Pi OS (known as Raspbian before)
I know how to use “Virtual Box” and “Qemu” for VM systems.
Working two years as a systems engineer: building and installing PCs.
Designing PCBs with KiCad.
I developed a LED POV with 8 LEDs to draw patterns into “the air”. One of my other projects is a Parallax Propeller microcontroller board.
My current project is a robot controlled by a Raspberry Pi. It has a 3D webcam and a IR-range sensor to detect obstacles. I use OpenCV to detect the obstacles in front. This is not easy to program.