Josiah
banner
josiahwitt.com
Josiah
@josiahwitt.com
Living in #HamOnt. Working on @dxos.org.
Cars ruin cities. Housing is a human right.
I see the Bluesky team finally found a way to bring in some revenue.
September 21, 2025 at 1:30 PM
Reposted by Josiah
Regarding the experiment, I genuinely believe the current way we’re building software is outdated. We can do so much better, we can have more user agency and enable it for less technical folks.

Easily build any UI sitting on top of pieces of data & logic. Create, adapt, remix; diffuse.
July 18, 2025 at 8:50 AM
Apple Music needs a “sort by most listened” option
July 8, 2025 at 8:01 PM
Reposted by Josiah
I revealed the @inkandswitch.com secret plan behind our work on local-first software this year at @localfirstconf.com. Now you can learn it too: www.youtube.com/watch?v=9s8O...
Peter Van Hardenburg - Local First: the secret master plan
YouTube video by Local-First Conf
www.youtube.com
June 17, 2025 at 6:43 PM
Reposted by Josiah
Give me a long enough interesting podcast and I shall clean the world
June 16, 2025 at 7:46 PM
You know a new @inkandswitch.com essay dropped when the malleable software feed explodes with activity bsky.app/profile/did:.... Excited to give it a read!
June 10, 2025 at 7:20 PM
This is something we’ve been thinking about a bit for @dxos.org & Composer as well. We have an existing identity system (HALO) but it would be very cool to be able to send space invitations to someone just based on their atproto did handle, even if they don’t have a HALO identity yet.
i think we need a new term to describe this direction where platforms use atproto for metadata and identity, and use their own systems for the rest of their platforms. current examples are @roomy.chat and @tangled.sh but as bryan indicates the design space is v large and underexplored
how about @tangled.sh but for game servers (quake3, factorio, minecraft, whatever).

eg, on-atproto public metadata, discovery, membership/roles; off-atproto separate server which game actually talks to
April 11, 2025 at 11:24 AM
I was considering whether or not I should buy a magic keyboard just so that I could use touch id while my mac is docked at my desk. Evidently, I'm not the only one to have encountered this dilemma because not only does this exist, but its more expensive than the magic keyboard and yet still sold out
MacOS Fingerprint Reader (Wireless) | Nate's Stuff
For all legal intents and purposes... this is not a genuine Apple product... well kinda, it's really just a hacked apart MagicKeyboard, a genuine MagicKeyboard... 🤔I like to dock my MBP and I'...
shop.singer.cloud
April 10, 2025 at 6:01 PM
Reposted by Josiah
one must imagine sisyphus decentralizing the web somewhat
April 9, 2025 at 2:03 PM
Hurrah! The first non-test post to show up in the @graze.social feed I made for “malleable software” mentions

bsky.app/profile/did:...
pvh.ca pvh @pvh.ca · Apr 5
This work has grown out of our existing work on local-first and malleable software but has really developed into its own set of interesting problems. To be clear: we don’t claim to have all the answers!
April 7, 2025 at 1:24 PM
Reposted by Josiah
Meet Composer.

A collaborative local-first workspace with customizable AI assisted workflows.

Think of it as an IDE for your team where users can install and customize plugins from a growing open source community.

🧵
March 25, 2025 at 5:56 PM
Reading @adapalmer.bsky.social’s Terra Ignota and, from some offhand statements in later books, it becomes clear that Canada became part of the EU at some point. Remarkably prescient. That seems much less science fiction today than it would have even 6 months ago and the books are from 4 years ago.
March 16, 2025 at 6:47 PM
Finally getting around to integrating with passkeys on top of HALO. I’m now boarding the passkey hype train.
February 20, 2025 at 10:56 PM
Apple's commitment to the global settings app is frustrating sometimes. There's so many settings that would make a lot more sense in-flow within apps. For example, the cross fade setting for the music app is not accessible from the music app itself. Why?
February 8, 2025 at 9:35 PM
Come hang out next week and see what we've been cooking 🧑‍🍳
dxos.org DXOS @dxos.org · Feb 4
Join us next week for our monthly developer hangout.

It's the second Tuesday of every month in the DXOS Discord (dxos.org/discord)
February 6, 2025 at 7:07 PM
Another UX concept that we've been experimenting with in Composer's deck layout is something we call "attention". Attention supercharges the OS/web primitive of focus and imbues it with application level information about what exactly is currently in focus.
February 5, 2025 at 12:51 PM
"A perspective is by nature limited. It offers us one single vision of a landscape...The more complex the object we are attempting to apprehend, the more important it is to have different sets of eyes, so that these rays of light converge and we can see the One through the many."
February 4, 2025 at 1:10 PM
Stacks and decks bring to mind this tweet from @gordon.bsky.social. They start to allow you to combine individual controls (words) into larger structures like stacks and decks (sentences and paragraphs).
January 30, 2025 at 11:37 AM
A core part of the default layout in Composer is a component we call the "deck". If you've ever used TweetDeck or @deck.blue the basic layout should make sense, except in this case we've repurposed it to serve as a multi-tasking surface for knowledge work.
January 28, 2025 at 11:30 AM
Expanding on this, I'd want markdown and rich text to be able to interop before introducing a rich text editor in Composer (though I wouldn't stop anyone else from doing it). Dreaming of a pandoc-like intermediate format that could be used in to store the text data in Automerge.
I'd love to see block editors in Composer again, though I think they introduce other problems that I'm trying to avoid right now. (Overall, curbing the cognitive overhead of using Composer and more specifically, having distinct and not interoperable text formats feels like not a great experience.)
January 23, 2025 at 12:34 PM
Managed to get typescript types resolving in a Codemirror editor based on X-Typescript-Types headers from @esm.sh using @val.town's codemirror-ts extension with a bit of help from Claude to glue things together. Gotta love standing on the shoulders of giants.
January 21, 2025 at 11:48 PM
Another way to think about stacks is by comparing them with another component which has become fairly prevalent in the modern web: block editors. Stacks and block editors accomplish many of the same things but have a different set of trade-offs.
One view into data that we've been experimenting with in Composer is what we call a "stack". A stack is a transclusive view of an ordered collection of objects laid out vertically.
January 20, 2025 at 1:14 PM
One view into data that we've been experimenting with in Composer is what we call a "stack". A stack is a transclusive view of an ordered collection of objects laid out vertically.
January 16, 2025 at 1:37 PM
Another interesting Composer concept is the “app graph”, which is a contract for UIs which present, organize and navigate over a graph of the user's knowledge.
Next to Surfaces, Intents are the other core capability which most plugins in Composer provide. Plugins can define different actions and then resolvers which are used to handle those actions when they are dispatched in an Intent.
Another simple but powerful capability that is core to how Composer works is Surfaces. A Surface is a component which allows one plugin to delegate rendering of a subtree to another plugin.
January 14, 2025 at 1:06 PM
Until recently Intents in Composer were completely completely untyped. This of course doesn't make a difference at runtime, but lead to the occasional bug that could have easily been caught by a type system and missed out on the delightful autocomplete DX that types can give you.
Next to Surfaces, Intents are the other core capability which most plugins in Composer provide. Plugins can define different actions and then resolvers which are used to handle those actions when they are dispatched in an Intent.
Another simple but powerful capability that is core to how Composer works is Surfaces. A Surface is a component which allows one plugin to delegate rendering of a subtree to another plugin.
January 9, 2025 at 1:48 PM