This page contains some of my hobby projects.

Thread Bites
Thread Bites

Thread Bites 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
Silly Invaders

Silly Invaders is a Space Invaders type game. The goal here is to familiarize myself with microcontroller programming without relying on any black boxes. It features:

  • its own linker script and start-up code with the ability to override the default interrupt handlers using strong symbols
  • a heap management system with a guard region using MPU
  • a hardware abstraction layer providing a generic interface for accessing GPIOs, UARTs, and SSI modules and supporting non-blocking, asynchronous, and DMA modes
  • a display interface using rasterized TrueType fonts for displaying text
  • a digital-to-analog converter that may be used to generate sound
  • a capability to play RTTTL (Nokia) tunes
  • a game rendering engine using polymorphic display objects
  • a simple RTOS with a scheduler and synchronization mechanisms

Self-driving cars

A bunch of projects I have done in the context of Udacity's Self-driving car nanodegree: