Projects, side quests & miscellany

Field notes

A running scrapbook of things I made, learned, tried, broke, fixed, or just thought were worth keeping.

Shelf 01

Build notes

Accessible macro pad prototype with three large physical switches
Human-centred designAccessible Macro Pad

Designing for a person without designing for only one person

The macro pad began with one client's limited mobility and rheumatoid arthritis, but the design questions were broader: How much force should an input require? How precise must a movement be? Can the control be understood without explanation, and will it activate reliably every time?

Large targets, low-force switches, clear feedback, wireless operation, and configurable actions reduced effort without making the device narrowly specialized. Debouncing and calibrated thresholds mattered as much as the enclosure; accessibility fails quickly when an easy-to-press control is not also predictable.

What I learned Designing from a specific human constraint can improve general usability. Reduced effort, fewer steps, forgiving targets, and reliable feedback help far more people than the initial user group.

CAD rendering of the Q-Arm rack-and-pinion gripper
Design iterationQ-Arm

When the CAD works but the printed gripper does not

The Q-Arm gripper had to create useful clamping force from limited motor torque, stay below a 100 g end-effector allowance, and be manufactured with 3D printing and laser cutting. A 4:1 gear reduction traded speed for force, while opposed racks kept the two jaws moving together.

The first physical parts revealed what the CAD model could not: printed gears need clearance, long rack supports flex, layer direction changes strength, and extra material must be placed where loads travel rather than added everywhere. We widened support geometry, adjusted fits, and kept parts simple to orient, print, replace, and test.

What I learned Designing for additive manufacturing means treating tolerances, load paths, print orientation, assembly, and iteration speed as first-class requirements— not cleanup after the model is finished.

Shelf 02

Technical notes

PowerShell curl request receiving a 200 OK and Hello, World response from HTTP-PyServer on localhost
Protocol notesHTTP-PyServer

What a web framework hides between listen and respond

HTTP-PyServer started below the abstraction layer used by most web projects: open a TCP socket, bind it to an address, listen for connections, read bytes, and turn an HTTP request into structured data. From there, route matching selected a Python function and response code serialized status, headers, and a body back onto the connection.

Implementing those steps with Python's standard library made the protocol feel concrete. Thread-per-connection handling introduced concurrency; sessions and caches introduced shared state and expiry; TLS introduced another layer around the socket. It also exposed why production servers spend so much effort on malformed input, partial reads, path safety, timeouts, and load.

What I learned A framework's convenience is built from systems decisions. Recreating a small version made its boundaries—and the value of mature implementations— much easier to understand.

Shelf 03

Demos & recognition

Shelf 04

Made for fun

Thumbnail from Alex's sixty-second Flask API tutorial
YouTube experimentsYouTube Shorts

One-minute coding explainers

I made a small series of one-minute videos about decorators, generators, lambdas, unpacking, custom exceptions, Flask APIs, and React. It was a fun way to practise explaining technical ideas without overcomplicating them.

What I liked about it Keeping each video short made me decide which details actually mattered and which ones could wait for another explanation.

Thumbnail for Alex's React and GitHub Pages deployment tutorial
YouTube tutorialYouTube

A quick GitHub Pages tutorial

A short walkthrough for hosting a React project on GitHub Pages. I made it because deployment had confused me before, and I wanted to leave behind the simple explanation I would have found useful.

Why it is here It is a small project, but I still like the idea of making something useful and sharing it when it might save someone else a bit of time.