Giovanni's Diary > Subjects > Programming >
My public repositories
Here is a list of my public repositories with a brief description, ordered by latest activity (top is more recent).
micro-headers
A collection of high-quality, configurable, header-only libraries written in C99. The libraries are designed to be highly reusable, simple to maintain with little to no dependencies, and easy to integrate in your projects. website
- micro-tests.h: lightweight, header-only testing framework, with multithread support and run-time settings.
- micro-log.h: configurable, thread safe logging framework in C99. With lots of features.
- micro-draw.h: a 2D software renderer.
- Projects that use this renderer: cosu, cgis, game-of-life (wasm)
- micro-flag.h: tiny library to parse command line arguments.
- micro-module.h: define, load, and unload runtime modules / plugins with a simple C99 API.
- micro-serde.h: serialization library for C99, in ~150 lines of code.
- micro-bench.h: micro benchmarking library.
- micro-hash.h: quick and dirty hash functions in C99, with some benchmarks.
- micro-la.h: linear algebra types and functions.
- hll.h: configurable, header-only implementation of HyperLogLog, used for approximating the cardinality of large multisets.
- bloom-filter.h: configurable, header-only implementation of bloom filters, a space-efficient probabilistic data structure.
- rendezvous-hasher.h: dependency-free implementation of Rendezvous Hashing (a.k.a. Highest Random Weight hashing).
- consistent-hasher.h: implementation of consistent hashing, alternative to rendezvous-hashing.
- hashmap.h: implementation of a hashmap for any type.
- hashset.h: implementation of a hashset for any type.
- llist.h: type-safe, generic doubly-linked list in C99.
- liblaunchpad.h: abstraction layer over Novation's Launchpad S through ALSA, header-only C99 library.
- micro-example.h: example header-only library in C99 used as a template project.
- game-of-life.h: Conway's Game of Life logic implementation.
(New) micro-tools
A collection of useful tools for programmers to solve programmer problems. Mostly written in C99.
- micro-templating.c: simple tool to generate a file from a template, in ~200 lines of code.
- micro-timerd: client-server application to start, stop and list timers.
- lkde-tool: tool to develop and test kernel patches and applications across multiple kernel branches, trees, and configurations.
Highlights
Some other interesting projects that you should check out.
- Brenta Engine: a 3D renderer and game engine in modern C++, with a custom ECS framework. website
- haplolang: a Lisp-like, s-expression based, imperative, strongly typed programming language.
- The Design and Implementation of Haplolang: notes after implementing the language.
- kivebpf: eBPF-powered file access monitoring Kubernetes operator.
- The Kibebpf website: documentation about the operator.
- Baldo scanner: malware scanner daemon for Linux using a kernel module.
- tenno-tl: partial re-implementation of the C++26 standard library.
- cosu!: rhythm game written in C, compatible with osu!mania maps.
- santOS: a general purpose microkernel for i386.
Misc / Old
Backlog of projects.
- Introduction-to-machine-learning: notes for students studying Machine Learning.
- Algorithms and Data Structure course (Italian)
- modern-cpp-template: template for C++ libraries.
- linux-kernel-module: hello world kernel module with full QEMU setup.
- parallel-computing-cpp: MPI and OpenMP algorithms and benchmarks.
- fixmi: business management software using microservices.
- elixir-blockchain: simple blockchain library implemented in Elixir.
- react-express-template: template for Node/Express/React/Tailwind/Docker apps.
- webgl-markdown-portfolio: 3D renderer in WebGL and Angular.
- tiny-rss: RSS feeds generator for Org mode.
- musync: download music declaratively.
- ssap: local password encryption manager written in Rust.
- rust-lc3: implementation of a virtual machine for LC-3.
- robotUI: Bevy visualizer for Advanced Programming 2023 @Unitn.
- rust-pomodoro-timer: TUI study timer in Rust.
- rust-music-player: TUI music player in Rust.
- broutines: goroutines and coroutines implemented in C.
- chttps: HTTPS server in C with server-side rendering.
- cchecker: borrow checker in C++.
- regEZ: fully constexpr regex implementation in modern C++.
- go-ebpf: example eBPF program in Go.
- risto89: online ticket market in Java.
- ledger-board: scalable transaction producer/consumer app (Kubernetes, Kafka, Django, Angular, Redis…).
- how-to-root-samsung-galaxy-j5: instructions to root a Samsung Galaxy J5.
- hypr-nerd-gestures: control Hyprland through hand gestures using OpenCV.
- launchpad-app-launcher: launch commands from a Novation Launchpad.
- modern-python-template
- youtube-miniature-generator
- many more…
Setup
Custom configurations for my daily development setup and workflow.
- .emacs.d: my Emacs configuration.
- dwm: my fork of DWM and DWL.
- init.lua: simple Neovim configuration without bloat.
- i3config: i3 configuration, used as fallback.
- lfs: my Linux From Scratch distribution.
- mapkg: my own package manager.
- nixos-dotfiles: my (outdated) NixOS setup.
- obsidian-chill-theme: my custom Obsidian theme.
- obsidian-advanced-slides-theme: custom theme for Obsidian advanced slides.
There are many more which are not really interesting or are not public, so I didn't mention them.
Check out my gists.
Travel: Programming, Index