Python Β· ERA5 Β· Open-Meteo Β· D3 Β· Leaflet Β· GitHub Actions
π«οΈ FOG-WATCH
"If fog is a habitat, it needs a habitat map."
A fog climatology for the world's great fog coasts: the Namib, the Atacama and San Francisco. Ten years of hourly ERA5 reanalysis, pulled with no API key, turned into a fog-blanket map over satellite imagery with a month slider, an inland transect from the Namib coast past Gobabeb, and hour-by-month heatmaps that show exactly when the fog rolls in.
It started with a 2026 study finding bacteria that grow and feed inside fog droplets. The Namib map now lines up almost exactly with a new ground-based cloud-base study: fog within 100 km of the coast, a high season from August to March, gone by mid-morning.
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, Sonora CA, Reno NV, Death Valley CA. Live National Weather Service observations read by the page every 5 minutes, measured-then-forecast charts, the local forecaster’s discussion, NWS alerts, and every day checked against records back to 1893. Any US place by search. Zero cost, looks like a NOAA operations center.
FORTRAN Β· NWS Weather Balloons Β· SNOTEL Β· Pacific Northwest
π CASCADIA-WX
The Pacific Northwest’s four National Weather Service weather balloons — Quillayute, Salem, Medford and Spokane — read twice a day by a FORTRAN program. Freezing level, snow level, precipitable water and atmospheric rivers from every level of every flight, each ranked against 85,000 balloons from 1991–2020 that a second FORTRAN program turns into normals. Twelve NRCS snow stations ride along when NRCS answers. Amber-phosphor page with the job log, a green-bar printout and a FORTRAN coding form.
Rebuilt October 2026: the April snowpack figures were wrong, and the write-up explains why
These two used to post to X on their own. In October 2026 the X API credits ran out, and I decided not to buy more just now, so both bots are resting. The alert bot still watches the Sierra on every run and quietly writes down what it would have said, and the weather report’s cards still refresh every hour. For the alert bot, turning X back on is one setting, so both are ready if it ever comes back into the budget.
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-style weather report. Twice a day it pulled live conditions for four wildly different places, rendered cinematic station cards, and posted them to X and Bluesky with no human in the loop. It stopped posting in October 2026; the cards still refresh every hour, and the Weather Station now carries the live numbers all day.
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 woke up twice a day, ran the Python orchestrator, and pulled 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 went out to X via Tweepy and Bluesky via AT Protocol with live data captions and location hashtags (paused since October 2026). 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.
Sonora is the county seat down the road from Groveland, where I grew up, at 1,800 feet on the western slope of the Sierra. It swings between fog and fire season, and its weather records go back to 1903. 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 Sonora in a single storm is one of the most dramatic demonstrations of orographic lift you'll find.
Python Β· MetPy Β· Py-ART Β· Tweepy Β· pixi Β· 7 federal feeds
πͺοΈ Sierra Nevada Alert Bot
"The mountains don't warn you. This bot watches so you don't have to."
Autonomous environmental monitoring for the Sierra Nevada β wildfires, floods, earthquakes, air quality, and severe weather. It polls seven live federal data streams every few minutes on GitHub Actions, and until October 2026 it posted to @SierraNevadaWX the moment something worth knowing happened. On standby it still watches every run and logs what it would have posted, ready for the day X comes back.
It started as a question β could one person, with no server and no budget, watch an entire mountain range in near-real-time? Seven feeds later, it ships with a full science toolkit: MetPy Skew-T Log-P soundings for reading the morning atmosphere, and Py-ART NEXRAD Level 2 dual-pol analysis with automatic tornado-debris, TVS, and hail signature detection.