• Frank Jamison dressed in medieval rogue attire sits at a wooden desk by candlelight, writing in an open journal filled with notes and diagrams, with books and warm lantern light in the background creating a focused, fantasy-inspired atmosphere.
    Web Development Fundamentals

    The Rogue Who Could Not Tab: Fixing Keyboard Navigation

    I have shipped features that looked beautiful and worked perfectly with a mouse, only to discover later that they were nearly impossible to use with a keyboard. It felt like building a grand stone keep with polished banners and glowing torches, then realizing I forgot to add doors. Users could admire it from afar, but they could not enter. Fixing keyboard navigation after the fact is humbling. It forces me to examine every assumption I made about interaction. It also reminds me that accessibility is not an optional side quest. It is part of the main campaign. When I return to an existing codebase to repair keyboard support, I approach…

  • Frank Jamison stands beneath a stone archway in a medieval city at sunset, dressed in a dark hooded cloak and leather armor with small glass vials at his belt, facing forward with a steady expression as warm torchlight and a distant castle glow in the background.
    Web Development Fundamentals

    Forms, Validation, and Trust: Guarding the Gates of the Digital Realm

    When I build a form, I no longer see text inputs and buttons. I see the gates of a city. On one side stands a traveler. On the other side stands my application. Between them is a portcullis made of HTML, guarded by validation rules, warded by server logic, and lit by the flickering torches of user feedback. If I design it poorly, the traveler turns away. If I design it carelessly, something darker slips through. Forms are not paperwork. They are the social contract of the web. They are where trust is negotiated. And in my experience, trust is the most powerful magic in any system. The Gatehouse: Structure…