I have no doubt that a small dedicated team could build a new parametric kernel and CAD package, particularly one that's open source.
30,161 karma · joined March 17, 2008
Working on sync engines, PGlite, and Tanstack DB at Neon/Databricks. Previously co-founder ElectricSQL (acquired by Databricks).
sam dot willis at gmail dot com
samwillis.co.uk
Twitter: @samwillis
I have no doubt that a small dedicated team could build a new parametric kernel and CAD package, particularly one that's open source.
1. Surface tangency matching - perfectly matching the tangent of the connecting surface on either side of the corner.
2. Edge tangency following - you select an edge, and the fillet should be able to follow along all connected tangent edges.
3. Edge reference tracking - when you modify the model further up the feature tree the kernel needs to keep track of that edge, even if the surfaces that make it drastically change or are split.
All three are hard problems on their own, once you connect them all it becomes a great indicator of the capabilities and stability of a parametric kernel.
The biggest reason this hasn't happened so far is the lack of a truly capable parametric kernel, Truck, the kernel that Matt is using looks like an incredible project and exactly whats needed. The only other kennel till now that been close to being whats needed is OpenCascade, but its lacks important features, is buggy and at times quite unstable.
Once Truck (and CADmium) lands stable fillets (surprisingly one of the hardest features to make stable) it will prove itself as the perfect successor to OpenCascade and and the perfect platform to build the future of open source parametric CAD upon.
My theory is that every new database tech starts and a new domain specific db, then over time gets merged into the generic engines to serve the 99%.
When PGlite (or SQLite) is used with Electric (https://electric-sql.com/), we already provide good reactive primitives. But we hope to improve this so that where possible the full queries don't have to be re-run.
The best option for IndexedDB backed WASM SQLite is wa-sqlite, it offered both a sync and async build and a bunch of different VFSs, including an IndexedDB one. Note however that the async builds add significant overhead and reduce performance.
The most performant VFS is the "OPFS access handle pool" VFS that Roy developed for wa-SQLite and the official build also adopted as an option. That would be my recommendation for now.
Early civilisation was hunter-gatherers, scavenging for food and resources. Imagine a new civilisation where we scavenge the remnants of where we're are now. The progress forward would be very quick, but also so very different.
The OP mentions lack of extensions being a blocker for them using it now, they are coming soon. Additionally it's currently limited by being single connection, and again I hope we can remove this limitation.
I also have a few other ideas around how to make supper fast testing possible.
With dynamic partial replication you can synchronise a subset of your database to a SQLite db on your users device, eliminating the network from the ui interaction loop. Then with the emerging eventually constant syncing systems, many using CRDTs, it's possible to have conflict free eventual consistency. Just read and write to a local database and it will sync with your central server or other clients in the background, both in realtime or after working offline.
I work on one such system at ElectricSQL, but there are many people building variants of this such as Evolu, SQLsync, CR-SQLite, and PowerSync.
That's all not to say SQLite on the edge isn't really damn cool!
Correct on PGlite only being single user at the moment, and that certainly is a problem for using it for integration tests in some environments. But I'm hopeful we can bring a multi-connection mode to it, I have a few ideas how, but it will be a while before we do.
There are a few other limitations with PGlite at the moment (related to it being single user mode), such as lacking support for pg_notify (have plans to fix this too). Whereas with this it should "just work" as it's much closer to a real Postgres.
I think there is a big future for these in-memory Postgres projects for testing, it's looks like test run times can be brought down to less than a 1/4 with them.
(I work on PGlite)
Search has exposed so much data about ourselves to the services we use with very little regulation on what they are permitted to do with it inside their own walls.
My fear with AI is that we are moving toward sending even more data to party services. Tools such a co-pilot (which I enjoy using) are a gold mine for behavioural analysis. The profiling that will be possible with these tools is extraordinary and we don't yet fully understand the implication.
It's because of this that I'm a massive proponent of "Local AI". We need to be pushing for the industry to adopt a local inference architecture asap. It needs to become the standard pattern as early as possible to reduce the risk of the AI revolution being a repeat of the invasive internet search and advertising industry.
This is the 1 year anniversary addition, and what a year of talk it's been. Lots of exciting stuff is happing in the world of local-first software this year, and this talk from Martin is the perfect way to kick it off!
If your new to all this, the term "Local-first software" originated from this Ink and Switch paper by Martin Kleppmann https://www.inkandswitch.com/local-first/
I'm particularly interested in how general purpose CRDT toolkits like Automerge and Yjs could become the backing filetype for local-first software with interoperable sync/collaboration backends. The user can then have direct access to the underlaying data via standard tooling. Files can be linked, embedded within each other, forked and merged.
We could have a new hypermedia platform built on this, where all documents are possible to be shared, forked, edited in realtime...
Basically, love what you are all doing at Ink and Switch, excited to see what you publish next.
It can, and is, used outside of Vue, see Alpine.js, but it's adoption would be so much greater if it was packaged under its own name.
There is this project that even combines it with react: https://github.com/antfu/reactivue.
I wish we had slightly looser compiling between templating and reactivity systems...
When they do launch the car, it's not just going to be a swanky thing to compete with BMW with a bunch of flashy touch UIs and half baked self driving.
It's going to be something that is a step change, something so far ahead of the competition they will be years ahead.
If they have deciding to delay till '28 that suggests it's both not ready, but maybe the market isn't either. If self driving is the head line feature, they will want it to actually be so far ahead of the competition it will appear like magic.
If there is truth to the article (I suspect the delay is real, un-convinced on the reasons suggested) then I don't think the will release one at all.
They are an incredible bunch, as are so many people in the local-first / CRDT space, many I have had the opportunity to meet and collaborate with.
As I like to put it - Local-first is the real serverless. Your user's device is the real edge.
I think the future of the web needs to be that the server is optional, we need our data (albeit personal or our companies) to be on our own devices.
We are all carrying around these massively powerful devices in our pockets, let use that capability rather than offload everything to the cloud.
One of the things I find most exciting about local-first (and I'm very fortunate enough to be working on it full time), is the sync tech thats being developed for it. 2024 is I think going to be the year local-first goes mainstream.
You say "Everything is saved locally by default", with full office support. Essentially you have built a "local-first" app, or about 10 of them!
I would definitely play on that for marketing, the local-first place is getting quite a bit of buzz. (I'm biased, but I think 2024 if the year local-first is going to go mainstream)
What tech are you using for conflict resolution for offline edits, I'm guessing you have generalised this in some way? Are you using CRDTs? And any particular local-first database tech?
Have you considered adding any real-time multiplayer features? If you've solved the offline edit problems, you are 95% of the way to real-time.