You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> *"Numerical weather prediction is the use of mathematical models of the atmosphere to predict the weather. The first successful NWP run was performed in 1950 on the ENIAC — programmed in FORTRAN."*
19
-
20
18
**[→ Launch the Live Dashboard](https://bdgroves.github.io/cascadia-wx)**
21
19
22
20
---
23
21
24
-
## What It Is
22
+
> *"We're going to go out there and put this machine right in the path of the storm."*
23
+
> — Dr. Jo Harding, Twister (1996)
24
+
25
+
---
26
+
27
+
## The Setup
28
+
29
+
It's early April. The Cascades are running dry — 15% of normal snowpack. Snoqualmie Pass is bare. Stevens is bare. Stampede is bare. Someone in a cabin somewhere in the foothills can feel it. The snowpack that should be sitting up there, waiting to melt slow into August, isn't there. The reservoirs will notice in July.
25
30
26
-
CASCADIA-WX is a FORTRAN scientific analysis engine for Pacific Northwest mountain weather. It reads live NRCS SNOTEL snowpack data from 11 stations across three mountain massifs, combines it with NOAA surface temperatures at valley airports, and computes atmospheric science metrics every morning at 8AM Pacific.
31
+
Every morning at 8AM, a terminal somewhere wakes up. A Python script reaches out to 11 weather stations buried in the mountains — sensors at Paradise on Rainier, high ridges in the Olympics, fog-soaked Cascade passes. It pulls the numbers. It writes a CSV. Then FORTRAN takes over.
27
32
28
-
The sister project to **[SIERRA-FLOW](https://github.com/bdgroves/sierra-flow-cobol)** — which does Sierra Nevada streamflow analysis in COBOL. Together: vintage languages, live government data, zero cloud costs.
33
+
Not a wrapper. Not a library. **FORTRAN.** The language that computed the first numerical weather forecast in 1950 on a machine that filled a room. The same mathematical DNA that still runs inside the National Weather Service, NCAR, ECMWF — every serious atmospheric model on the planet. It reads the data, cranks through the physics — lapse rates, snow levels, precipitation phase, atmospheric river index, storm classification — and prints a report.
34
+
35
+
Then it terminates. Normally. Return code zero.
36
+
37
+
Nobody asked for this. It just needed to happen.
29
38
30
39
---
31
40
32
-
## What FORTRAN Computes
41
+
## The Numbers
42
+
43
+
```
44
+
4, 8, 15, 16, 23, 42
45
+
```
46
+
47
+
Enter them every 108 minutes or the snowpack anomaly gets worse. We don't make the rules.
48
+
49
+
```
50
+
CASCADIA-WX: LOADING SNOTEL DATA...
51
+
STATION 1: Paradise
52
+
STATION 2: Cayuse Pass
53
+
STATION 3: Burnt Mountain
54
+
...
55
+
STATION 11: Corral Pass
56
+
CASCADIA-WX: 11 SNOTEL STATIONS LOADED
57
+
CASCADIA-WX: COMPUTING LAPSE RATES...
58
+
CASCADIA-WX: COMPUTING SNOW LEVELS...
59
+
CASCADIA-WX: COMPUTING DEGREE DAYS...
60
+
CASCADIA-WX: COMPUTING AR INDEX...
61
+
CASCADIA-WX: WRITING REPORT...
62
+
CASCADIA-WX: NORMAL TERMINATION.
63
+
```
64
+
65
+
Every day. Automated. Whether anyone's watching or not. The hatch has to be maintained.
66
+
67
+
---
68
+
69
+
## What It Computes
70
+
71
+
FORTRAN does the atmospheric science. Not because it's convenient — because it's what the atmosphere deserves.
33
72
34
-
| Computation |Description|
35
-
|-------------|-------------|
36
-
|**Environmental lapse rate**| Temperature gradient C/km from valley floor to mountain stations |
Paradise, sitting at 5,150 feet on the flank of Rainier, still holding 36.7 inches — 73% of normal.
110
+
The mountain remembers what the passes have forgotten.
45
111
46
112
---
47
113
48
114
## The Eleven Stations
49
115
50
-
| Station | Massif | Elevation |
51
-
|---------|--------|-----------|
52
-
| Paradise | Rainier | 5,427 ft |
53
-
| Sunrise | Rainier | 6,400 ft |
54
-
| Cayuse Pass | Rainier | 3,960 ft |
55
-
| Hurricane Ridge | Olympics | 5,757 ft |
56
-
| Waterhole | Olympics | 4,200 ft |
57
-
| Snoqualmie Pass | Cascades | 3,000 ft |
58
-
| Stevens Pass | Cascades | 4,061 ft |
59
-
| Stampede Pass | Cascades | 3,960 ft |
60
-
| White Pass | Cascades | 4,500 ft |
61
-
| Crystal Mountain | Cascades | 4,400 ft |
62
-
| Chinook Pass | Cascades | 5,432 ft |
116
+
Three massifs. Eleven sensors. Each one a data point in a system that's been measuring snowpack since before most of the code running today was written.
117
+
118
+
| Station | Massif | Elevation | What It Watches |
| Stampede Pass | Cascades | 3,960 ft | Yakima River basin |
129
+
| Elbow Lake | Cascades | 3,050 ft | South Fork Nooksack |
130
+
| Bumping Ridge | Cascades | 4,600 ft | Bumping River / Yakima |
63
131
64
132
---
65
133
66
134
## The Pipeline
67
135
68
136
```
69
-
NRCS AWDB API (SNOTEL) + NOAA Observations API
70
-
│
71
-
▼
72
-
fetch_wx.py Python 3.12 · stdlib only · zero pip
73
-
snotel_data.csv
74
-
valley_data.csv
75
-
│
76
-
▼
77
-
CASCADIA-WX.f90 GFortran 13 · 700+ lines
78
-
reads both CSVs
79
-
│
80
-
├── Lapse rate computation
81
-
├── Snow level estimation
82
-
├── Precipitation phase partitioning
83
-
├── Degree day accumulation
84
-
├── Atmospheric River index
85
-
├── Storm classification
86
-
└── 4-section formatted report
87
-
│
88
-
▼
89
-
cascadia-wx-report.txt committed daily
90
-
analysis.csv committed daily
91
-
│
92
-
▼
93
-
index.html reads analysis.csv live · no rebuild
137
+
┌─────────────────────────────────────────┐
138
+
│ 8:00 AM PACIFIC │
139
+
│ GitHub Actions wakes up │
140
+
└───────────────────┬─────────────────────┘
141
+
│
142
+
▼
143
+
NRCS SNOTEL API + NOAA Observations
144
+
(free · public · no key · been running
145
+
since before the internet existed)
146
+
│
147
+
▼
148
+
fetch_wx.py
149
+
Python · zero dependencies
150
+
stdlib only · no pip
151
+
│
152
+
snotel_data.csv ←─── 11 stations
153
+
valley_data.csv ←─── 4 airports
154
+
│
155
+
▼
156
+
CASCADIA-WX.f90
157
+
┌──────────────────────────────┐
158
+
│ FORTRAN · GFortran 13 │
159
+
│ Lapse rate computation │
160
+
│ Snow level estimation │
161
+
│ Phase partitioning │
162
+
│ Degree day accumulation │
163
+
│ Atmospheric river index │
164
+
│ Storm classification │
165
+
│ Massif roll-up │
166
+
│ 4-section formatted report │
167
+
└──────────────────────────────┘
168
+
│
169
+
cascadia-wx-report.txt (the printout)
170
+
analysis.csv (the machine read)
171
+
│
172
+
▼
173
+
git commit + push
174
+
│
175
+
▼
176
+
bdgroves.github.io/cascadia-wx
177
+
reads analysis.csv live · no rebuild
178
+
amber phosphor · updates on page load
94
179
```
95
180
96
181
---
97
182
98
-
## Why FORTRAN
183
+
## Why FORTRAN. Why Now. Why Anyone.
99
184
100
-
FORTRAN (Formula Translation) was designed in 1957 by John Backus at IBM. The first successful numerical weather prediction run was performed in 1950 on ENIAC — and when NWP code was ported to faster machines, it was written in FORTRAN.
185
+
FORTRAN was designed in 1957 by John Backus at IBM. The first successful numerical weather prediction run was performed in 1950 on ENIAC — and when that code was ported to faster machines, it was rewritten in FORTRAN. Today the National Weather Service runs FORTRAN. NCAR runs FORTRAN. ECMWF runs FORTRAN. The WRF model — the backbone of regional weather forecasting — is FORTRAN. The atmosphere has been computed in FORTRAN for 75 years.
101
186
102
-
Today the National Weather Service runs FORTRAN. NCAR runs FORTRAN. ECMWF runs FORTRAN. The WRF (Weather Research & Forecasting) model — the backbone of modern regional weather forecasting — is FORTRAN. The atmosphere has been computed in FORTRAN for 75 years and will continue to be for decades more.
187
+
How many people are writing new FORTRAN in 2026? Compiling it fresh on WSL, feeding it live government sensor data, running it through GitHub Actions every morning, and serving the output as a web dashboard? Not many. Maybe a handful of grad students who had no choice. Maybe some legacy system maintainers who know too much. And now, apparently, a developer in Lakewood, Washington, who thought it would be fun.
103
188
104
-
Running FORTRAN in a GitHub Actions pipeline in 2026 isn't ironic. It's appropriate.
189
+
It was fun. It still is. The numbers come in every morning. The atmosphere doesn't care what language you use to understand it — but FORTRAN has been understanding it longer than anything else, and it does it without apology, without overhead, and without anyone asking for permission.
190
+
191
+
The hatch needs to be maintained. We maintain the hatch.
-**[SIERRA-FLOW](https://bdgroves.github.io/sierra-flow-cobol)** — COBOL sister project. Live USGS streamflow, 8 Sierra Nevada gages, daily CI/CD.
248
+
-**[SIERRA-FLOW](https://bdgroves.github.io/sierra-flow-cobol)** — COBOL sister project. Live USGS streamflow, 8 Sierra Nevada gages, percent-of-normal, trend analysis, daily CI/CD. Same idea, different watershed, different decade of computing history.
0 commit comments