skysight-inc/HackerNews huggingface dataset:
Hi HN! Jake, Joey, and Jimmy here, founders of Authzed (W21). Today we’re open sourcing our production-ready Zanzibar paper[0] implementation for the world to use. Zanzibar is a centralized relationship based authorization system that Google uses to manage permissions for most of their core cloud products (Docs, YouTube, Calendar, Maps, etc). It is an incredibly flexible, robust, and performant service, with 99.999% uptime and 20ms 99th %ile latency for permissions checks.

We’re the core team behind Red Hat’s (nee-CoreOS, nee-Quay) Quay[1] image registry, and while building out that product as well as a number of others at CoreOS and Red Hat, we continually ran into challenges with authorization systems that were either inflexible, slow, or wouldn’t scale. We have actually had to cancel features in the past due the limitations in the permissions system.

That’s why we set out to build Authzed.com[2], a hosted, managed permissions platform to put an end to this madness! SpiceDB, the fundamental permissions database and access computation platform, is the central component of that platform. Today, we’re making it available under the permissive Apache 2 license for you to integrate with your own projects! We’re already using SpiceDB to power Authzed.com, but are still looking for feedback about our APIs and service.

As of today, the software already has:
Expressive APIs[3] for checking permissions, listing access[4], and powering devtools
An architecture faithful to Google's Zanzibar paper[5], including resistance to the New Enemy Problem[6]
An intuitive and expressive schema language[7] complete with a playground[8] dev environment
A powerful graph engine that supports distributed, parallel evaluation
Pluggable storage that supports in-memory, PostgreSQL, and CockroachDB
Deep observability with Prometheus metrics, structured logging, and distributed tracing

We will be hanging out in the comments section today, so please leave your feedback, criticisms, or just say hi!

[0]: https://research.google/pubs/pub48190/

[1]: https://www.projectquay.io/

[2]: https://authzed.com/

[3]: https://buf.build/authzed/api

[4]: https://docs.authzed.com/concepts/authz#what-is-acl-filterin...

[5]: https://authzed.com/blog/what-is-zanzibar/

[6]: https://authzed.com/blog/new-enemies/

[7]: https://docs.authzed.com/guides/schema

[8]: https://play.authzed.com/
Developers end up at local maxima because a whole bunch of practices add up to a working system. It's a mistake to champion any single practice without understanding how it fits into an ecosystem: time budget, testing, language features available, efficiency, tolerance for errors, imposed deadlines, third-party technical ecosystem, etc. It's all about the system where they all work together.

To truly suggest something as a best practice, you need to understand what it requires from the technical and social environment around it, and when it applies and doesn't apply. We're nowhere near that level of discipline as a field. This lack of discipline is why we wince when we hear that a startup is implementing something like voting machines: we know the financial incentives that lead to startups focusing on speed, and we can imagine the discipline that voting systems require. We know there's a mismatch between the social environment and the likely project management approach. But we're blind to the social and technical requirements that allow other practices to work well. When is it appropriate to use inheritance? Someone will inevitably say, "You shouldn't use it?" Why does it work so well in Rails?

IMO it's how developers like John Carmack[0] and Martin Fowler[1] can make opposite arguments about things like the benefits of having code inline or in functions. These two opinions work in conjunction with their environments; maybe video game and aerospace coding requires budgeted performance requires mutability, so Carmack has to control how you interleave side-effects. Maybe enterprise-grade Java programming doesn't have much of a performance budget at all, or maybe he values isolating testable functions more, so Fowler can take other approaches that allow more "readable" styles and not worry so much about side effects (since there are few).

[0] http://number-none.com/blow/john_carmack_on_inlined_code.htm...

[1] https://www.martinfowler.com/bliki/FunctionLength.html
The amount of time people spend complaining about solving trivial problems would be better spent studying for those problems in the first place.

If you literally know what questions are being asked in a test, you should probably fucking just learn it an move on.
Do you know anything about the company behind fairphone?

The top voted comments criticizing them all have clearly valid claims. it does not matter if the "ethical" product is good if the company behind them isn't ethical.
This is great feedback. We are discussing features that should satisfy this workflow in this issue: https://github.com/firezone/firezone/issues/259

It essentially boils down to having different firewall zones tied to user states (unauthenticated, authenticated, LDAP group, etc).
Someone is launching an AI generated boob NFT
Hacktober, Contribute to Bringing Conversational AI-Dialogflow CX to Slack
Wow, that's so nice to hear. Thank you!

That's actually a great idea.
If you say "high density", do you mean just less whitespace/spacing or should stuff like the upvotes, author and date be completely removed from the initial element?
There is a large difference between dogmatically declaring that every single service needs an interface, versus just introducing them at the point where you actually need more than one implementation.

I think that's the author's original argument - not that interfaces are bad in of themselves, but that cargo culting is problematic.

Furthermore, starting with an interface oftentimes makes you create the wrong abstraction, however when you have a concrete implementation, in my experience extracting an interface becomes easier to do, though mostly thanks to excellent IDE tooling.
But...neither are they full of people with varicella (nor were they ever).

So that's clearly not the only reason to vaccinate people.

I suppose rabies doesn't spread as easily between people, that might be a likely reason we don't vaccinate for it.
Yes they can. But that's an individual approach to a public health crisis: people not at risk can pass the virus on to those who are at risk. If you were in a high risk group, wouldn't you appreciate your neighbor -- who might not be in a high risk category -- getting vaccinated?
No argument on either side is particularly logically persuasive, so the best we can strive for is plausible.

Something akin to "Dust Theory" from Permutation City is a semi-plausible theory of non-creation (although, as it's fiction and must at least pretend to entertain a plot, some happenings in the book are much more far-fetched).

Edit: although on second thought maybe the book's actually more of a theory of creation, and we're the insects. I don't know.
Some certainly are, many are not.

To discern the two is very easy. You write a piece of code. If someone else or even yourself can still understand it after a month, then you're practicing the "best practices".

Whereas, if you don't follow some "best practices" and they're still clear to others, they are just "developer preferences".
Thanks, I might just give org-roam another try!
Both. It's just more flexible than two 1GbE NICs.
100% that's true! I'm not saying developers having preferences and everybody abiding by them is a bad thing, more just that a lot of what constitutes "best practices" are often preferences and we should call them that.
> They don't do that much more today than in 2012

Just to note, often sales will scale linearly with revenue, and certainly most well-run companies will match revenue to headcount growth.

But yeah, it's certainly possible that FB could be run much leaner, but then they'd be getting even more flack from governments/NGO's/hacker news etc.
I feel like emacs makes a much better case for this than vim, because it actually takes advantage of everything being one program (at the expense of rewriting the world, and basically being it's own operating system).
I have a dumb question, tangentially related to this:

Can you set up a non-profit as long as fees and/or donations are limited to expenses (not compensation)?
Isn't it the same CPU, just differing numbers of cores with different clock rates and different TDPs? I'm assuming that at least part of this is just due to binning, where the best samples are 3Ghz high core count, and the lower samples have cores fused to disabled and run at a lower TDP/clock.

Its not like Intel, in that Ampere does not seem to play games with memory channels/clock, PCIe lanes, different accelerator features, etc.
> I'm still puzzled: Ampere list show at least 16 SKUs, imagine dealing with 16 different fabs, circuits, packages, specs, sales.

That's probably not what's happening though -- more likely, this is 1-4 different chips with aggressive yield management and some cores being fused off for the most entry level SKUs.
So when are you guys IPOing so I can throw my life saving at your stock and forget it until I retire?
> "The question of the origin of COVID-19 isn’t of merely academic interest. The answer could guide the world’s preparation for future pandemics; if the virus emerged from a laboratory, then improving lab safety measures will be prioritized. If scientific opinion continues to coalesce around animal-to-human transmission, that will underscore the importance of regulating contact between humans and wildlife."
Very cool! I think you should leave scrolling alone, the selection animation is too fast to read all the stories and comments as a list. Acting like a mobile OS picker is annoying.

Also nitpick, Alt-H is not an easy key to hit on mac, why not just '?'
After reading this article, the theory that comes to mind is that "best practices" not just developer preferences - rather, "best practices" is cargo culting by mediocre programmers, trying to copy techniques that a really skilled programmer once employed to do amazing things.

This is the part of the article that made me think this:

>As I type this, I’m in a discussion about whether it’s better to pass a few unnecessary parameters to simplify a bash script’s internal logic or pass fewer parameters and make the bash script more complex.

This sounds like they're on the verge of parameterized, object-capability design - passing in the paths to operate on, rather than hardcoding some internal logic to determine what to do. If you do this in the right places and at the right time, you can do amazing stuff, reuse scripts in totally novel environments and for novel purposes. At other times, it's not necessary. But I'm guessing neither side really knows how to use that to do amazing stuff.

Some programmers don't have the skill to recognize when a specific technique is justified or unjustified. So, unmoored from technical reality, they just argue about cultural norms - blindly copy what someone else did once, which brought someone else success - cargo culting.

That all sounds very mean, but if this is what's actually going on, I'm not sure what the solution is. Maybe more focus on really impressive and amazing concrete projects, rather than just individual practices in isolation?
> CDC data shows that breakthrough infections are common

What do you mean by common? Do you mean that it happens or that it’s the same rate of infection as being unvaccinated? Your argument only works if the breakthrough infections are as “common” as getting infected without the vaccine.

> Whether we're exposed by a vaccinated or unvaccinated individual is irrelevant

But it is relevant that the chance of a vaccinated individual being contagious is _massively_ lower. You can’t argue that breakthrough infections of vaccinated individuals exist, so therefore coming into contact with a vaccinated person is as risky as coming into contact with an unvaccinated person.
If the hicks want to drink right-wing koolaid and die of COVID rather than get vaccinated and wear masks, then I've got three words for them: "It's your funeral".

We've got enough Herman Cain Awards for anybody who wants one. Stack 'em up like cordwood and dig mass graves for 'em in landfills. Dead rural conservatives are the answer to all of America's problems.
If companies truly care about diversity of thought as they say they do, there is a massive untapped group who really bring fresh perspectives: older career-changers.

I might be biased as I belong to that group, but I have met some fantastic people from that group.
Yes, it was/is for only the duration of the summer (school) break.

Has some very weird constraints regarding borders when combining with the eurorail/interrail though.
Au contraire, I would not expect anything else but that there are Magma fans lurking on HN. :-P Some of us even have the necklace pendant to prove it!

None other than Jello Biafra introduced them at a concert at the Fillmore not too long ago, saying how much he dug them. Now THAT was not something I was prepared for!
Best practices in civil engineering are connected to outcomes. You know that something is a good practice if not doing it causes things to collapse or catch on fire.

"Best practices" in software engineering are usually about internal development processes and don't have any verifiable connection to outcomes.

In other words, we have two entirely different things labeled with the same name. People who commonly use the phrase "best practices" for software are literally trying to confuse you and generally are not worth listening to.

That said, some things in software are worth analyzing to have a better process, but those things need to be examined within a specific context. If someone claims that you need to, say, create an interface for every class, they should be able to explain why and how it is relevant to your work. If people make claims they cannot explain by connecting them to meaningful outcomes, those people are, again, not worth listening to. They might be mindlessly parroting something they have heard without having any clue as to the meaning of the practice. Unfortunately, our field is full of "professionals" that do exactly that.

Software is a pretty messed up domain that is frequently a self-licking ice-cream cone. (You write code to solve problems created by other code.) Because of that, it's often socially mediated, just like non-engineering fields. To establish anything for real in this self-referential environment you need to be able to have conversations about costs, tradeoffs and outcomes - within a specific context.
The rabies vaccine is expensive, unpleasant, only confers protection for a limited time and is still effective after exposure but before the disease develops. There's no point in wasting the money to subjugate everyone to that when you can just vaccinate the people who have come in contact with rabies or are at risk of having done so.
Scientists test medieval gunpowder recipes with 15th-century cannon replica
Yes, if you comply with the relevant regulations.

https://pe.usps.com/text/pub52/pub52c5_008.htm#ep184109

526.7 Dead Animals or Parts of Animals

"GROUP A: Items that need to be refrigerated"

"GROUP B: Items that must be dried"

https://pe.usps.com/text/pub52/pub52c5_003.htm#ep183811

521 General Requirements

"protection of animal specimens against spoilage"

"Mailers are urged to work with postmasters"

https://pe.usps.com/text/pub52/pub52c3_027.htm#ep900096

349.23 Dry Ice

"containers that permit the release of carbon dioxide gas and conform to 49 CFR 173.217 and 175.10(a)(10)"

https://pe.usps.com/text/pub52/pub52apxc_029.htm#ep1000804

USPS Packaging Instruction 9A

"must be clearly marked “Carbon Dioxide Solid, UN1845” Or “Dry Ice, UN1845”"
I don't know. And actually I don't care. A program that fits in a single file with 120 lines of readable code is a price I'm willing to pay for close to best possible performance.

But that is not why I commented. I commented because I wanted to illustrate that the author questioned something that can be easily answered with a simple google search. I'm sure the author is qualified enough to answer the question, but instead left in the post giving most readers a impression that the complexity is there out of incompetence of GNU developers.

EDIT: I should not assume you asked in bad faith, but as the sibling commented. The answer to your question can be easily found in the link I posted. Making your behavior strangely similar to the author of the post: making questions that can be easily answered while giving a bad impression of others. Please, avoid that. It may work in many places but will fire back at you sometimes.
> What would have been a better way of handling the transition?

The problems all came from the top-down direction. Replacing the CEO with an experienced big company leader could have solved so many issues.

The CEO was good at founding startups and running small teams, but that’s all he really wanted to do. He was trying to run a big company like a small startup and actively fought big-company organization styles.

Companies like Microsoft, Facebook, and Google don’t try to pretend they’re still startups. They embrace the fact that they’re a big company and they make it work. They’re not perfect, but it’s better than a slowly failing big company that can’t accept that change is necessary.
Those three are some of my absolute favourites. I feel like I listen more to Laughing Stock these days than Spirit of Eden simply because I think I know every last nuance of SoE from repeated listening. I love the solo album but weirdly never listen to it that often. Possibly because I always end up listening to Laughing Stock first. It is most definitely the weirdest of the three. I feel like the others demand your full attention to appreciate, but Laughing Stock makes me want out to get out a corkboard to fully understand it.

So sad that Hollis quit the business. I understand that he was completely fine with doing so, but I feel like we missed out on a lot.
SaaS User Onboarding: 15 Ways to Drive Your SaaS Business Now
User onboarding is the process of guiding new users through your product. Here are the 15 best onboarding techniques for any SaaS business.
I suspect you're being facetious, but I'll bite (ha): rabies pre-exposure vaccination requires (usually) 3 doses and is quite expensive (you could expect to pay over $1,000 for the series). Pre-exposure vaccination does not eliminate the need for post-exposure prophylaxis. If you have pre-exposure vaccination, you won't need human rabies immune globulin (HRIG) post-exposure, but that's a bigger benefit in isolated regions and the third world, where HRIG might not be easily accessed, than it is in the developed world.

Since most people in the developed world do not live in areas where rabies is endemic and/or where they are frequently in high-risk environments, and they can access the necessary prophylaxis in an emergency, the cost-benefit does not favor pre-exposure vaccination for most people.

Also note that rabies pre-exposure vaccination doesn't last for life. You usually need a booster every year that you remain at high risk.
Show HN: I bought and Sold the house of my dreams within a year
In a way there are standards for software but those standards are not expressed in software terms.

Firstly, most software is harmless. If it goes wrong people may be annoyed, but no one is harmed. But if I write software to control an aircraft, then it would have to abide by aviation standards. If I write financial software then I would have financial regulations to follow. Same for medical devices. So, there are standards for software but they are indirect and expressed in terms of the wider domain in which it runs.
so would someone mining bat poop for fertilizer.
It's a three shot vaccine that only gives protection for two years. Considering how rare rabies infections are in humans, it seems like it makes more sense to treat people after they are bitten and only vaccinate those who may come in contact with infected animals.
Microsoft lost their appeal in Quebec

https://www.oiq.qc.ca/en/media/pressReleases/Pages/default.a...
Since I am close to retirement been watching videos about tiny homes and van life and log cabin in the middle of the woods and of late living on a narrowboat on the English waterways.

But I then go camping and realize after a few days how much I would miss my modern amenities.

Nostalgia.
What? ECS is soooo object oriented. It's basically the modern OOP attitude of poo-pooing inheritance in favor of composition, writ-large. Yet, somehow, all the components have deep inheritance hierarchies themselves, so [shrug].
So just like our ancestors, he lived in a cage.
That reminds me of a story[0] my digital electronics instructor once told me. He was on a team working on satellite[1] electronics and had the whole thing laid out on breadboard. It wasn't working, and they suspected it was a short, but with so many connections everywhere it would take forever to find. So they decided to crank up the input current until the short started burning and locate it that way. It apparently didn't cause anything to smoke, but eventually someone did notice the orange-hot wire that was causing the problem.

[0] I have a terrible memory so details may be incorrect.

[1] IIRC this guy had worked on geostar satellites and the hubble, but I'm not sure if this story was about either.
The fun thing about Dunbar's number is that he nails these transitions pretty cleanly. The breaks happen (roughly) at every 3x in growth.
What works for 5 people works for 15, but breaks at 16 (plus/minus 2, depends on the team).

What works for 16 works up to 45/50 (3X15).

Next breakpoint at 150 (3x50), the 'classic' Dunbar number.

likewise at 500, 1500, 4K,...

and it all comes down to communication bandwidth. The same scaling laws which lead to the cortical columns in the visual cortex specializing into different kinds of signal detection (edges, motion, ...). You can only maintain close connections with so many people.
Americans Are Retiring Earlier
Agreed. Many consumers will still pay-as-you-go. I fail to see the problem.
Polar Flow data export JSON to FIT converter written in React and TypeScript
This converter converts the JSON files found in the Polar Flow GDPR export to Garmin FIT. Convert your training history from one proprietary format to another with ease. :) But the latter is widely accepted for upload by the most training platforms.
Thank you!

I was actually thinking about adding support for reddit. Might add that in the future.
Voice Search: Insights and Trends from Google Trends / Keyword Planner
700€/year is about 60€/month, which is fairly typical for a regional monthly public transport pass. Considering we pay around 7 USD/gal for fuel (1.6€/l), if your work is more than about 30 car-minutes away it's cheaper to commute by public transit (assuming you park for free). And that's not even considering that you might be able to have fewer cars in the household: just owning the car is a lot more expensive than the transit pass.
Both are valid. Master/slave is an older way of describing how the two are related, but most DBMSes used this terminology up until recently.
Like a lot of things in life, it probably falls under "don't ask, don't tell", probably with some dry ice thrown in for good measure.
I think we'd be better off as a whole if we could agree on exactly what it was we were trying to get out of software best practices rather than arguing about what they are. To me, the biggest problem with all software I've ever worked on - since I started programming in 1992 - is how difficult it is to reproduce a scenario that a user reports. Making this as simple as possible seems to me to be an incredibly important as well as relatively straightforward goal, but I have yet to find anybody who agrees further than in principle.