Projects : James Collings

Projects

My major project is first, then the applications I consider my best shipped work. Everything with a link is public on GitHub with source, build instructions and commit history.

Wireless Web Controller for RS232 CD Players

University major project, 2025 to 2026

An embedded controller built on the Raspberry Pi Pico for Denon DN‑C620 and DN‑C680 professional CD players. The Pico serves a responsive web control interface over the network and translates interactions into real time serial commands over RS232, turning legacy broadcast AV equipment into a device you can drive from any browser on the network.

This was the largest single piece of engineering I have done. I ran it as a full build rather than a coursework exercise: requirements gathering against the hardware's serial specification, interface design, implementation across the firmware and front end, a test strategy against real hardware, and written documentation for assessment. It brought together hardware interfacing, networking and front end work in one system.

Source available on request. This repository is private because the work is assessed, and publishing it would risk an academic unfair practice issue for me and for future students. I am glad to walk recruiters and hiring managers through the code, the design decisions and the test results directly. Please get in touch.
Raspberry Pi Pico RS232 Embedded web C Python

MicGuard

One of my two best shipped applications

A macOS menu bar app that holds the system input device on the microphone you actually chose. Connecting Bluetooth headphones normally hijacks the input and drags the whole connection into low quality HFP mode. MicGuard watches Core Audio for device changes and puts the input back. Choosing a different microphone from the menu sets a new preference that survives reconnects.

It builds entirely with the Xcode command line tools, so no full Xcode install is required, and it ships with a Make driven workflow and unit tests covering the device selection rules.

Swift 6 Core Audio AppKit Make

foobar2000 Discord Presence

One of my two best shipped applications

A C++ component for foobar2000 that publishes the currently playing track to Discord: title, artist, a live progress bar, audio quality and album art. Written against the foobar2000 SDK and the Discord rich presence API, which meant working inside somebody else's plugin architecture and lifecycle rather than my own.

C++ foobar2000 SDK Discord RPC Windows

Daily Dashboard

A terminal application in Go that serves up a set of daily items: a word, a fact, a maths question, a trivia question, a tarot card, an artwork, news, music, music trivia and a recipe. Each one comes from a different public API, so the project is really an exercise in consuming ten third party services cleanly and handling the ways each of them fails.

It is built with Bubble Tea as a terminal first interface. The architecture is the part I am happiest with: every feature lives in exactly two files, an API client and a feature page, and the app shell picks them up from a registry, so adding a feature never means editing the app package. Thirteen test files cover the clients and the parsing.

Go Bubble Tea REST APIs TUI Unit tested

RAT, a custom language interpreter

An interpreted programming language written from scratch in C: a hand written lexer, a recursive descent parser producing an AST, and a tree walking evaluator. It supports variables, arithmetic, conditionals, while loops, first class functions with parameters and return values, and executing .rat source files.

Symbol table handling and local scope simulation were the interesting parts, and the reason I built it: I wanted a concrete understanding of runtime environments rather than a described one.

C Lexing and parsing AST Interpreters

Goblin Box

A desktop dictation and transcription app in Python, built with PyQt6 and OpenAI Whisper. Live dictation records from the microphone in short chunks and appends text as you speak; audio transcription takes an existing file and saves a transcript. Transcription runs locally through Whisper rather than in the cloud.

Processing is asynchronous so long transcriptions never block the interface. It is aimed at people who find writing harder than it should be, which shaped the defaults and the wording throughout.

Python PyQt6 OpenAI Whisper Accessibility

Fastforward

A native macOS app that converts video and audio by driving ffmpeg. Drop files in, pick a target format, press Convert. The point is putting a real interface over a tool whose power is otherwise locked behind a wall of command line flags.

Swift ffmpeg macOS

Grade calculator

A command line calculator in Go that works out your percentage average across a module. Small, but it replaced a spreadsheet I kept getting wrong.

Go CLI

afkTimer‑ManagerTF

A Team Fortress 2 server plugin in SourcePawn that tracks idle players and manages AFK timeouts, written for a live game server with real players connected to it.

SourcePawn Game servers

More on github.com/winkyfaceak, including work in Java, Lua and Go.

9 item(s)

winkyjames.com