Python · Matplotlib · OpenWeatherMap · GitHub Actions · Twitter · Bluesky
🌪️ weather-report-bot
"It's already on the ground. It's not gonna stop."
A fully automated broadcast-quality weather intelligence system. Twice daily it wakes up, pulls live atmospheric data across four wildly different locations, renders cinematic station cards, and fires them to Twitter and BlueSky — no human required.
Each station card is a 1200×675 broadcast-style graphic with three panels: current conditions with color-coded temperature and hand-drawn weather icons, an instruments panel with arc gauges for humidity and UV index plus a wind compass, and a sky & atmosphere panel with precipitation chance, cloud cover, sunrise/sunset, and pressure. Every pixel hand-drawn in Matplotlib — no emoji fonts, no templates.
The four stations span completely different climate regimes: Pacific Northwest maritime, Sierra Nevada foothills, Mojave Desert extreme, and Great Basin high desert. Same report time. Four completely different air masses.
The Pipeline
GitHub Actions wakes up twice daily, runs the Python orchestrator, and pulls live atmospheric data from OpenWeatherMap One Call 3.0 for all four stations simultaneously — current conditions, forecast, UV index, humidity, wind, pressure, dew point, cloud cover.
The Matplotlib renderer then builds each card from scratch: temperature colored by heat level, weather icons drawn as pure geometry (no emoji fonts, no image assets), arc gauges for humidity and UV, a wind compass with directional arrow, precipitation bars, and a broadcast-style ticker across the bottom.
Cards are posted to Twitter/X via Tweepy and Bluesky via AT Protocol with live data captions and location hashtags. Total runtime: about 4 minutes on GitHub's free tier.
Why These Four
Lakewood is home — the Pacific maritime baseline. When it's 52°F and drizzling in Lakewood, that's just Tuesday.
Groveland is where I grew up, at 2,800 feet on the western slope of the Sierra. It swings between fog and fire season. The hometown gauge.
Death Valley is the extreme outlier — the card that always reads 105°F when everywhere else is mild. It's there to remind you what weather actually means at its limit.
Reno sits just over the Sierra crest in a completely different climate regime — high desert, intense sun, wind. The contrast between Reno and Groveland in a single storm is one of the most dramatic demonstrations of orographic lift you'll find.
Python · Open-Meteo · NWS · GitHub Actions · 15-min updates
🌡️ Weather Station
High-end real-time weather dashboard monitoring four stations across the American West — Lakewood WA, Groveland CA, Reno NV, Death Valley CA. Wind compass with SVG dial, barometric pressure trend arrows, NWS alerts, moon phase, 24-hour trend charts, air quality, 48-hour hourly forecasts. Updates every 15 minutes via GitHub Actions. Zero cost, zero dependencies, looks like a NOAA operations center.
FORTRAN · SNOTEL · GitHub Actions · Pacific Northwest
🌨 CASCADIA-WX
FORTRAN atmospheric analysis for Pacific Northwest mountain weather. Lapse rates, snow levels, precipitation phase, atmospheric river index, storm classification. 11 NRCS SNOTEL stations across Rainier, Olympics, and the Cascades — daily GitHub Actions pipeline, amber phosphor dashboard.
Cascades: 15% of normal · Olympics: 33% · Rainier: 53% · Apr 2, 2026