In October, I responded to Reboot’s manifesto, “Take Back the Future.”, which calls upon technologists to pursue and leverage their unique agency in shaping technology, which has an outsized impact on the future of our livelihoods, to advocate for the people who have less agency and push for a brighter, more equal future. Here’s a snippet from my response:
Rather than giving cake to the masses, we must give them the recipe. I demand a future where the magic is ours, the people’s rather than just an elite class of wizards and faceless entities. The software we interact with every day should not only allow, but encourage us us to make it our own: to create our thoughts, art, and experiments rather than merely consume SEO-juiced content; to express our full selves rather than settling for uniform cookie-cutter molds; to play outside the box and in between the lines and beyond the edges of normality rather than being constrained within the rules of the status quo.
In this piece, I explore what it takes to reclaim the magic, and give everyone the power to change the technology that they use. An abridged version was also published in Reboot’s newsletter, which includes a small interview at the end.
The magic of technology
When humans first discovered fire, they thought it was a gift from the gods; only now do we understand the underlying processes that produce it. Fire was so universally useful then that people didn’t care how it worked or where it came from. It was easier to think of it as magic and focus on using its powers to achieve your desires rather than question its mechanics.
Computers, software, and the Internet are the same. Built on complex foundations, they are phenomena that only an elite set of privileged individuals have the ability to shape. For the rest, they have no choice but to take technology for granted, leveraging it for practical value. As long as technology is magical but inaccessible, there will be a power split between technologists and non-technologists—a divide between those with agency and those without.
Agency, the freedom that arises from the ability to exert influence over something commonly thought of as uncontrollable, isn’t limited to what people commonly think of as “software development.” Making a budgeting spreadsheet in Excel, combining browser extensions to make the web more readable, and even creating a fun art piece on your TI-86 are all like creating and designing an app, software tailored to your specific needs. Though these moments are rare among our daily software, many non-technologists have tasted this freedom, and once one gets a taste, they start to expect it in every piece of technology.
Many tools and movements, like the right to repair, the right to own your data, and no-code movement, advocate for more user agency in technology, promoting the belief that technology should be viewed as something commonplace, like a household object, rather than personalized ads and experiences from companies. For example, Situated Software, software that is “personal from its inception,” and end-user programming, paint visions of software tailored to people’s specific personal needs by those who know those needs best (ourselves), so that anyone can seize the magic and change the technology they rely on.
How can software help break down this divide of power and give everyone the ability to wield magic?
Good software democratizes agency
To create good software, the kind that empowers users to take control, we can leverage malleable systems, playful environments, fast feedback loops, and data interoperability.
Instead of cookie-cutter UI and limited data retrieval, malleable systems empower individuals to tinker with and mold their software into the shape that’s perfect for them.
For example, Coda provides access to the power of a database, leveraging the familiar feel of a “document” to introduce building blocks that grow to power an entire app. What starts as a bulleted list can become a meeting agenda with an interactive poll which can transform into a customized marketing landing page that captures sign up information. The same document can flex to fit the evolving needs of its makers, who have full creative control.
Rather than designing specific flows for one-off use cases, these tools focus on providing building blocks—software Legos—which can be combined together into a custom masterpiece. Rather than forcing users into rigid flows designed by someone else, these tools flip the power dynamic by giving individuals the power to craft their own software at a more approachable entry than writing code. These tools are only the start of how far technology can go in enabling agency in every moment, and I’m excited to see how this space dramatically expands the set of people who can shape technology in the long term.1
In most agency-rich tools, the learning curve for understanding the fundamental concepts needed for making something of one’s own can be steep. It’s important to make the learning fun rather than excruciating: a new game rather than assigned homework.
Some of my favorite examples of playful software solve boring utilitarian needs by embedding fun into the core experience, rewarding experimentation and learning through doing.
For example, Figma provides simple operations around aligning shapes and vectors, and as a result, you see people creating everything from digital art pieces to tic tac toe.
Sprout is a new video conferencing tool that provides a space to hang out in and cultivate with your ideas and personality, giving life to a normally soul-sucking experience.
mmm.page is a new website builder that aims to bring back the personality of websites that harkens back to Geocities, providing easy GIFs, colored text blocks, and links that can be drag-and-dropped to create a new piece of digital real estate.
These tools empower agency by providing a few basic interactions that fit together and are interesting to combine into new forms. Using these tools doesn’t feel like work—they feel like goofing around with friends or exploring a new video game.
Fast feedback loops
At the inception of ideas, harnessing all of the creative momentum is essential to make them reality. Any delay in how actions affect the end output and how much setup a working foundation requires can derail that pure creative desire. Fast feedback loops require being responsive to updating on changes and streamlining any complexity secondary to the core creative effort.
Document tools, like those mentioned above, provide “databases” that update on response without requiring complex syntax or proper database management. “Code-easier” tools like Glitch and Replit hide all the complexities around running a server and serving a web page through a live preview of your code. And No-code tools like Bubble aim to give non-technologists the full power of creating an app with visual drag + drop editors.
Interoperability refers to the ability to transfer data between apps seamlessly. Practically, this means having easy and comprehensive flows for importing and exporting data into and out of other apps. A fully interoperable world requires the implementation of common data standards for apps or open data models, but the question remains of how we might transition between most current data, held in proprietary, company-guarded data moats, to a more open, community-driven world. Craft built their data model on top of common standards and works to ensure the exported data is as useful as possible in other app contexts. Ink and Switch, a research lab exploring how computers can aid humans, has advocated for local-first software to ensure individual ownership of data outside of centralized company servers.
In a world of fully interoperable software, new apps can quickly have immediate value because individuals can bring data in from existing apps. This immediate access eliminates the moat that incumbent software has over new creations—multiplying the effectiveness of individual agency by giving full control over produced data.
Why personal agency?
As we navigate our digital worlds, we’re subjected to software that treats us as subjects to be converted into revenue. Tech companies and hungry apps crave us for our attention rather than our being—our acts rather than our humanity. What if we inverted that power dynamic and gave individuals and communities the power to shape their software as they see fit?
Imagine we’ve achieved a world where all of our software embodies the aspects outlined above. The software we use daily empowers us with the agency to create our own tools, mold our own experiences, and transport our own data. Why does personal agency matter?
In the context of software, agency comes down to whether someone feels in control and powerful when they’re using a piece of software, rather than coerced and scared. It’s the difference between wanting to continue exploring rather than dreading continued use.
Agency shifts the balance of power—from software engineer-fueled corporations and startups to everyday communities and neighbors. In the ideal world, individuals will not only have the power to reject agency-deficient and agency-depriving environments, like those with dark design patterns, misaligned profit models, and pyramid scheme-esque incentives; they will also be responsible for using that power towards a future they want to see.
Still, even with agencyful tools, we might still be relying on companies, often profit-driven and outside of our control. All the startups in the examples I gave above have made incredible innovative strides in giving agency to users, but the evil corporations of today were once innocent too. Ideally, these tools should be structurally accountable to the broader community while maintaining the momentum of innovation.
How we get there is another essay entirely. Perhaps the tools of the future are all open-source, collectively maintained, and led by trusted full-time individuals, such that anyone has the freedom to fork their own version while the broader community can collectively decide future directions. Many successful projects for important tooling like languages and infrastructure already follow this model; can we adapt those for the tools we use every day?
Towards everyday magic
As software powers more of how we think, love, and live, it becomes increasingly crucial to empower individuals with agency in the technology they rely upon every day.
As technologists, we have the privilege of being able to demystify and change how this magic operates and manifests itself. Our responsibility to our communities is to share this power with the end-users of our creations, shifting power from faceless companies to passionate humans. The magic is in our hands, and we must set it free.
Can we build towards a world where all technology inspires and gives hope and calls us in? Many have sat by while crucial software deprives people of agency. Instead, let’s fight for a future where all are wizards, magic is as common as the air we breathe, and it’s second nature for people to shape it into something personally meaningful.
Thanks to Jessica Dai for the thorough and precise editing, and Avery Jordan, Jamie Wong, Rex Ledesma, and Ameesh Shah for giving feedback on early drafts of this article.
- Ink and Switch is a research lab that has done a lot of research into how to make technology more compatible with humans, and they have a great podcast called Metamuse with people who work towards more agencyful apps.
- My friend Helena Jaramillo has a great poem about what tech can feel like if everyone had more control over its experience.
- Bret Victor has done a lot of thinking in this space and is leading Dynamicland which was mentioned above
- Molly Mieke is starting Moth Minds, a company to enable anyone to start their own grants program to catalyze agency for “moths,” those who flutter around the edges of the light.
- Interdependence is a project that led a community effort to rewrite the Declaration for the Independence of Cyberspace to be community-oriented and inclusive, for anyone to sign and fork.
- A non-comprehensive list of people whose works I am inspired by in this space: Andy Matuschak, Geoffrey Litt, Linus Lee, Weiwei Xu, Amelia Wattenberger, May-Li, Tyler Angert, Jason Yuan, and Jordan Singer.
Dynamicland is a non-profit research project working towards a 100-year vision around making everyday computing a reality by making a computing operating system that anyone can change using their physical space. ↩︎