Systems in Practice

Full stack developer, writer, and lifelong learner.

I’m Rama, a backend-leaning full stack developer based in Magetan, East Java. I build and tune enterprise web systems at PT Javan Cipta Solusi — mostly Laravel, lately a lot of TypeScript and Java — and I write here about technology, AI, and the habits of thinking that make us better at both.

Remix v3 Hits RC: Upgrading Five Apps the Morning After

[email protected] shipped on 31 August and I moved five apps off beta.5 the next morning. The bump tripped two wires: my own npm minimum-release-age guard, whose failure mode looks like a missing version, and a createAssetServer rename (fileMap → mounts, allow → allowFiles) that crashed every server on boot. Plus the uncomfortable lesson of five green test suites with zero tests — and the two-curl smoke check that actually caught the breakage.

“Generate Videone Nganggo Opo, Pak?” — The Stack Behind My Reels

Answering a comment on one of my reels: my technical explainer videos aren't edited in CapCut or Canva — they're compiled. Declarative JavaScript scenes drawn by a Canvas 2D engine, captured with Playwright/Chromium, assembled by ffmpeg, then narrated with an ElevenLabs eleven_v3 voice-over fitted to the engine's timing. Plus an automated verifier that tests hooks, durations, collisions, and loops via pixel diff.

Codex Usage Limits, Explained by Someone Who Hit Zero

Codex, ChatGPT Work and Workspace Agents share one rolling 5-hour + weekly pool; regular ChatGPT chat does not. My four content-production agents were on the wrong side of that line — 170M tokens a month against the Codex pool. Where to check usage, when limits actually reset, and the move that fixed it: the same agents in ordinary chat, with a self-hosted MCP server doing the work.

Open Harness: What the 5-Minute claudex Alias Doesn't Tell You

An OpenAI engineer published a three-step recipe for pointing Claude Code at GPT-5.6 Sol, and it works. After running it as a daily driver: why a settings profile beats an alias, why a model name is a runtime capability rather than config, and how an unbounded subagent fan-out emptied a weekly quota in half a day.

Stay up to date

Get an email when I publish a new guide or essay. No spam, unsubscribe at any time.

Work

  1. Company
    PT Javan Cipta Solusi
    Role
    L6 Programmer
    Date
  2. Company
    PT Javan Cipta Solusi
    Role
    Tech Lead
    Date
  3. Company
    PT Javan Cipta Solusi
    Role
    Facilitator Engineering
    Date
  4. Company
    PT Javan Cipta Solusi
    Role
    Junior Programmer
    Date
  5. Company
    Freelance / Open Source
    Role
    Full Stack Developer
    Date
More about me