Geoffrey Litt Profile picture
researching malleable software @inkandswitch / 🇯🇵🇺🇸
Domingo Gallardo Profile picture mike norrie Profile picture Plidezus 少楠 Profile picture Carol Duan Profile picture 5 subscribed
Jan 30 9 tweets 4 min read
Just gave a talk about Tiny Essay Editor, a collaborative markdown editor we're using at @inkandswitch based on Automerge! Quick summary:

We wanted a nice local-first editor for writing our research essays, so we built one...

1/ Image Tiny Essay Editor (TEE) is a surprisingly simple codebase because it builds on OSS libraries that do the heavy lifting:

- automerge as core CRDT
- automerge-repo for networking/storage
- codemirror for markdown editing, automerge-codemirror for editor integration

2/ Image
May 4, 2023 9 tweets 3 min read
I wanted to convert a JSON file of a chat transcript into nice markdown text for sharing w/ people...

so I had GPT generate an ephemeral React UI where I can drag in the JSON file and it outputs the markdown🤓

reflections on the process: My first idea was to just have GPT do the conversion itself: paste the JSON in and tell it to output markdown.

Worked fine, but slow, might not work on long transcripts, and hard to know if it's 100% reliable. Image
May 3, 2023 5 tweets 1 min read
This video is a fun case study in chatbot i/o modalities.

It claims that ChatGPT-over-voice is better than Siri, but I actually prefer Siri for this example… Siri: responds immediately with a written sentence that I can read in the blink of an eye. Efficient.

ChatGPT: takes a while, slowly speaks out loud the answer
Mar 23, 2023 8 tweets 2 min read
This demo — “trim a video directly in ChatGPT” — offers a perfect example to reflect on pros/cons/nuances of chatbot as user interface. A few thoughts: 1/ To start, chat is obviously a silly UI for this task. My iPhone can trim videos and I can interactively scrub to pick a good time interval. Fast, precise, direct manipulation tools are nice.

That being said, I am not a total chatbot hater!

2/
Mar 19, 2023 22 tweets 8 min read
What if -- despite all the hype -- we are in fact underestimating the effect LLMs will have on the nature of software distribution and end-user programming? some early, v tentative thoughts: 1/ it seems likely to me that all computer users will soon have ability to 1) develop small software tools from scratch, 2) describe *changes* they'd like made to existing software they're already using. what will this mean for software ecosystems?? 2/
Mar 17, 2023 4 tweets 2 min read
If you want to think crisply about live programming interfaces, highly recommend this paper by @qualmist and @jeffrey_heer! We already talk a lot about "liveness" (fast visible feedback) in programming, but this paper argues there's another quality we want: *domain-specific* UIs for editing programs.

They call this quality "richness". Image
Nov 7, 2022 18 tweets 9 min read
1/ "Build an app with a spreadsheet" is a mainstream idea now (Airtable, Glide, Coda, Notion, etc) but I believe there's still so much room to push this model further.

Quick list of some (lesser-known??) projects that I find thought-provoking in this space: 2/ We've seen "project tracker" and "inventory list" a bunch, but what's the ceiling on building complex software w/ spreadsheets?

Here's Alan Kay speculating in 1984 (!) about how you could use a spreadsheet and a drawing app to build a word processor

worrydream.com/refs/Kay%20-%2… Image
Nov 1, 2022 13 tweets 5 min read
✨ Excited to share Potluck, a new project I worked on w/ @mschoening @_paulshen and @paulsonnentag at @inkandswitch!

Guiding question: what if you could start with a text note and gradually evolve it into an interactive software tool? 1/

inkandswitch.com/potluck/ Consider jotting down a recipe. Where do you put it?

Could put it in a notes app: simple, fast, low-ceremony.

Or put it in a "proper" recipe app. Gives you nice features like scaling up the ingredients, but also more rigid and formal.

Why can't we have both?? 2/
Mar 21, 2022 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, 2022 5 tweets 3 min read
compelling writeup by @dustingetz on Hyperfiddle: write a fullstack program, and have a compiler distribute across client/server boundary

hyperfiddle.notion.site/Reactive-Cloju… 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

logical-interactions.github.io/diel/
Mar 2, 2022 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:

riffle.systems/essays/prelude 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, 2022 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, 2022 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/

inkandswitch.com/peritext/ 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:

parametric.press/issue-02/corpo…
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?

loom.com/share/2010bf39… 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.