#1 AeroBusiness, #2 Starship Lander, #3 MeasureGeo, #4 Improv, #5 NDVI Scope, article Finding pilots without emitting RF -- Combat Search and Rescue (CSAR) RF flashlight from space, on X https://apps.apple.com/us/app/sentinel-2-clear-days/id6819667305 If you like seeing change detection, made a cool app now available on iOS ($2 one time) for anyone doing #OSINT to create Sentinel 2 (multispectral) timelapses/change detection. Helps you see before you spend money from higher resolution commercial vendors. Many thanks to @SoarAtlas for the inspiration. Will be rolling out more improvements over the next week or two. CC: @bradyafr @tom_bike @GeoConfirmed @zarGEOINT @Nrg8000 @planet @vantortech @umbraspace @iceye_global @Osinttechnical @RALee85 @FaytuksNetwork @thewarzonewire @elonmusk Made with the help of @bot @grok and @cursor_ai

Marshall Frith

Projects

Winds Aloft to 103,800 Feet, Anywhere on Earth

Wind from the ground to 103,800 feet, anywhere. The holes in the ladder are interpolated and marked, then handed to ATAK, Google Earth, or anything that opens KML.

Wind from the ground to 103,800 feet, anywhere. Gaps at low level and in the thin high-altitude ladder are interpolated and marked. The same profile writes KML, KMZ, GeoJSON, GPX, or an ATAK mission package.

Try the browser preview — no install. It fetches the models itself, so the point you ask about never reaches my server. The first visit already drops a pin on Washington DC and pulls the column.

The 2.5-D wind column over Washington DC — barbs from the surface to 103,000 feet, colour by speed.

It serves that answer to a stock ATAK client — GeoChat reply, KML barb column, CoT markers, mission package — and derives parachute drift, UAV wind triangles and balloon tracks from the same profile. Nothing extra to install, and no weather-file decoder.

Measure the API, don't read its docs

Open-Meteo's documentation lists pressure levels topping out at 30 hPa. The live API, probed on 2026-08-06, serves 21 levels topping out at 10 hPa, which is about 31,600 metres. That one measurement is the whole reason this project could stay simple: 10 hPa covers a stratospheric balloon burst, so the entire weather-file toolchain that NOMADS would have required was never needed.

The probe is a permanent subcommand, not a one-off, because vendors change things.

Three more things the probe found that the docs never said:

  • Ask for a level above the ceiling and you get HTTP 200 with a well-formed array of nulls. No error. Code that trusts the status code returns an empty profile and calls it success.
  • Levels below the terrain still return plausible wind. At Denver the 1000 hPa level sits 1.6 kilometres underground and reports 12.8 km/h anyway. Those are extrapolations, not forecasts, and they get filtered against surface pressure.
  • The *_seamless model ids are pre-blended by the vendor. At Denver, gfs_seamless returns HRRR values verbatim. If provenance matters, request explicit models, because the blended id will happily lie about whose forecast you are holding.

The free tier allows roughly 10,000 calls a day and a full profile costs four or five, so the disk cache is doing real work; offline it serves stale data with a warning instead of nothing.

Two models, one seam

A capability registry, every entry measured rather than transcribed, drives a two-model ladder: the finest convection-allowing regional model owns the boundary layer, a global backbone owns everything above, and the two are cross-faded over an 8,000 metre crossover with a 2,000 metre taper so no derived trajectory kinks at the seam.

The backbone is picked by rank, not by grid spacing. Sorting by kilometres hands the upper column to UKMO Global at 10 km over GFS at 25 km, which trades a 16-day horizon and the densest level ladder for a finer grid that resolves nothing at 60,000 feet. The same trap exists regionally: AROME France has the finest grid in the registry at 1.5 km, zero pressure levels, and a bounding box that reaches London and Frankfurt. Pick regional models by grid spacing alone and it silently displaces UKV and ICON-D2 across two countries it barely covers. There is a test whose only job is to stop that, one of sixty-three that run offline and never touch the network.

Wind is stored as u/v components and nothing else. Average 350 and 10 degrees as degrees and you get 180, which is exactly backwards. Speed and direction are derived on the way out, and direction enters through a single function.

The hole nobody advertises

Between the hub-height wind variables and the first above-ground pressure level there is a gap from roughly 262 to 1,266 feet AGL, which is most of the airspace a small UAV can legally use. Higher up, 20 hPa to 10 hPa can be 4.7 kilometres of nothing. Windmaster still returns those as explicit gap objects with the two bracketing levels. It also fills the span with interpolated samples: straight-line u and v, never speed or direction, each marked INTERPOLATED so you can see they are not forecast. That is not pretending. A 4.7 kilometre straight line through the stratosphere is a guess wearing a number's clothes, and it now says so on the table, in the KML folder, and in the first warning on the profile. Above 10 hPa there is still no wind — that ceiling is declared, not invented. Below the terrain, the same.

The sign bug that shipped

The wind correction angle is the negative arcsine of the crosswind component. The version with the sign inverted crabs the nose downwind, doubling drift instead of cancelling it, and it shipped in the UAV endpoint. It survived because ground speed is an even function of the angle, so every other number in the response stayed plausible. A hand-worked pure-crosswind case caught it; no amount of staring at outputs did.

When touching wind-triangle code, check the crab direction against "nose points into the wind", never against whether the ground speed looks right.

Validation against a real radiosonde at 83,000 feet came out at RMS 12.8 knots. Usable but drifting, and the tool says that rather than rounding it to confidence.

No plugin, just the wire

The dashboard has a Leaflet map where a click drops a profile point, and a drag-rotate barb column where every barb points into the wind, the pilot convention, on purpose. ATAK users ping it over GeoChat and get products back over the wire; there is no plugin, because a native ATAK plugin needs a TAK.gov SDK account with manual approval and the wire needs nothing.

The same profile writes the files the usual tools already open: KML and KMZ for Google Earth and ATAK, GeoJSON for QGIS, GPX waypoints with elevation, CSV, a text table, and an ATAK mission package (KML + GeoJSON + briefing). The browser preview at /winds/ exports those without the desktop server.

The thing I would tell you before you start: probe every API you depend on, and keep the probe. The gap between what the docs said and what the endpoint did was the difference between a quiet weekend and a weather-file toolchain.

Looking for the code?

It is not published. These are personal builds, and what is here is the write-up rather than the repository.

The browser version is here, running the same work on your own machine: try it.

If you want to read the source or run the full desktop tool, ask. Say what you are doing with it and I will usually send it over.

Ask for the code

Comments

Plain text only. Held for review before it appears.