Everyone Builds Software

So let's get more people started by building toys together

In Who Builds Software Matters I observed that AI would enable a new type of builder. People who are not traditionally software builders would now be creating software. And the resulting software would be much more personalized. But they would do so in tighter collaboration with machines and with each other.
I received a lot of follow-up questions about what I actually had in mind for this kind of collaboration. So I wanted to present some specific examples to illustrate what I’m imagining.

An under-explored niche

I’m curious about an underexplored niche to start: user-generated games. Games are often the gateway drug to programming. They were for me back in the 1980’s. It’s as true for kids today who spend hours modding Minecraft or scripting Roblox. Roughly half the world plays video games in one form or another. Everyone could imagine some change to a game they love. We can make more personalized, customized games. Take your favorite game and remix it with a new color-pallete, theme, skin, or soundtrack. Now you’ve created something.

End-user programming and sharing

LLMs for generating software like this are raw today, but the pace of improvement is quick. Admittedly, the current workflows are poor. I often use LLMs to help me with basic coding tasks (e.g. when I’d like to bang out a simple python script). But there’s no way to generate and run a python script in-line with the code generation tool. So I end up copying and pasting the generated script into vi and running it in a local terminal session on MacOS. I’m still acting more like a software developer than an end user. Although I can run the software on my localhost, I can’t share a link to let other people run the same software.
Now imagine such a simplified tool existed. I would love to use it to generate and share little scripts/tools I make which I find useful. But I could also use it to generate simple user-generated games. I could make games hyper-customized to my own interests. And I would want to share the resulting game I built with other people. I could ask an LLM to generate a crossword puzzle that would be relevant to people living in Mammoth Lakes, CA. My family spends a lot of time in Mammoth Lakes and we know a lot of people in town who would find it fun to play. It’s very personalized, but very niche. Tiny TAM. Software of the future will look more like this than some monolithic payroll service built for everyone. So if you think today’s software market is big I’ve got news: you ain't seen nothin' yet!
So I make a hyper-personalized crossword puzzle and share it with friends in the town of Mammoth Lakes, CA. You should be able to play by clicking a link on the web. Then you may choose to remix/fork/clone and make your own customization. Maybe you want to make one for people who live in Miami. Maybe you want to add timers for the playing of each board. Maybe you want a leaderboard of all players of your puzzle. Dream it up and make it so. Copy someone else’s work and improve it.

Remix, Share, Inspire

It's an idea whose time has come: can we make a platform for creating software by explaining the ideas in our heads? Imagine an end user chat service that interviews you about your requirements. Then it builds and deploys the software product you’re imagining as a link on the web.
You can share what you built. Other people can access it on the web. Now the magic: they can use a similar interactive process to remix the software you deployed.
This is the way open source software developers work using tools like Github today. But software developers are a tiny niche of all people. And open source software developers are a tiny niche of software developers. This pattern is how 8 billion software creators will create and collaborate. Discover an idea. Explain what you want. Deploy it. Share it. Inspire others. Create, remix, inspire. It's gonna be a wild future!
If you're building a project like this, I’m happy to play with early prototypes to give feedback.
I think you've touched on one of the two most interesting things in the world (the other is btc, of course) -- what happens when the bar to develop software becomes 90% lower? What kind of software do we get that we didn't have before, and what are the knock-on effects on society?
Now imagine the intersection of that with btc. Given that the people who need it most are the ones least likely to have the software skills to make things with it, the implications are hard to wrap your mind around.
reply
agreed, the intersection of this idea with btc is profound.
this idea makes software (probably the most valuable/scalable thing in the world today?) abundant and cheap at the same time as digital scarcity is emerging to provide more signal about what might be worth our time to pay attention to
the combination is far more interesting than either by itself
reply
You may enjoy this if you haven't seen it before. Tons of food for thought on this general vibe / idea.
reply
thanks for sharing! never seen this. looks great. wish I could listen to it as a pod/audio track somewhere, but I can't find anything like that
reply
I'd love an audio version as well. Is there an easy to use bot that can reverse-transcribe and turn into a pod? @MerryOscar
reply
this idea makes software (probably the most valuable/scalable thing in the world today?)
i think have read somewhere that the biggest advantage of tech companies is that all the software they write has basically 0 variable costs in the long run.
you can write code once (paying developers a fixed salary), and then "sell it" an infinite amount of times for free.
like SN: we're just writing code but the code that @k00b wrote 2 years ago is probably still running in here somewhere, doing its job forever or until it got replaced by something better.
reply
yup, that's exactly why software is so valuable. write once, sell infinite.
the challenge with a lot of software businesses is that there's still a cost to sell the software. you need to own a channel to the customer (sales people, email distribution list, brand awareness, etc.). So while the software could be sold infinite times you still have to find/convince customers to buy it.
fortunately @k00b doesn't really have much cost of sales since we're just a community creating together so it can grow organically. So something he built 2 years ago can still run and continue to serve us indefinitely.
reply
what happens when the bar to develop software becomes 90% lower? What kind of software do we get
we will probably get even more insecure code
that we didn't have before
oh, then nvm, since we already have insecure code. mhh, maybe more code for automation? like more FOSS code for smart homes.
and what are the knock-on effects on society?
mhh, maybe people will not only grow their own food but also "grow" their own code? not sure what exactly that would mean though.
reply
kind of kidding, but there's some truth to it? ;)
I wonder if security can be more of a default if we build the right atomic blocks in code-gen. We're not there today, but I don't see why this future couldn't be built?
I like the idea of "grow your own code". It's kind of a similar energy. The mass-market, mass-produced stuff comes with a lot of tradeoffs. Historically we've been okay accepting these tradeoffs, because it was such a step-change improvement to even have software. But now/soon if we can have cheap/quality software we can have more personalized/bespoke experiences.
reply
I wonder if security can be more of a default if we build the right atomic blocks in code-gen. We're not there today, but I don't see why this future couldn't be built?
I know this sounds like the way things should be built.
But the problem isn't why it couldn't be built. The problem is: Should we build it?
Do you really want to have atomic blocks on which we build everything on top?
Only to find out after years that there was a critical bug for years (see heartbleed iirc) in some absolutely critical code block that not enough people cared to review because everyone was like: surely, enough other people are going to review it, it's such important code!
And then everything is vulnerable at once. Reading about the history of heartbleed scared me so much, I literally have no idea how we even made it so far, lol
So I would rather not see such a future unless we really can proof that code is secure. But I don't see how.
You can imagine this problem to be related to bitcoin. Everything we build on top of bitcoin will fail if bitcoin fails.
Do we want to build our whole society the same way?
I am not sure yet, lol
reply
After writing this response, I realized we don't have ~security yet and I posted a video about heartbleed there now haha
reply
Games are often the gateway drug to programming.
When you understand gaming, building softwares becomes more easier
reply
Making games teaches you something really important you can apply to any type of software, responsiveness and simplicity.
Games must be fast and responsive at all times to be considered good, a laggy game is bad, but often a slow and complicated tool seems fine to most developers, this thinking can crush you as your project scale.
Making a game involves having many intertwined systems that must work together in real time, this is where writing simpler code with less, but well thought, abstractions help immensely, the same goes for other type of software.
At my company, I train my interns by building games as first projects for those reason, they need to plan complex systems visually and can easily imagine the outcome, they have immediate feedback on the code they write and, last but not least, they have fun as the're able to craft games they enjoyed since childhood.
reply
exactly
also, the planning/logic/complexity required to make a game somewhat fun requires a tremendous amount of understanding of the entire product. you can't just push messy details into another sub-system. you have to have a unified picture of what you want to deliver. great skills for any kind of software building
reply
yea, just thinking about how games work builds the best muscles. things like SaaS software are simple by comparison
reply
Today, everybody with a keyboard and internet connection thinks, she can code. Play with toys. Play with AI. That's nice. To do more serious stuff like maintaining money, study you must a lot. And some experienced supervisors are important too. Github is full of unmaintained bloat because everybody can share. AI today is a stupid advisor that looks intelligent. It is not, it just looks that way. Be careful. Be smart ;).
reply
I'm impressed by how good LLMs are at writing code, compared to how poor they are at some other tasks. Perhaps software dev is more pattern- (and thus knowledge-) based and less creative than many believe. And much of it is boilerplate after all.
reply
CCP (cut-copy-paste) engineering has been a thing -- especially with the rise of StackOverflow.
Code is structured and generates very predictable outputs so LLMs will probably always be ahead of expressing ideas in messy languages like English.
reply
You can do this today, the tools are here already.
GitHub Copilot lets you use AI embedded in your IDE. It works seamlessly.
You can write a full game and run it on the web with WebAssembly. It lets you port C++ code to be run in the web.
You can then share your game online.
reply
sure, i can do that. but game changes when my wife can. she’s not technical
reply
And then, little by little, your wife transforms into technical. (Maybe.) If you can grow actual technical capacity by a series of tiny baby steps, maybe that changes how people approach technology and how they inhabit the world.
Or maybe not. It's a hypothesis.
reply
possible
I suspect the tools continue to become more abstract and higher leverage and accessible to more people. Someone like my wife who we wouldn't describe as technical might be able to design software that she wants without touching any code. So there's a process of expressing a thought in more structured specification, but she probably never has to actually touch code to achieve a lot of what would require a developer today. Developers of today might uplevel and mostly focus on building/improving the systems she's using.
It's a new form of being technical. The same way I can write software, but never think about flipping electrical signals in silicon.
reply