Bench
Runway workbench. Hero shows runway number, wind group, aircraft, magnetic heading, and the gust band vs demonstrated knots. Drag the rose for heading and wind direction.
Set runway heading and the reported wind. Headwind, tailwind, and crosswind update on a runway rose you can drag. Four tabs: Bench, Drills, Lab, Kit.
Runway workbench. Hero shows runway number, wind group, aircraft, magnetic heading, and the gust band vs demonstrated knots. Drag the rose for heading and wind direction.
Scenario pack: coastal / mountain / gusty. Open a case, send it to the workbench. Saved runway setups and search.
Today’s briefing: featured drill, METAR decode, density-altitude bench, takeoff-factor estimator, technique of the day.
Locker: aircraft limit profiles, technique cue sheets, settings, privacy, terms. “All stored on device.”
Default case (also stored if you have not saved another): heading 300°M, wind 310° / 18G26, elevation 66 ft, OAT 14°C, altimeter 29.92 inHg, dry, slope 0.2%, Skyhawk 172S. Wind slider 0–45 kt; gust 0–55 kt and never below the steady number. Readouts: headwind, tailwind, crosswind, L/R side.
Angle = wrap180(windDir − heading). Headwind = wind × cos(angle) if positive; tailwind is the negative of that. Crosswind = |wind × sin|; from the left if the sine is negative. The same trig runs on the gust speed for the ribbon.
Band uses gust crosswind over the aircraft’s max demonstrated knots: Light < 50%, Moderate ≥ 50%, Strong ≥ 80%, Exceeds > 100%. Labels: LIGHT / MODERATE / STRONG / EXCEEDS. If max is ≤ 0 the band is Moderate.
Palette props: Wind barb, Heading bug, Wind sock, Threshold, Gust fan, Crab cue, Hold short, Aim point. Defaults on the stage: barb, bug, sock, threshold, aim point. Undo / redo of prop lists, delete selected, bring to front. Selected: scale 0.6–1.8×, rotate −180–180°. Grid snap switch (DataStore default on; settings copy: “Hold marks to 5% steps while dragging”).
Share stage bitmap writes a 1080×1080 PNG to cache/briefings/skewwind-stage.png. Share brief sends plain text (subject “SkewWind briefing”). PDF writes a 612×792 page to skewwind-briefing.pdf via FileProvider. Footer line on every brief: “Offline briefing from SkewWind Runway Kit. Not a clearance or weather service.”
Links on the sheet: Cues, Aircraft, Share brief, PDF. Last case is saved to DataStore when sliders or the rose change.
Pressure altitude = (29.92 − altimeter inHg) × 1000 + field elevation. ISA = 15 − 1.98 × (elevation/1000). DA = PA + 120 × (OAT − ISA). Impact copy: <1000 ft near sea-level; <3000 mild rise; <5500 thinning / lean if POH allows; <8000 high DA / short-field; else very high DA / lighter load or longer runway.
Takeoff multiplier = 1 + DA share + slope share + surface share, clamped 0.85–2.4. DA share = (DA ft / 1000) × 0.07 (not below 0). Uphill × 0.10; downhill credit = slope × 0.04. Surfaces: wet +0.15, grass +0.20, gravel +0.25, soft +0.35, else 0. Summary starts “Plan about N% of the sea-level dry roll.” Density bench sliders: elevation −200–10_000 ft, OAT −20–45°C, altimeter 28.50–31.50 inHg. Takeoff bench: DA −500–12_000 ft, slope −3–3%, chips dry / wet / grass / gravel / soft.
Runway number = heading/10 rounded, 36 if 0 or >36. Reciprocal heading + 180. Label is two digits (e.g. 300° → 30).
Kit locker: “Max demonstrated crosswind and Vr notes.” List subtitle: compare the workbench gust ribbon to a saved demonstrated number. Add profile: name, type, slider 8–35 kt, Vr / rotate cues. Empty fleet: restore the training fleet. New card defaults to “Club trainer”, 15 kt.
| Name | Type | Max x-wind | Vr notes in the profile |
|---|---|---|---|
| Skyhawk 172S | Cessna 172S | 15 kt | Vr 55 KIAS. Hold aileron into the wind through the roll; keep the nose wheel light. |
| Archer III | Piper PA-28-181 | 17 kt | Vr 60 KIAS. Low-wing weathervanes less; still feed aileron before the power comes up. |
| Commuter 152 | Cessna 152 | 12 kt | Vr 50 KIAS. Light wing loading — gusts move the airplane early. Be ready to abort. |
| Cub J-3 | Piper J-3 Cub | 10 kt | Tailwheel. Vr when the tail is flying. Three-point or wheel landing is a briefing item. |
| Cirrus SR20 | Cirrus SR20 | 21 kt | Vr 70 KIAS. CAPS briefing stays in the flow. Keep the nosewheel planted until Vr. |
| Diamond DA40 | Diamond DA40 NG | 20 kt | Vr 68 KIAS. Long wing; keep aileron in through rotation so a gust does not pick up a tip. |
| Tecnam P2008 | Tecnam P2008 JC | 15 kt | Vr 52 KIAS. Light LSA. Treat a 15-knot gust spread as a no-go until you have a CFI call. |
| Skylane 182T | Cessna 182T | 15 kt | Vr 55–60. Heavier nose — more right rudder and a patient rotate. |
| Seminole | Piper PA-44-180 | 17 kt | Vr 75. Twin. Brief Vmc in the crosswind and which engine is critical. |
| Duchess | Beechcraft 76 | 25 kt | Vr 71. Demonstrated x-wind is generous; still treat a wet runway as a new number. |
| Super Cub | Piper PA-18 | 12 kt | Tundra or bush tires. Soft-field plus crab-to-slip is the whole briefing. |
| Carbon Cub | CubCrafters FX-3 | 15 kt | Vr ~50. Fast acceleration. Do not let the tail come up early in a left crosswind. |
| RV-12iS | Van's RV-12iS | 15 kt | Vr 52. Sensitive elevator. Brief a firm hold-off so a gust does not balloon. |
| Extra 300 demo | Extra EA-300 | 25 kt | Demo profile only. High x-wind skill; still a briefing, not a dare. |
Scenario pack subtitle: “N runway / wind drills · coastal, mountain, gusty.” Region chips All / coastal / mountain / gusty. Region notes: coastal — marine flow, brief the gust ribbon before you walk to the airplane; mountain — terrain-aligned wind plus DA; gusty — peak crosswind is the decision, not the steady number. Detail: Open on bench (loads heading, wind, elevation, OAT, altimeter, surface, slope), Star / Unstar, gust ribbon vs 15 kt, METAR string, DA and takeoff factor. Search: airport, region, or type — chips Drills / Aircraft.
The pack is built from 44 fields (KHAF through KPRB) cycled through ten wind triples (310/18G26, 040/12G18, 280/22G30, 350/14G20, 200/16G24, 080/10G15, 260/28G40, 150/08G16, 020/19G27, 330/11G17). OAT and altimeter vary by region index. These are teaching cases, not current ATIS.
| Saved runway | HDG · length | Surface · slope | Notes in the setup |
|---|---|---|---|
| Half Moon Bay 30 | 300° · 5000 ft | dry · 0.2% | Coastal marine layer. Evening sea breeze often 280–320. |
| Monterey 28L | 280° · 7175 | dry · −0.3% | Bay-effect gusts off the dunes. Watch the 28L displaced threshold. |
| Aspen 15 | 150° · 8006 | dry · −1.8% | One-way mountain strip energy. Density altitude first, wind second. |
| Denver 17R | 174° · 16000 | dry · 0.1% | High plains gust front. Long pavement does not cancel a 30-gust. |
| Lake Tahoe 36 | 360° · 8544 | dry · 0.6% | Lake-effect shear. Afternoon thermals off the Sierra wall. |
| Oakland 30 | 300° · 10520 | wet · 0% | Bay fill. Wet rubber after a morning marine layer. |
| Friedman 31 | 313° · 7550 | dry · −0.8% | Hailey valley wind. Terrain funnels 310–330. |
| SFO 28L practice | 284° · 11870 | dry · 0% | Ground-school only. Strong marine west wind with jet wash briefing. |
| Club grass 09 | 90° · 2400 | grass · 0.4% | Soft morning grass. Treat as 1.2× roll before adding slope. |
| Strip gravel 24 | 240° · 2800 | gravel · 1.1% | Uphill gravel. Confirm prop clearance and abort point. |
Lab hero: “A seeded drill, a density snapshot, and a technique card — all offline.” Featured drill = scenarios[dailyIndex % size]. Technique of the day = techniques[dailyIndex % 6]. A unique periodic WorkManager job skewwind-daily-briefing (once per day, KEEP) only increments that index. Empty lab: “The scenario pack seeds on first launch.”
METAR decode starts on KMRY. Tap a station chip, then a token. Parser kinds: station, time, wind, gust, vis, temp, alt, QNH, sky, wx, meta, other. Band-to-cue map: EXCEEDS/STRONG → Crosswind go-around; MODERATE → Crab-to-slip transition; else Crab on final.
Sixteen seeded METAR cards (teaching strings, not a weather feed):
List subtitle: full-screen briefing sheets keyed to crosswind severity. Each card has steps and watch-outs.
| Cue | Severity | Summary in the kit |
|---|---|---|
| Crab on final | light–moderate | Point the nose into the wind so the ground track stays on centerline. Wings stay level until the flare. |
| Wing-low / sideslip | moderate–strong | Drop the upwind wing and hold opposite rudder so the fuselage stays aligned with the runway. |
| Crab-to-slip transition | moderate gusts | Crab down final, then kick into a wing-low in the flare so the gear is aligned at touchdown. |
| Aileron on the roll | any x-wind | Full aileron into the wind as you start the takeoff roll, then ease it as the ailerons come alive. |
| Crosswind go-around | strong / exceeds | If the centerline is gone in the flare, go around. Power, pitch, crab — do not chase the remaining pavement. |
| High-DA takeoff in wind | mountain / hot | Density altitude stretches the roll; a crosswind still wants aileron. Brief both numbers before you taxi. Cue text: if the factor card is past 1.4 and the gust band is STRONG, this is a no-go for most trainers. |
Settings: “Appearance and workbench defaults. Nothing leaves the device.” Theme chips System / Light / Night tarmac. Copy: night is “Night tarmac ink on amber signals”; light is “Chart paper with hangar teal.” Grid snap switch. About: “offline ground-school workbench. It is not a weather service, not a logbook, and not a substitute for the POH or a CFI.”
Room file skewwind.db (aircraft, runways, scenarios). Prefs store skewwind_prefs. Manifest has no INTERNET permission. FileProvider only exposes cache/briefings.
Privacy cards: local only — no account, no telemetry. No weather feed — METAR strings are a seeded teaching set; the app does not fetch live weather, location, or contacts. Share sheet is Android’s; the kit does not upload. Permissions: no camera, microphone, location, or contacts.
Terms: teaching estimates — not a takeoff performance chart, clearance, or AFM/POH substitute. Go / no-go belongs to the PIC and the instructor; a STRONG or EXCEEDS ribbon is a briefing cue, not an order. Seeded airports and METAR groups are representative training cases — do not treat them as current ATIS. Use at your own risk.
If the rose will not drag, a briefing will not share, or a band looks wrong for the gust you typed, write the developer. Name the tab (Bench, Drills, Lab, Kit), the aircraft limit you had selected, and the wind group (for example 310/18G26). There is no in-app chat and no account — mail is the channel. The About card already says this is not a weather service or a substitute for the POH or a CFI.
Developer: Pro it
Support email: kucharskasylwia640@gmail.com
Angle = shortest signed difference between wind direction and magnetic heading. Crosswind = |speed × sin(angle)|. Head/tail use the cosine. The gust ribbon uses the same angle on the gust knots. Left/right comes from the sign of the sine.
When gust crosswind is greater than the selected aircraft’s max demonstrated knots. Strong is 80–100% of that number, Moderate 50–80%, Light under 50%. Default comparison aircraft is the Skyhawk 172S at 15 kt unless you pick another profile.
No. Privacy: the kit does not fetch live weather. Sixteen station cards plus the scenario-pack strings are a seeded teaching set. Terms: do not treat them as current ATIS. Density bench subtitle: “no network, no METAR download.”
A relative multiplier versus a sea-level dry roll, from density altitude, slope, and surface (dry/wet/grass/gravel/soft). It is clamped between 0.85× and 2.4×. Terms: it is not a takeoff performance chart. The High-DA cue treats factor past 1.4 plus a STRONG band as a no-go for most trainers — still a briefing, not a clearance.
Share brief (plain text), PDF (one letter-size page), or the 1080×1080 stage PNG. FileProvider only exposes the briefings cache folder. The text ends with “Not a clearance or weather service.”
No. Settings: nothing leaves the device. Privacy: no account, no telemetry, no location. The Android manifest does not declare INTERNET. A daily WorkManager job only bumps the “today’s briefing” index on the phone.
Fourteen aircraft cards, ten runway setups, forty-four drills, sixteen METAR cards, and six technique sheets. Onboarding page three: decode a seeded METAR token by token, then run density altitude and a takeoff-factor card before you brief. Skip also lands on the bench (default 300° / 31018G26 on the 172S).