Recent Projects

This page is a collection of projects I’ve worked on recently. They are all over the map in terms of discipline. There’s some software engineering, hardware engineering, educational content, and more in here. I will typically link to the relevant blog post or site as well. Feel free to contact me about any of these!

Virtualization for Embedded Systems Series

This series of posts is focused around virtualization and how we can use it in embedded systems to build better, more scalable and more secure systems. It’s broken down into several parts:

Virtualization for Embedded Systems Series: Introduction

Virtualization for Embedded Systems Series: Types of Virtualization

Virtualization for Embedded Systems Series: Applications in the Real World

Virtualization for Embedded Systems Series: Containers Deep Dive

Virtualization for Embedded Systems Series: Type-2 Hypervisors

I have a few more posts to finalize this series when time allows.

HotMic

This project is my first foray into “from scratch” guitar electronics. I started with the simplest of all possibilities: a clean boost guitar pedal. I called it the HotMic because it should give a boost of 2x-4x from the input signal (and because all good guitar pedals have a cool name!). There is no code in this design because all the electronics are analogue. My blog post on the project sums up the parts and step.
Features: 2x-4x clean boost, true signal bypass, LED indicator
Links: Intro, Schematic + Layout , Build, Test + Demo

littleKernel

This project is the starting point for a large MIDI music controller. littleKernel is a multitasking kernel targeted at the AVR platform. This project will eventually flow into the MIDI control surface project. The multitasking system will handle MIDI events, as well as read potentiometers, faders, a scroll wheel, some buttons, and drive an LCD. I hope to complete this whole project some time in the Spring or Summer of 2017.
Language: C/ASM
Features:
Dependencies: AVR platform, avr-gcc toolchain
Link: littleKernel

RPi Components

This package is an abstraction of the GPIO library for the Raspberry Pi. I have modules written for specific motor driver chips, LEDs and general PWM control, as well as several other items. If you’re interested in it, check out its GitHub page for the source. I am slowly adding chips and modules to it as I find time.
Language: Python
Features: oop access to motors, LEDs, ADC chips
Dependencies: spidev, RPi.GPIO
Link: RPi Components

WebPHP

This is a framework that uses PHP to map URLs using a regex-like syntax to handler classes. Each handler class can define actions based on what HTTP verb was used in the request (GET, POST, PUT, OPTIONS, etc) and can enforce a required SSL restriction on a per URL or per handler class basis. I designed this with easy REST implementations in mind. I recently added a templating portion which is decoupled from the other part of the framework. Since I wanted to test the framework and template mechanism together, many of my development trials use the framework.  If you’re interested in it, check out its GitHub page for the source.
Language: PHP
Features: URL mapping to handler classes
Dependencies: mod_rewrite, PHP
Link: WebPHP

Generic Data Structures

This is a set of templated data structure in C++. It includes stacks, queues, lists, binary heaps, binary search trees, and is a work in progress. If you’re interested in it, check out its GitHub page for the source. I am slowly adding structures to it as I find time.
Language: C++
Features: generic data structures, templated
Dependencies: None
Link: Generic Data Structures

localcast3

This is a Python backed web app for streaming local content on a ChromeCast. For the most detailed info and the latest regarding this project please visit its GitHub page.
Language: Python, JavaScript
Features: REST interface, GUI built with Bootstrap
Dependencies: Tornado.py
Link: localcast3

WordBot2

WordBot2 is a chat bot that will log into an IRC server and monitor what is being said. It gathers statistics and collects this information into a JSON database. It has a primitive web interface that uses WebSockets to communicate via JSON messages to the server and display the top words being used, etc.
Language: Python (2.7 compliant)
Features: CLI, database, Web Interface, realtime statistics, multi-threaded
Dependencies: Tornado.pyTwistedMatrix
Link: WordBot2.zip

PacketMachine

PacketMachine is a useless utility to flood an IP address with the maximum amount of UDP packets your system can generate and pass to the router. Can be used for network load testing.
Language: C++
Features: CLI, statistics, multi-threaded, cross platform
Dependencies: Boost Library (you’ll have to compile it for your architecture)
Link: PacketMachine-0.8.zip