The three projects
A Home Assistant dashboard card that pulls live data from two public APIs — NOAA for tide predictions and Open-Meteo for weather — and combines them into a weighted fishing conditions score. The dashboard runs actively and is used before any fishing trip on Long Island Sound. Building it required understanding how to make authenticated API requests from within Home Assistant's Lovelace UI, parse JSON responses, apply weighted scoring logic across multiple variables (tide stage, wind speed, barometric pressure, temperature), and render a readable result without a traditional backend. JavaScript handles all of the data transformation and display logic in the browser.
Four Flic buttons, each wired to a distinct automation written in Home Assistant's YAML-based automation schema. Two buttons are phone locators — one per phone — that trigger an audible alert on the target device which sounds in 30 second intervals to help with locating. Those same buttons feature a secondary function to pulse lamps green or red light in the living room or basement as a visual signal to share an alert (i.e. "Dinner is ready!" or "Time for bed!"). Two bedside buttons control bedroom lamps on and off controls without requiring anyone to get out of bed. YAML is a data serialization language that Home Assistant uses to define automations declaratively: triggers, conditions, and action sequences. Writing automations in YAML rather than using the UI exposes the full capability of the platform and makes configs portable and version-controllable.
An Adafruit HUZZAH32 ESP32 microcontroller drives a Waveshare 4.2-inch e-ink display to show the current date, day name, a monthly calendar grid, battery level, and a rotating haiku from Matsuo Bashō. The sketch is written in Arduino's .ino format — a C++-derived language for microcontroller programming that handles memory, display refresh cycles, and low-power sleep states directly. E-ink displays only draw power when the image changes, making them ideal for battery-powered always-on applications. The calendar updates once daily. It sits on the desk and works. That alone makes it worth having built.
What three languages taught
Working across language paradigms
JavaScript, YAML, and Arduino .ino are not just different syntax — they represent different mental models for solving problems. JavaScript is imperative and runs in a browser or runtime environment, manipulating data and DOM in real time. YAML is declarative configuration: you describe what you want, and the platform (Home Assistant) figures out how to do it. Arduino .ino is low-level, resource-constrained programming where you manage memory explicitly, control hardware registers directly, and think about timing in microseconds. Moving between all three in a single repository builds genuine flexibility — the ability to pick the right tool for the constraint rather than defaulting to a single familiar language.
Open Source Documentation
Every project in the repo ships with a README that covers what it does, what hardware or software is required, what to substitute before deploying, and what the known limitations are. All secrets are replaced with YOUR_* placeholders so the configs are safe to share. This is not just courtesy — it is the practice of writing for a reader who has none of your context and will use your work six months after you've forgotten the details. Good documentation is a professional skill that transfers directly from homelab projects into any engineering or product environment.