morgancmartin
It is a bottom up approach to state. Everything is modeled as atoms. Atoms can be defined in any module and are accessed by simply exporting/importing from/to the module. Simply call the useAtom hook and you're now using that state atom.
Under the covers it is scoped via a top-level React context, I believe.
Atom derivation, read/write, async, it's all there. It also hooks into a lot of other popular state libs like redux, XState, Zustand and many others.
I much prefer it to Redux because there is zero boilerplate and extremely flexible. It can be easy to hang yourself with all the extra rope it gives you if you aren't careful though.
Personally, as a long-time magit user, I'm not sure I see any reason to make the switch. Can anyone more familiar with GitLens (possibly the author) provide any commentary on its differences with magit's blame functionality?
AFAICT, the only difference seems to be that the commits simply show on line selection instead of all at once, but there may be more going on here than I am noticing at first glance.
On the other hand, I am a huge proponent of Spacemacs. It's technically just a custom Emacs config, but it is a significant enough departure from the base functionality that it is managed as its own project.
It brings Vim keybindings (as well as an improved package management system and a bunch of other stuff) to Emacs in a very intuitive and seamless way. That way you get access to the very rich Emacs ecosystem, as well as the endless potential for customization, all with the, IMO, superior text editing experience of Vim.
I've tried VSCode, and it doesn't hold a candle to Spacemacs IMO.
I do occasionally envy some of the goodies the VSCode ecosystem benefits from, however. In particular the new Github Codespaces, for example. Still not enough to make me leave Spacemacs though.
I should also note, I've attempted OOP in TS and it wasn't pretty. It is much more suited to a functional style IME, although I will concede I have seen some open source projects that use it in a Java-esque OOP style presumably to good effect. Personally it wasn't my cup of tea.
They look like really well done apps, congrats on (kind of) exiting the rat race!
Essentially, I see it as a meta-indicator, a way of making decisions in situations where I don't have all of the information.
Another way to look at it would be through the lens of game theory. Game theory is absolutely a field of some consequence, and it's all about relative positioning of agents in a system and their likely intentions after factoring in the likely intentions of their peers.
In a word, you might describe this type of analysis as simply, "wisdom." I find it to be of particular value in entrepreneurship.
I think it would be pretty neat to include metadata in the calculation of the voting power metric as well. Such as how each subscriber votes in relation to other subscribers and assign a higher score to those who vote inline with the community. The goal being to optimize for those subscribers who embody the spirit of the community. Of course that brings up issues of echo chambers but other kinds of metadata could be factored in to offset that too. I would have to think on it for a while to come up with something I felt was as meritocratic as possible.
EDIT: And the book by the same author, Refactoring UI, is also a fantastic primer on the philosophy behind Tailwind.
It's not nearly as fast as "proper" swimming but I'm sure I could keep it up approximately as long as I could walk. Maybe even longer. It makes for a great option in dangerous situations, and is likely a good fundamental technique to teach anyone just learning.
I think I know the type of wordiness you're referring to and my term for the type of person that uses that technique is a "snake". The kind of unconscionable person that, like a magician, draws the audience's focus to one point while enacting their trick with the other hand.
I had a particular person in mind when I wrote my other comment. It was a guy I used to work with who initially didn't like me despite my very team-oriented spirit. I think he thought I was a snake.
Eventually our boss noticed our inability to collaborate and forced us two, along with a more senior team member to brainstorm a solution to a particular problem afflicting the project that day.
I have a tendency to relentlessly refine on a solution or quickly reject solutions I don't see as tenable. Sometimes when someone first meets me, they get the impression that I "shoot down" their ideas because of some desire to appear superior.
I do sometimes shoot down ideas but only because I am an umcompromisably honest person, at least with respect to work, which I take seriously. Which isn't to say I'm Dwight Schrute and I go out of my way to shoot other people's ideas down. I just won't lie and say I like something if I don't. I also am aware of this aspect of my personality and go to lengths to suppress it for the sake of those around me. But it is who I am at the end of the day, and I don't intend to change that.
Anyway, at first the guy wanted to butt heads with me, but I did my best to project a patient and collaborative vibe and the senior member encouraged the dude to look at my ideas in a more removed fashion rather than in an emotional way and my teammate eventually came around and began working with me.
That coworker and I went on to become, if not friends, solid collaborators for over a year after that until the point at which I left the company.
I think some people have an initial dislike for overly straightforward people like me, but most usually come around to it and even appreciate it eventually. You don't have to worry about me double crossing you. I'm predictable.
The rest who don't can pound sand as far as I'm concerned.
It's a fair position to take, but in some cases where successful communication is a necessity, that stance doesn't cut it.
My go-to heuristic is "the wordier the question, the more likely it is to be perceived as well intentioned."
So if I'm wondering why someone didn't use sshd, I might say, "So I'm wondering if you considered using sshd for this? You probably did, I'm mostly curious about how you think it fits into things."
Wordiness works in my favor in two ways. One, the extra words help me to be precise in my _intent_ behind what I'm saying. Fewer words may, in some cases, technically be more precise, but have a tendency to leave the other person considering whether their initial interpretation is really the correct one or if there is some other implication to the words they're not seeing. Using more words cuts down on that effect quite a bit. It narrows the search space, so to speak.
The second way is that because I'm presumably actually speaking the question, it allows me to closely shape my intonation to be as neutral as possible. I say neutral rather than non-threatening, because non-threatening makes me think of how one speaks to a child, which is definitely not what you want when speaking to a colleague. And of course, you don't want to sound like you're coming from a position of superiority either. I like to think of it as an adventure between me and the listener to solve the puzzle. That takes the focus off some implied power struggle between me and them and instead frames things as the listener and I teamed up to slay the puzzle-dragon.
Number two doesn't apply if you're communicating through text, which is why it's important for those who communicate through text very often to have a tendency of always assuming the best intentions of a given piece of communication until proven otherwise, or by intentionally asking for clarification when necessary.
I was born when my dad was about 41 years old. The significant generational gap between us caused some difficulty in the way we communicated with one another and so I was forced to adapt my approach to communicating with him as I grew up. Now that I'm older, I find that I'm exceptionally good at communicating with other people where cultural differences between the communicators might otherwise result in issues for someone without the same type of "training" as me.
The downside is my written communication tends to be annoyingly wordy. Ironically, my high school English teacher didn't like me very much.
EDIT:
And knowing your audience is important too, of course. The direct, "Did you consider using sshd for this?" would be fine if I were talking to a senior dev, or someone I know is unlikely to take offense to a direct question. Actually, in the particular case of a senior dev, I'd probably reword it to be, "Why didn't you use sshd here? I would've thought it would be useful because of x, y, and z." This frames it as me asking for guidance from the master. I like to bring the wordiness technique in for cases where I know the listener has a tendency to take things the wrong way. Definitely not to be used all the time or else you get a reputation for being a wordy speaker.
This does not seem to me to be a safe assumption to make. The market is irrational. There is no reason to believe popularity has any significant correlation to the effectiveness of a tool.
I think Naam's take on the genre hits a lot of the bullet points others in the thread have cited as desirable characteristics in their ideal sci-fi.
It takes what is in my opinion the most reasonable approach to the shiny vs non-shiny duality and simply includes both. From the devastating effects advanced technology could wreak against a group of tech abstaining monks to the spiritual enlightenment that might be obtained if humans could communicate mind-to-mind, I think the series does a great job of illustrating the best and worst of what the near future could conceivably have to offer us.
It's possible you'll find it to be too inline with SV's idealistic picture of a future where truly outlandish things like truly conscious artificial intelligences or indefinite life extension are actually within the realm of possibility -- but despite Naam's choice to feature these same kinds of "tech miracles", I think it still manages to stay remarkably down to earth. Despite the grandiosity of some of the possibilities described it all had so much detail so as to still feel plausible and even familiar at points.
IIRC Naam took a fair bit of care in basing most of the tech and predictions in the book on actual scientific opinion of what might be possible given humanity's current scientific understanding and rate of progress.
Despite having to suspend my disbelief at a few points, I enjoyed the hell out of it and count it as one of my favorite sci-fi universes up there with Stross' Accelerando and Banks' Culture series. Here's hoping you do as well!
It never hurts to be cautious, but total pessimism isn't warranted either.
I think that it's clear that brainpower is at the very least an important metric for determining get-stuff-down power as the vast majority of human beings to ever accomplish anything of note (financial, scientific, or military success) all possessed above average intelligence in way or another. I suppose the case might be made for different kinds of intelligence, but presumably something considered worthy of the title of ASI would be competent in any conceivable dimension of intelligence.
And if it is true that brainpower is at least an important component in whatever might make up get-stuff-done power, and assuming that the level of brainpower under a hypothetical ASI's command was effectively (in relation to a human being anyway) unbounded, then whichever other (external?) metrics potentially attributable to get-stuff-done power could presumably be compensated for by the overwhelming weight of the brainpower.
I'm curious what other metrics for get-stuff-done power you might have in mind?
Take any reasonably intelligent human, say a valedictorian from your hometown high school.
Now consider a system with the same intellectual capacity for reasoning about the world as your valedictorian and give that algorithm a data-center's worth of computational resources. Keep in mind that this system has perfect recall. Keep in mind that the speed at which the system can perform intellectual labor is not constant as it is in humans, but bounded only by the amount of computational resources that the system has access to.
So this system is just as intellectually capable as your valedictorian with one data-center's worth of resources and it has perfect recall. Now what happens if we double those resources and give it two datacenters? Does it become twice as intelligent? Or twice as fast at accomplishing some given intellectual task? We can't say for certain because the answer depends entirely on how such a system might work and since no such system yet exists, we can only speculate. But as it turns out, we don't need to know exactly which dimension it would improve in, only that it would improve in some relevant dimension.
And that isn't even considering the fact that such a system could improve its own architecture further improving in some given dimension relevant to its ability to act intelligently.
Assuming intelligence is capped at the human level is as naively anthropocentric as the old belief that the Earth was the center of the solar system.
There are 0 AGI's on earth. I recognize the author is intentionally twisting the definition of "AGI" since the imprecise nature of the field can lead to some debate about the definition, but I think it makes the most sense to side with the most popular definition which is, "Artificial general intelligence (AGI) is the intelligence of a machine that could successfully perform any intellectual task that a human being can."[1]
No such entities or algorithms exist that could reasonably be considered to fall under this definition.
The goal of the AI field of study is not necessarily to create a system that emulates a human. This is only a proposed solution to accomplishing the actual goal which is to create something with the same intellectual capacity as a human. It is an important distinction.
Yes, if the goal was to simply create an artificial human and then stop there without giving the system the ability to further improve itself then it would make no sense to spend decades of man hours on the task because we could just do it the old fashioned way and spend approximately twenty years raising a child to maturity.
But no, the goal is to create a system capable of reasoning in a way sufficiently similar to a human that it could reasonably be expected of performing adequately in any situation that a human might. Given that this could be accomplished, presumably the intelligence of the system could be scaled according to the amount of computational power is fed into it, propelling it past the most intelligent humans that have lived so far. Consider a system twice as intelligent as Einstein with the ability to reflect on its own architecture and then modify that architecture, thus further increasing its own intelligence.
From there, the hope is that something orders of magnitude more intelligent than the most intelligent humans to ever live could more aptly extract observations about the world given the same amount of data as humans and then conceive of clever ways to overcome the limitations of "finite resources."
The author seems hopelessly out of touch with the actual aims of the field he has chosen to criticize and so I am unsure why they ever thought they had any place to (attempt to) make their critique in the first place.
[1] https://en.wikipedia.org/wiki/Artificial_general_intelligenc...
There is an inverse relationship between the number of contextual assumptions made about a widget and the number of contexts the widget can operate in. Something with few contextual assumptions is typically referred to as "flexible."
Duck typing as a practice entails a focus on the capabilities of a given widget rather than the "role" (read: type) of that widget. Focus on capabilities = fewer contextual assumptions. Focus on role/type = more contextual assumptions. Thus duck typing can be thought of as one possible embodiment of the koan's intended perspective.
Of course, some detractors of static typing might take this to mean that static typing implies a focus on types which as I've just shown would imply more contextual assumptions and less flexibility. But as rust's traits show, one can keep the benefits of static typing without sacrificing flexibility so long as the focus of the overall design is still capability-centric rather than role/type-centric. But that's a different conversation :)
Just as a stab in the dark, perhaps you perceive the philosophy of stoicism as being orthogonal to a healthy amount of flippancy in life? If that's the case then I would make the case that the two concepts aren't actually mutually exclusive.
One advantage in this new push to build another sandbox is that Rust is leading the charge and is the de facto language of choice when building a greenfield WASM project. Given its propensity for memory safety and WASI's emphasis on capability-oriented security, I think the WASI team has a good chance of building something with a lot of value. Nothing here is novel (except perhaps Rust's extreme prioritization of memory safety) but that doesn't mean it can't or won't be an improvement over prior attempts.
I wonder how many of the previous sandbox vulnerabilities were viable due to some quirky memory manipulation techniques? Quite a few I would imagine.