HN user

aguacaterojo

55 karma

danielgormly.com

Posts0
Comments35
View on HN
No posts found.

https://github.com/airdaydev/airday

Underpinning my current app is an e2ee local-first sync engine, basically it is a traditional client-server sync (encrypted logs + snapshots sequenced with integers). It sends bundles of Loro CRDT operations. I wrapped the client side in WASM to power the web app and the CLI and have started a swift wrapper to port to native iOS. Bundle size is 3MB/1.2MB g-zipped so pretty happy with it. I've realised that web encryption is kind of bs (at least not as "WE CAN NEVER ACCESS YOUR DATA" as some vendors state) if someone else is distributing the app.

Over the last week I have done a lot of performance work & data remodeling - CRDTs are interesting because you can let data fall through the gaps if you're not careful.

I started playing video games in Spanish about a year ago. I've finished about 20 now. I had a base of course & was doing little courses etc. But I've sunk 100s of hours now focusing on text and voice heavy games and it went from very tiring and looking up the dictionary constantly to fun and fluid. I can finally watch a lot of stuff without subtitles now. Someone catalogues which games have been dubbed (focused on Spanish of Spain) at this site https://www.doblajevideojuegos.es/ the quality of most new dubs I've seen has been very high

This is very fun. Having just tried it with my maybe tone deaf partner, she showed progress when she sang at the same time as the notes. It might be good if there was like a faster looped version where the notes would play more frequently.

Having just tested my app with very niche online groups, friends and cold messaging some people who I thought might have wanted what I'm building, and getting almost no response - my advice would be to burst that bubble early. As a general rule, no one cares what you're building anymore - just look at this thread.

The biggest problem with Duolingo is not just the spaced repetition but the entire curriculum is random, imprecise and felt like slop long before LLMs (with the exception of stories I guess). By random I mean it's just like reading a series of disconnected sentences with some common features. There's no anchor.

For Spanish for example, compared to spanishdict.com course which is a similar format but has a defined length and doesn't encourage you to continue indefinitely, is much more precise, follows a practical story arc - introducing yourself at school, how did you get to school, going on vacation with family etc etc. It jumps from location to location each unit and explains regional differences in grammar/vocab.

V cool. Works in ff on mac for me. Maybe vibe coded but it's a spectrum. Probably in need of a bit of polish and a better performing example & maybe resolution switching. Basement Studio is legit I have bought their fonts in the past.

Floating windows are a little pointless but aesthetic choice or a one shot ui. FPS would be nice, also distinction between canvas and void. Video export works great.

The man himself. Yeah agreed you guys have solved it. It is more a misfired crud dev instinct for me that sees it as wasteful. Just a different paradigm and not big in practice.

I've got eg-walker & Diamond Types in my reading/youtube backlog. Diamond Types went further down the backlog because of "wip" on the repo! I will look into Antimatter too.

I've spent a lot of time studying CRDTs & order theory in the last year & will publish an article too. Local-first apps are not easy to build, complex data structures (say, calendar repetitions with exceptions) become harder to model. Everything must converge automatically while clients can branch off.

In general, you don't really get to compact tombstones meaningfully without consensus so you really are pushing at least remnants of the entire log around to each client indefinitely. You also can't easily upgrade your db you're stuck looking after legacy data structures indefinitely - or you have to impose arbitrary cut off points.

List CRDTs - which text CRDTs are built from are probably unavoidable except for really really simple applications. Over the last 15 years they have evolved, roughly: WOOT (paper) -> RGA (paper) -> YATA (paper) / YJS (js + later rust port) -> Peritext (paper) / Automerge (rust/js/swift) -> Loro (Rust/js). Cola (rust) is another recent one. The big libs (yjs, automerge, loro) offer full doc models.

Mostly the later ones improve on space, time & intent capture (not interleaving concurrent requests).

The same few guys (Martin Kleppman, Kevin Jahns, Joseph Gentle, probably others) pop up all over the more recent optimisations.

I understand what you are saying and don't fully disagree. You can allocate time & energy into immediate real world solutions while reaping the personal growth. There is certainly a balance.

The counter-point is that in the case of a web browser you are studying deeply one of the most impactful technologies to exist, and you will learn 80% of the most important lessons with a minimal working build, maybe 0.1% of the real thing. You may learn and execute much faster too because there is a clear blueprint, and you are likely riding a wave of passion that will carry your mind to places you won't have expected.

The perspective gained puts you in a much better place to identify & execute successfully more impactful work. The work may be the seed of something more important, but unseen or unknown yet.

i think that the story is loaded with about 80% superfluous context and 20% story.

op worked at us airforce base managing access control to global intel systems. he delegated authorisation check to jr. jr told op they checked out, however, jr had not adhered to latest security protocol that required cross checking request against request database, relying instead only on physical credentials. op granted access however asked that an officer watch the civilians’ access directly.

a week later it turns out the civilians were conducting pen testing for the systems and op had to debrief how they gained access.

Very similar story for my team, incl. the 2x cert expiry cluster disasters early on requiring a rebuild. We migrated from Kubespray to kOPs (with almost no deviations from a default install) and it's been quite smooth for 4 or 5 years now.

I traded ELK for Clickhouse & we use Fluentbit to relay logs, mostly created by our homegrown opentelemetry-like lib. We still use Helm, Quay & Drone.

Software architecture is mostly stateless replicas of ~12x mini services with a primary monolith. DBs etc sit off cluster. Full cluster rebuild and switchover takes about 60min-90min, we do it about 1-2x a year and have 3 developers in a team of 5 that can do it (thanks to good documentation, automation and keeping our use simple).

We have a single cloud dev environment, local dev is just running the parts of the system you need to affect.

Some tradeoffs and yes burned time to get there, but it's great.

These folks have to be reminded daily what their job is and will find any excuse to not work.

We had a young woman working multiple jobs and feeding the work back to Pakistan. We had a young man who smoked weed and played WoW all day.

Turns out you can just fire people!