{
"path": "/3mfk6obnxqk2l",
"site": "at://did:plc:aurnkk6uy6axy66uqaq6dqy6/site.standard.publication/3m6gjuzizxc27",
"tags": [],
"$type": "site.standard.document",
"title": "Software 2027",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019c8b3c-afc0-7004-9af9-3e4e38d31caf",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreibbkjkr2qhlt7iuxt5jkdymesne4l4eaizjsj4af5t6foiyckb6v4"
},
"mimeType": "image/png",
"size": 180001
},
"aspectRatio": {
"width": 2444,
"height": 1060
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "What it feels like to code in 2026"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I am horse trainer with a magic wand, and the only limit for how fast I can make my horse go is my own imagination."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "So..."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I've designed bespoke electrical compression horseshoes that both propel the horse forward and recharge when the horse slows down"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I have my horse on horse-sized doses of all the peptides Brian Johnson takes, plus a few experimental ones"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I'm prototyping an F1-style back wing to generate downforce. The computer simulations show there's gains to be had, but Claude politely refuses when I ask how to attach it to the horse's ass. "
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 85,
"byteStart": 80
},
"features": [
{
"uri": "https://x.com",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "And oh by the way if the above things sound crazy? Check out #fastHorseIdeas on x.com where people are doing things even I (a pretty out-there horse trainer) find offensive and shocking...but also might add to my workflow if enough people keep talking about them"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "User Assumptions for a world with no LLMs (or 2024-era LLMs) "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 94,
"byteStart": 89
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "One genuine surprise of becoming a professional software developer was learning just how dumb we assume that average user is. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 286,
"byteStart": 277
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Never show an error message beyond \"Go talk to your administrator/support!\" Tool tips. A pop-up modal telling the user how to use tool tips. And make that button bigger! Make it flash, too. Not so much that it could trigger a seizure...whatever that threshold is let's aim for riiiight under it. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "User Assumptions in 2027"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "How close are we to a world where instead of assuming our user is a country bumpkin chewing on a long piece of hay staring at an old beige CRT monitor, and start assuming that our user has: "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "a frontier LLM co-pilot with access to our app's excellent documentation + OS-level stuff so it can take screenshots & read error reports without any help from the user"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "a PDS (or equivalent) with basic table-stakes data we can request access to read/write"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "something like wispr-flow so they can quickly & informally throw unstructured data back at our app"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "We can still picture them as the country bumpkin. They still won't know what a cache is. But with those three things, what kinds of software could we make? Would it even look anything like software? "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "A wild guess for Software 2027: What's halfway between a protocol and an app?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Notice the banner image for this blog post. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 147,
"byteStart": 139
},
"features": [
{
"uri": "https://gemini.google.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I did not generate the image of the horse for you. Why? Because your ten fingers work just as well as mine. Do you want to see that horse? Go nuts!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 82,
"byteStart": 77
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Once I generate that (cursed) image, that's it. That's the horse. That's the only horse there can be. But if I gently point out the possibility of the horse...the ball is in your court. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 98,
"byteStart": 22
},
"features": [
{
"uri": "https://jakesimonds.leaflet.pub/3meocwetdh22v",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 197,
"byteStart": 191
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "I keep think about an interaction I had at a meet up where a guy showed me something he vibe coded. A lot of bad LLM integrations (including thing I've made!) fall into a category where they limit what you can do without giving you enough benefit to compensate for that loss of control. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 14
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Sometimes you absolutely want to trade some control for convenience/guidance. But there should always be a reason. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Good Software in 2027 is going to have to pass the test of, why can't I just have Claude do this instead? "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 104,
"byteStart": 84
},
"features": [
{
"uri": "https://ghuntley.com/libraries/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "And so I wonder...if what we (humans) build will be more like the ffmpegs/ATProtos. Kinda like libraries, but not optimized to aid human coders. Optimized instead for pointing workflows towards specific classes of solutions. We still make the lego blocks. Claude builds the tower. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Just a wild ass guess. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
}
]
}
]
},
"description": "speculation and horse-car analogies",
"publishedAt": "2026-02-23T17:32:36.445Z"
}