Let's say the only devices you can get that will run YouTube are running i/pad/visionOS or Android and that those will only run on controlled hardware and that the hardware will only run signed code. Now let's say the only way to get the YouTube client is though the controlled app stores on those platforms. You can build a chain of trust tied to something like a TPM in the device at one end and signing keys held by Apple or Google at the other that makes it very difficult to get access to the client implementation and the key material and run something like the client in an environment that would allow it to provide convincing evidence that it is a trusted client. As long as you have the hardware and software in your hands, it's probably not impossible, but it can be made just a few steps shy.
In single threaded scripting languages, it has arisen as a way to allow overlapping computation with communication without having to introduce multi threading and dealing with the fact that memory management and existing code in the language aren't thread-safe. In other languages it seems to be used as a away to achieve green threading with an opt-in runtime written as a library within the language rather than doing something like Go where the language and built-in runtime manage scheduling go routines onto OS threads. Personally I like Go's approach. Async / await seems like achieving a similar thing with way more complexity. Most of the time I want an emulation of synchronous behavior. I'd rather be explicit around when I want something to go run on it's own.
Agreed. Async I/O is something where letting the runtime keep track of it for you doesn't incur any more overhead, unlike garbage collection, and that makes for a much more natural programming pseudo-synchronous.
I'm more concerned about added sugar in other foods. If you're trying to keep your sugar intake down, cutting sugary sodas seems pretty obvious to me, but remembering to be careful about bread or tomato paste or anything else you might eat because some brands or restaurants add a bunch of extra sugar is really a pain.
The good thing is, if your palate has gotten used to unsweetened beverages, you can easily tell when bread or a sauce has sugar in it when it shouldn't. Or maybe I'm weirdly sensitive to sugar, I dunno.
Yes, and there are probably a lot of other clever ideas. But the better solution is probably just to implement more of the spec. Once you get through maybe 80% of the tags, you've eliminated 99.9% of the memory issue given their frequency distribution.
Data sovereignty and distributed identity. It's trying to avoid a centralized authority on where data is stored or how to resolve and trust an identity other than DNS and using signatures to validate data that you didn't get directly from the author.
You are a state machine. You have finite internal state that roughly adheres to a particular structure, you take in input, and as a function of internal state and input, you produce output and a new state. Sufficiently large models are a rough approximation. We are perhaps different stochastic parrots than the models we create, but likely stochastic parrots none the less.
You are a hydraulic system. You are composed of interlinked pipes within which the pressure rises and lowers in order to produce all your thoughts and actions.
You are a chemical soup. Your body is a closed system of proteins and amino acids reacting with each other, driving behavior in order to sustain the reactions.
You are an electric grid. A system of interconnected wires where electric impulses respond to one another in a synchronized manner, from which your life force is derived.
Probably better to say that we contain multitudes of probabilistic graphs that resemble state machines, but those graphs do not make up our entire system. Further, those graphs interact constantly with stochastic systems (the environment, other graphs, etc) through couplings of varying degree.
I believe that the different topologies of the kind of "idea graph" in the human mind is becoming less diverse. That, as media consolidates and becomes more accessible in all parts of the globe, the diversity of modes of thought decreases as people become, more or less, Americanized
Perhaps Americanized isnt the right term. Fundamentally, there is something at play where the more “known” the less magical the brain is. That is, it doesnt have to think outside the box because the box is seemingly fully explored.
Why do hard thing when everyone says hard thing is too hard. What if there was no everyone? Is thing that hard?
I dont think original thinking is going to go away but i do think it will be owned by those who control the all thing which absorbs it from the mass of information.
Yes, completely agree. Marshall Mcluhan used the term "extensions of man" in the subtitle for "Understanding Media" to refer to information technology (in his day, TV). He said that in the same way a car or our clothes become an extension of our bodies, information technology becomes an extension of our central nervous system, and as the world becomes more connected through information, we begin to form a global village, where people on the other side of the country or even the earth begin to share a common memetic understanding. Things far away become immediate and personal and the layers which we filter them through become thinner, giving a kind of sameness to how we react to new information
A state machine is a very specific thing in Comp Sci, and I’m not clear you have a strong grasp on it.
You’re not a state machine. A state machine does one serial task, which is why the input+state can create a consistent and deterministic output+state. There are no secondary input streams or exogenous factors to consider for calculating a state machine transition.
Humans create output from many streams of input, arriving at across many different time horizons. Because of this, you cannot create a deterministic model of a human’s state transition for a given input - a requirement of state machines.
This isn’t philosophical or semantics. Mathematically, you’re not a state machine.
I agree with you. I get tired of people complaining about "cancel culture" and the reactions of private individuals and groups to the opinions and actions of other private individuals and groups. People have the right to say what they want and to do what they want up to the limits of causing harm to others. They can shout their inflammatory opinions from the roof tops. They can boycott and petition to try to convince private groups from giving platform to opinions or people they don't like. All of that is protected speech.
This current executive branch is weighing in and using its influence to try to control speech. It's not "you'll get disappeared by secret police for what you told your coworker in confidence" levels of control, but that it's happening at all is alarming. I worry that they have no problem trampling on the first amendment and that it seems like no part of the government is going to restrict them from it.
Because they each result in round-trips and individual queries to the database rather than a more efficient single round-trip with a join. Note: I don't know the details of GraphQL, but I'm assuming it does the smarter thing.
In this paradigm, the places where you are calling map() could probably be replaced with explicit getComments() or getCommentsWithAuthors() or two methods that do just one query each.
But you are right that this won't work great with traditional databases without significantly more magic on the server side, and in that sense the comparison with GraphQL is... aggressive :)
It is still much better than making all the calls client-side, of course. And there are many use cases where you're not querying a database.
And maybe there can be some fusion between GraphQL server infrastructure and this RPC-oriented syntax that gives people the best of both worlds?
I wonder about the categories of apps for which offline first with potentially infinitely delayed sync provides a better experience and how large those really are.
It seems like most of those are apps where I'm creating or working on something by myself and then sharing it later. The online part is almost the nice-to-have. A lot of other apps are either near-real-time-to-real-time communication where I want sending to succeed or fail pretty much immediately and queueing a message for hours and delivering it later only creates confusion. Or the app is mostly for consuming and interacting with content from elsewhere (be that an endless stream of content a la most "social media", news, video, etc. or be it content like banking apps and things) and I really mostly care about the latest information if the information is really that important at all. The cases in those apps where I interact, I also want immediate confirmation of success or failure because it's really important or not important at all.
What are the cases where offline-first is really essential? Maybe things that update, but referencing older material can be really useful or important (which does get back to messaging and email in particular, but other than something that's designed to be async like email, queueing actions when offline is still just nice-to-have in the best cases).
Otherwise the utility of CRDTs, OT, et al. is mostly collaborative editing tools that still need to be mostly online for the best experience.
> It seems like most of those are apps where I'm creating or working on something by myself and then sharing it later.
It is interesting. I've thought about things I don in non-messaging apps (which are online0first for obvious reasons), and all of them create something, which can be EXPORTED to on-line presence, but doesn't require connected app.
Code? I write it locally and use separate app to share it: git. Yes, code is collaborative creation (I'm working in the team), but it is still separate tool and I like it, as I control what I'll publish for my colleagues.
Photos? Of course I want to share result, but I'm working on RAW files with non-destructive editing and I want to share final bitmap (as JPEG) and not RAW data and editing steps.
Same with music, if I create one (I doesn't).
Texts must be polished in solitude and presented as final result (maybe, as typographically set one, as PDF).
All my "heavy" applications are and should be offline-first!
Yeah, I feel like for most applications the online part acts more like a backup than an interactive sync. How often do you really work on the same file on different devices? And if you do so, how often do you want to continue working on an old version rather than first forcing a sync of the latest revision? After all, without a sync you can't continue your work but only edit completely unrelated parts...
I think most real-world applications fall under either "has to be done online", or "if there are conflicts, keep both files and let the user figure it out". Trying to automatically merge two independent edits can quickly turn into a massive mess, and I really don't want apps to do that automagically for me without giving me git-like tooling to fix the inevitable nightmare.
Apart from small software studios with non-SaaS business models, there is just no viable local-first (offline-first with infinitely delayed sync) application category, in the consumer space. Consider military applications with heterogenous and constraint networks, where assets might need to coordinate p2p under adversarial jamming. There might be applications, where AP (choosing Availability and Partion Tolerance, cf CAP theorem) makes sense.
you are missing one key aspect: high latency. i am in a rural area with bad internet access. especially bad latency. every request to hackernews for example takes seconds. even if it doesn't make sense for hackernews to be offline. updating new messages, posting replies, upvotes, downvotes. etc, would all work better if they happened in the background, so that i don't have to wait for them.
that's why local first also makes sense for server bound applications. it's not offline first, but by moving online activities into the background, all my interaction with the site would be snappy and smooth, and i could read and comment and move on to the next action without waiting for the browser to reload the page
reply