• NEW VIDEO · The Descent — CJ vs Yoko · watch now
  • NEW VIDEO · The Passage — an AI fight scene built with Seedance · watch now
  • NEW SHORT · Torture Dance — JoJo menacing edit · watch now
  • LIVE · 236 devlog entries · shipping in public
  • NOW LEARNING · agentic AI architecture, MDX, Claude Code workflows
  • RECENTLY · shipped five iOS features in a single PR
  • OPEN FOR · freelance builds — retail, hospitality, web
  • BUILDING IN PUBLIC · live commits documented · MIT / CC-BY-SA
  • NEW VIDEO · The Descent — CJ vs Yoko · watch now
  • NEW VIDEO · The Passage — an AI fight scene built with Seedance · watch now
  • NEW SHORT · Torture Dance — JoJo menacing edit · watch now
  • LIVE · 236 devlog entries · shipping in public
  • NOW LEARNING · agentic AI architecture, MDX, Claude Code workflows
  • RECENTLY · shipped five iOS features in a single PR
  • OPEN FOR · freelance builds — retail, hospitality, web
  • BUILDING IN PUBLIC · live commits documented · MIT / CC-BY-SA
Captain Random// build · create · ship · collaborate
  • Work▾
    Software development5 systemsWeb development5 buildsTooling6 tools
    Ways of working
    Security by designBuild in public
  • Writing
  • Learning▾
    All courses9 liveThe Map77 chapters
    Tracks
    Ship & Run It on Shared Hosting4 coursesWrite in Public2 coursesCreative Coding2 courses
  • Now
  • Creative▾
    Creative hubMusicVideosSeriesStream schedule
  • About
YouTubeLet's build →
  • Work
    • Software development5 systems
    • Web development5 builds
    • Tooling6 tools
    • Security by design
    • Build in public
  • Writing
  • Learning
    • The Map77 chapters
    • Ship & Run It on Shared Hosting4 courses
    • Write in Public2 courses
    • Creative Coding2 courses
  • Now
  • Creative
    • Music
    • Videos
    • Series
    • Stream schedule
  • About
YouTubeLet's build →
Home/Writing/Newsletter

Posts on Newsletter.

3 posts tagged "Newsletter".

3 postsAll writing →
S
SecurityDevOps
#01
2026-07-216 min read

Scope the MySQL user first: the newsletter DDL as a security boundary on cPanel

On shared hosting, you don't control the firewall or the infrastructure. What you do control is which privileges the MySQL user holds. Scoping it to the newsletter schema alone made a compromised endpoint's blast radius structurally finite — not as a mitigation layered on top, but as a property of the design.

Read post→
T
SecurityBuild Log
#02
2026-07-136 min read

The confirm link token was in five places before the subscriber clicked it

Building newsletter confirm and unsubscribe handlers revealed a leak surface most developers overlook: tokens passed via GET end up in browser history, Referer headers, and server access logs before any mutation happens. The fix is an interstitial — show a page on GET, mutate only on POST.

Read post→
T
Build LogNewsletter
#03
2026-06-135 min read

Three newsletter hotfixes. The events table found all of them.

The newsletter form went live on 9 June. I subscribed from my own address and got nothing. No row, no email, no error. Three consecutive bugs followed, all found the same way: reading the events log, not the code.

Read post→
Captain Random
// build · create · ship · collaborate

UK-based developer and creative technologist. 20+ years building for the web. 23+ years in retail and hospitality operations and leadership. Now architecting production systems with agentic AI tools and workflows — shared in public.

GitHub @CaptainRandom00X @CaptainRandom00YouTube @captainrandom00

Work

  • All projects

Writing

  • All posts
  • Agentic AI
  • Retail & Hospitality

Explore

  • Retail knowledge base
  • Security by design
  • Creative AI
  • Stream schedule
  • AI News
  • Learning
  • Now page

Reach me

  • hello@captainrandom.co.uk
  • Contact page
  • Privacy policy
© 2026 Captain Random · captainrandom.co.uk · Built in public乱 — UNPREDICTABLY EFFECTIVE.