Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Ink & Switch

    inkandswitch.com · Publication · on HN since 2018

    Ink & Switch is an independent research lab exploring local-first software, collaboration tools, and tools for thought.

    Visit blogHN submissions
    ProgrammingDistributed SystemsDesign & UX
    What HN says

    Commenters call it an inspiration for local-first and decentralized software, praising the care and craftsmanship in its research articles and its local-first manifesto.

    Stats for nerds
    221HN people shared it
    107linked in comments
    4.9Kstory points
    Jun 2026last shared
    2020people per year2026

    Top posts on HN

    1. 1
      Local-first software: You own your data, in spite of the cloud
      37 people · 938 points · first shared 2019 · 190 comments on HN
    2. 2
      Local-first software (2019)
      12 people · 883 points · first shared 2025 · 297 comments on HN
    3. 3
      Slow Software
      5 people · 446 points · first shared 2018 · 260 comments on HN
    4. 4
      Malleable software: Restoring user agency in a world of locked-down apps
      7 people · 294 points · first shared 2025 · 114 comments on HN
    5. 5
      Capstone, a Tablet for Thinking
      5 people · 259 points · first shared 2018 · 41 comments on HN
    6. 6
      Potluck: Dynamic documents as personal software
      6 people · 202 points · first shared 2022 · 27 comments on HN
    7. 7
      Local-First Software (2019)
      32 people · 195 points · first shared 2021 · 29 comments on HN
    8. 8
      Ambsheets: Spreadsheets for Exploring Scenarios
      1 person · 178 points · first shared 2025 · 48 comments on HN
    9. 9
      Keyhive – Local-first access control
      4 people · 175 points · first shared 2025 · 14 comments on HN
    10. 10
      End-User Programming
      7 people · 159 points · first shared 2019 · 41 comments on HN

    What HN people wrote when they linked it

    • angleofreposeAug 2020

      Thanks for sharing, this is a cool project.

      I've been working on something similar on and off for a while, and I've found the space to be fascinating and somewhat puzzling. Most of the first questions I try to ask about these in browser notebooks don't have clean answers. In no particular order:

      - Do you have any ideas about solving logic errors? As it stands right now a while(true) loop crashes the page and consecutive re-openings of the page for a short while (in chrome). What about things like document.body.innerHTML = "" (you actually seem to handle this pretty gracefully, I'll see if I can poke more holes in this another time). For what it's worth none of the online notebooks I've seen have a satisfactory solution to infinite loops, loop timeouts are too blunt an instrument and crashing the tab can take the browser minutes to recover.

      - Is there a particular reason you use eval rather than the new Function constructor? From what I've read using new Function is much more performant, and other than different scoping a better choice than eval. Can't find the link at the moment, but it was wrapped up in the mdn[1] design docs for their codebox examples.

      - I see you're using the first codemirror 6[2] beta release, how are you liking it? I really enjoy the interface so far.

      - Do you have any favorite resources or inspirations about why you went about building a hackable offline local first notebook environment? I particularly like the experiments at Ink and Switch[3].…

    • teleforceMay 2024

      The kind of scenario screams a local-first applications and solutions, and it's the reason why the Internet was created in the first place [1][2]. People have been duped by the misleading no software of Salesforce's advert slogan that goes against the very foundation and the spirit of the Internet. For most of its life and duration starting back in 1969, the Mbps is the anomaly not the norm and the its first killer application of email messaging (arguably the still best Internet application) is a local-first [3]. Ironically the culprit application that the author was lamenting in the article is a messaging app.

      [1] Local-first software: You own your data, in spite of the cloud:

      https://www.inkandswitch.com/local-first/

      [2] Local-first Software:

      https://localfirstweb.dev/

      [3] Leonard Kleinrock: Mr. Internet:

      https://www.latimes.com/opinion/la-oe-morrison-use24-2009oct24-story.html

    • josephgOct 2024

      Wonderful work, but this doesn’t look like local first software to me. It looks like server first software with live updates and caching.

      Don’t get me wrong, that’s super cool - but if you’re going to claim it’s local first software, I want to see the principles of local first software at play. And I don’t think Zero delivers that - at least as I understand it from its website.

      Like, “the network is optional” and “the long now” and “you (the user) retains ultimate control”. It just looks like an excellent server sync system with client side caching. What if the data I need isn’t in the cache? What happens when I edit things offline then come online later? What happens if the company shuts down and the server gets turned off permanently? Will the app still work?

      Local first software can handle these cases too.

      [1] https://www.inkandswitch.com/local-first/

    • liftyMar 2026

      Regarding the growing log in CRDTs, it doesn't have to be that way. Most of these popular CRDT libs use Merkle DAG only to build up the log of the changes. But there is a better way, you can combine a Merkle DAG for ordering + prolly trees for storing the actual state of the data. That gives you total ordering, an easy way to prune old data when you choose to, and an easy way to sync. Look into fireproof for how this is combined.

      Regarding distributed schemas, I agree, there's a lot of complexity there but it's worth looking into projects like https://www.inkandswitch.com/cambria/ and https://github.com/grafana/thema, which try to solve the problem. It's a young space though. If anyone else knows about similar projects or efforts, please let me know. Very interested in the space.

    • pvhDec 2024

      Mechanical merge algorithms can perform better or worse on different kinds of conflicts (the specific example of editing deleted text is just one of many edge cases) but in the end no CRDT can decide if your merged text is what you mean to say.

      We go into a bunch more detail in the Upwelling paper about the differences between (what we call) semantic and syntactic conflicts in writing: https://inkandswitch.com/upwelling/

      Ultimately, my feeling is that serious collaboration is a document review problem as much as anything else. That said, this is particularly true in journalism and scientific publishing and can be mostly ignored for your meeting notes...

      Anyway, if you see this comment, thanks for a nice piece of writing, Alex. Love to see folks wrestling with these problems.

    • jamesgpearceSep 2022

      Yeah, I see your point. I've been assuming that local-first doesn't mean local-only. Even if it's just you, you could easily be polling something else to get data updates, as you suggest. (One original use case was a personal GitHub dashboard app that polled for new activity but provided local analytics).

      A couple of great essays I've enjoyed in this space are https://www.inkandswitch.com/local-first & https://riffle.systems/essays/prelude/

      I feel it should be possible to build certain types of apps that can view, query, and manipulate denormalized data without even being online. (Perhaps I shouldn't over-glamorize those days when one used to jam Access databases into Windows apps, but hopefully you get the point.) Reactivity just serves as a nice binding paradigm.

    Related

    Spritely Institutespritely.institute57 people

    A Scheme Primer

    Spritely Institute
    Company · last shared 2026
    Textual Blogtextual.textualize.io54 people

    Algorithms for high performance terminal apps – Textual

    Textual Blog
    Company · last shared 2026
    Shopify Engineeringshopify.engineering268 people

    Building all of our new mobile apps using React Native

    Shopify Engineering
    Company · last shared 2026
    Bret Victorworrydream.com936 people

    A brief rant on the future of interaction design (2011)

    Bret Victor
    Personal · last shared 2026
    UX Collectiveuxdesign.cc430 people

    The worst volume control UI in the world (2017)

    UX Collective
    Publication · last shared 2026
    A List Apartalistapart.com667 people

    The future of web software is HTML over WebSockets

    A List Apart
    Publication · last shared 2026
    OUseful.Infoblog.ouseful.info19 people

    Mapping How Programming Languages Influenced Each Other According to Wikipedia

    OUseful.Info
    Personal · last shared 2024
    Design & Startupsmedium.com/design-startups89 people

    How Paypal and Reddit faked their way to traction

    Design & Startups
    Publication · last shared 2014