Today marks the 8th week in a row I’ve written an update. If you haven’t read the past updates, they are available online here.
In my first weekly update, I reflected on these weekly update as a means of “working out loud”:
One experiment is a weekly update. Every Monday for the next 8 weeks, with the possible exception of holidays, I’m going to write a short update to you, dear proxy teammate. I’ll talk about what I’m working on, what I’m reading and thinking about, and link to stuff I’ve made over the past week. Think of this like an asynchronous Monday morning standup.
One positive result of this 8-week experiment was that I developed a better understanding of why I write weekly updates: accountability and clarity.
When I was in grad school for computer science, I met with my research advisor every week. There was one catch: I had to bring something in writing to discuss. No writing, no meeting.
First, accountability. Committing to write something for someone else is a great accountability hack and just like in grad school, these weekly updates have served that purpose. At least once a week, I will think about what I’m thinking about, and try to turn that into something intelligible for another person. Knowing that someone will be on the other end of this email, expecting to receive something from me each week, is a great forcing function. (Interestingly, it works even if that expectation is false!) Every week, without fail, also helps: I managed to write something even while on vacation this past month! Not having to think “will I write something this week or not?” really simplifies my decision-making.
Second, clarity. There’s a certain ruthlessness to writing down our thoughts. Writing permits no illusions of clarity. It lays bare our misunderstandings. While this weekly update began as “what I’ve been up to”, I’m finding more value in using this as an opportunity to reflect broadly on the past week and summarize and synthesize my thinking. In that way, these notes are becoming less a “weekly update” and more of “research summary.” “What I did last week” is not the interesting thing, but rather “how has my thinking progressed?”
To quote Andy, “what matters is better thinking”, and this weekly email has undoubtedly helped me think better.
So, I’ve decided I’m going to continue these weekly updates, or rather, research summaries. (If you have a better name, please suggest something: I suck at naming things.)
And if you have thoughts or questions based on my summary, just hit reply: a conversation is just an email away!
In previous updates, I’ve titled this section “Things that caught my eye.” While that was strictly true, it doesn’t fully capture why I chose specific things to share.
The links I share each week represent glimpses of a vision of what the future of computing can become. A larger, coherent, holistic vision looms behind each of these projects, papers, videos, and whatnot. One day I may attempt a straightforward description of this computing environment of the future, but in the meantime I’ll share these glimpses each week and try to spell out why each of these things matters, within the context of the future that I want to live in.
Codex is a machine learning model that can generate code from natural language. If you haven’t seen what systems of this type are capable of, this live, recorded demo of Codex is a good starting point. It’s already powering GitHub’s Copilot, which I’ve been using the last few weeks and it’s delightful.
Why this matters
The future of computing is conversational. The computer will become a full participant in conversations that I’m having with others and I will regularly converse with my computer as I do my work. By conversation, I don’t mean that I will only speak out loud using my voice, but rather that the computer will react and respond to me, will have a reasonable understanding of next steps, make suggestions, and bring ideas and resources to the table. “Conversation” is a useful interaction paradigm for thinking about the future of computing. Codex (and models like it) are important because they allow us to talk to the computer about the one thing that is entirely unique to the computer: computer programs.
Codespaces is a full development environment, in the cloud. It’s been in beta for a while, but it’s now available to everyone. If you want to try it out, just browse to any repo on GitHub and type
Why this matters
The future computing environment will always be running, just like SmallTalk. There won’t be the concept of writing code in a file and then running it. Code that isn’t running will seem “dead.” Instead, computing systems will be continually running and we’ll work inside of those live systems. That doesn’t mean that we’ll always be “editing in production.” Edits will instead instantly produce a “branch system” that is identical to the production system, with the exception of the changes, and is available to others. Cloud-based development environments will be essential as we’ll need to “edit inside the server.”
Also, Codespaces lays the groundwork for collaborative editing, distributing compute from localhost to appropriate cloud services, and numerous other advances I’d like to see.
Last Friday, I randomly tweeted about my desire to take a course on the history of computing while reflecting on the future of computing. I want to understand the principles embodied in landmark computing systems and build new systems that embody those principles. Apparently, quite a few other people would be interested in this as well, so I’ve decided I’m going to explore designing the course. A few people have reached out to offer to help. If you’re interested in getting involved, please let me know!
Why this matters
As Adam Wiggins puts it, the field of computing has
a willful disregard of history, … reinventing everything, not using scholarship of the past to learn what’s worked and what hasn’t, the way any other field would.
There is a grand vision for what’s possible with computers, but most people who work in tech have never heard of it. My hope is to basically perform inception on the whole industry such that we have a single shared vision, informed by the visionary work of the early years, and bringing those principles and ideas to bear on a whole new generation of computing systems. But ultimately, the industry must behold the vision. Putting together a resource like this course could make it practical to scale the vision.