Live data from Hacker News

Local-first software (2019)

inkandswitch.com

281–290 of 308 posts

Re: Local-first software (2019)

#281

In theory, I love the local-first mode of building. It aligns well with “small tech” philosophy where privacy and data ownership are fundamental. In practice, it’s hard! You’re effectively responsible for building a sync engine, handling conflict resolution, managing schema migration, etc. This said, tools for local-first software development seem to have improved in the past couple years. I keep my eye on jazz.tools…

I've been using instantdb in anger for the past month or so for a side project of mine. I'm building a personal budget app. I should probably write a blog post, but I will say that I investigated power sync, electricSQL, livestore and powersync before. I briefly looked at jazz tools but wanted something a bit more structured. I'm pretty impressed this far. I've actually been writing it with Vue and a community librar…

+1 for instant! Been using it and I find it a breeze to work with, definitely filling the exact niche this article was discussing. sync engines are the future!

Re: Local-first software (2019)

#282

Yes a thousand percent! I'm working on this too. I'm sick of everyone trying to come up with a use case to get all my data in everyone's cloud so I have to pay a subscription fee to just make things work. I'm working on a fitness tracking app right now that will use the sublime model - just buy it, get updates for X years, sync with all your devices and use it forever. If you want updates after X years buy the newest…

Had similar thoughts a few years back (https://rodyne.com/?p=1439) when considering worst case scenarios after a local factory lost two days production due to a server failure at an IT supplier.

Re: Local-first software (2019)

#283
post #213

Earlier quoted context omitted.

Are you requiring a google account for file/folder based auth on a per user bases for a vault? Not to keen on using a 3rd party for this kind of thing.

For our free/individual plan we do use OAuth2 providers (currently only Google is enabled, but considering others), and can support other methods for larger teams (like oidc). Originally the idea was to keep everything within the Obsidian UI so things like username/password didn't make sense (no password managers in Obsidian). We initiate the OAuth2 login flow from within Obsidian. I guess we could add an extra click…

What's that particular auth for again? Is it to distribute permissions to the shared folder user you add?

Re: Local-first software (2019)

#284

Earlier quoted context omitted.

I mean if local first isn’t possible. I’m more comfortable with web based development plus don’t you need to apply for all kinds of certificates to be “allowed” to run on windows and Mac these days?

> don’t you need to apply for all kinds of certificates to be “allowed” to run on windows and Mac these days? Not for a PWA.

Sorry, what’s that?

Re: Local-first software (2019)

#285
post #213

Earlier quoted context omitted.

For our free/individual plan we do use OAuth2 providers (currently only Google is enabled, but considering others), and can support other methods for larger teams (like oidc). Originally the idea was to keep everything within the Obsidian UI so things like username/password didn't make sense (no password managers in Obsidian). We initiate the OAuth2 login flow from within Obsidian. I guess we could add an extra click…

What's that particular auth for again? Is it to distribute permissions to the shared folder user you add?

Yes, it is for shared folder permissions, as well as identity for collaboration.

Re: Local-first software (2019)

#286

Earlier quoted context omitted.

> What is sad is that they used to be local files first note app and then they moved to sqlite citing some sync and performance issues. They're still a local-first note application. It's just slightly harder for you to edit your notes externally, and not even by that much - it's very easy to directly query (read and write) SQLite databases, and if you really cared you could have made a script to grab a note, export i…

>and if you really cared you could have made a script to grab a note, export it to a temporary text file, allow you to edit it, then update the SQLite database. Bear devs advise against doing that: "Generally speaking, it is safe to access the database for reading only" https://bear.app/faq/where-are-bears-notes-located/

Thank you for the correction! I was not aware of this.

It's still worth pointing out that this design decision is orthogonal to the decision to use SQLite, though. The Bear devs could have designed it such that you could write to the database directly, or they could have kept the text-file-based design, but still told the user that they can't modify the files directly (as one of my personal projects does). The assignment of blame to SQLite specifically is misguided.

Re: Local-first software (2019)

#287
post #261

Earlier quoted context omitted.

From memory the sqlite3 API is something like sqlite3 data.db 'select text from notes' I use sqlite3 to load and query random CSVs all the time. It feels a bit weird to hear data described as "locked" within a SQLite DB, because it's one of the simplest non-text formats for me to read data from. It would surprise me of it took more than five minutes to set up a one-way cron job to dump your notes into plain text file…

My god! Really? What is this subthread now - bear app fan version of discussions.apple.com? This is just unbelievable! Fucking pitchforks are out literally! I am dealing with plain text notes and you all want me to write sql queries and scripts to access those fucking text files? Are you all (these few people who just jumped in the subthread) pulling some sort of prank of so?

I don't even use Bear app, I'm just confused by the idea that anything's "locked" inside sqlite when I deliberately put data there for ease of use.

I don't want you to do anything. Use whatever you want! But if you love your tool except for the fact it uses an open database format instead of text files, then lucky you, there's a solution, and it takes all of five minutes.

Re: Local-first software (2019)

#288

Yes a thousand percent! I'm working on this too. I'm sick of everyone trying to come up with a use case to get all my data in everyone's cloud so I have to pay a subscription fee to just make things work. I'm working on a fitness tracking app right now that will use the sublime model - just buy it, get updates for X years, sync with all your devices and use it forever. If you want updates after X years buy the newest…

Obsidian the note taking app is a great model to follow as well. The client is completely free and they sell an optional syncing service. The notes are all on markdown files so the client is completely optional.

the syncing is just really godawfully slow. so much so that after 2 years of use i have almost stopped taking notes.

Re: Local-first software (2019)

#289

I've always thought that this article overstates the promise of CRDTs with regard to conflict resolution. For toy cases like a TODO list, yes, you can define your operations such that a computer can automatically reconcile conflicts - e.g. you only support "add" and "mark as complete", and if something gets marked as complete twice, that's fine. But once you get past toy examples, you start wanting to support operati…

Arbitrarily choose an option, but expose the fact that you've auto-resolved a conflict and allow the user to manually re-resolve. This requires even more UI work than option 1.

This is what every "cloud file sharing" provider like Dropbox is doing. If there is a conflict, the version on the server is "the right one", and your locally conflicted file is copied on the side with some annotation in the file name.

Re: Local-first software (2019)

#290
post #231

We have been building a local-first browser app (PWA) for personal finance, based on double-entry accounting. https://finbodhi.com/ We do use online services like firebase for auth, and some service to fetch commodity prices etc, but rest of the data is stored in browser storage (sqlite) and backed to local disk (and soon dropbox). We also syncs data across devices, always encrypting data in transit. I think it's the…

Try demo doesn't work on my iphone, it keeps spinning forever. Plus please take into consideration of removing the friction via signup, if it's real local first you don't need accounts in the cloud

It might be that you’re trying it in Safari’s private mode. It works in regular mode, but private mode blocks storage, so the app can’t function there. We should improve the error message to make that clearer.

That said, the app is currently designed for desktop use—mobile UX is still on our roadmap.

As for signup: it helps us track and bill users. Building our own auth system for local-first would’ve been a full project on its own. Until better options exist for authorization and billing in local-first apps, we’ll stick with a cloud signup flow.

Post reply on HN