Stefan Pietzonke Info spietzonke (at) gmail (dot) com
GPG key to send safe E-mails

Donate:
ko-fi

Certificates

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

About me

I am a self taught hobby software and hardware developer. I learned to program in AmigaBASIC and C on my Commodore Amiga 500 in 1991! Now I use C and C++ for my programming projects. And I successfully finished two C++ Coursera courses. I learn JavaScript and React. I’m also learning Go and developed my “l1vmgodata” database with it. I am designing PCBs with KiCad. And work with PIC microcontrollers or the Parallax Propeller microcontroller. I also doing some Raspberry Pi powered projects. Since 2000 I am using Linux as my main OS. Now I use Debian bookworm Linux on my notebook.

I’m open for job offers for software development. Feel free to contact me.

Resume

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.

Current:
Do DGUV V3 electronics check at work. I’m developing a new VM, called “L1VM”. And work on other projects on GitHub.


Projects

My open source projects are hosted on GitHub: koder77

L1VM

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 compiled 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 is part of my examples in the L1VM prog directory.

L1VM - pov edit screenshot

LED POV 8 red

Here is a short video: L1VM - pov edit


L1VM data

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

Zerobuild is a small build tool for building C and C++ programs. It is very easy to write the build files. GitHub: zerobuild

Cells

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 automatically. GitHub: Cells

rpncalc

This is a scientific calculator written in JavaScript and React. I did also develop a React native app for Android. Here is the older web version: JavaScript rpncalc calculator


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.


Knowledge

Software

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”.

Go

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.

HTML, CSS and JavaScript

I also learn to develop in JavaScript. I developed a calculator app in JavaScript and React. 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 =”.

Markdown

This whole blog is written in Markdown. It is converted to a static web page by the “Jekyll” Markdown tool.

Operating Systems

I use Debian GNU/Linux on my notebook. I did work with Sabayon, Arch and Fedora 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.


Hardware

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.