For small problem sizes, you can get a nontrivial improvement by moving the unique up ahead of all the string manipulation:
jq -r '[path(..)|map(if type=="number" then "[]" end)]|unique[]|join(".")/".[]"|"."+join("[]")'
For larger problem sizes, you might enjoy this approach to avoid generating the array of all paths as an intermediate, instead producing a deduped shadow structure as you go along:
jq -rn --stream 'reduce (inputs|select(.[1])[0]|map(if type=="number" then "[]" end)) as $_ (.; setpath($_; 1))|path(..)|join(".")/".[]"|"."+join("[]")'
(Note that in either case, you still run yourself into a bit of trouble with fields named "[]", as well as field names with "." in them. I assume this is not a serious issue, since you're only ever looking at this interactively.)
Likely the best resource to learn about philosophy is the Stanford Encyclopedia of Philosophy [0]. It's meant to provide a rigorous starting point for learning about a topic, where 1. you won't get bogged down in a giant tome on your first approach and 2. you have references for further reader.
Obviously, the SEP isn't perfect, but it's a great place to start. There's also the Internet Encyclopedia of Philosophy [1]; however, I find its articles to be more hit or miss.
It's also not a very big leap from "My purpose is to do whatever is the greatest good" to "It doesn't matter if I hurt people as long as the overall net result is good (by some arbitrary standard)"
Here's a theory of what's happening, both with you here in this comment section and with the rationalists in general.
Humans are generally better at perceiving threats than they are at putting those threats into words. When something seems "dangerous" abstractly, they will come up with words for why---but those words don't necessarily reflect the actual threat, because the threat might be hard to describe. Nevertheless the valence of their response reflects their actual emotion on the subject.
In this case: the rationalist philosophy basically creeps people out. There is something "insidious" about it. And this is not a delusion on the part of the people judging them: it really does threaten them, and likely for good reason. The explanation is something like "we extrapolate from the way that rationalists think and realize that their philosophy leads to dangerous conclusions." Some of these conclusions have already been made by the rationalists---like valuing people far away abstractly over people next door, by trying to quantify suffering and altruism like a math problem (or to place moral weight on animals over humans, or people in the future over people today). Other conclusions are just implied, waiting to be made later. But the human mind detects them anyway as implications of the way of thinking, and reacts accordingly: thinking like this is dangerous and should be argued against.
This extrapolation is hard to put into words, so everyone who tries to express their discomfort misses the target somewhat, and then, if you are the sort of person who only takes things literally, it sounds like they are all just attacking someone out of judgment or bitterness or something instead of for real reasons. But I can't emphasize this enough: their emotions are real, they're just failing to put them into words effectively. It's a skill issue. You will understand what's happening better if you understand that this is what's going on and then try to take their emotions seriously even if they are not communicating them very well.
So that's what's going on here. But I think I can also do a decent job of describing the actual problem that people have with the rationalist mindset. It's something like this:
Humans have an innate moral intuition that "personal" morality, the kind that takes care of themselves and their family and friends and community, is supposed to be sacrosanct: people are supposed to both practice it and protect the necessity of practicing it. We simply can't trust the world to be a safe place if people don't think of looking out for the people around them as a fundamental moral duty. And once those people are safe, protecting more people, such as a tribe or a nation or all of humanity or all of the planet, becomes permissible.
Sometimes people don't or can't practice this protection for various reasons, and that's morally fine, because it's a local problem that can be solved locally. But it's very insidious to turn around and justify not practicing it as a better way to live: "actually it's better not to behave morally; it's better to allocate resources to people far away; it's better to dedicate ourselves to fighting nebulous threats like AI safety or other X-risks instead of our neighbors; or, it's better to protect animals than people, because there are more of them". It's fine to work on important far-away problems once local problems are solved, if that's what you want. But it can't take priority, regardless of how the math works out. To work on global numbers-game problems instead of local problems, and to justify that with arguments, and to try to convince other people to also do that---that's dangerous as hell. It proves too much: it argues that humans at large ought to dismantle their personal moralities in favor of processing the world like a paperclip-maximizing robot. And that is exactly as dangerous as a paperclip-maximizing robot is. Just at a slower timescale.
(No surprise that this movement is popular among social outcasts, for whom local morality is going to feel less important, and (I suspect) autistic people, who probably experience less direct moral empathy for the people around them, as well as to the economically-insulated well-to-do tech-nerd types who are less likely to be directly exposed to suffering in their immediate communities.)
Ironically paperclip-maximizing-robots are exactly the thing that the rationalists are so worried about. They are a group of people who missed, and then disavowed, and now advocate disavowing, this "personal" morality, and unsurprisingly they view the world in a lens that doesn't include it, which means mostly being worried about problems of the same sort. But it provokes a strong negative reaction from everyone who thinks about the world in terms of that personal duty to safety, because that is the foundation of all morality, and is utterly essential to preserve, because it makes sure that whatever else you are doing doesn't go awry.
(edit: let me add that your aversion to the criticisms of rationalists is not unreasonable either. Given that you're parsing the criticisms as unreasonable, which they likely are (because of the skill issue), what you're seeing is a movement with value that seems to be being unfairly attacked. And you're right, the value is actually there! But the ultimate goal here is a synthesis: to get the value of the rationalist movement but to synthesize it with the recognition of the red flags that it sets off. Ignoring either side, the value or the critique, is ultimately counterproductive: the right goal is to synthesize both into a productive middle ground. (This is the arc of philosophy; it's what philosophy is. Not re-reading Plato.) The rationalists are probably morally correct in being motivated to highly-scaling actions e.g. the purview of "Effective Altruism". They are getting attacked for what they're discarding to do that, not for caring about it in the first place.)
These days you need a CPU, a GPU, a NPU and a TPU (not Tensor, but Teams Processing Unit).
In my case, the TPU is a seperate Mac that also does Outlook, and the real work gets done on the Linux laptop. I refer to this as the airgap to protect my sanity.
If you think that trying some head of a small thuggish state, founded by its unilateral declaration of sovereignty over someone else's land, while already cleansing it of unruly natives, and terrorizing British officials for years both in Palestine and internationally (like with assassination campaigns and embassy bombings), that dug its own hole over decades into ethno-supremacy based and messianically driven conflict with Palestinians, will in any way degrade legitimacy of a court and treaty joined by 125 sovereign states (with almost all "western" ones included), then you're deluding yourself.
Especially when he's being explicitly tried for his role in ensuring that children have to suffer amputations and women get c-sections without anesthesia (among other things), which has nothing to do with defense of Israel.
If anything ICC standing rose a bit in many people's eyes today, slightly above the "court for african warmongers only", where it was previously.
That doesn't seem right to me. The closest I could come is seeing humanity, or perhaps the human species, becoming NPCs in their own story.
But I think individual humans have always been narratively secondary in the story of humanity.
And I think that's fine, because "story" is a fiction we use to manage a big world in the 3 pounds of headmeat we all get. Reducing all of humanity to a single story is really the dehumanizing part, whether it involves AIs or not. We all have our own stories.
>> I watched my computer reinstall edge, reinstall/hijack my drives with onedrive, re-add ads... But I left Windows for Fedora.
Had something similar happen when I finally relented to all the constant pestering to upgrade to Win11. I did so reluctantly. Suddenly, I needed to link everything to my onedrive account. Oh, you have an MS365 account? We need that too to set up your onedrive. Oh, you should use teams, let me make Edge your default browser and connect all your accounts to your edge account.
I didn't have any of this on Win10 and now it was just hijacking all my stuff, setting every MS program as the default and after I switched it, it would hijack them all back when I ran the updates. I purposefully keep all my stuff siloed for security reasons and here it was forcing them all together without my permission.
The last time it reset Edge and Teams and forced me to use my MS365 for Teams, that was it. I uninstalled it and then installed MX Linux (Debian based) and have been much happier since. I still have a Win10 desktop and I'm not surrendering that until I absolutely have to now.
Bitcoin has debasement, it's called altcoins and hard forks.
More generally, Bitcoin solves the wrong problem, because Austrian economics got the history of money wrong. Money wasn't invented to track scarce resources, money was invented to track who had paid taxes to the correct military invaders. The traditional / pre-money form of economic system (in the sense of it being a system to track the usage of scarce goods) is the gift economy. This is the system humans are built to work in. But gift economies are backed by strong promises of identity in close-knit groups. A bunch of rapacious murderers extracting food out of the fifth town they've sacked this week aren't going to be able to tell the difference between John, son of John, John, son of the brother of John, and John, son of the cousin of John.
What money does is separate a person's identity from their ability to access scarce resources. This 'paraidentity' of money is rendered in the most extreme in crypto. Your identity means nothing, just the size of your wallet, to the point where even voting in cryptocurrency is proudly for sale. The thing is, separating access to resources from personal identity also centralizes control of those resources. Printing money to fund war is not a bug, it is a feature.
In fact, it's not even something Bitcoin fixes. The primary source of liquidity in the Bitcoin ecosystem is businesses buying it to pay data ransoms. Bitcoin, in the name of opposing statism, invented a new kind of state whose military consists of hackers penetrating and encrypting systems to force you to buy Bitcoin to decrypt them.
The way you debase Bitcoin is by inventing new kinds of Bitcoin. Because, remember, the scarcity isn't the thing bringing liquidity into the system. If the ransomware people decide they're only taking Ethereum this week, then people are buying Ethereum, not Bitcoin. All money exists to pay taxes, and if the tax collector wants a different kind of money, then they've successfully debased the old money.
I also focused on the work done by the Levin lab after the Sean Carroll podcast [1]. In order to familiarize myself with the subject matter in a more practical manner I started writing a wrapper and a frontend, BESO [2], BioElectric Simulation Orchestrator, for BETSE [3], the Bio Electric Tissue Simulation Engine developed by Alexis Pietak which is used by the Levin lab to simulate various tissues and their responses based on world/biomolecules/genes/etc. parametrization. Reading the BETSE source code, the presentation [4], and some of the articles referred through the source code has been a rewarding endeavour. Some other books I consulted, somewhat beginner friendly were:
2018, Amit Kessel, Introduction to Proteins. Structure, Function, and Motion, CRC Press
2019, Noor Ahmad Shaik, Essentials of Bioinformatics, Volume I. Understanding Bioinformatics. Genes to Proteins, Springer
2019, Noor Ahmad Shaik, Essentials of Bioinformatics, Volume II. In Silico Life Sciences. Medicine, Springer — less basics, more protocol-oriented
2021, Karthik Raman, An Introduction to Computational Systems Biology. Systems-Level Modelling of Cellular Networks, Chapman and Hall
2022, Tiago Antao, Bioinformatics with Python Cookbook. Use modern Python libraries and applications to solve real-world computational biology problems, Packt
2023, Metzger R.M., The Physical Chemist's Toolbox, Wiley — a beautiful story of mathematics, physics, chemistry, biology; gradually rising in complexity as the universe itself, from the whatever (data) structure the universe was before the Big Bang to us, today.
somewhat more technical:
2014, Wendell Lim, Cell Signaling. Principles and Mechanisms, Routledge
2021, Mo R. Ebrahimkhani, Programmed Morphogenesis. Methods and Protocols, Humana
2022, Ki-Taek Lim, Nanorobotics and Nanodiagnostics in Integrative Biology and Biomedicine, Springer
In video format I particularly watched Kevin Ahern's Biochemistry courses BB 350/2017 [5], BB 451/2018 [6], Problem Solving Videos [7].
Story time: the whole development of protobuf was... a mess. It was developed and used internally at Google long before it was ever open sourced.
Protobuf was designed first and foremost for C++. This makes sense. All of Google's core services are in C++. Yes there's Java (and now Go and to some extent Python). I know. But protobuf was and is a C++-first framework. It's why you have features like arena allocation [1].
Internally there was protobuf v1. I don't know a lot about this because it was mostly gone by the time I started at Google. protobuf v2 was (and, I imagine, still is) the dominant form of.
Now, this isn't to be confused with the API version, which is a completely different thing. You would specify this in BUILD files and it was a complete nightmare because it largely wasn't interchangeable. The big difference is with java_api_version = 1 or 2. Java API v1 was built like the java.util.Date class. Mutable objects with setters and getters. v2 changed this to the builder pattern.
At the time (this may have changed) you couldn't build the artifacts for both API versions and you'd often want to reuse key protobuf definitions that other people owned so you ended up having to use v1 API because some deep protobuf hadn't been migrated (and probably never would be). It got worse because sometimes you'd have one dependency on v1 and another on v2 so you ended up just using bytes fields because that's all you could do. This part was a total mess.
What you know as gRPC was really protobuf v3 and it was designed largely for Cloud (IIRC). It's been some years so again, this may have changed, but there was never any intent to migrate protobuf v2 to v3. There was no clear path to do that. So any protobuf v3 usage in Google was really just for external use.
I explain this because gRPC fails the dogfood test. It's lacking things because Google internally doesn't use it.
So why was this done? I don't know the specifics but I believe it came down to licensing. While protobuf v2 was open sourced the RPC component (internally called "Stubby") never was. I believe it was a licensing issue with some dependency but it's been awhile and honestly I never looked into the specifics. I just remember hearing that it couldn't be done.
So when you read about things like poor JSON support (per this article), it starts to make sense. Google doesn't internally use JSON as a transport format. Protobuf is, first and foremost, a wire format for C++-cetnric APIs (in Stubby). Yes, it was used in storage too (eg Bigtable).
Protobuf in Javascriipt was a particularly horrendous Frankenstein. Obviously Javascript doesn't support binary formats like protobuf. You have to use JSON. And the JSON bridges to protobuf were all uniquely awful for different reasons. My "favorite" was pblite, which used a JSON array indexed by the protobuf tag number. With large protobufs with a lot of optional fields you ended up with messages like:
[null,null,null,null,...(700 more nulls)...,null,{/*my message*/}]
GWT (for Java) couldn't compile Java API protobufs for various reasons so had to use a variant as well. It was just a mess. All for "consistency" of using the same message format everywhere.
I talked with a few infra-ish people at Facebook once upon a time, and they described effectively a "Service Assassination Team". ImageResizer1.0, ImageResizer9000, they were an actual funded team to hunt down and destroy (and presumably help migrate) people using ImageResizer1.0 (or whatever).
It seemed that was a very forward-thinking way of looking at things to prevent an eventual "big-ball-of-mud" pile of services.
Either that, or Bezos's insight that internal teams should have an API-charge, and each team had a budget for requests between systems. If you're on ImageResizer1.0, and the costs go up 10x or 1000x, you're instantly motivated to go and search for the recommended new alternative, or eat the increased API cost (which can then be directed to the "Service Assassination Team...")
I've seen this video a few times now, and what's amazing about it is that Jobs freely admits he doesn't even really know what OpenDoc was really all about as he goes on this presentation. It's nicely presented, but frankly I think it was off target. I would be pissed if I was the questioner who initiated it (though the questioner was very rude)
As I see it, OpenDoc's entire purpose was to benefit the user, as it put the focus on the user's intent and document rather than on the applications used to assemble it. The person who would have struggled to see the benefit was the application publishing houses, not the user. So I think this is all a bit disingenuous. There was a clear user benefit to something like OpenDoc, and frankly I think the era where Jobs returns to Apple is in fact the turning point where Apple went from an end-user focused company ("the computer for the rest of us") to a lifestyle/luxury-branding company.
That obviously has given them far better financial success, but has it benefited the world like Jobs liked to pontificate?
Frankly, what it comes down to is this: OpenDoc had no home at Apple, because the return of Jobs was not just a management transplant from NeXT to Apple, but a tech one as well, and Jobs & Tevanian etc. wanted to replace/supplant MacOS with what they had developed at NeXT. Like the Newton and other tech, OpenDoc was something innovated at Apple during the years while he was exiled. So it had to go and be replaced with whatever the NeXTstep/OpenStep world would want instead.
There's an excellent comment on that YouTube video, which I thought was insightful:
"Watch Ramblings
9 months ago (edited)
This was actually a fairly disastrous response from Steve Jobs that really hurt the company. This was 1997, more than a decade before the iPhone, and the Apple Macintosh (the company's sole product) was in bad shape. The questioner here was referring to the fact that Apple had just pulled the plug on support for OpenDoc, a cross-platform software framework for creating complex documents. Many developers (such as the questioner) had devoted years to the OpenDoc technology and made a livelihood developing applications for it since 1992, and thought Jobs abruptly dropped the technology without good reason. The questioner was asking, dude, why did you pull it? Jobs' response was basically, tough shit, no answer. Developers learned that technologies that were sacred to Apple one year could be dropped the next without cause or warning, so many devs concluded the investment wasn't worth it and abandoned the Macintosh platform in droves. The market share for the Macintosh would drop by more than 50% over the next two years as the (few) remaining developers who were loyal to the Macintosh platform fled to the greener pastures of Windows. People look at this response with rose colored glasses because of what Apple would become many, many years later, but this was actually a very poor way to respond to a legit question (although posed angrily) from the type of developers that Apple really needed to keep happy."
This essay falls into the same trap I see among a lot of my liberal (as opposed to socialist) peers: it assumes tolerance is something admirable, desirable, or fundamentally good. That's how you fall into the "tolerance of intolerance" paradoxical rabbit hole, and IMO, it's largely performative.
My stance on the subject, in contrast, is that tolerance isn't good enough. I'm not "tolerant" of gay people, as that suggests that their sexual orientation should disqualify them from my in-group, but that I would tolerate them anyway. No, I just don't see sexual orientation as a qualification for my peer group. Same goes for any other immutable characteristic of someone's existence. People, tabula rasa, are people, and that qualifies them for my respect.
But of course, people by the time I'm interacting with them are not blank slates. They have opinions, stances, and world views that they have acquired and incorporated into their identities, which they then act on to form histories. These perfectly mutable facets of their existence are entirely open to judgement. I'm tolerant of the merely tolerant, not because it's some unqualified good, but because it's just not bad enough to warrant exclusion from my inclusive-by-default in-group. People willing to openly state their bigotry towards people I consider my peers disqualify themselves from my respect. People willing to act on those bigoted beliefs cross the line into "evil".
In my opinion, this forms a far more consistent world view compared to the "tolerance is an unqualified good" stance.
None of you guys built this. Brewster Kahle did. Everyone fantasizes about how they would have sold at the top. But you won't. Ultimately, the Internet Archive took balls. That was the defining attribute. And the guy with balls was always going to take it farther than just that. That's what it means to have balls.
All the guys who fantasize that they would have stopped at the perfect stopping point would have never started. You can run a mirror now. You can run a crawler now.
Heritrix is free software. The IA dump is retrievable. What's stopping you from making The Compliant Internet Archive? Nothing really except for the fact that none of the armchair quarterbacks have even seen what a ball looks like.
A co-op like Mondragon but global in scope is at the center of 'Islands in the Net' by Bruce Sterling.
There's a much smaller co-op at the heart of 'Shockwave Rider' by John Brunner, but discussion of the mechanics is central to the story. This is an incredible book.