•   ____                         _   _ _       _               
     / ___|___  _ __   ___  _ __  | | | (_)_ __ | |__   ___  ___ 
    | |   / _ \| '_ \ / _ \| '__| | |_| | | '_ \| '_ \ / _ \/ _ \
    | |__| (_) | | | | (_) | |    |  _  | | | | | | | |  __/  __/
     \____\___/|_| |_|\___/|_|    |_| |_|_|_| |_|_| |_|\___|\___|
    
    Hi, I'm Conor. You found the curl view.
    
    Links
    - Home: https://www.conorhinchee.com
    - Blog: https://www.conorhinchee.com/blog
    - Now:  https://www.conorhinchee.com/now
    - GitHub: https://github.com/Conor-Hinchee
    - X: https://x.com/_DrunkWaffles_
    
    Try these
    - curl -L https://www.conorhinchee.com
    - curl -L https://www.conorhinchee.com/blog
    - curl -L https://www.conorhinchee.com/now
    

    Conor Hinchee

    Tornado Simulator

    You are the tornado

    In development

    EXPO SDK 57 REACT NATIVE 0.86 SKIA REANIMATED 4 WORKLETS TYPESCRIPT
    View on GitHub

    A mobile game in active development where you play as a happy little tornado and grow into a monster. Drag to steer, wander into everything, and watch the field come apart behind you.

    The environment is destructible and the destruction is the progression. You get 150 seconds before you rope out, and your EF rating is the worst thing you managed to flatten, the way real ratings are assigned from surveyed damage rather than measured wind.

    The progression is the physics

    1. 65 mph Trees
    2. 86 mph Trailers
    3. 112 mph Houses
    4. 136 mph Grain silos

    A structure below its break wind takes zero damage. A house ignores you outright until you have eaten enough trailers to raise your peak tangential velocity. There is no XP bar and no unlock screen, only the wind you have actually earned.

    ///
    Rankine vortex
    Tangential wind climbs linearly to peak at the core edge, then decays as one over r outside it.
    Updraft offset
    Lift peaks just outside the core, so debris spirals out and up instead of collapsing into the center.
    On the UI thread
    The loop runs in worklets against a struct of arrays, so the simulation never touches the JS bridge.

    In progress · Next up: houses that shed a roof before they shed walls

    Field

    Analog dashboard watch face · Garmin Venu 4

    MONKEY C CONNECT IQ 454x454 ROUND ZERO PERMISSIONS NO BITMAP ASSETS
    View on GitHub
    The FIELD watch face running on a Garmin Venu 4, showing step count, weather, battery, heart rate and date sub-dials around analog hands
    Running on hardware. Heart rate reads two dashes because the watch is off wrist, and the 6 o’clock slot is currently open.

    A test of UI under constraint

    Connect IQ is a deliberately small sandbox. A watch face gets one update call per minute in normal use, a fixed 454 by 454 round canvas, a subset of the graphics API, and no access to most of the sensors a full app can reach.

    That is what makes the Garmin SDK worth building against. The interesting work is not adding features, it is fitting eight live readouts into one legible instrument that still reads correctly when any one of them goes missing.

    Everything above is drawn imperatively in Monkey C. No layout XML, no UI framework, and no bitmaps beyond the launcher icon.

    Eight live readouts, one instrument

    12 o’clock
    Steps, distance, goal ring
    2 – 3
    Condition, temp, high and low
    4 – 5
    Battery with level ring
    7 – 8
    Live heart rate, pulsing glyph
    9 – 10
    Day, month, date
    6 o’clock
    Open slot, swappable
    · · ·

    Constraints that shaped the code

    Every symbol is a polygon
    No reliable icon font exists here, so cloud icons are filled silhouettes with an eroded copy carved back out to fake an outline stroke.
    Never size from live data
    Labels scaled to the measured width of the date collapsed on single digit days. Every text group now measures a worst case reference string instead.
    Everything degrades to a dash
    Heart rate falls back to the last valid history sample. A missing source renders two dashes in the right slot and the rest of the face carries on.

    Running on hardware · Tuning on-wrist typography and an always-on variant

    ODIN

    Self-Hosted Agent Runtime

    Archived 2026

    ANTHROPIC MESSAGES API NODE.JS / TYPESCRIPT BULLMQ OBSIDIAN VAULT GCP CLOUD LOGGING

    Odin was a self-hosted agent runtime: persistent memory, 50+ tools, a seven-agent dispatch pipeline, and a nightly loop that read its own traces and rewrote its own prompts. It took a spec and opened a pull request. It ran work that spanned days.

    ᚅ ᚈ ᚠ

    What the vault kept

    Muninn
    Every turn wrote back to an Obsidian vault, so context outlived the process that made it.
    Saga
    Outcomes, errors and routing accuracy logged to JSONL and read back nightly.
    Bragi
    Weaknesses became versioned prompt patches, gated before anything applied itself.

    Retired · No live instance

    Game Of Life

    Conway's Game Of Life

    Heap Analyzer

    A command-line tool for analyzing Node.js heap snapshots. Parses .heapsnapshot files, surfaces the largest object allocations by type, and flags likely memory leaks — without needing Chrome DevTools open.

    Node.js JavaScript CLI Performance
    • Parses raw V8 heap snapshot JSON without loading it all into memory
    • Groups allocations by constructor name and reports top offenders
    • Outputs a ranked table to stdout — pipe it, grep it, diff it

    FIND ME ONLINE

    Cookie Consent