{
  "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"
}