Geoffrey Litt Profile picture
researching user agency in computing @MIT_CSAIL / building @TwemexApp / 🇯🇵🇺🇸
Domingo Gallardo Profile picture mike norrie Profile picture Plidezus 少楠 Profile picture 3 added to My Authors
Mar 21 5 tweets 2 min read
Interesting looking at the docs for NeXT WebObjects and revisiting their rationale for "why you need an ORM layer instead of just putting your biz logic directly in the database"... 1) "Databases are slow so you need an ORM"

Makes sense in an architecture where DB queries require network roundtrip. But not true if your DB is colocated w/ your logic / is fast!
Mar 21 5 tweets 3 min read
compelling writeup by @dustingetz on Hyperfiddle: write a fullstack program, and have a compiler distribute across client/server boundary… Also reminiscent of @yifanwu 's work on DIEL which is really cool: write relational queries for data viz, and have a compiler schedule across client/server
Mar 2 6 tweets 3 min read
✨ Wrote an essay about Riffle, a new project I've been working on w/ @nschiefer, @schickling and Daniel Jackson!

Guiding question: could we simplify app dev w/ a new kind of reactive local-first database?

Here's why I'm excited about this work: In my Wildcard project, I imagined: what if you could customize any web app in a spreadsheet view?

Showed some fun possibilities, but ultimately extending from the outside was limited. Apps today aren't _actually_ built on spreadsheets.

Jan 24 11 tweets 4 min read
I feel like we don't talk enough about how the iPhone--perhaps the greatest software design of the last couple decades--had *zero* user testing or feedback before launch.

What can we learn from this design process that we might apply in our work? 1/

First of all, important to note that the process was still extremely iterative and prototype-driven. It's just that these iterations were happening internally with highly skilled designers, rather than looping through random customers. 2/
Jan 12 6 tweets 2 min read
In my experience, a powerful way to get better at a craft like writing or coding is—rather than asking for advice or feedback—to find an opportunity to *make something together* with someone I respect. ⥤ This incentivizes that other person to prioritize the quality of the work above other concerns.

Enables them to say things like "Hmmm...I think we need to scrap the entire thing and start over." Awkward, but necessary for quality. ⥤
Nov 23, 2021 12 tweets 3 min read
Excited to share a project I've been working on for the past 6 months w/ @sliminality, @martinkl and @pvh!

It's a data structure for async collaborative editing of rich text documents. What does that mean and why does it matter? Here's my view... 1/ I believe the tools we use to collaborate can deeply shape the outcomes.

Real-time writing tools like Google Docs are an incredible step forward from emailing files, but they do promote a very specific workflow: "one live doc", that everyone is editing at the same time. 2/
Jul 2, 2021 5 tweets 2 min read
This is wild: a secretly filmed confession from Exxon's top lobbyist, utterly confirming how Exxon deceives the public about its stance on climate change. Last year @s3ththompson and I wrote about how individual oil companies are associated with massive emissions footprints, and should be a main target of public pressure:…
Apr 12, 2021 5 tweets 1 min read
Always surprised to remember most people don’t know the browser dev tools exist

I wonder how different the world would be if dev tools were introduced to every user in onboarding Just show people how to vandalize websites they use, light the spark
Apr 5, 2021 4 tweets 2 min read
made a little demo imagining: what if you could use Figma for a spatial roadmapping exercise, but sync the diagram with your actual roadmap data in Trello?… still in a very primitive state, but I like the feeling of using multiple web apps together to edit the same data...

curious for any reactions / how you might want to use a tool like this
Apr 4, 2021 17 tweets 4 min read
Receiving feedback is an essential part of any creative endeavor, but so hard to do well.

One thing I find helpful is to identify archetypal feedback styles, and develop strategies tailored to each style. A few examples: 1) The Skeptic 🤔

I'm scared to show work to this person because they'll have harsh criticism, but much of it will be totally spot on.

(Not to be confused with The Cynic, who simply poo-poos new ideas)
Mar 28, 2021 14 tweets 4 min read
You might be wondering how we got to the point where huge ships routinely carry 20,000 containers around the world...

The history, as told by Marc Levinson in The Box, offers a great, nuanced example of how innovation actually happens. Thread: Basically, the old way was "break bulk" shipping-- just load loose cargo on a ship as-is. Dockworkers load bags of coffee beans, barrels of liquids, whatever.

As you can imagine, quite a lot of work to load and unload onto ships.
Mar 28, 2021 9 tweets 3 min read
Watched a fun demo of the Unreal Blueprints visual code editor, and noticed a few design details which seem useful for visual programming tools generally: 1) You can visually reference entities in the scene. Here, the user clicks on the lightbulb, creates a node in the canvas representing that lightbulb.

Why write code to reference something when you can just point to it?
Mar 24, 2021 7 tweets 2 min read
This may be the best thing I've ever read on why and how to "learn the fundamentals".

Perfectly demonstrates how to acknowledge the value of learning deeply, while avoiding gatekeeping. One thing I appreciate about Julia's blog is the way it approaches learning as both an emotional mindset and a set of extremely concrete practices. I think too often people forget one or the other, when really both are needed to get better at learning.
Mar 22, 2021 15 tweets 5 min read
I'm super impressed by the approach @craftdocsapp is taking to data ownership.

At the same time, I think they're hitting the limits of modern data storage platforms, and hinting at precisely why we need a new kind of "collaborative filesystem".

Quick thread to explain: As context, Craft is an iOS/Mac notetaking app w/ a "blocks" model that feels inspired by Notion. I love the UX, really polished.

Unlike Notion it's offline-first (= very fast!). The interesting thing is they offer two different ways to store your data:
Mar 17, 2021 8 tweets 3 min read
This paragraph perfectly describes a subtle but incredibly important point about software customization.

Just "having an API" isn't enough to provide a smooth on-ramp for users. We must start from the existing familiar UI! Sometimes accessing a backend API feels SO silly. Like, I'm logged in, staring at this information already. And you want me to open a terminal, install some python stuff, spend 20 minutes on OAuth, all so I can just access the information I am *already seeing* in the UI??
Mar 14, 2021 7 tweets 2 min read
Working on a solo project, it's so refreshing to be able to just decide that some "tiny UX detail" really matters, and to spend unreasonable effort on it

Often hard to justify this kind of decision on a team, even a high-functioning one where people understand design Most prioritization frameworks I've worked in really struggle to handle compound effects from tiny things adding up.

To get the work prioritized I have to convince you that yes, this individual decision seems absurdly low ROI, but actually in aggregate it will work out
Feb 19, 2021 11 tweets 3 min read
In the early 90s, there was a lot of hype about "component-based software" -- editing different parts of a document with different mini-editors.

Why didn't it catch on? 7 theories I've come across: 1) UX quality. If every component is developed by an independent company, who is responsible for unifying it into a nice holistic experience rather than a mishmash?
Feb 16, 2021 5 tweets 2 min read
If you're interested in mechanisms for abstraction in code, this demo by @jonathoda is worth watching for a radical perspective.

Two points stick out to me: 1) Programmers grow comfortable working w/ abstractions. But for end users, any abstraction is a barrier.

It's easy to get started w/ spreadsheets because you don't need to learn about abstractions -- just copy paste your formulas!

Jan 29, 2021 14 tweets 5 min read
The problems described in this OpenDoc video are still so relevant, 30 years later.

"Developers pile on feature after feature. The result is large monolithic applications. Data rich content is hard to share across applications..."

Each cloud its own pyramid, with scarce bridges in between...
Jan 28, 2021 5 tweets 2 min read
a delightful visualization of procedural terrain generation, by @OskSta:…

(I could only get it to run in Safari) My (limited) understanding:

At first, each cell in the output could be filled with any of the tiles.

When you say "this cell must have this tile", that limits what cells could inhabit neighboring tiles.

Which in turn limits the neighbors' neighbors, and so on recursively.
Dec 22, 2020 15 tweets 4 min read
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.