Rocheport Times

Visit rocheporttimes.com

Rocheport Times2023-W30 · 1 commits2023-W31 · no entry2023-W32 · no entry2023-W33 · no entry2023-W34 · no entry2023-W35 · no entry2023-W36 · no entry2023-W37 · no entry2023-W38 · no entry2023-W39 · no entry2023-W40 · no entry2023-W41 · no entry2023-W42 · no entry2023-W43 · no entry2023-W44 · no entry2023-W45 · no entry2023-W46 · no entry2023-W47 · no entry2023-W48 · no entry2023-W49 · no entry2023-W50 · no entry2023-W51 · no entry2023-W52 · no entry2024-W01 · no entry2024-W02 · no entry2024-W03 · no entry2024-W04 · no entry2024-W05 · no entry2024-W06 · no entry2024-W07 · no entry2024-W08 · no entry2024-W09 · no entry2024-W10 · no entry2024-W11 · no entry2024-W12 · no entry2024-W13 · no entry2024-W14 · no entry2024-W15 · no entry2024-W16 · no entry2024-W17 · no entry2024-W18 · no entry2024-W19 · no entry2024-W20 · no entry2024-W21 · no entry2024-W22 · no entry2024-W23 · no entry2024-W24 · no entry2024-W25 · no entry2024-W26 · no entry2024-W27 · no entry2024-W28 · no entry2024-W29 · no entry2024-W30 · no entry2024-W31 · no entry2024-W32 · no entry2024-W33 · no entry2024-W34 · no entry2024-W35 · no entry2024-W36 · no entry2024-W37 · no entry2024-W38 · no entry2024-W39 · no entry2024-W40 · no entry2024-W41 · no entry2024-W42 · no entry2024-W43 · no entry2024-W44 · no entry2024-W45 · no entry2024-W46 · no entry2024-W47 · no entry2024-W48 · no entry2024-W49 · no entry2024-W50 · no entry2024-W51 · no entry2024-W52 · no entry2025-W01 · no entry2025-W02 · no entry2025-W03 · no entry2025-W04 · no entry2025-W05 · no entry2025-W06 · no entry2025-W07 · no entry2025-W08 · no entry2025-W09 · no entry2025-W10 · no entry2025-W11 · no entry2025-W12 · no entry2025-W13 · no entry2025-W14 · no entry2025-W15 · no entry2025-W16 · no entry2025-W17 · no entry2025-W18 · no entry2025-W19 · no entry2025-W20 · no entry2025-W21 · no entry2025-W22 · no entry2025-W23 · no entry2025-W24 · no entry2025-W25 · no entry2025-W26 · no entry2025-W27 · no entry2025-W28 · no entry2025-W29 · no entry2025-W30 · no entry2025-W31 · no entry2025-W32 · no entry2025-W33 · no entry2025-W34 · no entry2025-W35 · no entry2025-W36 · no entry2025-W37 · no entry2025-W38 · no entry2025-W39 · no entry2025-W40 · no entry2025-W41 · no entry2025-W42 · no entry2025-W43 · no entry2025-W44 · no entry2025-W45 · no entry2025-W46 · no entry2025-W47 · no entry2025-W48 · no entry2025-W49 · no entry2025-W50 · no entry2025-W51 · no entry2025-W52 · no entry2026-W01 · no entry2026-W02 · no entry2026-W03 · no entry2026-W04 · no entry2026-W05 · no entry2026-W06 · no entry2026-W07 · no entry2026-W08 · no entry2026-W09 · no entry2026-W10 · no entry2026-W11 · no entry2026-W12 · no entry2026-W13 · no entry2026-W14 · no entry2026-W15 · no entry2026-W16 · no entry2026-W17 · no entry2026-W18 · no entry2026-W19 · no entry2026-W20 · no entry2026-W21 · no entry2026-W22 · no entry2026-W23 · no entry2026-W24 · no entry2026-W25 · no entry2026-W26 · no entry2026-W27 · no entry2026-W28 · 459 commits2026-W29 · 156 commits2026-W30 · 374 commits2026-W31 · 208 commits2026-W32 · 12 commits2026-W33 · 46 commits2026-W34 · no entry2026-W35 · 15 commits2026-W36 · no entry2026-W37 · no entry2026-W38 · 18 commits2026-W39 · 32 commits1,321
Commits by week, 2023-W30 to 2026-W39. The busiest week had 459.
  1. 20269 weeks logged1,320
  2. W3921 Sep

    Rocheport Times

    Five games, a broadsheet front, and the home page as a front door

    • Launched five games: The Mini, a Weekly Quiz, Four Corners, Letterpress and Night Sky, with their own page type and layout.
    • Made the home page a front door: no news on it, just live vitals, events, sports and games; /news/ carries the news. Events gained a 'Pin to Front Page' flag.
    • Built the MR340 race hub's stats band (the MR340 is a 340-mile Missouri River paddle race): entered, finished, DNF, DNS, by division, with a map preview that opens the full-screen race map, and two-column year pages.
    and 3 more
    32commits
  3. W3814 Sep

    Rocheport Times

    Open sign-up, chat, and a front page that looks like a newspaper

    • Opened sign-up: a self-serve /register/ page with editor approval, passwordless login links, a members' Messages badge in the utility bar, and a privacy note.
    • Built member messaging as a chat UI on the existing direct-message store, with block, report and moderation, and a flag-gated daily digest.
    • Marked every member-gated page uncacheable after the edge cache served logged-out copies to signed-in members.
    and 3 more
    18commits
  4. W3524 Aug

    Rocheport Times

    Quick Approve for the editor, six more trails

    • Added Quick Approve to the Editorial Desk for the three daily draft types, with the full post body open inline so nothing is approved unread.
    • Made the desk hold any draft carrying raw HTML in its prose before it can publish, with a test case for the gate.
    • Gave the MCP newsroom two event-writing tools so an approved calendar item can be corrected or published from the assistant.
    and 2 more
    15commits
  5. W3310 Aug

    Rocheport Times

    Public-domain river data and a 47-trail explorer

    • Swapped the river-channel geometry for public-domain USACE data on both the desktop map and the server, and regenerated the mobile encoding to match.
    • Fixed the 2026 replay's phantom leader: the first hour of tracking was mis-seeded field-wide, and pre-gun pings were being drawn as race progress.
    • Escaped feed-supplied boat names at four tooltip sinks (a cross-site-scripting fix), hardened magic-link sign-in per a security audit, and added WordPress-free GitHub Actions checks: PHP lint, template lint and the MR340 regression suite.
    and 2 more
    46commits
  6. W323 Aug

    Rocheport Times

    The 2026 race results, frozen and replayable

    • Gave each race year its own address under /mr340/ with a rewrite rule, since WordPress pages cannot have purely numeric slugs.
    • Froze the real 2026 results and wired the 2026 replay onto the year page; the every-boat results table pages 10 at a time.
    • Polished the race hub: year cards over a hub map, replay badges, and a rail call-to-action on the homepage.
    and 1 more
    12commits
  7. W3127 Jul

    Rocheport Times

    Race day: 395 boats wrongly marked out, fixed live

    • Snapped live positions to the river channel instead of raw GPS, added dead-reckoning so boats glide between feed polls instead of freezing and teleporting, and fixed the OUT label that had marked about 395 racing boats as quit.
    • Moved feed validation to the server proxy (bad tracker data is flagged once, at the door) and wrote regression fixtures for every race-day defect, pinned to real feed data.
    • Built the phone view for people standing at a ramp: scrollable live standings, a watch-a-stop screen with approaching boats plotted upstream and honest ETAs, and stale trackers labelled rather than guessed.
    and 3 more
    208commits
  8. W3020 Jul

    Rocheport Times

    Building the MR340 race tracker in seven days

    • Reverse-engineered the race's public tracker feed and built a tracker module: leaderboard and checkpoint watch from a 3-minute server-side cache with stale fallback, pinned by 27 fixture checks.
    • Moved the replay map from Leaflet to MapLibre GL: vector basemap with no API key, optional 3D terrain and buildings, a satellite toggle, a cinematic tour that chases a chosen boat, and checkpoints placed at real ramp coordinates.
    • Rebuilt the 2024 field from 405 real GPS tracks, snapped to the official river-channel line from a 2012 survey, and lazy-loaded it so the page shrank from 1.45 MB to 360 KB.
    and 3 more
    374commits
  9. W2913 Jul

    Rocheport Times

    Members, invites, and a newsroom the AI reaches only through MCP

    • Built the member layer: a Neighbor role gated on bespoke capabilities instead of generic WordPress ones, editor-issued and member-sent invites with a per-member cap, an onboarding tour, and a Community admin menu (Neighbors, Approvals, Invites, Activity, Alerts).
    • Shipped the newsroom MCP server: public read tools, an editorial tier behind OAuth or an application password, a draft-only create_draft tool, and lead tools with a code-enforced trust floor. The daily drafting, rundown and lead routines now go through it; SSH access was retired.
    • Turned on post-moderation by default: wall posts, listings and suggestions hold for review, with a stop-word filter and an optional tone check.
    and 3 more
    156commits
  10. W286 Jul

    Rocheport Times

    Rocheport Times relaunches on one platform plugin

    • Consolidated all custom code into one plugin with 30 modules and a loader that guards against collisions; the mobile app's API surface was kept frozen so nothing on the app side had to change.
    • Fixed four security bugs in the existing community code before launch: an account takeover through social login that trusted an unverified email, a forced-friendship request, an unsanitized public wall (stored XSS), and Microsoft sign-in trusting a user-editable email field.
    • Built the Editorial Desk: a review queue in wp-admin for AI-drafted articles with threaded change requests, an automatic link checker, and approve or request-changes actions on the post itself. Nothing publishes without a person.
    and 3 more
    459commits
  11. 20231 week logged1
  12. W3024 Jul

    Rocheport Times

    A rough first try at a Rocheport Times app

    • A rough .NET MAUI scaffold, one page and a Post class: the first sketch of a Rocheport Times mobile app
    1commits
  13. 20221 site
  14. 2022–

    Site, 2022–present

    Rocheport Times, 2022 to 2026 (rocheporttimes.com)

    Founder, publisher and builder. WordPress with Elementor, Toolset and Jetpack (2022-2025); wiped to a bare WordPress install by June 2026; rebuilt as the platform plugin from July 2026

    My name is on archive.org
    2snapshots