frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

The DNS record for NASA.gov currently points to a local address

https://www.whatsmydns.net/#A/nasa.gov
1•JBorrow•1m ago•1 comments

AI Slop Startup to Flood the Internet with AI Slop Podcasts

https://www.techdirt.com/2025/09/22/ai-slop-startup-to-flood-the-internet-with-thousands-of-ai-sl...
1•cratermoon•3m ago•0 comments

The theorem that most YouTube ML tutorials get wrong

https://quantumformalism.substack.com/p/the-theorem-that-most-youtube-ml
1•qf_community•3m ago•0 comments

CA bill to provide parking for homeless community college students in jeopardy

https://www.latimes.com/california/story/2025-09-07/state-bill-to-establish-safe-parking-program-...
2•PaulHoule•3m ago•0 comments

The Sims 100 days easter egg

https://imgur.com/a/sims-easter-egg-NLLyy
1•alexandrehtrb•4m ago•1 comments

Machine-readable challenge: scrape this post, solve task, earn points

https://lightcapai.medium.com/a-machine-can-freely-scrape-this-content-solve-the-task-and-earn-sy...
1•WASDAai•4m ago•1 comments

A long look at NetBSD 10.1

https://distrowatch.com/weekly-mobile.php?issue=20250922#netbsd
1•jaypatelani•4m ago•0 comments

It only takes 3 days to see results in sports SEO

https://tigoals.app
1•JonesWang•4m ago•1 comments

Virtualization Reliability Standards [pdf]

https://public-inspection.federalregister.gov/2025-18395.pdf
1•impish9208•5m ago•0 comments

A Simple Way to Measure Knots Has Come Unraveled

https://www.quantamagazine.org/a-simple-way-to-measure-knots-has-come-unraveled-20250922/
2•baruchel•5m ago•0 comments

Upcoming HHS report will link autism to pain reliever Tylenol in pregnancy

https://edition.cnn.com/2025/09/05/health/hhs-report-autism-folate-acetaminophen
1•tmcz26•7m ago•0 comments

Conference Goatmire Elixir 2025

https://underjord.io/conference-report-goatmire-elixir-2025.html
2•borromakot•8m ago•1 comments

Frequency Illusion

https://www.maxvanijsselmuiden.nl/frequency-illusion
2•maxvij•9m ago•0 comments

Risks in turning AI chatbots into AI agents

https://privacyinternational.org/long-read/5672/risks-turning-ai-chatbots-ai-agents-and-using-mcp
1•eustoria•10m ago•0 comments

How AI Is Impacting Engineering Leadership [video]

https://www.youtube.com/watch?v=aoyGUDL4jZU
1•GarethX•12m ago•0 comments

Bonkers CDC vaccine meeting ends with vote to keep Covid shot access

https://arstechnica.com/health/2025/09/bonkers-cdc-vaccine-meeting-ends-with-vote-to-keep-covid-s...
3•voxadam•12m ago•1 comments

Laws of order: expensive synchronization in concurrent algorithms cannot be elim [pdf]

https://files.sri.inf.ethz.ch/website/papers/popl168gf-attiya.pdf
1•fanf2•12m ago•0 comments

RIP "Browsers"

https://blog.jim-nielsen.com/2025/rip-browsers/
1•freediver•13m ago•0 comments

The Struggle to Visualize Zettelkasten Notes and How I Solved It

https://wasi0013.com/2025/09/22/data-visualization-challenge-the-struggle-to-visualize-thousands-...
2•pyprism•14m ago•0 comments

A staff revolt rocked the fintech powerhouse FNZ

https://www.thetimes.com/business-money/companies/article/how-a-staff-revolt-rocked-the-fintech-p...
1•gadders•15m ago•0 comments

The Right to Your Feed: A Simple Fix for Social Media

https://rosslazer.com/posts/right-to-feed/
1•rosslazer•16m ago•0 comments

Moody's raises Big Red over flag Oracle's mega AI DC buildout blueprint

https://www.theregister.com/2025/09/22/moodys_raises_questions_over_oracles/
1•rntn•17m ago•0 comments

Crystal v0.3: Codex support in Git Worktrees

https://github.com/stravu/crystal
3•jbentley1•18m ago•1 comments

Vertech Academy

https://www.vertechacademy.ca/
1•Hamid213•19m ago•1 comments

Dear GitHub: no YAML anchors, please

https://blog.yossarian.net/2025/09/22/dear-github-no-yaml-anchors
24•woodruffw•20m ago•0 comments

Show HN: T3 Chat for Image Models

https://frames.so
1•moschetti1•21m ago•0 comments

How to Make Sense of Any Mess

https://www.howtomakesenseofanymess.com
1•surprisetalk•23m ago•0 comments

WebKit Features in Safari 26.0

https://webkit.org/blog/17333/webkit-features-in-safari-26-0/
1•ksec•23m ago•0 comments

Future Fonts: where type designers sell fonts in progress

https://www.futurefonts.com/
1•surprisetalk•23m ago•0 comments

What is algebraic about algebraic effects?

https://interjectedfuture.com/what-is-algebraic-about-algebraic-effects/
4•iamwil•24m ago•0 comments
Open in hackernews

Why Local-First Apps Haven't Become Popular?

https://marcobambini.substack.com/p/why-local-first-apps-havent-become
94•marcobambini•1h ago

Comments

PaulHoule•1h ago
Lotus Notes solved syncing for object databases but the world forgot

https://en.wikipedia.org/wiki/HCL_Notes

mschuster91•1h ago
Ahhh Lotus Notes... in many ways ahead of its time, timeless and horribly outdated at the same time.
echelon•1h ago
I still remember the crazy password screen with the symbols that changed as you typed.

If that was deterministic, that was a very bad idea.

AlexandrB•54m ago
IIRC the symbols were basically a hash of the password that let you know if you typed the password correctly without showing it.
codegeek•39m ago
You just reminded me of the nightmare Lotus Notes was. Great idea but absolutely horrendous implementation. Probably the worst piece of software I have ever used and I have been in the industry for 21+ years now.
self_awareness•1h ago
> Offline-first apps sound like the future: instant loading, privacy by default, and no more spinning loaders on flaky connections.

The future? I thought all apps were like this before this web2.0 thing ruined it.

threetonesun•1h ago
What's a little funny to me is that most of Web 2.0 was supposed to solve things like collaborating on a Word doc on a shared server, ideally getting us around the X+1 versions of files problem, but collaboration is a human problem, so now we have X+1 versions, but in the cloud.
takluyver•53m ago
The implied context for that is that whatever information you have in the apps should be kept in sync between devices and between people. Classic desktop applications are more like offline-only. Web 2.0 traded that approach for data living on a server, so it stays in sync because there's only one source of truth, but you can only edit it when online.

'Offline-first' is trying to combine the benefits of both approaches.

gritzko•1h ago
The author’s journey is probably just starting. I had this exact mindset about 10 years ago. Long story short: distributed systems are hard. A linear log of changes is an absolute lie, but it is a lie easy to believe in.
aleph_minus_one•1h ago
> distributed systems are hard.

While this may be true, the central issue is a different one: most users and/or developers are not very privacy-conscious, so they don't consider it to be worth the effort to solve the problems that go in hand with such distributed systems.

eptcyka•18m ago
I think it is a lot easier to market more profitable products. It is difficult to charge a subscription for an offline-first product. It is difficult sell data that stays on user devices. It is more difficult to develop an offline-first app. So a more privacy conscious solution ends up being more expensive to make and provides less paths for monetization.

All this to say, it is not just the technical aspects that make it more difficult to provide local-first software.

MangoToupe•13m ago
> A linear log of changes is an absolute lie

Compared to what?

ainiriand•8m ago
A graph of changes in a distributed system, I assume.
MangoToupe•7m ago
...how is that any less of a lie? You can project a linear log into a graph trivially.
wellpast•1h ago
It’s a least-common denominator effect.

I.e., most people don’t care.

Local-first is optimal for creative and productivity apps. (Conversely, non-local-first are terrible for these.)

But most people are neither creative nor optimally productive (or care to be).

chii•1h ago
> most people don’t care.

it's not that they "don't care", but that they dont know this is an issue that needs to be cared about. Like privacy, they didnt think they need it until they do, but by then it's too late.

tomxor•1h ago
> 1. Unreliable Ordering

If you think this is only a problem for distributed systems, I have bad news for you.

api•1h ago
I feel like a broken record here: it is not an engineering problem.

Local-first and decentralized apps haven't become popular because SaaS has a vastly superior economic model, and more money means more to be invested in both polish (UI/UX) and marketing.

All the technical challenges of decentralized or local-first apps are solvable. They are no harder than the technical challenges of doing cloud at scale. If there was money in it, those problems would be solved at least as well.

Cloud SaaS is both unbreakable DRM (you don't even give the user the code, sometimes not even their data) and an impossible to evade subscription model. That's why it's the dominant model for software delivery, at least 90% of the time. The billing system is the tail that wags the dog.

There are some types of apps that have intrinsic benefits to being in the cloud, but they're the minority. These are apps that require huge data sets, large amounts of burstable compute, or that integrate tightly with real world services to the point that they're really just front-ends for something IRL. Even for these, it would be possible to have only certain parts of them live in the cloud.

cosmic_cheese•58m ago
Cloud SaaS services are often extremely heavily marketed, too, often with a VC-backed ad spend pool. That’s difficult if impossible to compete with.

There’s also an upcoming generation that doesn’t know what a filesystem is which also doesn’t help matters.

api•35m ago
> There’s also an upcoming generation that doesn’t know what a filesystem is which also doesn’t help matters.

This is why I sometimes think it's hopeless. For a while there -- 90s into the 2000s -- we were building something called "computer literacy." Then the phones came out and that stopped completely. Now we seem to have inverted the old paradigm. In that era people made jokes about old people not being able to use tech. Today the older people (30s onward) are the ones who can use tech and the younger people can only use app centric mobile style interfaces.

The future is gonna be like: "Hey grandpa, can you help me figure out why my wifi is down?"

cosmic_cheese•3m ago
I know some of us technically inclined millennials intend to make a point of (or are already in the process of) ensuring that their kids are computer-literate. I’m not a parent but should that change I would certainly plan to. Whether or not that gets passed down to the grandkids or not is out of our control, but gotta do what you can right?
jjcob•46m ago
I don't know. I think it's a lucky coincidence, but I genuinely think that cloud based solutions are better.

Local first tends to suck in practice. For example, Office 365 with documents in the cloud is so much better for collaborating than dealing with "conflicted copy" in Dropbox.

It sucks that you need an internet connection, but I think that drawback is worth it for never having to manually merge a sync conflict.

api•42m ago
Those technical problems are largely a result of trying to shoehorn collaboration onto older local-only PC era apps that store data in the form of simple files. For really rich collaboration you want something designed for it from the ground up, and Office is not. Office pre-dates even the Internet.

That has nothing to do with where the code lives and runs. There are unique technical challenges to doing it all at the edge, but there are already known solutions to these. If there was money in it, you'd have a lot of local first and decentralized apps. As I said, these technical challenges are not harder than, say, scaling a cloud app to millions of concurrent users. In some cases they're the same. Behind the scenes in the cloud you have all kinds of data sync and consistency enforcement systems that algorithmically resemble what you need for consistent fluid interaction peer to peer.

jjcob•23m ago
It's not a technical challenge, it's a fundamental problem.

When multiple people work on a document at the same time, you will have conflicts that will become very hard to resolve. I have never seen a good UI for resolving non-trivial changes. There is no way to make this merging easy.

The only way to avoid the merge problem is to make sure that the state is synchronised before making changes. With cloud based solutions this is trivial, since the processing happens on the server.

The local first variant of this would be that you have to somehow lock a document before you can work on it. I worked on a tool that worked like that in the early 2000s. Of course that always meant that records remained locked, and it was a bit cumbersome. You still needed to be online to work so you could lock the records you needed.

lenerdenator•1h ago
They're extra work.

Now that people are used to having someone in a data center do their backing up and distributing for them, they don't want to that work themselves again, privacy be damned.

marapuru•1h ago
I always start with a local first application. And then find that I want to access List X, Design Y, Scribble Z on the road and on my phone. Resulting in a frenzied search for a mobile / desktop alternative that includes syncing. Then finding a solution that requires a subscription and then falling back into fiddling with Google Drive, or something in the Google workspace.

I guess I should bring my devices back to exactly 1 device. Or just take a subscription on one service.

candiddevmike•1h ago
IMO, offline read-only is enough of a compromise. How many times are users truly offline, AND want to be able to edit at that time (and deal with the potential conflicts, which by the nature of the operation, won't have a good UX)?
lordnacho•1h ago
Local-first was the first kind of app. Way up into the 2000s, you'd use your local excel/word/etc, and the sync mechanism was calling your file annual_accounts_final_v3_amend_v5_final(3).xls

But also nowadays you want to have information from other computers. Everything from shared calendars to the weather, or a social media entry. There's so much more you can do with internet access, you need to be able to access remote data.

There's no easy way to keep sync, either. Look at CAP theorem. You can decide which leg you can do without, but you can't solve the distributed computing "problem". Best is just be aware of what tradeoff you're making.

marginalia_nu•59m ago
> There's no easy way to keep sync, either. Look at CAP theorem. You can decide which leg you can do without, but you can't solve the distributed computing "problem". Best is just be aware of what tradeoff you're making.

Git has largely solved asynchronous decentralized collaboration, but it requires file formats that are ideally as human understandable as machine-readable, or at least diffable/mergable in a way where both humans and machines can understand the process and results.

Admittedly git's ergonomics aren't the best or most user friendly, but it at least shows a different approach to this that undeniably works.

jjcob•40m ago
Git works, but it leaves conflict resolution up to the user. It's good for a tool for professional users, but I don't see it being adopted for mainstream use.
criddell•30m ago
How can you avoid leaving conflict resolution up to the user?
PaulHoule•15m ago
The funny thing about it is I see git being used in enterprise situation for non-dev users to manage files, often with a web back end. For instance you can tell the average person to try editing a file with the web interface in git and they're likely to succeed.

People say git is too "complex" or "complicated" but I never saw end users succeeding with CVS or Mercurial or SVN or Visual Sourcesafe the way they do with Git.

"Enterprise" tools (such as business rules engines) frequently prove themselves "not ready for the enterprise" because they don't have proper answers to version control, something essential when you have more than one person working on something. People say "do you really need (the index)" or other things git has but git seemed to get over the Ashby's law threshold and have enough internal complexity to confront the essential complexity of enterprise version control.

jjcob•8m ago
> you can tell the average person to try editing a file with the web interface

Yes, but then you are not using a "local first" tool but a typical server based workflow.

poszlem•37m ago
Git solved this by pushing the syncing burden onto people. It’s no surprise, merge conflicts are famously tricky and always cause headaches. But for apps, syncing really ought to be handled by the machine.
marginalia_nu•30m ago
If you want local-first, conflict resolution is something you're unlikely to be able to avoid. The other option is to say "whoops" and arbitrarily throw away a change when there is a conflict due to a spotty wifi or some such.

Fortunately, a lot of what chafes with git are UX issues more than anything else. Its abstractions are leaky, and its default settings are outright bad. It's very much a tool built by and for kernel developers with all that entails.

The principle itself has a lot of redeemable qualities, and could be applied to other similar syncing problems without most of the sharp edges that come with the particular implementation seen in git.

jordanb•28m ago
I feel like git set back mainstream acceptance of copy-and-merge workflows possibly forever.

The merge workflow is not inherently complicated or convoluted. It's just that git is.

When dvcses came out there were three contendors: darcs, mercurial and git.

I evaluated all three and found darcs was the most intuitive but it was very slow. Git was a confused mess, and hg was a great compromise between fast and having a simple and intuitive merge model.

I became a big hg advocate but I eventually lost that battle and had to become a git expert. I spent a few years being the guy who could untangle the mess when a junior messed up a rebase merge then did a push --force to upstream.

Now I think I'm too git-brained to think about the problem with a clear head anymore, but I think it's a failure mostly attributable to git that dvcs has never found any uptake outside of software development and the fact that we as developers see dvcs as a "solved problem" outside more tooling around git is a failure of imagination.

marginalia_nu•23m ago
Yeah I mostly agree with this. I'm mostly talking about git the model, rather than git the tool when I say git has solved the problem of asynchronous decentralized collaboration.

For local-first async collaboration on something that isn't software development, you'd likely want something that is a lot more polished, and has a much more streamlined feature set. I think ultimately very few of git's chafing points are due to its model of async decentralized collaboration.

robenkleene•18m ago
> The merge workflow is not inherently complicated or convoluted. It's just that git is.

What makes merging in git complicated? And what's better about darcs and mercurial?

(PS Not disagreeing just curious, I've worked in Mercurial and git and personally I've never noticed a difference, but that doesn't mean there isn't one.)

TylerE•11m ago
That git won over hg is a true tragedy. The hg ux/ui is so much better.
robenkleene•15m ago
The problem with "human understandable" with respect to resolving syncing conflicts, is that's not an achievable goal for anything that's not text first. E.g., visual and audio content will never fit well into that model.
bryanlarsen•55m ago
There's no perfect general solution, but the number of conflicts generated by small teams collaborating in an an environment where the internet almost always works is going to be miniscule. No need to let the perfect be the enemy of the good.
madcaptenor•54m ago
This is why I just use timestamps if I am doing local-first. (yyyy-mm-dd date format, for sortability)
elzbardico•49m ago
I remember the concept of departmental server/database/apps from that age. Lots of big companies still had mainframe applications running on their HQ, that had a consolidated view of their enterprise, and a lot of data transfers and batch jobs running off hours to synchronize everything.

It was the first practical manner to downsize mainframe applications.

tcoff91•43m ago
CRDTs are a pretty good experience for many data types when it comes to collaborative editing.
card_zero•37m ago
> nowadays you want to have information from other computers.

Do I? What sort of information ...

> shared calendars

OK yes that would be a valid use, I can imagine some stressed executive with no signal in a tunnel wanting to change some planned event, but also to have the change superceded by an edit somebody else makes a few minutes later.

> the weather

But I don't usually edit the weather forecast.

> a social media entry

So ... OK ... because it's important that my selfie taken in a wilderness gets the timestamp of when I offline-pretend-posted it, instead of when I'm actually online and can see replies? Why is that? Or is the idea that I should reply to people offline while pretending that they can see, and then much later when my comments actually arrive they're backdated as if they'd been there all along?

raincole•31m ago
> offline-pretend-posted

It's a far, far more complicated mental model than simply posting it. It'd be a huge barrier for normal users (even tech-savvy users, I'd say). People want to post it online and that's it. No one wants an app what requires its users to be aware of syncing state constantly unless they really have no choice. We pretend we can step on gas instead of mixing the gas with air and ignite it with a spark plug until we need to change the damn plug.

bluGill•28m ago
Nearly everything I do is on a shared computer.

At work: I write code, which is in version control. I write design documents (that nobody reads), and put them on a shared computer. I write presentations (you would better off sleeping through them...) and put them on a share computer. Often the above are edited by others.

Even at home, my grocery list is shared with my wife. I look up recipes online from a shared computer. My music (that I ripped from CDs) is shared with everyone else in the house. When I play a game I wish my saved games were shared with other game systems (I haven't had time since I had kids, more than 10 years ago). When I take notes about my kid's music lessons they are shared with my wife and kids...

bluGill•34m ago
We have gone back and forth several times in history.

It started with single computers, but they were so expensive nobody had them except labs. You wrote the program with your data, often toggling it in with switches.

From there we went to batch processing, then shared computers, then added a networking, with file sharing and RPC. Then the personal computer came and it was back to toggling your own programs, but soon we were running local apps, and now our computers are again mostly "smart terminals" (as opposed to dumb terminals), and the data is on shared computers again.

Sometimes we take data off the shared computer, but there is no perfect solution so distributed computing and since networks are mostly reliable nobody wants that anyway. What we do want is control of our data and that we don't get (mostly)

dustingetz•33m ago
also, AI
Sharlin•30m ago
Well, the first kind of PC app, anyway. For decades before that, programs were run on time-sharing mainframes via remote terminals.
jakelazaroff•30m ago
I wouldn't call local Excel/Word/etc "local-first". The "-first" part implies that the network is used for secondary functionality, but the apps you're talking about are fully offline. IMO local-first definitionally requires some form of networked multi-device collaboration or sync.
echelon•16m ago
Local-first apps aren't common because teams building web apps are primarily targeting online, database backed, SaaS.

With the exception of messenger clients, Desktop apps are mostly "local-first" from day one.

At the time you're beginning to think about desktop behavior, it's also worth considering whether you should just build native.

robenkleene•13m ago
Excel and Word both support real-time collaboration and sync, e.g., https://support.microsoft.com/en-us/office/collaborate-on-wo...
paldepind2•27m ago
> Local-first was the first kind of app. Way up into the 2000s, you'd use your local excel/word/etc, and the sync mechanism was calling your file annual_accounts_final_v3_amend_v5_final(3).xls

To be precise, these apps where not local-_first_, they where local-_only_. Local-first implies that the app first and foremost works locally, but also that it, secondly, is capable of working online and non-locally (usually with some syncing mechanism).

MangoToupe•13m ago
> There's no easy way to keep sync, either.

There's no easy way to merge changes, but if you design around merging, then syncing becomes much less difficult to solve.

ForHackernews•1h ago
If they're building this on top of sqlite, probably worth considering adopting https://rqlite.io/ that has already done a lot of work for a clustered sqlite
Xelbair•1h ago
Technical reasons are honestly overblown - it all boils down to one, business, reason - control.

When you do serverside stuff you control everything. What users can do, and cannot do.

This lets you both reduce support costs as it is easier to resolve issues even by ad-hoc db query, and more importantly - it lets you retroactively lock more and more useful features behind paywall. This is basically The DRM for your software with extra bonus - you don't even have to compete with previous version of your own software!

i want my local programs back, but without regulatory change it will never happen.

hobs•1h ago
Yep at every company I have ever worked at the question is not only how to assert control, but how to maintain it for the long term. Even if the company isn't exploiting you today, they want the option for later.
gwbas1c•52m ago
> Technical reasons are honestly overblown

Having built a sync product, it is dramatically simpler (from a technical standpoint) to require that clients are connected, send operations immediately to central location, and then succeed / fail there. Once things like offline sync are part of the picture, there's a whole set of infrequent corner cases that come in that are also very difficult to explain to non-technical people.

These are silly things like: If there's a network error after I sent the last byte to a server, what do I do? You (the client that made the request) don't know if the server actually processed the request. If you're completely reliant on the server for your state, this problem (cough) "doesn't exist", because when the user refreshes, they either see their change or they don't. But, if you have offline sync, you need to either have the server tolerate a duplicate submission, or you need some kind of way for the client to figure out that the server processed the submission.

hasanhaja•1h ago
I've only started playing with local first recently to learn the Service Worker API and IndexedDB, and I'm looking forward to learning about CRDTs more. Here's a little todo app that I built:

[1] GitHub: https://github.com/hasanhaja/tasks-app/ [2] Deployed site: https://tasks.hasanhaja.com/

radarsat1•1h ago
I spent some time learning about PouchDB a little while ago, it seems to be a nice solution at least for a No SQL approach. Although I still need some more practical experience to understand the security model, because it feels weird to just sync a database that was updated on some web page, really you want to ensure there is validation and treat it as an untrusted source to some extent. Still not sure of the best way to deal with that without implementing most of the application as server side validation scripts, or maybe that is just the way to do it.
jakelazaroff•1h ago
The real answer to the question isn't technical. Local-first apps haven't become popular because companies recognize that their value comes from controlling your data.

In a talk a few years ago [1], Martin Kleppman (one of the authors of the paper that introduced the term "local-first") included this line:

> If it doesn't work if the app developer goes out of business and shuts down the servers, it's not local-first.

That is obviously not something most companies want! If the app works without the company, why are you even paying them? It's much more lucrative to make a company indispensable, where it's very painful to customers if the company goes away (i.e. they stop giving the company money).

[1] https://speakerdeck.com/ept/the-past-present-and-future-of-l...

xorvoid•1h ago
I believe the lack of popularity is more of an economics problem. There are established business models for SaaS apps or freemium with ads. But, the business model for local-first apps is not as lucrative. Those who like the local-first model value features like: data-sovereignty, end-to-end encryption, offline usage, etc. These properties make existing business models hard-to-impossible to apply.

My current thinking is that the only way we get substantial local-first software is if it's built by a passionate open-source community.

canpan•53m ago
Yes, I don't think replicated data structures are the problem.

Look at single player video games, cannot get more ideal for local-first. Still you need a launcher and internet connection.

SilverbeardUnix•37m ago
No you don't. There are plenty of games you can buy and go into the wilderness and play just fine offline. Just because game developers WANT you to be online so they can get data doesn't mean you NEED to be online.
antonvs•36m ago
This is the primary reason. The heaviest push for SaaS came from Silicon Valley, which wanted a recurring revenue stream model.
godshatter•17m ago
It's crazy that we live in a time when "pay with money and your data" or "pay with your eyeballs" are the only viable options and "pay with your money without your data" can't even be considered.
wartywhoa23•58m ago
Because Big Money are behind Local-Last Apps
rkapsoro•57m ago
The use case I always think of is the developer experience for regular hobbyist and workaday devs writing their apps with local-first sync.

Apple comes close with CloudKit, in that it takes the backend service and makes it generic, basically making it an OS platform API, backed by Apple's own cloud. Basically cloud and app decoupled. But, the fundamental issue remains, in that it's proprietary and only available on Apple devices.

An open source Firebase/CloudKit-like storage API that requires no cloud service, works by p2p sync, with awesome DX that is friendly to regular developers, would be the holy grail for this one.

Dealing with eventually consistent data models is not so unusual these days, even for devs working on traditional cloud SAAS systems, since clouds are distributed systems themselves.

I would be very happy to see such a thing built on top of Iroh (a p2p network layer, with all the NAT hole punching, tunnelling and addressing solved for you) for example, with great mobile-first support. https://github.com/n0-computer/iroh

lifty•51m ago
Off topic, but why would I choose iroh instead of libp2p which seems to have much better language coverage compared to iroh?
gizmo•55m ago
I think that the database layer is the wrong layer for reconciliation of change sets.

The main problem with any sync system that allows extensive offline use is in communicating how the reconciliation happens so users don't get frustrated or confused. When all reconciliation happens as a black box your app won't be able to do a good job at that.

PLenz•55m ago
Harder to rent-seek with non-saas software
robmccoll•53m ago
I wonder about the categories of apps for which offline first with potentially infinitely delayed sync provides a better experience and how large those really are.

It seems like most of those are apps where I'm creating or working on something by myself and then sharing it later. The online part is almost the nice-to-have. A lot of other apps are either near-real-time-to-real-time communication where I want sending to succeed or fail pretty much immediately and queueing a message for hours and delivering it later only creates confusion. Or the app is mostly for consuming and interacting with content from elsewhere (be that an endless stream of content a la most "social media", news, video, etc. or be it content like banking apps and things) and I really mostly care about the latest information if the information is really that important at all. The cases in those apps where I interact, I also want immediate confirmation of success or failure because it's really important or not important at all.

What are the cases where offline-first is really essential? Maybe things that update, but referencing older material can be really useful or important (which does get back to messaging and email in particular, but other than something that's designed to be async like email, queueing actions when offline is still just nice-to-have in the best cases).

Otherwise the utility of CRDTs, OT, et al. is mostly collaborative editing tools that still need to be mostly online for the best experience.

blacklion•47m ago
> It seems like most of those are apps where I'm creating or working on something by myself and then sharing it later.

It is interesting. I've thought about things I don in non-messaging apps (which are online0first for obvious reasons), and all of them create something, which can be EXPORTED to on-line presence, but doesn't require connected app.

Code? I write it locally and use separate app to share it: git. Yes, code is collaborative creation (I'm working in the team), but it is still separate tool and I like it, as I control what I'll publish for my colleagues.

Photos? Of course I want to share result, but I'm working on RAW files with non-destructive editing and I want to share final bitmap (as JPEG) and not RAW data and editing steps.

Same with music, if I create one (I doesn't).

Texts must be polished in solitude and presented as final result (maybe, as typographically set one, as PDF).

All my "heavy" applications are and should be offline-first!

crote•28m ago
Yeah, I feel like for most applications the online part acts more like a backup than an interactive sync. How often do you really work on the same file on different devices? And if you do so, how often do you want to continue working on an old version rather than first forcing a sync of the latest revision? After all, without a sync you can't continue your work but only edit completely unrelated parts...

I think most real-world applications fall under either "has to be done online", or "if there are conflicts, keep both files and let the user figure it out". Trying to automatically merge two independent edits can quickly turn into a massive mess, and I really don't want apps to do that automagically for me without giving me git-like tooling to fix the inevitable nightmare.

codeulike•52m ago
Every problem is a sync problem these days.

Sync problems are harder than just 'use a CRDT'.

What counts as 'consistent' depends on the domain and the exact thing that is being modelled.

luplex•50m ago
Apps that let you manipulate artifacts are often local. MS Office, Photoshop, Blender, CAD tools. But it turns out that actually, humans rarely work or live alone, and you can't facilitate communication through a local-first app.
Sharlin•29m ago
Yet somehow people managed to do that before everything went to the cloud.
syntaxing•49m ago
It’s a hard balance, local first a lot of times feel local only. I really like the model on Home Assistant/Nabu Casa. Local first and you can pay a subscription to cloud access.
gejose•47m ago
Shameless self plug, but my workout tracking app[1] uses a sync engine and it has drastically simplified the complexities of things like retry logic, intermittent connectivity loss, ability to work offline etc.

Luckily this is a use case where conflict resolution is pretty straightforward (only you can update your workout data, and Last Write Wins)

[1] https://apps.apple.com/us/app/titan-workout-tracker/id644949...

elzbardico•46m ago
Network speeds are of sufficient bandwidth and latency to allow cloud first applications, which are vastly simpler to develop than Local-first whenever you need to add any remote/collaborative feature.
kachapopopow•45m ago
I don't understand why we have servers in the first place for any kind of local appliance, they ARE a server already, 256mb of flash costs pennies for storing hundreds of thousands of metrics - almost enough for a year!
kachapopopow•14m ago
Not sure why this is getting downvoted I assume because it has nothing to do with the article but these problems don't exist in applications that never have to reach a server in the first place. Remote access can be solved with a simple relay appliance for the average joe.
VikingCoder•44m ago
I want many more Local-Only apps, thanks. Self-Hosted.

Or Federated apps, again Self-Hosted.

And I think network infrastructure has been holding us back horribly. I think with something like Tailscale, we can make local-only apps or federated apps way, way easier to write.

hasanhaja•20m ago
I've been having fun exploring this actually: https://news.ycombinator.com/item?id=45333494

I've found it to be a fun way to build apps.

ktosobcy•40m ago
I try to use those as much as possible. We ended up in this situation mostly because of the Google push to make everything an "web-app" with web-technologies instead of protocols...

Anyone uses IMAP email? Works just fine (save for IMAP design but that's another story).

Same with CalDAV.

For stydy I use Anki and it has brilliant sync (it can even automatically/automagaically merge study changes when I study some items on mobile and others on desktop).

Many seem to claim that it's impossible to sync correctly in "colaborative environment" as in it would always involved dozens of people constantly working and editing the document (which would be utterly difficult to track the evolution of)… Most of the time it's not that colaborative and having the data locally makes it easier to work with.

OTOH not everything has to be (web-)app…

jjcob•18m ago
IMAP works fine until you try to continue working on a draft email that you started on another computer... somehow it always gets broken and I end up with 5 copies of the message in the drafts folder...
isaachinman•3m ago
We fixed this at Marco, FYI.

https://marcoapp.io

cramcgrab•39m ago
Because cloud. And local hardware and software lags now.
anon1395•39m ago
Personally I think PWAs are a bit confusing for consumers as they think "It's a website, i won't be able to use it offline." and if they get reminded that they can use it offline they usually forget.
alextingle•32m ago
Why would they think "its a web-site"? PWAs just look like normal phone apps.

In fact, many "normal" phone apps are basically just a web-site inside a thin wrapper. So the difference is largely academic in many cases.

crote•12m ago
Because a user first encounters it on the web - where it acts exactly like a website. The only difference is that the bookmark-button-thingy says "add app to home screen" instead of "add to home screen".

It's not giving a "I'm installing an application" vibe, it is giving "I am creating a shortcut to a website" vibes. Apps are installed via the app store, not as weird quasi-bookmarks in your browser.

Andrew_nenakhov•38m ago
Server-centric computing is just more efficient, and it usually becomes less popular only at because means of communication aren't up to the task at the moment.

1. In the beginning, there were mainframes and terminals. You saved resources by running apps on a server and connecting to them with cheap terminals

2. Then, PCs happened. You could run reasonably complex programs on them, but communication capabilities were very limited: dialup modem connections or worse

3. Then, internet happened, and remote web apps overtook local apps in many areas (most of those that survived required massive usage of graphics, like games, which is difficult even with modern internet)

4. Then, smartphones happened. At the time of their appearance they didn't have ubiquitous network coverage, so many first apps for these platforms where local. This is eroding too, as communication coverage improves.

So if you look at this, it is clear that main share of computing oscillated back and forth between server and local, moving to local only when communication capabilities do not permit remote running, and once comms catch up, the task of running apps moves back to servers.

setnone•35m ago
Just because "personal server" hasn't happened yet in the way personal computer did
RajT88•31m ago
That is an interesting thought.

How do you make self-hosting appealing to more than weird nerds?

crote•21m ago
Make it a comprehensive service you can rent at a fixed monthly cost. Which of course defeats the whole "self-hosting" part.

Regular people don't like the Magic Box Which Makes Things Work. They'll begrudgingly shove it in a cupboard and plug it in, but even that is already asking a lot. If it needs any kind of regular maintenance or attention, it is too much effort. "Plug in a harddrive once a month for backups"? You'll have just as much asking them to fly to Mars and yodel the national anthem while doing a cartwheel.

SilverbeardUnix•35m ago
1. People don't work alone and need to collaborate

2. People value convenience over privacy and security

3. Cloud is easy.

RajT88•32m ago
Do not forget - cloud makes apps easier to monetize via ads and selling user data.

Business trumps perfect software engineering almost every time.

weego•15m ago
Absolutely.

I can't believe so many replies are struggling with the easy answer: privacy, security, "local first", "open source", "distributed", "open format" etc etc etc are developer goals projected onto a majority cohort of people who have never, and will never, care and yet hold all the potential revenue you need.

sylens•35m ago
There's no money in making a local first app. Businesses want your data, they want you to be dependent on them, and they want to be able to monetize your behavior and attention
zsoltkacsandi•17m ago
There is money in local first apps, businesses are just greedy.
russnewcomer•35m ago
I'm not sure CRDTs are actually the right answer here for your example of #2, Marco. A double-entry accounting system might actually be more ideal. In that case, what you are keeping in sync is the ledger, but depending on your use-case, that might actually be easier since you can treat them as a stream-of-data, and you would get the 'correct' answer of 100.

In this case, you would need two accounts, a credit and debit account, and then device A would write +20 to the credit account and -20 to the debit account, device B would write -20 to the credit account and +20 to the debit account, then using a HLC (or even not, depending on what your use-case is again), you get back to the 100 that seems from the description of the problem that it is the correct answer.

Obviously, if you are editing texts there are very different needs, but this as described is right in the wheelhouse of double-entry accounting.

Sharlin•34m ago
> Offline-first apps sound like the future

...and here we go again. Time is a flat circle.

vahid4m•32m ago
I’ve been working on https://with.audio which is a local app.

I think there should be way more local apps with sync capabilities. I haven’t finished the sync feature in WithAudio and you have very nice ideas there. Specially the eventual consistency. That’s what will work.

But I must say for sure the most difficult part of local apps is debugging customer issues. For someone who is used to logs and traces and metrics and most of users using a one version of the code in the backend, debugging an issue in customers computer on an old version without much insight (without destroying all your premises of privacy) is very challenging.

em-bee•13m ago
i recently discussed the development of a new application for a customer. one of the important aspects was that the app would handle data that would have to stay local. despite that my thinking went like this:

if i develop it as a webapplication, then i can do all the work on my computer, test with various browsers and deliver a working result. if the customer has issues, i can likely reproduce them on my machine.

but if it was a desktop application, my feeling was that testing would be a nightmare. i would have to set up a machine like my client, or worse visit the client and work with them directly, because my own machine is just to different from what the client uses. also not to forget distribution and updates

in short: web -> easy. desktop -> difficult.

jlarocco•30m ago
As a user the simple answer is that I'll always use a regular application instead of a "local-first" web app when I have the ability.

"Local-first apps" are the worst of everything - crappy, dumbed down web UI; phoning home, telemetry, and other privacy violations; forced upgrades; closed source, etc.

At work, I don't have a choice, so it's Google Docs or Office 365 or whatever. And in that context it actually makes sense to have data stored on some server somewhere because it's not really my data but the company's. But at home I'll always choose the strictly offline application and share my data and files some other way.

em-bee•27m ago
"Local-first apps" are the worst of everything - crappy, dumbed down web UI along with no privacy.

which apps are you talking about here? that description doesn't make any sense to me.

jlarocco•11m ago
Aren't "local-first apps" in this context the ones where you vist "example.com", and it caches a bunch of HTML and Javascript and saves data locally using the "local storage" APIs? And then periodically makes requests back to "example.com" to check for updates, sync data, etc.?
knubie•9m ago
> crappy, dumbed down web UI; phoning home, telemetry, and other privacy violations; forced upgrades; closed source

What does any of this have to do with local first? Most online only apps have this stuff too.

MathMonkeyMan•28m ago
The free software evangelist in me says "because local-first gives more to the user of the software," which will tend not to happen when the user is not in control of the software.

Realistically the reason is probably that it's easier to make changes if you assume everything is phoning home to the mother ship for everything.

Also, an unrelated nit: "Why Local-First Apps Haven’t Become Popular?" is not a question. "Why Local-First Apps Haven’t Become Popular" is a noun phrase, and "Why Haven't Local-First Apps Become Popular?" is a question. You wouldn't say "How to ask question?" but instead "How do you ask a question?"

robenkleene•8m ago
Apple is practically the most antithetical to "free software" company around, yet Apple maintains perhaps the largest fleet of local-first apps in existence, e.g., off the top of my head: Calendar, Contacts, Keynote, Mail, Notes, Numbers, Photos, and Pages (these are all examples of apps that support multi-device sync and/or real-time collaboration).

I think the truth of your statement is more that free software tends towards what you might call "offline" software (e.g., software that doesn't sync or offer real-time collaboration), because there's more friction for having a syncing backend with free software.

brainzap•24m ago
Does Apple Notes count as local first? it is an amazing experience.
czx111331•15m ago
I believe that in the right contexts—specifically where eventual consistency is acceptable—the local-first paradigm is highly valuable and will gradually become mainstream. A major factor limiting adoption today is that existing local-first solutions are incomplete: when building such applications, developers must handle many problems that are trivial under strong-consistency or traditional models. This raises the learning cost and creates significant friction for paradigm shifts.

Our recent work on Loro CRDTs aims to bridge this gap by combining them with common UI state patterns. In React, developers can keep using `setState` as usual, while we automatically compute diffs and apply them to CRDTs; updates from CRDTs are then incrementally synced back into UI state [1]. This lets developers follow their existing habits without worrying about consistency between UI state and CRDT state. Paired with the synchronization protocol and hosted sync service, collaboration can feel as smooth as working with a purely local app. We’ve built a simple, account-free collaborative example app[2]. It only has a small amount of code related to synchronization; the rest looks almost the same as a purely local React app.

[1]: https://loro.dev/blog/loro-mirror

[2]: https://github.com/loro-dev/loro-todo

poisonborz•9m ago
The goals have shifted. What is "local" nowadays? ~Everybody uses multiple devices, and things are expected to be in sync. What users now (should) need is easy self-hosting apps and centralised storage, with clients that can work/cache offline locally. A good example is Bitwarden.
mhuffman•8m ago
Some people might say that the browser you are using to look at your webapp or ask chatgpt for something is a local-first app ... making it pretty damn popular.
pixelpoet•2m ago
That's a bit like saying we live in outer space because earth is in outer space.