A real-time audio synthesis application built from scratch in
Zig, allowing users to create and connect modular synthesizer
components in a visual interface.
Overview
This project is a fully functional modular synthesizer with a
node-based visual interface. Users can patch together
oscillators, filters, effects, and other DSP modules to create
custom synthesizers and generative music.
Architecture
The project is structured in three layers:
Core Library (scrublib)
Cross-platform foundation handling window management, rendering,
and OS interaction:
GLFW/GLAD for window creation and OpenGL context
Custom immediate-mode renderer for shapes and text
FreeType for font rendering
RtAudio for cross-platform audio I/O
RtMidi for hardware MIDI device support
Input handling system
Audio Graph Engine
The heart of the synthesizer - a high-performance, headless
audio processing system:
Signal flow graph for node connections
Polymorphic node system using a generic interface
Type-safe ports for inputs/outputs with multiple signal
types (audio, control, gates, integers)
Memory pool architecture for zero-copy data sharing between
nodes
Cache-efficient buffer management for real-time performance
Topological sorting for correct processing order
Serialisation into JSON for saving/loading as well as
copy/paste
GUI Layer
Visual interface for patching and control:
Node-based visual programming interface
Design allowing GUI to be decoupled from audio engine
File browser for handling save files, samples, subpatches
Repository: Private repository - happy to
provide access for review
Cool Beans Point Of Sale
A custom point-of-sale system built for a small coffee shop,
demonstrating practical problem-solving with a simple,
purpose-built solution.
Key Features:
Product catalog with modifiers (sizes, milk alternatives,
etc.)
Printer support:
Customer receipts
Barista dockets for coffee orders
Kitchen dockets for food preparation
SQLite database for product catalog and order history
Simple, touch-friendly interface for fast service
Technical Implementation
Platform: Godot Engine (GDScript)
Database: SQLite with tables for products,
product groups, modifiers, and order history
Printing: Direct integration with Linux
lp command for printing to network thermal
printers
Architecture: Separate docket printing
allows kitchen and barista to work independently
Production Use
In production for 2+ years, processing daily orders with zero
downtime or maintenance issues.
Building a pen plotter machine and developing software to
generate plotter art, exploring the intersection of computers
and art.
What is a Pen Plotter?
A pen plotter is a computer-controlled drawing machine that
moves a pen across paper using precise stepper motors. Unlike
digital printers, plotters create artwork through actual pen
strokes, giving them a unique aesthetic quality.
Hardware
Custom-built plotter:
Aluminum extrusion frame with belts and stepper motors for
X/Y movement
Servo for pen lift mechanism
Arduino running GRBL firmware that accepts G-Code commands
Custom 3D printed parts
Software
Python-based generative art toolkit for creating plotter
artwork:
A full-stack web application that transforms audio recordings of
patient consultations into medical reports using AI. Built as a
freelance project for a client wanting to demo the idea to
potential business partners. This was my first real dive into
modern web technologies but I found I was able to pick up the
skills quickly.
The Problem
Healthcare professionals spend significant time on
documentation, manually transcribing recordings and formatting
them into standardized reports.
The Solution
Scribe automates the medical documentation workflow by:
Converting audio to text using AssemblyAI's transcription
service
Intelligently extracting and structuring information using
OpenAI's GPT-4 to match customizable templates
Providing a polished editor for healthcare professionals to
review and refine reports
Key Features
Audio-to-Report Pipeline: Upload
consultation recordings and receive AI-generated reports
with streaming responses
Custom Template System: Create and manage
reusable report templates with placeholder fields that AI
automatically populates
Rich Text Editor: Built-in WYSIWYG editor
for editing.
User Authentication & Subscriptions:
Multi-user management with Stripe-powered subscription
service
Technical Stack
Frontend:
Next.js 13
React 18 with Server Components
Tailwind CSS
Backend:
Next.js API Routes (serverless)
Supabase (PostgreSQL) for database and authentication
AssemblyAI for audio transcription
OpenAI GPT-4 for report generation with streaming responses
Stripe for payment processing and subscription management