This page contains some of my hobby projects.
I am in the process of building a Network Attached Storage system that fulfills my heart's desires when it comes to home use. So far, I've dealt with:
Threading From Scratch is a POSIXish threading library written in C. Its primary purpose was to teach me what it takes to implement pthreads "from first principles" on top of x86-64 Linux. It has:
- a capability to create, join and detach threads
- mutexes, rw-locks, condition variables
- thread-local storage
- cancellation, both deferred and asynchronous
- support for scheduling, including priority mutexes
Silly Invaders is a Space Invaders type game written to see if microcontroller programming is as much of a magic as everybody says it is. The system features:
- a compiler an linker infrastructure on top of bare gcc/binutils
- a hardware abstraction layer for a bunch of necessary devices and an RTOS with preemptive multithreading and synchronization
- a display interface using rasterized TrueType fonts a sound system capable of playing Nokia tunes
- a game rendering engine built on top of all that
A bunch of projects I have done in the context of Udacity's Self-driving car nanodegree:
- a regression model Keras that learned how to drive by observing how I do it
- a lane lines and vehicle detector using OpenCV, support vector machines, and histograms of oriented gradients
- Kalman and particle filters
- a Deep Learning model for Semantic Image Segmentation of road scenes
- a Path Planner computing safe and comfortable way through highway traffic
Neural Network models that caught my interest; typically implemented "from scratch" in TensorFlow:
- a model for Semantic Image Segmentation of road scenes
- a Single Shot MultiBox detector for finding and drawing boxes around objects of certain classes in images
A bunch of toy programs useful here or there:
- s3proxy is a FastCGI script that reads data from a protected AWS S3 bucket and makes it available to the caller. It's useful when you want to have some of your data accessible with HTTP Authentication, which is not supported by AWS.
- Jail is a helper script that I use to sandbox GUI applications using Docker and Xephyr.
- Envy is a small program that can be used in the shebang line of a script and set up any environment you want before calling the interpreter.