---
title: "Hands-on projects on GitHub: from boot sectors to GPU computing"
url: https://michalasobczak.pl/posts/hands-on-projects-on-github.html
author: "Michał Sobczak"
description: "A guided tour of my public GitHub repositories: bare-metal x86 assembly, Commodore 64, a JavaScript 3D engine ported to a microcontroller, a mini CNC, a service map for OpenShift, OpenCL experiments and the code behind my books."
published: 2026-10-25T12:00:00.000Z
updated: 2026-10-25T12:00:00.000Z
language: en
categories: ["Technology"]
tags: ["Architecture & Process", "Vintage Computing", "3D", "HPC", "OpenCL"]
license: CC BY-NC-ND 4.0 (https://creativecommons.org/licenses/by-nc-nd/4.0/)
---
# Hands-on projects on GitHub: from boot sectors to GPU computing

> **Disclaimer:** the projects described here are the result of my own independent work, done without the use of AI. This article itself was written with the help of AI.

Most of what I write here comes from building things. This post is a map of my public repositories at [github.com/michalasobczak](https://github.com/michalasobczak), what each one is, and where to read more. Several of them have their own detailed write-up.

One idea connects many of them: take one small algorithm, here a 3D projection, and run it on very different machines. A browser, an 8-bit computer, a boot sector, a microcontroller and finally a GPU. Each port shows something the previous one hid.

| Repository | Year | Language | What it is | Article |
| --- | --- | --- | --- | --- |
| [x86-bootloader](https://github.com/michalasobczak/x86-bootloader) | 2005 / 2018 | NASM | 2D in protected mode, 3D in a 512-byte boot sector | [read](https://michalasobczak.pl/posts/x86-bootloader-2d-and-3d-graphics-in-nasm.html) |
| [c64](https://github.com/michalasobczak/c64) | 2018 | BASIC, C, 6502 asm | Commodore 64 restoration and 3D renderer | [read](https://michalasobczak.pl/posts/commodore-64-restoration-and-3d-in-basic-c-and-assembly.html) |
| [generic](https://github.com/michalasobczak/generic) | 2013 / 2018 | JavaScript | hand-written 3D engine on a 2D canvas | [read](https://michalasobczak.pl/posts/generic-3d-engine-in-javascript-ported-to-esp8266.html) |
| [esp8266](https://github.com/michalasobczak/esp8266) | 2018 | Lua | the same 3D math on a microcontroller | [read](https://michalasobczak.pl/posts/generic-3d-engine-in-javascript-ported-to-esp8266.html) |
| [designs](https://github.com/michalasobczak/designs) | 2017 | OpenSCAD | mini CNC from CD-ROM steppers | [read](https://michalasobczak.pl/posts/mini-cnc-from-cd-rom-stepper-motors.html) |
| [synopticly](https://github.com/michalasobczak/synopticly) | 2019 | C++, Ruby | service map for an OpenShift cluster | [read](https://michalasobczak.pl/posts/synopticly-service-discovery-for-openshift.html) |
| [simple\_hpc](https://github.com/michalasobczak/simple_hpc) | 2021–2023 | Java, OpenCL | code for the *Simple High Performance Computing* book | [read](https://michalasobczak.pl/posts/simple-high-performance-computing.html) |
| [mk](https://github.com/michalasobczak/mk) | 2018–2019 | Ruby, C | code for the book on Ruby, microservices and containers | [read](https://michalasobczak.pl/posts/programowanie-w-jezyku-ruby-mikrouslugi-i-konteneryzacja.html) |
| [q](https://github.com/michalasobczak/q) | 2019 | Ruby, Lua, Perl, COBOL… | code for the book on software quality | [read](https://michalasobczak.pl/posts/jakosc-oprogramowania-podrecznik-dla-profesjonalistow.html) |
| [ResearchAndDevelopment](https://github.com/michalasobczak/ResearchAndDevelopment) | 2018 | various | WebGL, OpenStreetMap, UNIX System V | below |

## Close to the metal

**[x86 bootloader](https://michalasobczak.pl/posts/x86-bootloader-2d-and-3d-graphics-in-nasm.html).** Two programs that boot from a floppy image with no operating system. One switches the CPU to 32-bit protected mode and animates 2D graphics with MMX double buffering; the other draws a 3D projection with Bresenham lines and fits in the 512 bytes the BIOS loads.

![Real-mode 3D projection rendered from a 512-byte boot sector](https://michalasobczak.pl/media/projects/x86-real-mode-3d.png)

**[Commodore 64](https://michalasobczak.pl/posts/commodore-64-restoration-and-3d-in-basic-c-and-assembly.html).** A boxed C64 cleaned and restored, connected to a laptop through a USB frame grabber, and programmed three ways: BASIC 2.0 to measure the cost of the math, C with cc65 and direct VIC-II access instead of the TGI library, and 6502 assembly with DASM.

## Graphics everywhere

**[generic and esp8266](https://michalasobczak.pl/posts/generic-3d-engine-in-javascript-ported-to-esp8266.html).** The reference for all the ports: a 3D engine from 2013 with texturing, distance-based light, painter's-algorithm sorting and collision detection, written without WebGL. Its projection math runs in Lua on an ESP8266 at 300 vertices per second at 80 MHz and 600 at 160 MHz.

**[Mini CNC](https://michalasobczak.pl/posts/mini-cnc-from-cd-rom-stepper-motors.html).** Two CD-ROM drive mechanisms as X/Y axes, Arduino with grbl, and a frame written as code in OpenSCAD and 3D-printed.

## Infrastructure

**[synopticly](https://michalasobczak.pl/posts/synopticly-service-discovery-for-openshift.html).** When we needed a live map of 65 applications on OpenShift and a full observability stack would take too long, I wrote a static C++ agent for every container, a one-route Sinatra API and a Rails panel drawing the cluster with dagre-d3. Two weeks from first commit to a working diagram.

![synopticly panel showing a live diagram of applications and their connections](https://michalasobczak.pl/media/projects/synopticly.png)

## Books and their code

Three repositories hold the examples for my books:

-   **simple\_hpc**: *Simple High Performance Computing*. Part 1 is electronics and building a computer in the TINA-TI simulator ([electric voltage](https://michalasobczak.pl/posts/electric-voltage.html), [Ohm's law](https://michalasobczak.pl/posts/ohms-law.html), [circuit simulation](https://michalasobczak.pl/posts/circuit-simulation.html)). Part 5 is OpenCL from Java (JOCL): memory bandwidth tests, sorting, reduction, Monte Carlo π, the C64 3D projection on a GPU, [DES encryption 40 times faster than on a CPU](https://michalasobczak.pl/posts/des-cipher-is-40-times-faster-in-opencl.html) and [text processing](https://michalasobczak.pl/posts/text-processing-in-opencl.html).
-   **mk**: *Programowanie w języku Ruby. Mikrousługi i konteneryzacja*. Ruby internals (ObjectSpace, memory, concurrency, C extensions), Rack and minimal Rails, RabbitMQ, testing, deployment with Nomad and GitLab, and a complete microservices project.
-   **q**: *Jakość oprogramowania. Podręcznik dla profesjonalistów*. Testing examples in Cucumber, Minitest and busted (Lua), plus legacy code in Perl and COBOL.

## Research and development

The [ResearchAndDevelopment](https://github.com/michalasobczak/ResearchAndDevelopment) repository is a playground for experiments not yet big enough for their own repo:

-   **WebGL**: a scene built with three.js from Blender models, the "modern" counterpart of `generic`.
-   **GIS**: OpenStreetMap PBF data imported into PostgreSQL/PostGIS and Elasticsearch on a 2 GB Intel Atom tablet, then rendered with Mapnik, mod\_tile and renderd. The import of one Polish voivodeship took 2720 s and about 2 GB in PostgreSQL. A newer version of this is in [load OSM map files into PostgreSQL](https://michalasobczak.pl/posts/load-osm-map-files-into-postgresql.html).
-   **UNIX System V R4.2**: bringing a 1990s UNIX back to life in VirtualBox (64 MB RAM, a 500 MB disk limit, 13 installation floppies) and programming it with `awk` and `bc`, because there is no C compiler.

![UNIX System V R4.2 welcome screen in VirtualBox](https://michalasobczak.pl/media/projects/unix-svr4.png)

## Why do this at all

None of these projects was needed for work, and all of them paid off there. Writing a boot sector teaches you what an operating system does for you. Porting the same math to five machines teaches you to measure before you optimise. Building a monitoring tool in two weeks teaches you how much of a big platform you actually use. That is the kind of knowledge I bring to architecture and infrastructure work, and the reason I keep building things by hand.
