<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="/rss-style.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    
    <title>jvg.omg.lol</title>
    <link>https://jvg.omg.lol</link>
    <description>Updates from James Greenaway – a design engineer and photographer based in London.</description>
    <atom:link href="https://jvg.omg.lol/rss" rel="self" type="application/rss+xml" />
    <language>en-gb</language>
    <copyright>Copyright 2026, James Greenaway</copyright>
    <webMaster>james@greenaway.io (James Greenaway)</webMaster>
    <lastBuildDate>Fri, 16 Jan 2026 00:00:00 GMT</lastBuildDate>
    <generator>jvgOS v0.1</generator>
    <docs>https://www.rssboard.org/rss-specification</docs>
    <ttl>60</ttl>
  
    <item>
        <title>The Work is in the Fog of War</title>
        <link>https://jvg.omg.lol/abc/the-work-is-in-the-fog-of-war</link>
        <description>The designs are done, everyone’s nodding… and then ticket-writing reveals how little you actually know. If you’ve ever felt that lurch, this is a way to name it - and stop mistaking it for failure.</description>
        <pubDate>Fri, 16 Jan 2026 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category domain="https://jvg.omg.lol/abc/tag/process">process</category>
          <category domain="https://jvg.omg.lol/abc/tag/product">product</category>
          <category domain="https://jvg.omg.lol/abc/tag/design">design</category>
          <category domain="https://jvg.omg.lol/abc/tag/engineering">engineering</category>
        <guid isPermaLink="true">https://jvg.omg.lol/abc/the-work-is-in-the-fog-of-war</guid>
        
        <content:encoded><![CDATA[<p>In some teams I've worked in, there was a moment in a project that always made my stomach tighten.</p>
<p>The designs are "done". We've had the walk-throughs. Stakeholders have nodded along through a few rounds of feedback. The UI mocks look convincing enough that everyone can imagine the feature existing already. The mood in the room shifts to: <em>"right, time to get serious and write the tickets"</em>.</p>
<p>On paper, you break the mock-ups down into tasks, put estimates on them, slice the work across the team, and press go. In reality, this is where everything starts to wobble. As soon as you try to write actionable tickets - slicing work to build the code paths, data flows, and tackle edge cases - you discover how much you don't yet understand.</p>
<p>Someone points out a pile of forgotten tech debt that has to be moved before anything else can fit. Someone else realises that the new flow contradicts another flow once you see them side by side. A stakeholder changes their mind the moment they imagine clicking through the screens for real. The illusion that the problem is "solved on paper" falls apart the moment you slice that paper into implementation pieces.</p>
<p>I've come to think of these moments, in cycle planning meetings, as the point where the fog becomes visible. Not because the meeting is the problem, but because it's the first moment where the team has to turn a convincing story into executable slices. That translation is still design work. Even with the best intentions in earlier review phases, you don't surface the unknown-unknowns until you try to actually do the thing.</p>
<p>The work is not what happens once that fog has been burned away. The work is moving through it.</p>
<h2>The cabinet maker fantasy</h2>
<p>Part of why this moment feels so uncomfortable is that it fails to match up with a storyline development teams find reassuring.</p>
<p>If you ask a cabinet maker to build you a piece they've made a hundred times before, they can usually tell you exactly what it will cost and how long it will take. They'll measure the space, pick the timber, do the cut list, and come back with a price. They have patterns, jigs, and muscle memory. They're not discovering a new object; they're repeating a known shape with small variations.</p>
<p>Many organisations instinctively treat software work like this. They want to know what they're going to get and when they're going to get it. They want to be comforted by the idea that someone, somewhere, is in control - that the hard thinking has already been done, the unknowns have been ironed out in discovery, and what remains is the cabinet-making part: skilled, but predictable.</p>
<p>You can see this in many forms:</p>
<ul>
<li>Roadmaps that read like delivery schedules.</li>
<li>Requests for precise estimates before anyone has opened the codebase.</li>
<li>Contracts that promise exactly which features will ship by which date.</li>
<li>Agencies charging a premium for <em>fixed scope</em> work, because taking on that level of risk is expensive.</li>
</ul>
<p>It's an appealing fantasy, and not entirely unreasonable. There are parts of software that do behave more like cabinetry: well-trodden integrations, familiar CRUD, boring but necessary plumbing. But <strong>most interesting product work</strong> doesn't feel like building the same cabinet over and over. It feels much closer to tackling a novel problem. Hidden complexity is the norm, not the exception.</p>
<p>And the painful bit is that we ask for a cabinet-maker level of certainty in a medium where the plan itself is a large chunk of the work. The line from "the idea" to "the plan" is often wiggly. If you invest huge amounts of energy up front to produce a perfect plan, you pay twice: once in the cost of doing the thinking far away from the code, and again when reality changes and the plan goes stale.</p>
<p>Treating software as repeatable craft is how you end up with everyone being surprised – and potentially annoyed – when the fog rolls back in at ticket‑writing time.</p>
<h2>What the fog feels like</h2>
<p>The fog of war isn't just the absence of a plan. It's what it feels like to do the plan-shaping work while everyone is pretending the shaping is already finished.</p>
<p>On the surface, things look tidy. The UI mocks tell a coherent story. Stakeholders are confident enough in the direction that they want to talk about timelines. The work is framed as: <em>"how long will it take to build this?"</em></p>
<p>As soon as you start getting specific, the cracks show:</p>
<ul>
<li>New constraints appear the moment you try to map a design to actual data and APIs.</li>
<li>Edge cases and awkward paths pop up that weren't obvious in a linear Figma prototype.</li>
<li>Performance, accessibility, and interaction details start to matter once you imagine a real user actually clicking around.</li>
</ul>
<p>If you're working on something strictly technical the pattern is the same. On a whiteboard, the refactor or new module looks straightforward: extract this, rename that, shuffle a couple of responsibilities. Once you take one webpage or one package and actually try the change, you realise how entangled things are, or that a concept you thought was cleanly defined isn't clean at all.</p>
<p>None of this means the design work was bad or that people weren't paying attention. It's just that you learn about the problem by working on it. Implementation is one of the main ways a team deepens its understanding. If you somehow knew, up front, every change that would be required in the codebase to make a solution real, you've already done most of the work in your head.</p>
<p>In a healthy team, you're not really assigning people to "build this solution". You're assigning them to a problem and a goal, with permission - implicit or explicit - to reshape the solution as they learn. The work naturally swings between discovery, refinement, and execution: talking to users, adjusting the concept or scope, changing the software itself, often in the same week.</p>
<p>The fog is simply what it feels like to be inside that loop.</p>
<h2>Treating unknowns as first‑class work</h2>
<p>One of the most useful shifts I've seen in culture and process is to <strong>stop treating unknowns as a sign of failure</strong> and start treating them as work.</p>
<p>Instead of asking "why didn't we catch this earlier?", you name the unknowns explicitly:</p>
<ul>
<li>What problem are we actually solving for this user?</li>
<li>What happens if they try to do X that isn't in the happy path?</li>
<li>What hidden technical constraints might shape what "good enough" looks like?</li>
</ul>
<p>You put those questions on the table as things to be tackled, not as embarrassments to be swept away. In practice, that can look like:</p>
<ul>
<li>Framing work as "here's the problem space and direction; go explore and shape a solution", rather than "this design is final; estimate and implement it".</li>
<li>Picking a time appetite first, then shaping scope to fit it (instead of treating scope as sacred because it was written down early).</li>
<li>Time‑boxing learning on the riskiest unknowns, and only then committing to the long tail of implementation.</li>
<li>Keeping tickets honest: some are for shipping, some are for finding clarity.</li>
</ul>
<p>{/* If you want the practical version of this, I've written a follow-up: <a href="/making-plans-for-unknowns">Making Plans for Unknowns</a>. */}</p>
<blockquote>
<p>I'm working on a companion piece for this article with more actionable details. If you want to catch it when it lands, subscribe to my <a href="/rss">RSS feed</a>.</p>
</blockquote>
<p>If you don't accept the fog, you often end up pouring huge amounts of energy into ever more elaborate planning phases, just so you can feel confident about perfectly executing the implementation. You have planning meetings, then end up with pre-planning meetings, then pre-pre-planning meetings. Developers spend more time scratching their heads to find convincing answers than building things to learn from.</p>
<h2>Embracing the fog feels risky</h2>
<p>None of this lands easily in organisations that are used to certainty.</p>
<p>Stakeholders and leaders quite reasonably want to reduce risk. They want to be able to tell customers and partners when something will ship and what they'll get. They want to believe that someone has already walked the battlefield and marked out all the traps. It's not surprising that classic waterfall and big‑up‑front design were attractive for so long: they promise that, with enough analysis, the fog can be banished before anyone writes a line of code.</p>
<p>Agile, at its best, is an honest admission that this isn't how development work behaves. You can only really see the next handful of moves clearly. You need to ship, learn, and adjust.</p>
<p>It's uncomfortable to say "we don't know yet" in cultures that idolise decisiveness. Senior people are used to being the ones with answers. Admitting that you're working in a fog can feel like losing authority. It's also hard to put on a dashboard. Velocity and throughput are easy to count; clarity gained and bad ideas discarded are not.</p>
<p>From the developer's side, there's a different kind of discomfort. Being honest about uncertainty can make you feel like you're letting people down. If you treat every estimate as a promise, then every burst of hidden complexity becomes a kind of personal failure. You start to dread the wiggly path.</p>
<p>The alternative is not to shrug and stop caring about dates. It's to be more precise about what you can and can't promise.</p>
<p>You can promise that you'll use the time well. That you'll surface unknowns early, rather than hiding them. That you'll keep something working and demo-able so people can feel the thing, not just look at pictures of it. That you'll make good-faith trade-offs between scope, quality, and time, instead of pretending all three are fixed.</p>
<p>You cannot honestly promise that you'll build exactly the picture in the design file, on exactly the date in the roadmap, without learning anything that might change your mind.</p>
<h2>Naming the fog, doing the work</h2>
<p>The more I work, the more I think the healthiest teams are the ones that are willing to say, out loud, "we're in the fog right now".</p>
<p>They don't treat that as a shameful confession. They treat it as a status update. They write down the questions they need to answer. They use tickets and spikes and prototypes as tools for learning, not just delivery. They measure success not only by features shipped, but by how much clearer the landscape looks than it did a week ago.</p>
<p>The work is in the fog of war, not in typing out a foregone conclusion. The sooner you name that, the less time you'll spend pretending to be a cabinet maker when you're really trying to chart a path through unfamiliar ground.</p>
]]></content:encoded>
      </item>
<item>
        <title>Photo: Sausalito, California</title>
        <link>https://jvg.omg.lol/jpg/omGqnCNB</link>
        <description>2025-03 • Sausalito, California</description>
        <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category>photo</category>
        <guid isPermaLink="true">https://jvg.omg.lol/jpg/omGqnCNB</guid>
        <enclosure url="https://jvg.omg.lol/jpg/image/omGqnCNB" type="image/jpeg" length="97886" />
        <content:encoded><![CDATA[<p><img src="https://jvg.omg.lol/jpg/image/omGqnCNB" alt="A man on a ladder repairing his house, accompanied by an empty ladder." /></p>
      <p><em>Sausalito, California</em></p>
      <p>2025-03</p>]]></content:encoded>
      </item>
<item>
        <title>Photo: San Francisco, California</title>
        <link>https://jvg.omg.lol/jpg/vT3uG7tR</link>
        <description>2025-03 • San Francisco, California</description>
        <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category>photo</category>
        <guid isPermaLink="true">https://jvg.omg.lol/jpg/vT3uG7tR</guid>
        <enclosure url="https://jvg.omg.lol/jpg/image/vT3uG7tR" type="image/jpeg" length="26259" />
        <content:encoded><![CDATA[<p><img src="https://jvg.omg.lol/jpg/image/vT3uG7tR" alt="A sunset view of Alcatraz island and a lone duck swimming in the bay." /></p>
      <p><em>San Francisco, California</em></p>
      <p>2025-03</p>]]></content:encoded>
      </item>
<item>
        <title>Photo: San Francisco, California</title>
        <link>https://jvg.omg.lol/jpg/tdYerMQ6</link>
        <description>2025-03 • San Francisco, California</description>
        <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category>photo</category>
        <guid isPermaLink="true">https://jvg.omg.lol/jpg/tdYerMQ6</guid>
        <enclosure url="https://jvg.omg.lol/jpg/image/tdYerMQ6" type="image/jpeg" length="19656" />
        <content:encoded><![CDATA[<p><img src="https://jvg.omg.lol/jpg/image/tdYerMQ6" alt="A nighttime look at a brightly lit shop" /></p>
      <p><em>San Francisco, California</em></p>
      <p>2025-03</p>]]></content:encoded>
      </item>
<item>
        <title>Now: 2026-01-14</title>
        <link>https://jvg.omg.lol/now/2026-01-14</link>
        <description>The Hobbit-hole chapter</description>
        <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        
        <guid isPermaLink="true">https://jvg.omg.lol/now/2026-01-14</guid>
        
        <content:encoded><![CDATA[<h2>Nurturing this website</h2>
<p>Over the years my personal website has taken many forms: a slapped-together portfolio to sell myself to an employer ahead of an interview; a random domain where I could anonymously post angsty poetry; and the beginnings of a blog, with the intention of regularly publishing thoughtful, provocative long-form writing. These ideas started with good intentions, but for reasons like a lack of time or motivation - or a desire for perfection - they ended up fading into nothingness.</p>
<p>Now I feel I've reached a critical mass in terms of confidence in sharing what I have to say, while keeping a light-hearted attitude towards a weird, imperfect work in progress.</p>
<p>I'm focused on carving out my own corner of the <em>small web</em>, and I'm more willing to throw things out and see what sticks. There is still some tension in deciding where my time goes: building the software versus writing and publishing, and aiming for something that is good enough for now rather than endlessly polishing. But I hope this website continues to grow and change over the long run.</p>
<h2>Settling back home</h2>
<p>For the first half of 2025 I was anticipating a move to San Francisco. The year began with the majority of my life packed up in preparation. Days turned into weeks, and weeks into months, waiting for the immigration office to issue my visa. My home was primed for hibernation and the act of making future plans was on hold; any day the word would come and my boxes and I would be off to occupy a new space.</p>
<p>Unfortunately the current administration seemed happy to ghost this white guy in tech, and that plan was scarpered. I was left stuck in place, with few plans and little direction. I responded like any normal person would… I took custody of my mate’s camper van and went off-grid for a few months to explore more of my country, ticking off the Edinburgh Fringe and Scafell Pike from the bucket list.</p>
<p>But now I am back at home. Having unpacked those boxes, I get to put some focus into making the place <em>more homely</em> and optimising it for comfort. For example, I've upgraded my home automations… now the colour temperature of the light bulbs follows the position of the sun! ;p</p>
<p>And I get to engage and explore once more with my home town… I'm currently on the lookout for <em>this year's uncomfortable-creative-challenge</em>, by finding an improv class.</p>
<h2>Intentional consumption</h2>
<p>I've accumulated a long <em>backlog of stuff</em> that I want to read, watch, or listen to. Yet I keep ending up back on algorithmic feeds. I've got a read-it-later list, notes on books I have an appetite for, and scattered reminders of recommendations I've been given. Intentional nourishment awaits - and yet, I dwell on my YouTube recommendations and Reddit feed. Why? Because it's easy: a quick route to juicing those neurons.</p>
<p>I miss the days when I'd fire up Google Reader and peruse a set of sources a past self had deemed worthwhile. It was curated by design: you chose what to subscribe to, and pruning the list - changing your mind and clicking unsubscribe - was part of the ritual. I miss the sensation of a slower, more deliberate mode.</p>
<p>I'm trying to make that curated approach as easy and frictionless as the commercial feeds. Transitioning back to using RSS is part of that. I've recently jailbroken my old Kindle, and now have the means to sync various content streams auto-magically onto this dedicated device. I'm working on ironing out the process of syncing my highlights and notes into my second brain.</p>
<h2>Finding work</h2>
<p>I have been out of full time employment for around 6 months now. Ever since the age of 13, I've basically always had some form of regular work and income - so this chapter has been pretty novel. I've tied myself over by doing a stint of contracting, as well as picking up some odd jobs for my existing freelance clients. However, now I must get serious about picking the next path in my career.</p>
<p>I'm toying with the idea of being my own boss. I found a couple of interesting people with some business and product ideas. We dabbled with the early stages of starting them up, but each one fizzled out because their commitment and intensity didn't match my own. I'm curious about finding a co-founder; committing myself to being a solo-entrepreneur sounds too risky.</p>
<p>I'm wondering if I can return to my freelance roots. I've put together an idea of trading under a new moniker of <a href="https://friendlycomputer.co">Friendly Computer</a>. I have some strong views about how to effectively design, build and test new product ideas.</p>
<p>I think a likely outcome is that I will join a new company. I have started the hunt for a software development role that suits my skillset, as well as a team that share my beliefs and attitude towards organisation and collaboratively building stuff.</p>
<p>Please <a href="/contact">reach out</a> if you have any leads!</p>
<h2>Fixing the consistency and redundancy of my data</h2>
<p>A few months ago I lost a laptop and, with it, some data - most notably, a chunk of my font collection. I did have a continuous backup system in place; however, I hadn’t included <em>that</em> directory in the source set. I was able to piece together most of the library - finding email receipts to re-download, and spelunking the backed up downloads folder - but the process was messy and arduous. The end result was losing some important files, and an inability to completely itemise <em>what</em> was lost. It was stressful and heartbreaking.</p>
<p>It left me with a new belief: I should live in a continuous state where <em>any</em> of my computers could spontaneously explode and I could simply grab another and continue where I left off. However, it quickly became clear that fulfilling a dream of perfectly backed up and accessible data would require me to pay back the debt of years of poor organisational habits.</p>
<p>Over time, my data had sprawled across machines and tools, with no clear rule for what to keep, what to delete, or where a new file should go in the moment. I'm glad to say I have nearly reached my <em>data consistency, redundancy and accessibility nirvana</em> over the last month by standardising on a repeatable setup (snapshots, off-site backups, and sync) and forcing myself to swap between machines to prove it works. It’s been a big project, but I'm already starting to see the system hold together as I enter the final stretch. My aim is to share notes on what I’ve learned, along with open sourcing the two utilities I’ve written.</p>
]]></content:encoded>
      </item>
<item>
        <title>Hiring as a Facsimile of Real Work</title>
        <link>https://jvg.omg.lol/abc/hiring-as-a-facsimile-of-real-work</link>
        <description>Most interviews are a strange kind of theatre: compressed, improvised, and oddly detached from the work. What if hiring looked less like storytime and more like the way you actually collaborate?</description>
        <pubDate>Sat, 13 Dec 2025 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category domain="https://jvg.omg.lol/abc/tag/hiring">hiring</category>
          <category domain="https://jvg.omg.lol/abc/tag/management">management</category>
          <category domain="https://jvg.omg.lol/abc/tag/remote_work">remote_work</category>
          <category domain="https://jvg.omg.lol/abc/tag/process">process</category>
        <guid isPermaLink="true">https://jvg.omg.lol/abc/hiring-as-a-facsimile-of-real-work</guid>
        
        <content:encoded><![CDATA[<p>Most interviews measure how well you can perform in a manufactured conversation rather than real work.</p>
<p>Often, as a candidate, you’re dropped into a one‑hour call with someone you’ve never met, asked to summon stories about your past, and hoping to leave a strong enough impression that a group of strangers are willing to bet on you. On the hiring side, you’re also improvising: trying to build a picture of someone’s judgement, temperament, and craft from a handful of highly unusual hours.</p>
<p>I’ve been on both sides of this – designing hiring loops and sitting inside other people’s. Most of the teams I speak to are sincere when they say they want their process to <em>“show what it’s really like to work here”</em>. It’s a good instinct: candidates want to know what they’re signing up for, and teams want to see how someone works in the job's real environment.</p>
<p>But the experience often feels like classic interview theatre. And theatre isn’t a particularly good way to assess the things most teams care about: judgement, collaboration, craft, and the ability to make sense of messy problems over time.</p>
<p>So here’s the question I want to write about: if the job mostly happens through documents, tickets, and pull requests, why is it so common that hiring doesn’t look like that?</p>
<p>What would it mean to treat hiring as a facsimile of real work – a better simulation of what working life will be like together?</p>
<h2>Why interviews feel nothing like the job</h2>
<p>A fairly standard process goes something like this: a recruiter screen, a quick call with somebody senior, and then two or three one‑hour calls with different people from the team. Each call is a fresh performance: you start again with your story and try to calibrate your answers to a new person’s concerns and style. You share no context beyond a job description and a LinkedIn profile.</p>
<p>The questions tend to have a familiar flavour:</p>
<blockquote>
<p>“Can you tell me about a time when you…?”
“What’s your greatest strength… your biggest weakness… a moment you demonstrated…?”</p>
</blockquote>
<p>These prompts come from a well‑intentioned place. The science says that past behaviour is the best predictor of future behaviour, so you ask people to replay their greatest hits. In practice, you’re asking them to do <strong>two conflicting things</strong> at once: <em>recall</em> specific situations from the past and, at the same time, narrate them in a way that <em>reveals</em> beliefs and thought processes. It’s cognitively heavy, especially under time pressure with strangers watching.</p>
<p>It also rewards a particular kind of person: someone who is good at telling neat stories about messy events. Someone who can sell you a pen – rather than the person who can design it, manufacture it, ship it, and keep it working.</p>
<p>For some roles and some cultures, that’s fine. If the work is mostly live meetings, quick alignment, and “talk it through on a call”, then a call‑heavy process is at least directionally aligned.</p>
<p>But for teams that deliberately choose async rhythms – who value preparation, written communication, clear handoffs and time to think – it’s an odd way to evaluate fit. You spend your actual working life reading documents, leaving comments, and thinking in the shower about a paragraph in a spec, but your hiring loop is dominated by live improvisation.</p>
<h2>What work actually looks like in an async team</h2>
<p>If I zoom out on a typical week in a remote, async product team, the rhythms look very different from a string of one‑off calls.</p>
<p>You see colleagues pruning the backlog and rewriting tickets so they actually make sense. You see engineers reading a PRD for a sizeable change, not quite getting it, asking a few questions, and later having an “oh, of course” moment while taking a walk. You see code reviews where someone admits they’re confused and turns that confusion into a learning experience for both sides.</p>
<p>Most of somebody’s personality and value shows up in their async writing persona: Slack messages with enough context that you don’t have to ask “wait, <em>what</em> are we talking about?”, comments that show curiosity and care rather than drive‑by criticism, and pull requests that tell a clear story instead of dumping a diff on your lap.</p>
<p>The work is less about one‑off performances and more about some recurring patterns:</p>
<ul>
<li><strong>Continual collaboration on shared context.</strong> Over time, you build a mental map together and share trajectory.</li>
<li><strong>Time to sit with problems.</strong> People do their best thinking when they can come back to something twice: read, react, sleep, revise.</li>
<li><strong>Temperament that emerges in low-stakes moments.</strong> Enthusiasm, care, humility, patience, generosity - the little interactions that fill the week.</li>
</ul>
<p>If this is what working life actually feels like, then a hiring process made entirely of isolated, high‑pressure calls is not a good proxy.</p>
<h2>Simulating situations for real collaboration</h2>
<p>Once you start from the reality of the work, a principle suggests itself:</p>
<blockquote>
<p>If the job <strong>is</strong> mostly async collaboration,
…the hiring process should <strong>contain</strong> async collaboration.</p>
</blockquote>
<p>Instead of treating interviews as a chance to rapidly psychoanalyse someone, you can treat them as a small shared project. Rather than simply grilling a candidate with clever questions, you simulate working together on something that looks and feels like the real problems.</p>
<p>That might mean sending a realistic PRD in advance and asking for comments. It might mean having a discovery‑style call where confusion is welcome, then giving both sides time apart to think and write, then coming back together to make decisions. It might mean having two people from the team on the call so that feedback reflects a team perspective, not just one person’s vibe.</p>
<p>Real work tends to move in cycles of <strong>explore together</strong> → <strong>think alone</strong> → <strong>come back together</strong>. A good hiring loop borrows that rhythm. It’s less about squeezing truth out of an hour‑long interrogation and more about noticing how it feels to move through a few small loops with someone: reading, commenting, discussing, following up.</p>
<p>Designing the details is hard, but the principle is simple.</p>
<h2>The risks behind hiring anxiety</h2>
<p>Part of the reason I think we cling so tightly to traditional interviews is that hiring is genuinely risky.</p>
<p>There are a few different risks tangled up together:</p>
<ul>
<li><strong>A false positive:</strong> you hire the wrong person – someone who quietly corrodes the culture, or simply can’t do the work at the level you need.</li>
<li><strong>A false negative:</strong> you miss someone who would have been wonderful to work with because they were nervous, tired, or just not very good at the peculiar game of interviewing.</li>
<li><strong>A time and energy cost:</strong> you don’t want to waste candidates’ time (or your own), so you compress everything into a small number of calls and hope you can extract enough signal quickly.</li>
</ul>
<p>Most processes try to manage these risks by packing as much psychological signal as possible into a small number of calls. We search for clever, abstract questions that promise to reveal hidden truths. We watch for tiny “red flags” in how someone tells a story, or how fast they answer, and treat those as decisive.</p>
<p>The problem is that this pushes everyone into performance mode. Candidates tell the neatest stories they can. Interviewers over‑index on first impressions. Quiet, thoughtful people who do their best work in writing get compressed into an hour of speaking and are judged on how that felt.</p>
<p>Traditional character questions and gut checks are not inherently bad. There is still something to be said for first impressions and storytelling (<em><a href="https://rogermavity.com/writing/books/lifes-a-pitch/">Life’s a Pitch</a></em> spells this out). The issue is loading those interactions with the entire burden of assessing fit, as if a handful of hours could ever tell you everything about what it will be like to share a mission, backlog, and codebase with someone for years.</p>
<h2>What this looks like in practice</h2>
<p>Take‑home exercises and code samples are one attempt to make hiring more work‑shaped. Even when they’re imperfect, they do at least create shared context: you both arrive with something concrete to look at, discuss, and respond to.</p>
<p>But <em>shared context</em> isn’t the same thing as <em>collaboration</em>. The thing I’m reaching for is real work: a problem over time that gives both sides a chance to show their best.</p>
<p>Here’s one abstract shape of a loop I like:</p>
<ul>
<li><strong>A small artefact, sent ahead of time.</strong> A short PRD, a bug report with logs, an architectural decision that needs revisiting.</li>
<li><strong>Async comments first.</strong> “Leave notes in the doc as if you were on the team.”</li>
<li><strong>A call that welcomes confusion.</strong> The goal isn’t to defend an answer; it’s to explore the problem together.</li>
<li><strong>A short written follow‑up.</strong> “Write down what you think we should do, and what you’re still unsure about.”</li>
</ul>
<blockquote>
<p>I'm working on a follow-up about the specific techniques I've used when building hiring loops. If you want to catch it when it lands, subscribe to my <a href="/rss">RSS feed</a>.</p>
</blockquote>
<p>None of this needs to be long. Out of courtesy you should make sure to share at least a little feedback with candidates on what you noticed at each step.</p>
<p>Many teams already include touch-points like this in their process. The key is to weave a number of these exercises into your loop as a coherent arc, and design them to reflect the collaboration qualities you actually value.</p>
<h2>Make space for arcs of behaviour</h2>
<p>The alternative I see is not to pretend first impressions don’t matter, or to delete interviews entirely. It is to demote them from <em>the whole story</em> to <em>one part of the picture</em>, and to put more weight on short arcs of behaviour that resemble the actual job.</p>
<p>Instead of deciding everything based on a few intense hours, you notice how someone shows up across a few small, work‑like interactions. How they engage with a shared document asynchronously. How they handle ambiguity and confusion in a discovery‑style conversation. How they write up decisions and respond to open questions.</p>
<p>You still pay attention to the feeling of the calls – how it is to talk to this person, whether they listen, whether there is basic ease. However you get to observe those signals in a number of contexts, rather than a single style of performance.</p>
<p>A hiring loop cannot perfectly replicate the job. No process can remove all the uncertainty; probation and real work together are still where you learn the most. But it can be a much better facsimile for what working life will be like together.</p>
<p>Build your hiring process around the collaboration you actually value, and you won’t have to rely on exchanging stories to picture what working together might be like — you can just see it.</p>
]]></content:encoded>
      </item>
<item>
        <title>The Resurgence of the Webmaster</title>
        <link>https://jvg.omg.lol/abc/resurgence-of-the-webmaster</link>
        <description>Somewhere between “contact the webmaster” and “please open a ticket”, we misplaced a particular kind of web magic. I think it’s coming back — and you might already be carrying it.</description>
        <pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate>
        <author>james@greenaway.com (James Greenaway)</author>
        <category domain="https://jvg.omg.lol/abc/tag/web">web</category>
          <category domain="https://jvg.omg.lol/abc/tag/careers">careers</category>
          <category domain="https://jvg.omg.lol/abc/tag/design">design</category>
          <category domain="https://jvg.omg.lol/abc/tag/engineering">engineering</category>
        <guid isPermaLink="true">https://jvg.omg.lol/abc/resurgence-of-the-webmaster</guid>
        
        <content:encoded><![CDATA[<p>If you browsed the web in the late 90s or early 2000s, you’ll remember the term <em>webmaster</em>.</p>
<p>You’d see it in the footer and on 500 pages — “contact the webmaster” — a single person you could email about everything that happened between what the site was meant to achieve and whatever actually showed up on your CRT.</p>
<p>Somewhere along the way, we stopped saying it. The label faded as the web professionalised and platformed itself into something bigger than a handful of hand‑edited pages.</p>
<p>But I’m seeing the shape again: in people who can hold taste and implementation together. And in those who choose to take responsibility for their own corners.</p>
<p>Maybe webmasters are coming back.</p>
<h2>When Nobody Else Knew How to Use the Web</h2>
<p>The job was part sysadmin, part content editor, part designer, part miscellaneous web wizard. One person would keep the server alive, configure Apache, juggle FTP credentials, and hand‑edit a pile of <code>.html</code> files full of inline styles and hard‑coded layout.</p>
<p>They weren’t just keeping pages online. They chose how content was consumed — type, colour, layout — then made it real, wielding nested <code>tables</code> as their weapon.</p>
<p>The early web I remember was rough, chunky, and static: browser‑default fonts, hard‑edged form elements, table borders everywhere, the familiar “under construction” GIF. I’d wait on dial‑up to see pages load in IE6, then put in the effort to decode whatever clunky layout appeared.</p>
<p>For a while, the challenge was making the table cells line up — and hoping it worked in Netscape. Then CSS showed up: the web got more expressive. Perhaps that was the moment the webmaster’s grip started to slip. Remember the Space Jam website? It’s become a signifier for that era — we look at it now and laugh, but it’s a useful reminder that early “web design” mostly meant squeezing something — anything — onto a glowing rectangle with rudimentary tools.</p>
<p>Expectations were low, because the medium was new. Simply having a site online felt like an achievement. And the webmaster wasn’t just “implementing the design”. They were the person holding the whole thing — content, layout, aesthetics, accessibility, compatibility, and keeping the servers humming along.</p>
<p>To date myself, I joke that I’ve been <em>“designing since IE7”</em>. My first website was built with the Lycos page builder, proudly attached to an edgy teenage‑angst <code>.tk</code> domain. Around the same time, my dad’s mate handed me one of his PHP books and warned me not to order too many pizzas or start listening to Metallica.</p>
<p>From the perspective of that teenage boy — sat at a Windows XP computer, peering through the browser window — the webmaster was the mysterious being who seemed to know how the whole contraption stayed alive.</p>
<h2>Absorbed by Web Apps and Roles</h2>
<p>As the web matured, people wanted to <strong>do things</strong> online — and they wanted those experiences to feel intuitive, delightful, beautiful, blazing fast, secure, and reliable.</p>
<p>We didn’t just add a few features. Desktop tasks moved into the browser: spreadsheets for balancing the books, documents for collaborating, workflows that used to live in client apps. We turned websites into applications: front‑ends and databases, APIs and background jobs. Multi‑tenant SaaS deployments that require monitoring, scaling and reliability. The surface area exploded inline with the expectations.</p>
<p>The webmaster didn’t vanish because the role was trivial or misguided; it was gobbled up by the requirements of building and operating modern web software. One person could no longer reasonably understand a business domain, design rich new flows, keep servers healthy, and ship features at a competitive pace.</p>
<p>The old caretaker of a handful of pages suddenly found themselves in a new, foreign world of machines and tools they were never quite designed to tend.</p>
<p>So we pulled the role apart and turned it into an ecosystem: designers, engineers, product people, researchers, architects. We industrialised the path from idea → interface → implementation into something that looked clean on a gantt chart.</p>
<ol>
<li>Product people decide what users do.</li>
<li>Designers make tidy mock‑ups of what users see.</li>
<li>Engineers work through tasks to make the picture real.</li>
</ol>
<p>There’s a comforting clarity there. Phases are bound by role. Inputs and outputs are obvious. You can grade and track work.</p>
<p>But building good software that follows the grain of the medium doesn’t actually work like that. The moment a team tries to make something feel good — not just functionally correct — you loop. You learn things only once code is running. You adjust the design based on what’s possible, what’s legible, what’s accessible, what’s viable inside the business.</p>
<p>And you rewrite the implementation because building the thing changes what “desirable” even means. You learn; the target moves.</p>
<p>And we spent a couple of decades telling ourselves that ecosystem could still be sliced neatly between modes of “designing” and “engineering”.</p>
<h2>Absorbed by Silos</h2>
<p>The story isn’t just about how the web gets built; it’s also about where web life happens, and who owns the walls around it.</p>
<p>In the earlier days, the web was decentralised by default. People ran their own weird little websites on shared hosting, university servers, GeoCities, or a box under your desk. Each site was its own small artefact: somebody’s taste, ability, and curiosity frozen into HTML.</p>
<p>As platforms grew, more of everyday web life moved into central silos. Instead of tending a personal site, you posted into feeds. Having a <em>presence on the web</em> shifted from owning a corner to being a guest in somebody else’s product.</p>
<p>That made sense for a lot of people. It was easier than wrangling FTP, DNS, and CSS. But it also commoditised the experience of the web — and, over time, many of those platforms have “enshittified” the deal: more ads, more tracking, more engagement hacks, and less control.</p>
<p>In response, there’s been a growing counter‑movement — the <a href="https://indieweb.org/">IndieWeb</a>, the “small web”, people once again hosting their own blogs and strange little sites.</p>
<p>That current reopens a question the webmaster once answered: who takes responsibility for having enough of the skills, taste, and patience to build and look after these individual corners of the web?</p>
<h2>The Webmasters Among Us</h2>
<p>Today, the web is in a strange place: both easier and harder to wrangle.</p>
<p>Easier, because mature frameworks, design systems, and hosting let a single person ship something robust without reinventing everything. Harder, because expectations are higher and the constraints are more vast and detailed — the web platform has grown a whole new set of APIs and capabilities.</p>
<p>Even in teams composed of heavily specialised minds, job titles and responsibilities are messy. People bleed over the edges of their boxes all the time, and the reality is usually a spectrum of overlap rather than tidy, isolated roles.</p>
<p>This is why I think <em>High Dynamic Range Developers</em> matter. By “HDR Dev”, I mean people with a wide field of interest and appetite for tackling awkward problems — people who can move between user needs, interface decisions, data, and delivery without panicking.</p>
<p>Within that definition, I see the “Design Engineer”: a web‑native subtype of the HDR Dev who treats the browser as their canvas.</p>
<ul>
<li>They hold a high bar and strong taste for the final experience, not just whether it “works”.</li>
<li>They can empathise with users, and fold that empathy into flows, copy, and constraints.</li>
<li>They can build real, running software quickly — not just mock‑ups.</li>
</ul>
<p>A designer who can code. A coder who can design.</p>
<p>If the original Webmaster was a generalist out of necessity, the Design Engineer is a generalist on purpose — a deliberate, modern answer to the same question: can one person hold enough of the problem, the medium, and the stack to move things forward?</p>
<h2>Why the Resurgence Matters Now</h2>
<p>The resurgence of the webmaster isn’t just nostalgia. It sits at the intersection of a few currents:</p>
<ul>
<li>Teams are slowly warming to broader roles — “full‑stack” became normal; “design engineer” is following, for certain kinds of work.</li>
<li>More people are valuing work that lives on its own sites again, and gravitating towards smaller, personal corners of the web.</li>
<li>The tooling is better than it has ever been, which makes it realistic for one person to hold more of the arc from idea to production.</li>
</ul>
<p>There are still limits. In teams building vast products — with complex domains and acute functionality — quality can become patchy if you spread design and product thinking thinly and nobody tends the overall coherence of the experience. A design engineer in the middle doesn’t replace deep specialists; some organisations genuinely need whole careers of research or security or infrastructure.</p>
<p>Even so, I think the direction of travel is clear. More roles will quietly ask for webmaster‑shaped skills, even if they hide behind other titles. The web isn’t going away any time soon — and as more of our lives happen inside it, the craft of building and tending small, vibrant corners of it matters more, not less.</p>
<h2>An Invitation to the Webmasters in Hiding</h2>
<p>If any of this resonates, you might already be a webmaster in hiding.</p>
<p>Maybe you’re a designer who can’t help but tinker with code, or an engineer who sketches flows, writes copy, and worries about how users respond to an onboarding email. Maybe you’ve been told, explicitly or implicitly, to pick a lane.</p>
<p>I know I’m romanticising the term “webmaster” a little. It’s a functional label — “who looks after this site?”. One of the many Tim Berners‑Lee’s little offerings to the world wide web. “Design engineer” is one of the labels that fits this shape today, and I like it, but I still have a soft spot for “developer” in its truest sense: someone who develops ideas into outcomes — messy, uncertain, human outcomes.</p>
<p>For me, arguing for the resurgence of the webmaster is mostly about permission. Permission to stop apologising for not fitting cleanly into “designer” or “developer” boxes. Permission to treat the web as a full‑stack medium to be designed for, not just a deployment target. And permission to be proud of having lots of quills for your bow, because someone still has to hold the whole thing in their head.</p>
<p>Calling myself a webmaster makes me feel quietly powerful, in all honesty. It probably doesn’t make sense for that title to show up on my LinkedIn, but it fits perfectly on my own weird little corner of the web — ideally while I eat pizza and listen to Metallica.</p>
]]></content:encoded>
      </item>
  </channel>
</rss>