It's been a fun year working on ways to give end users more agency over their software 🤓

Reflecting on 2020, 3 ideas I'm excited about in this space:

⚙️ Browser extensions: still underrated
🧮 Spreadsheets in more places
🔃 Interop is everything

Details in thread:
1) ⚙️ Browser extensions

One of the main computing platforms of our time allows us to install wide-ranging modifications. This is a big deal and we don't talk enough about it.

I think we are just scratching the surface of what is possible with browser extensions.
Recently I've been hacking on a Twitter extension, and it's reminded me how awesome extensions are.

It feels SO empowering! I just spent a few days adding features I wanted for myself, and now can ship them for others to use too ☺️

Still, there's a big problem w/ extensions: how damn hard it is to make them. Requires web dev skills, and tricky integration work. Programmer Elite territory.

In 2019, I wrote about this problem and started thinking about it a lot:…
Can you imagine a world where building a "browser extension" was just a routine part of using the web?

Doesn't have to be majority of people doing it. If even 10% of web users made extensions, there would be a total explosion of creativity!!!

Which brings me to the next point:
2) 🧮 Spreadsheets everywhere

One of the main prompts I explored this year was:

"What if you could build a browser extension in a spreadsheet?" 🤔

Built a prototype called Wildcard, turned out the idea had some legs.
Had a lot of fun exploring the limits of this model. Turns out a basic formula language and simple sorting operators can take you reasonably far:

I had hoped to ship a nice usable beta this year, but alas didn't achieve that goal. Making a research prototype "real" is hard work, not incentivized by academia.

But, still working w/ some other students to add some exciting new features to Wildcard, so stay tuned...
And by the way, there is still so room to apply the spreadsheet model in many other contexts.

This has many potential meanings depending on what parts of spreadsheets you choose to keep/discard. Airtable & cousins are just one model to follow...
3) 🔃 Interop is everything

I'm increasingly convinced that interoperability is one of the great unsolved problems in software customization.

So much software today is networked. Agency and choice is great, but my app still needs to talk to your app somehow.
Open standards are great. We shouldn't take for granted our ability to choose our preferred email clients--who knows how long that will last.

But open standards move slowly and often lose to closed competitors. Also, sometimes hard to flexibly extend with new features.
So I wonder: can we find ways to create looser standards? Something halfway between a formal open standard, and islands of isolated functionality.

That would allow us to mod our software but still collaborate with each other.
Over the summer I explored this question w/ collaborators at Ink and Switch on the Cambria project.

We built a prototype system based on declarative bidirectional lenses. Still early, but I think we found some promising directions...

One fascinating thing we noticed is that "evolving datatypes" is a monster problem. Doesn't just show up in cross-app compatibility, but also database migrations, API versioning...

I'm now convinced this is a whole category where devs need much better tools.
Alright that's it for the reflection!

Looking forward to going deeper on these themes in 2021 and continuing to pursue the elusive end-user programming dream.

I have some new ideas for a deeply customizable software toolkit which I'm excited to share more about soon... 🎄

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Geoffrey Litt

Geoffrey Litt Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @geoffreylitt

22 Dec
spreadsheets as maps, legible views of the organic chaos brewing underneath
Every tidy entry in a "project planning spreadsheet" is a portal to its own complex mini-universe
Recommend periodically telling your boss a task will take " between 1 day and 8 months"

Will undoubtedly raise an interesting conversation and remind everyone of the messiness of reality
Read 6 tweets
22 Dec
by far my favorite thing about typescript is that i can still run the code when it's not typechecking.

beyond the productivity benefits when working on UI, feels like it changes the emotional relationship from "blocking me" to "helping me"
with some other type checkers it's like "ughhh I just want to RUN the code 😡"

and with typescript it's like "ok nice I ran the code, now the typesystem will help me perfect it 😄"
Obviously error message quality affects the emotional tone too, but whether I can run the code also seems like a huge factor

Read 8 tweets
13 Dec
I'm building an extension that makes Twitter a better memex:

⭐️ Highlights: see someone's best tweets, not just most recent
📆 On This Day: revisit past tweets for inspiration
🔍 Search: find tweets to quote, w/ shortcuts for useful filters

DM me if you want to try the beta!
Early reviews are in 🤓

DM me if you want to give it a spin
Also, recommend this thread on why/how to weave together thoughts on Twitter. Totally changed the way I use this thing.

Goal of this extension is to better align the product with this style of use. Less news, more ideas

Read 10 tweets
6 Dec
I'm skeptical that anyone can design truly great software tools if they haven't personally experienced the problem firsthand.

Here's a short story about my encounters with the limits of empathy... (with an optimistic conclusion!)
While in college, I joined an early stage ed-tech startup founded by some classmates. My first project was to design and implement a reporting interface for teachers and principals to view results from student feedback surveys.
I was totally new to the problem space so I knew I had a ton to learn. The company had a few customers already, so I tried talking to educators in those districts. After a bunch of conversations I started feeling like I understood the rough landscape.
Read 24 tweets
16 Nov
The tragedy of modern computing: too often we conform to the software, rather than molding it to our needs.

How can we empower everyone to edit their tools? Here are 3 ideas I think can help us get there:

1) Customization by Direct Manipulation.

Back in the stone age of CLIs, you had to fumble around in the dark, with no visibility.

GUIs were a huge step forward, letting us directly see and act on the objects we care about.
But then, what happens when you want to go beyond the existing features of your GUI software?

Time to do some programming.. which means right back to the stone age, where you can't see your objects.

Even "user-friendly" customization tools like AppleScript have this problem.
Read 11 tweets
13 Nov
Just assembled a new bookshelf to hold some of my favorite books about computing ☺️
Two of these I see mentioned less often:

- A People's History of Computing in the US: great counterweight to hero narratives in computing history

- Changing Minds, by diSessa : incredibly deep insight into designing empowering computing environments for kids
Also, The New Media Reader is incredible. Felt like someone had perfectly curated a collection for my interests
Read 5 tweets

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!