Hacker Newsnew | past | comments | ask | show | jobs | submit | holtwick's commentslogin

FluidVoice for macOS is pretty handy as well. Open source under Apache License. https://altic.dev/fluid https://github.com/altic-dev/FluidVoice


Its vibe coded UI feels too complicated.


I wonder there is not already such a petition in the EU or Germany. I searched, but didn't find any. Somebody who wants to create one? I'm not that good in writing such texts:

Europe: https://www.europarl.europa.eu/petitions/de/home

Germany: https://epetitionen.bundestag.de/epet/startseite.nc.html


> Germany

Ongoing discussion:

Digital Minister wants open standards and open source as guiding principle (heise.de)

https://news.ycombinator.com/item?id=44198171


Was going to mention the same. I do feel like there is some connection there.

The new digital minister seems to be doing well. He used to be CEO of an electronics retailer with mixed to negative reputation in nerd circles, but he also has a physics degree and has software experience in the trenches, so I wasn't sure what to think of him.


I'm keeping my fingers crossed! Hopefully it won't just remain at the announcement stage.


Thanks for sharing, this is super interesting. Although it doesn't seem to be super active these days. Probably because it is difficult to commercialize local first. That might be why we need a widely adopted and super flexible standard to become attractive to hosters of such services.


Thanks for feedback. The link is broken for me, but I think you are referring to this page? https://jack-vanlightly.com/analyses/2024/4/29/understanding...

Indeed, the approach is similar. Especially the separation of assets (they call it "Data files") from the log ("Data log") is something I consider being a good choice.


Yes, that's the correct link. Sorry for the broken link.

If the approach works for something as heavy duty as Delta Lake, then it is should work for syncing the data of a end-user app across several devices.

Even SQLite is separating its data and WAL in separate files :)


For certain scenarios there will be conflicts, take a boolean value. Client A sets it and client B unsets it. There can only be one winner.

But that might be a benefit from the proposed log sync, because these conflicting situations can be shown and marked for human review in the UI. Each step of change is well documented and the history can fully be reviewed.


Note that in the example I gave there’s not even a conflict to notice. You just have meta instructions telling you what to do within a document. You apply those instructions offline but in the mean time your meta instructions are updated online. You come back and synchronize your changes but there’s nothing that suggests your offline sync against the meta instructions was stale so your edits are applied based on stale meta instructions resulting in a logically undesirable result.

This is basically a TOCTOU race in a distributed context and CRDTs do not magically solve this problem because it’s not solvable. That’s why we have PAXOS and RAFT to do such things and why many many papers have been written trying to solve the Byzantine generals problem in constrained scenarios with well defined criteria.


Thanks for the detailed feedback.

The growth of the log is indeed a weak point that could be improved by regularly merging entries. Missing entries are easily recognizable because a consecutive index is used. The checksums on the previous entry should improve data consistency.

The point that CRDTs themselves already contain all the information required for an update is absolutely correct. I have been working on this protocol for some time and one objective was the reproducibility of the individual changes fro accountability reasons. But this may not be necessary for all applications and could possibly be achieved in other ways. Thank you for pointing this out, I will reconsider the concept in this respect!


I would like to refine my answer regarding the rapidly growing log. If we assume that we have a real-time application, then every keystroke or pointer action can indeed create a change entry.

But this storage format is designed for "long term" and "slow" operations. Where "slow" means in the time lapse of a second instead of a milisecond. This allows us to combine multiple changes into a single log entry.

CRDT implementations like Yjs are good at concentrating such changes into smaller chunks of data. For example, writing text in a rich text editor like Prosemirror is then reduced to something like a string and a position.

But the UI can also be lazy and throttle things. A string input field can only fire changes when the field is left or not typed for a second or so.

These steps will significantly reduce the size of the log. They did in my implementations.

But this is not the end of realtime for such applications. These applications could still pass changes directly over P2P, as long as the log remains consistent, so that the resulting document will always eventually consistent.


Receipts - for macOS, local database, automated content recognition, document management. Convenient commercial alternative to GnuCash to track expenses and income. https://www.receipts-app.com/



CSS/Stylus framework inspired by Tailwind, trying to respect the content semantics https://github.com/holtwick/windy-css


Why not EUPL? It is probably a good choice for a European based company and has comparable features. https://github.com/holtwick/briefing/issues/75


If I am not mistaken the EUPL is copyleft and inspired by GPL.

In the case here it's however about AGPL. AGPL has the extra thing, that source has to be given not only to somebody who received the software, but also to ones who access it as service via network. (There is some legal debate on the exact details) EUPL afaik doesn't have such a clause, but it's relevant for somebody who builds a "service" and wants to prevent others from running a private fork of it.


I'm not a lawyer, just a coder. I was under the impression, that offering a network service is also defined as 'distribution': https://choosealicense.com/licenses/eupl-1.2/

I guess under (1) the "providing access to its essential functionalities" part is relevant: "‘Distribution’ or ‘Communication’: any act of selling, giving, lending, renting, distributing, communicating, transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential functionalities at the disposal of any other natural or legal person."


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: