// engineer ยท builder ยท lifelong learner

I build useful things.

01 About

I'm an engineer who likes problems that live in the gap between software and the physical world โ€” the kind where a clean API meets a stubborn machine, or where an AI model has to do something actually useful.

By training I'm a mechanical engineer (BS); by trade I've spent about 15 years in IT โ€” first as a consultant, then in higher education. Along the way my work has spanned software development, industrial automation, and energy systems.

I'm happiest when I'm prototyping: wiring, welding, writing code, and figuring out why the thing that should work doesn't โ€” yet. Away from the bench it's animals, nature, comedy, surfing, and car drifting โ€” though most hobbies eventually turn into fixing something anyway.

โ†’ Apply engineering thinking to real-world problems
โ†’ Bridge software and physical systems
โ†’ Use AI to amplify human capability
โ†’ Make complex systems understandable
โ†’ Stay technically self-reliant
0years in IT
0domains of practice
0projects & counting
โˆžthings left to learn

02 Projects

Software products, experiments, and long-term builds โ€” where the engineering thinking gets put to work.

// published ยท garmin watch face

Ventura Surf Tide

Garmin Instinct 2 ยท Connect IQ ยท tide & session planning

Everything you need for a fun surf session at a glance. A tide graph, current weather, body battery, and sunrise/sunset times โ€” all on your wrist. I built it because I wanted it on my own wrist: inspired by the surf edition of the Instinct 2, for surfers who'd rather watch the horizon than their phone.

ใ€œ Calculated Tides

  • Tides are computed from harmonic constants โ€” not pulled from a remote cache
  • Set your spot once; the watch face keeps working forever with no network required
  • Phone connection only needed when switching to a new location
  • Expanding coverage: select any supported city in the watch face settings

โ—ท Watch Display

  • Tide graph spanning the day โ€” next tide time and height shown prominently
  • Graph shaded during nighttime hours for easy dawn patrol planning
  • Current time, date, weather conditions, and temperature
  • Body Battery level and sunrise/sunset times at a glance

โœ“ Free Forever

  • No ads, no subscription, no data fees โ€” ever
  • Published on the Garmin Connect IQ Store for Instinct 2
  • Working to support more surf spots around the world
  • If you enjoy it, you can buy me a beer at buymeacoffee.com/freethebikes

Design principles

Calculated tides, not cached data Offline-first after initial setup Night-shaded graph for session timing No paywall, no ads

Status: live on the Garmin Connect IQ Store โ€” free for all Instinct 2 users, with worldwide location support actively in development.

// published ยท web app

Weird Twitter Time Machine

Browse a day of 2012โ€“2014 weird Twitter ยท reply back in time

For a few strange years around 2012โ€“2014, a loose crowd of writers, comedians, and merry pranksters all happened to land on the same underpowered website at the same time and started making jokes at each other. It didn't last, and most of it is gone now. This is a time capsule of that moment: pick a day and see the timeline exactly as it looked, styled like Twitter of the era. Every post links back to the original โ€” and you can reply to any of them. Your reply gets stamped with today's date, so it reads as a message sent back in time.

๐Ÿฆ The Archive

  • A recovered cross-section of the era's weird-Twitter scene โ€” the writers, comedians, and shitposters who defined it
  • ~200 classic accounts rescued from Cool Tweets (dead since 2023) via the Wayback Machine
  • Plus the complete @dril archive (2008โ€“2023), one voice folded in among the rest
  • Only original posts, with timestamps decoded exactly from Snowflake tweet IDs

โ†ฉ Reply Back in Time

  • Reply to any post from ten-plus years ago, right in the period-styled timeline
  • Your reply is stamped with today's date โ€” a message dropped into the past
  • Static mode keeps replies in your own browser; optional Supabase mode shares them across visitors
  • No account, no login โ€” just start typing

โ™ฅ Find Your Likes

  • Upload the like.js from your own X data archive to find your old favorites
  • Every liked ID is checked against the archive entirely in your browser โ€” nothing is uploaded
  • Snowflake IDs decode their own date, so matches need no server lookup
  • A small legacy index covers the pre-Snowflake tweets that don't carry a timestamp

Design principles

Recover dead archives, don't let them vanish Every post links to the original tweet Client-side likes matching โ€” nothing uploaded Static-first, optional Supabase for shared replies

Status: live on GitHub Pages โ€” free, no login. Plain static files with an optional Supabase backend for shared replies. Take a trip โ†’

// published ยท amazon fire tablet app

Kids Safe Player for YouTube

Amazon Fire tablet ยท Kotlin ยท curated, kid-safe video player

The Amazon Fire tablet store inexplicably has no YouTube or YouTube Kids app โ€” just a pile of third-party players, most of them ad-riddled or locked behind an account. I wanted something for my own kids: no account to sign into, no ads baked into the app, and real control over what they can watch. So I built a curated player where children only ever see videos a grown-up has approved โ€” no search, no "related videos," no comments, no rabbit holes. A native Fire tablet app (Fire OS is Android-based) written in Kotlin, with playback through the YouTube IFrame Player in a WebView โ€” the approach that works on Fire tablets, which have no Google Play Services.

โ–ถ Calm, Curated Content

  • Hand-picked, kid-safe videos โ€” Alphablocks, Numberblocks, Sesame Street, Bluey, Ms Rachel & more
  • Organized into learning shelves: Letters, Numbers, Feelings, Science
  • Slow-paced and educational โ€” none of the hyper-stimulating, fast-cut stuff
  • Parents can add their own approved videos by pasting a link or ID

โšฟ Parental Controls

  • No search, no related-video sidebar, no comments โ€” kids can't wander off
  • "Ask a grown-up" math gate plus an optional PIN before Settings
  • Daily screen-time limit that counts only while a video is playing
  • PIN stored only as a salted SHA-256 hash, never in plain text

โœ“ Privacy & Pricing

  • No accounts, no subscriptions โ€” the app collects no personal data
  • Free to try with 100 videos; unlock the full library and parental controls for $3.99
  • Built for toddlers and preschoolers (ages 2โ€“7) on Amazon Fire tablets
  • Any ads YouTube shows are non-personalized โ€” no tracking-based targeting of your child

Design principles

Curated, not free-roaming Calm & low-stimulation by design Montessori-friendly content philosophy Privacy-first, no data collection

Status: live on the Amazon Appstore โ€” free to try, with a $3.99 unlock for the full library and parental controls.

// building ยท freelance assistant

Sixer

Local-first ยท finds freelance jobs & drafts LLM proposals for your review

Sixer finds paid freelance tasks on Freelancer.com and Upwork and drafts proposals with an LLM โ€” for your review, never auto-submission. It drafts; you decide. Drafting runs on a local LLM via Ollama by default, so your profile and proposals never leave your machine, and every bid is an explicit, one-at-a-time action you confirm.

Design principles

Local-first LLM โ€” private, no API key Drafts proposals, never auto-bids You confirm every submission CLI + local web UI over one SQLite file

Status: a working local-first tool โ€” a small CLI plus a hardened local web UI for reviewing jobs and drafting bids. Interested in using it? Get in touch.

// experiment ยท social video pipeline

Upslop

Reddit topics โ†’ AI research โ†’ narrated video โ†’ YouTube Shorts / Instagram Reels / TikTok

A tongue-in-cheek experiment in how far a hands-off content pipeline can go. A local LLM researches a Reddit topic and writes a grounded narration script, text-to-speech reads it over stock b-roll, and the finished short queues itself up for YouTube Shorts, Instagram Reels, and TikTok โ€” you just approve it before it goes live. The name is a wink at the age of AI "slop."

Design principles

Local-first LLM โ€” no cloud inference costs Human approval before anything goes live Grounded research, not invented facts One pipeline, every short-form platform

Status: an ongoing experiment โ€” actively auto-publishing short-form video across three platforms. Curious about running it for your own channels? Get in touch, or read the full details, privacy policy & terms โ†’

// restoration ยท ongoing

1966 Dodge Travco Restoration

Class A motorhome ยท restoration & systems engineering

A long-term mechanical restoration treated not as a traditional resto, but as a full-scale systems problem: mechanical, electrical, and thermal subsystems interacting under real-world load conditions.

โš™ Engine & Drivetrain

  • Evaluated the Chrysler 318 Poly V8 with dry and wet compression testing across cylinders
  • Replaced the timing chain and front-end engine components; tuned timing for drivability under load
  • Rebuilt the three-speed A727 Torqueflite automatic in the backyard over ~2 months, including torque converter service

โšก Electrical System

  • Traced charging instability to grounding issues in the engine and chassis system
  • Restored stable charging by correcting a faulty ground strap connection
  • Replaced the alternator and validated voltage stability under operating conditions

โ›ฝ Fuel & Engine Tuning

  • Investigated carburetor configurations and tuning behavior under RV load conditions
  • Worked through air/fuel mixture, idle stability, and vacuum-related drivability issues
  • Iteratively tested configurations for reliability rather than peak-performance tuning

Engineering approach

Root-cause failure analysis over part swapping Validate assumptions with measurement Treat the vehicle as an integrated system Reliability over restoration purity

Goal: return a complex vintage platform to dependable, road-usable condition โ€” and build a deeper understanding of how legacy mechanical and electrical systems behave under modern usage expectations.

// build ยท custom roadster

1968 Datsun Roadster

Custom roadster build ยท fabrication, upholstery & paint

A 1968 Datsun roadster bought as a tired, flat-black project and rebuilt into a one-off custom. Custom front fenders were fabricated by hand and a pair of NRG fiberglass bucket seats reworked to sit low and fit the tight cockpit. It was finished first in matte black and driven hard, then later stripped back and repainted white. Restored in every way, then pushed well past stock.

โš’ Bodywork & Custom Fenders

  • Bought as a weathered flat-black roadster and stripped down to a bare shell
  • Fabricated custom front fenders by hand and reworked the bodywork
  • Custom front end with quad round headlights and a rear diffuser

โ–Ÿ Custom-Fit Seats

  • Started with NRG fiberglass bucket seats โ€” the trick is finding shells small and low enough to fit this car
  • Lotus Elise seats are the usual answer but expensive, so I did all the fiberglass myself for a perfect fit
  • Reshaped, laid up, and upholstered to sit low and clean alongside the wood wheel

โ— Paint & Finish

  • Full teardown, metalwork, and block-sanding before any paint went on
  • Finished first in matte black/charcoal, then later stripped and repainted white
  • Sitting low on staggered wheels for an aggressive, planted stance

Build approach

Fabricate what you can't buy Bodywork done properly, from bare metal Build the car you actually want to drive Restore, then keep improving

Goal: a road-going, one-of-a-kind roadster โ€” proof that with enough patience you can fabricate the parts you can't buy and finish a car to your own spec, end to end.

// build ยท drift car

1988 BMW E30 Drift Car

Street-legal RWD drift build ยท hydraulic handbrake, buckets & suspension

A red E30 built into a street-legal drift car. The interior was stripped out, Corbeau bucket seats and a hydraulic handbrake fitted, and the suspension modified for angle โ€” then driven to and from events under its own power to go sideways.

Build approach

Strip it and send it Hydraulic handbrake Suspension for angle Street legal, driven hard

Status: a street-legal E30 that ran three grassroots drift events โ€” including Drift Day 43 in Shawano, Wisconsin โ€” and spent a full night going sideways with the Risky Devils crew.

// build ยท engine swap

Nissan 240SX SR20DET

S13 ยท SR20DET swap with a big single turbo

A black S13 240SX built around an SR20DET running a large single turbo โ€” the classic rear-wheel-drive drift platform set up for boost and big power.

Build approach

Proven RWD platform SR20DET power Big single turbo Built for boost

Status: a turbocharged, rear-wheel-drive S13 โ€” the quintessential drift-scene build.

03 Contact

Working on something interesting at the intersection of software and the physical world? I'd like to hear about it.