Unlimited energy, unlimited intelligence
The world has changed fundamentally in the last few years. We've spent countless hours solving interface design problems that turned out to just be intelligence problems.
Over the last few months, I've spent a lot of my time imagining what the future of design and research is going to look like. This page serves as a working pad for some thoughts I've had along these lines and my experiments. This shouldn't be seen as 'predictions for the future', but are instead some things that I am most excited to work on (or am building already).
As intelligence gets cheaper and new capabilities emerge, the experiences we can create will keep changing. We've been given an entirely new primitive to play with—and I'm excited to apply these new unlocks towards making computing more joyous and accessible to entirely new categories of people.
Ever since Vannevar Bush created the Differential Analyzer in 1928, we've been on an endless quest to create more powerful systems that are more capable and efficient. But crucially—we've always had to change the way we represent thoughts or translate them in order to be able to use machines. We even have a term for it—programming.
Input shapes
Generally useful intelligence will mark the end of humans modifying their thought processes to fit a certain input shape. Using technology should feel natural, and this means that the adaptations will come from the tool instead of the person.
I think we're moving towards a future where we think and execute tasks in a more natural way, handing off translation to intelligent systems. Requiring instructions and guides to learn how to use tools and operate machines is a dated concept that currently locks out many people in society from being able to interface with and access technology.
In Summer 2022, I worked extensively with patients suffering from neurodegenerative diseases, and one of the things that stuck with me was how crippling even the best interface design and accessibility tools can be when they're not tailored specifically for you. Not even Apple's (exceptional) accessibility features really fill the gap. In one interaction, I remember watching as someone with Parkinson's used his iPhone to type—he'd stabilize his arm on the armrest and push the screen into his hand instead of typing with his thumbs. Trying to account for all these pecularities in how people interact with their devices is a monumental task—if we could open up more modalities, we'd make technology much more accessible.
This is also the reason that most productivity apps aren't successful—trying to force your thought patterns into a mould created by someone else never feels right, and everyone drifts back to the tool that they can mould the best (often pen and paper) or endlessly hop between tools depending on the need for that week.
There's a new generation of productivity software that will be unlocked and birthed when the input shape of tool adapts itself to an individual's thought patterns.
A great example of this is a TV remote. Over the last three decades, thousands of hours of design and engineering time have been spent in perfecting layouts, features and ergonomics of a remote. And yet, my 80 year old grandmother has no idea how to operate any of them—we've locked out swathes of our population from advancements in technology because they are illegible to them.
Signal and noise
So what does the future of bespoke devices look like? Visual interfaces have always served as the bridge to allow us to communicate requirements to machines. In a world where the system understands intent and context, it is entirely possible that visual interfaces become obsolete.
Complex tasks will continue to require complex interfaces, but complexity can be reactive. With LLMs, we've leapfrogged a few generations of marginal improvements to input modalities. For many reasons, but mainly simplicity, we've always had one, or maybe *two* modalities through which we control products. This is going to change, and we'll be able to use devices in varied ways based on the occasion.
In a conversation I had a few months ago, someone pointed out that it was unlikely that we would be talking to say, a thermostat at any point in the future. I agree—generally intelligent devices will not demand our attention, but will instead be more autonomous and capable.
What is signal to some people is noise to others and what is signal in a certain workflows is noise in others. Complexity should be an option, not the norm. There are times when granular controls are beneficial (like in a studio environment) and times when simplicity is better (such as capturing a once-in-a-lifetime moment on your camera).
As it gets cheaper to create multimodal interfaces, the barrier to creating these interfaces will reduce and we'll have the flexibility to choose between the two.
Malleable knowledge
Malleable knowledge is the topic I’ve spent a lot of time thinking about these past few months. We've failed to really take advantage of electronic publication, and today it has very few advantages over traditional mediums.
This got me thinking—what would the best digital reading experience look like?
I tend to have many side projects, and often over the course of some project, I find myself studying texts targeted towards practitioners in a particular field. These texts often assume a great deal of pre–existing domain knowledge, which slows me down when reading a text that makes several 'leaps' across sentences and paragraphs.
I've been playing with the idea of allowing users to load up an epub and exploring these leaps between sentences. A prototype I made allowed you to click and expand these leaps between sentences.
Another interesting avenue I explored here was making the highlight experience more rewarding. At present, highlights are something that I rarely return to—they have limited utility other than enabling you to refresh your memory. I've however, read many works that had opposing ideologies and views on the world, or that have interesting connections with some material that I might have read previously, so I created a reader experience that allows my library reader to surface views from other material that I've read.
Prototypes of one of my sketches on malleable knowledge—exploring knowledge leaps.
Guardrails
Guardrails are a powerful class of tools that reduce the degrees of freedom of a system. Think of a hack squat—you push the weight along a rail, eliminating instability that you might introduce with freeweight exercises. This allows you to focus your energy on the most valuable portions of the task instead of dynamically balancing a dozen variables.
If you think about it, we've already had these guardrails in our products for quite a while now—rulers, snaps and spellchecks. But creating guardrails for advanced products requires contextual understanding. In the same ways that typechecking helps ensure that your code is generally coherent and saves you time chasing down errors later, building better guardrails into all our software will make iteration speeds faster and let you can focus on doing the work that matters.
Here's one example—you're designing your product in a tool like Figma, except that guardrails with contextual understanding are able to catch all the edge cases—that you've not accounted for what happens when an input is not provided, that some elements are going to wrap off the screen or that there's no forgiveness for when a user exits a critical flow in between.
This is a super fun avenue that I'm hoping to work on more in the future.
Dynamic interfaces
As intelligent products become the norm, we’re going to start seeing a new generation of generative UI. I'm particularly interested in composable interfaces, that adapt to the user’s knowledge level and intent. We sometimes have people with whom we just 'click'—and I think it's sad that this feeling is so rare with computer systems.
It's extremely hard to do this without destroying usability—people are quite used to interfaces consistently behaving a particular way.
Here’s one way I’ve been using it—sourcing vendors for components and processes in the manufacturing cycle who are of quality is an incredibly hard problem. If you want to locate a vendor who can help with 'Type III anodization', you'd either begin by calling up friends or trawling Google Maps for listings that have positive reviews.
However, there are three critical problems:
Reviews have always been a bad proxy for quality, and are from a bygone age when dealing with large quantities of textual data was difficult. Today, we can just go in, record a thirty minute transcript with the vendor and obtain a much more complete image
Language barriers in India make it impossible for you to interact with these vendors and know if they have exactly what you want. Language models completely solve this.
Vendors are thoroughly frustrated with LARPers and hobbyists reaching out to them, who are completely unaware of what an engineering drawing looks like. By modifying depth to match the knowledge level of users, we can ensure that only high quality leads make it through to vendors.
At Sourcemap, we're experimenting heavily with fluid interfaces to aid in discovery and provide the highest quality results for hardware vendors. Using language models allows us to record interviews in the native language of the vendors and render it back in the preference of the user, query large interview transcripts to check 'vibe' and even tailor our outputs to the user's knowledge level are just some of the first things we've thought of to create more smart tooling.
A very work in progress screen from Sourcemap, chatting with vendor transcripts in any language.
Runners
I've also become interested in the possibility of having small agents or runners execute and return small tasks on your behalf. These aren't just tasks that are dreary—they could also be steps in between that we delegate to speed up iteration times.
Many tasks we perform daily have some degree of repetitiveness to them that can be automated away. I often have work that requires me to convert files from one format to another, parse or analyze some data, where I'm only concerned with the result, or perform some small automation like scraping multiple sites for information—often while I'm already busy doing another task. Instead of struggling to find he perfect tool to help with your work, you could just write a little script to handle most of this work. Run this script in a REPL, and return the results to get a personalized processing pipeline!
What next?
This page is a high level summary of some things I'm interested in building—if this seems exciting, reach out and let's build together!