What if I write a todo application in it, and one of the clients will connect only once a month? What about a client that will drop and never return? (in some systems it means past updates will pile up indefinitely, and state on other clients will keep growing)
You can use any CRDT with Braid. Many of them prune history. In fact, we have developed the first pruning p2p text sync algorithm: braid.org/antimatter
Indeed, text sync requires old history to merge with old edits. However, Braid does not force you to hold everything. Peers can implement their own policies for deciding who to sync with. They can also ask each other for modules of old history they've forgotten if they realize they need it to merge something. This is made possible with the new Time Machine architecture that we are writing up.
This architecture also allows you to sync at multiple time resolutions -- realtime, fine grained, or slower, course grained -- within the same system. Different peers can hold and share at different resolutions. And they can all guarantee consistency with each other in the end. See the recent simpleton algorithm work for an example.
* Cloudflare operates at a scale where its caching saves a lot of bandwidth, which saves ISPs money, which makes Cloudflare an attractive partner for peering and co-location.
* CDN is a platform on top of which Cloudflare can offer a lot of additional services that used to be expensive dedicated middleboxes.
Actively supported versions of windows still supports 4 architectures for apps (x86, x86-64, ARM, and ARM64) and long term at least 3 of those (both c86 and ARM64) aren't going away (32 bit as an install target is but not as an app type which you might need depending what your app does) so everything as a fat app isn't a great choice like it is on macOS where there are 2 options and long term there will be just 1.
That said you can still achieve something similar. Windows comes with the x86 emulation layer enabled by default on all system types so if your installer is packaged as x86 you can have it contain multiple install packages and select based on the system architecture. This is known as MSIX bundling. Alternatively for online installs the installer can just be the thing that grabs the right version for the machine and launches it.
Of course it's more work to create a fat app style bundle so most don't bother. The possibility is still there though.
It's a complicated solution. On top of deployment of renewable energy production, it requires building efuel manufacturing and distribution network. Even if that's doable, it's not something that can be built immediately. And even if built, I don't see how it can compete in impoverished areas with just cutting down whatever is around.
And in the end, it only solves cooking. Electrification solves many more problems at once, and notably refrigeration.
Even if the code has been absolutely perfect at the time of writing, growth of the codebase, and changing requirements could make it bad.
e.g. if you have 10 items to store, then a simple file may be a pragmatic choice. When it grows to 10,000 items you may need a database. But if you started with a database for just 10 items, people would complain it's overengineered.
If you have 2 classes, an if/else can do, but at 20 you need some Factory pattern, which would be an architecture astronautics if done from the start.
And when you try to anticipate such growth, you'll create overcomplicated code whenever you guess wrong.
A continuously developed project will systematically keep outgrowing itself.
Or just that errant refactoring automation that moved a proverbial (or literal) bit out of place.
It's good to learn from our mistakes. But if there's one thing I have learned from working across teams and orgs, it is that basically everyone works with imperfect information. And oftentimes, you just have to make do, write the code, and try to make room to course correct in the future.
Beginners tend to write awful code without GPT's help, so I don't think it makes things worse.
Answers don't exist in a vacuum. The chat interface allows feedback and corrections. Users can paste an error they're getting, or even say "it doesn't work", and GPT may correct itself or suggest an alternative.
> Beginners tend to write awful code without GPT's help, so I don't think it makes things worse.
> Answers don't exist in a vacuum. The chat interface allows feedback and corrections. Users can paste an error they're getting, or even say "it doesn't work", and GPT may correct itself or suggest an alternative.
I think you're making the mistake of viewing the job as a black box that produces output.
But what you're proposing is a terrible way to develop someone's skills and judgement. They won't develop if they're getting their hand held all the time (by an LLM or a person), and they'll stagnate. The problem with an LLM, unlike a person, it that it will hold your hand forever without complaint, while giving unreliable advice.
That's speculation about a hypothetical person, one that falls into learned helplessness, but there are people with different mindsets.
Getting some results with the help of infinitely-patient GPT may motivate people to learn more, as opposed to losing motivation from getting stuck, having trouble finding right answers without knowing the right terminology, and/or being told off by StackOverflow people that's a homework question.
People who want to grow, can also use GPT to ask for more explanations, and use it as a tutor. It's much better at recalling general advice.
And not everyone may want to grow into a professional developer. GPT is useful to lots of people who are not programmers, and just need to solve programming-adjacent problems, e.g. write a macro to automate a repetitive task, or customize a website.
> Getting some results with the help of infinitely-patient GPT may motivate people to learn more, as opposed to losing motivation from getting stuck, having trouble finding right answers without knowing the right terminology,
> ...People who want to grow, can also use GPT to ask for more explanations, and use it as a tutor. It's much better at recalling general advice.
The psychology there doesn't make sense, since the technology simultaneously takes away a big motivation to actually learn how to get the result on your own. It's like giving a kid a calculator and expecting him to use it to learn mental arithmetic. Instead, you actually just removed the motivation for most kids to do so.
I think there's a common, unstated assumption in tech circles that removing "friction" and making things "easier" is always good. It's false.
Also, a lot of what you said feels like a post-hoc rationalization for applying this particular technology as a solution to a particular problem, which is a big problem with discourse around "AI" (just like it was with blockchain). That stuff is just in the air.
> ...and/or being told off by StackOverflow people that's a homework question.
IMHO, that's the one legitimately demotivating thing on your list.
By that measure, gif.ski is 78% better than itself!
With lossy compression it's always possible to make files smaller, and smaller, and smaller. Comparisons of lossy encoders without controlling for quality lead to such absurd results. See https://kornel.ski/en/faircomparison
Electron beatings will continue for as long as making a proper GUI for major platforms requires learning three different languages and four different UI toolkits, where every one of them is less flexible and harder to use than the web stack.
For developers Electron is the easiest way to have a portable UI, with very flexible and capable styling, decent text rendering, animations, and a layout and rendering engine optimized for a very broad range of use-cases, with fantastic developer tools.
I get that tradeoff, and I can see how it makes sense for apps that don't interface that much with the OS/UI they run on (although I'm still not a fan of the resource usage and the occasional UI yankiness).
But for a terminal emulator? These are pretty deeply integrated with the OS they run on and often run with elevated permissions and/or get to pass through passwords as they're entered! I can't imagine using one written in Electron.
Can it prune history?
What if I write a todo application in it, and one of the clients will connect only once a month? What about a client that will drop and never return? (in some systems it means past updates will pile up indefinitely, and state on other clients will keep growing)