Bruce McMinn — Data Architecture & Engineering
Every project on this site runs on a shared AWS foundation. Two production pipelines run on it today — a weather station feed updating nightly since 2023, and a daily equities scanner — with further projects planned on the same platform.
The projects here share one data lake design: a medallion architecture, with layers named for what they do rather than for the metals. Compute is matched to the workload, not standardized on one service — short ingestion and transformation jobs run on Lambda, while longer-running scans run as Fargate container tasks. Projects share a single S3 bucket, separated by prefix and governed by IAM roles scoped to each project's own data.
Architecture decisions, in full →When a failed wind sensor produced a month of bad readings, the fix was applied surgically in the reporting layer — nulling only the affected fields for the affected month — rather than rebuilding the silver layer.
A purist would push that correction into the lake; shipping it at the reporting layer preserved the raw record, fixed the published data the same day, and left a clean path to promote the fix upstream later. Knowing where to deviate from the textbook, and keeping the deviation documented and reversible, is most of what the pattern is for.
Raw observations land from the WeatherFlow API exactly as received, giving every downstream step a replayable source of record. A cleaning pass repairs structural defects without touching granularity, at the station's native 1-minute resolution. A final aggregation builds a 5-minute materialized view — the only layer Power BI ever reads: roughly 272,000 pre-aggregated rows instead of millions, cheap to cache and fast to refresh.
View the live report →
A containerized daily scan of high-volatility NASDAQ equities using ATR, RSI, Supertrend, and volume rules, appending to a growing scan history. The universe of scanned symbols rebuilds weekly; scans run each weekday after market close.
It runs on Fargate rather than Lambda for a specific reason: the scanner processes hundreds of symbols and can exceed Lambda's 15-minute execution ceiling. A single compute standard would be simpler to describe and worse to operate.
View the scan →
An early exploratory notebook: twenty years of Euro exchange rate volatility across forty currencies, geopolitical events mapped against market movement, and an animated annual volatility world map. It predates the platform — a rebuild on it is on the roadmap below.
View the notebook →
A one-time terrain analysis of west-facing viewpoints around Puget Sound — computing sunset azimuth against horizon profiles derived from USGS elevation data — to rank, for any date, which site offers the latest visible sunset and the longest civil twilight. Its heavy computation runs once, offline; the report reads a static result table, a deliberately different shape from the two scheduled pipelines.
The exploratory notebook rebuilt on the platform, with a currency-pair selector, multiple timescales, and a three-dimensional volatility visualization across twenty pairs.
An NMEA 2000 gateway capturing live data from an outboard engine and onboard instruments — fuel flow, heading, position — during time on the water. Unlike the platform's scheduled API pipelines, this data originates at the edge, collected in intermittent sessions and batch-uploaded to the lake afterward. Early targets: fuel-efficiency curves by speed, and cross-referencing heading against position to estimate the effect of current.
A common bucket convention and a Glue Data Catalog across all projects, sequenced to begin once the Sunset project's requirements are concrete. Building them before the next project exists would mean designing for workloads that haven't taken shape. Knowing what not to build yet is an architecture decision too.