skysight-inc/HackerNews huggingface dataset:
These discussions are always frustrating, because it feels like the people advocating Go's approach are comparing them to Java style Checked Exceptions, while the people most annoyed with Go's approach are usually comparing them to Sum Types (like Rust's Result or Haskell's Maybe/Either).

It's made even more frustrating in that it's very difficult to convey the pragmatic differences between those two approaches to someone who hasn't had the chance to use both. Both seem to be a way of capturing errors in the type system, but the latter really is just dramatically more ergonomic.

So people talk past each other and around and around we go.
I've spent some time in the chip industry. It is awful, backwards, and super far behind. I didn't appreciate the full power of open source until I saw an industry that operates without it.

Want a linter for your project? That's going to be $50k. Also, it's an absolutely terrible linter by software standards. In software, linters combine the best ideas from thousands of engineers across dozens of companies building on each other's ideas over multiple decades. In hardware, linters combine the best ideas of a single team, because everything is closed and proprietary and your own special 'secret sauce'.

In software, I can import things for free like nginx and mysql and we have insanely complex compilers like llvm that are completely free. In hardware, the equivalent libraries are both 1-2 orders of magnitude less sophisticated (a disadvantage of everyone absolutely refusing to share knowledge with each other and let other people build on your own ideas for free), and also are going to cost you 6+ figures for anything remotely involved.

Hardware is in the stone age of sophistication, and it entirely boils down to the fact that people don't work together to make bigger, more sophisticated projects. Genuinely would not surprise me if a strong open source community could push the capabilities of a 130nm stack beyond what many 7nm projects are capable of, simply because of the knowledge gap that would start to develop between the open and closed world.
Can't you simply return a nil error in case you want to return a value? Check for error and if nothing bad happened use the value.
Happens all the time on YouTube.
You don't, at least not usually.

func foo()(value,err) can return any combination of valid or invalid value and error, so (nil, nil) would be possible, or ("valid value", someerror). It is just by convention that you shouldn't do that.
Thanks for sharing. Agreed, context is important.

About being an expert, I feel that everyone should be qualified to share what skills they think are essential. There is no right answer here.

Perhaps everyone could briefly mention their context along side the skills they recommend.

+1 for presenting (sales).
[Edit: if readers have relevant papers to share, I'd be very grateful.]
These apps rely on having a critical number of users. If you ban the easiest ways, people just won't go on them.
Don't you think it is strange that "declining quality of everyday software" is observed at the same time as testing becomes the norm?
Cheap money and stock buybacks keep stock prices rising
It’s more fun to work with people who enjoy work rather than people who work to enjoy. At least that’s my 2 cents
For comparison someone can see in [1] the examples written in Python. One thing which I found strange is that you access values in list with /.

[1]: https://pastebin.com/Gm7qvF6c
IMNERHO, the one significant misstep in checked exception based error handling is that languages don't (AFAIK!) require call sites to be marked. If a function is marked as throwing an exception, and it's called from another function marked as throwing the same exception, that's enough. There's no indication to the reader that an exception can be thrown at a particular point, much less the the author was aware of the fact that it can!

Go's if (err != nil) { return err; } and Rust's ? both do that.

You could imagine a variant of Java where you had to write this:

Byte readOptionalByte(InputStream in) throws IOException {
int flag = try(in.read());
if (flag == 0) return null;
else return (byte) try(in.read());
}

Which might be better.

Unchecked exception based error handling, of course, is irretrievably broken.
The law isn't unenforceable. The law is unenforced.

The reason it is unenforced is that the agencies that seem to have the responsibility to do so are understaffed and afraid of the drawn out litigation and political backlash.
For me error handling in go was one of the biggest downsides. Using ADTs and union types for Either is most pleasurable error handling case I've encountered.
After I used Discord in different contexts for months now (and Slack for years), I can't understand why someone willingly chooses Slack.

It's the Atlassian of chat tools. Horrible performance and bad usabillity.
It sounds like Mr. Carlson's Lab I hope he doesn't get the boot too.

https://www.youtube.com/user/MrCarlsonsLab
One of the reasons Envoy was built was because ELB/ALBs have opaque observability and fail in ways you can't control.
I can't claim to understand everything, as he apparently moves in mysterious ways. However, just from the definitions we can deduce it's morally OK to do, since otherwise a perfect being wouldn't do so.

To play games? Perhaps, but presumably a perfect being is already perfectly happy and has no need for games. You could see it as a test for humans: only the truly devout study the laws closely enough to notice the loopholes.
> The operative words you seem to be missing are "at the end of this", but fine.

Okay, how about I just say no, at the end of this the USA won't have the most deaths per capita of industrialized nations. Amazingly my claim has just as much, if not more, basis than the original claim. Glad we settled it.

> Does that ratio seem like cause for concern?

Belgium (2.1 more) UK (1.6 times more) Spain (1.5 times more) Italy (1.43 times more) Sweden (1.3 times more) France (1.1 times more) have more deaths per capita than USA.

Every death is concerning (I guess some people are not clear on this), but the per capita deaths of the USA is not anomalous.

Given the data we have I would say the most likely situation is that developing and least developed countries are either not being exposed to the same levels as industrialized countries or just not as good at tracking and reporting deaths as opposed to just having a lower actual mortality rate.

That being said some areas in the USA, like New York, clearly just completely botched their handling of the pandemic what with sending sick old people back into frail care facilities. I hope at the end of this whoever made that policy is brought up on murder charges.
The idiom is to return two values: the desired return value, and also an error value. Go has support for multiple return values, and easy syntax for assigning those positional return values to variables at the call site.
You wouldn’t want to work at this company anyways. The system works.

Different strokes for different folks.
Switzerland is very welcoming
It's fairly evident to me that many tech hiring managers today, and for the last 20 years really, are just stabbing in the dark and calling it science.
Handling errors as values is indeed nice. While exceptions can be convenient in some cases, I find that the out-of-band control flow is over-complicated and more of than not leads to poorly documented error paths that are treated as an afterthought.

Where Go's error handling falls down is that it still doesn't force you to handle the errors. Result sum types like Rust and Swift so much better than anything else that I've used that I actually think that other languages (including Go, but also Java/C#/JavaScript/etc) ought to consider adding the feature and making it idiomatic.
I don't think its all or nothing. A component of being a good software engineer certainly involves being able to reason about performance characteristics, and the correctness of the algorithms you write (Every piece of code written to solve a problem is an algorithm by definition)
This research is from 2013:

Testing the Efficacy of Homemade Masks: Would They Protect in an Influenza Pandemic?

Link to PDF: https://www.researchgate.net/profile/Katy-Anne_Thompson2/pub...

Summary:

> Several household materials were evaluated for the capacity to block bacterial and viral aerosols. Twenty-one healthy volunteers made their own face masks from cotton t-shirts; the masks were then tested for fit. The number of microorganisms isolated from coughs of healthy volunteers wearing their homemade mask, a surgical mask, or no mask was compared using several air-sampling techniques.

> Our findings suggest that a homemade mask should only be considered as a last resort to prevent droplet transmission from infected individuals, but it would be better than no protection.

Interestingly, tea towels (dish cloths) showed a higher level of filteration than t-shirts in this study.

Edit: here is a more recent review of the scientifc literature on cloth masks from the Royal Society in the UK. This is a pre-print - link is to PDF:

Face masks and coverings for the general public: Behavioural knowledge, effectiveness of cloth coverings and public messaging

https://royalsociety.org/-/media/policy/projects/set-c/set-c...
y = 1 + ...

if y is 1-based too (which feels even more uncomfortable). But it would be nice to have such functions out if the box:

canvas.linear_index(x, y, stride)
vbox.y1_for(margin, spacing, height, i)
vbox.y2_for(margin, spacing, height, i)

And then you have "integer at the center of a pixel" vs "integer at the top-left of a pixel" differences, which should be taken into account by these functions too. Stroke 1: y+0.5, y+height-1. Stroke 2: y+1, y+height-2. Fill: y, y+height.

Pixel geometry is hard on its own.
I couldn't find anything corroborating this claim, and the entry seems to be removed from Wikipedia for lack of source, so is this really true?
They also frequently get deleted, which is why a lot of people who have channels that feature or regard guns also have second or third channels for non-gun related things, on which they refer to them as "pew-pews" or other similar infantile things that are less likely to be flagged by an AI reading transcripts.
Why does an AI have that power?
Wouldn't suprise me. A woodworking channel I watch had all of its videos deleted with no warning. The channel owner said that customer support told him it's against their policy to say why videos are deleted.
This is acctually becoming a more common feature. I recently purchased a new mechanical keyboard and a lot of the newer designs are host swappable.
Wait, what?!

Honestly I'm completely speechless.

EDIT: I actually mixed up the name with another person. I don't know about Jordan Pier's, so yeah. I will still not delete my comment for transparency. (I mixed him up with Louis Rossmann). I wonder what the reason was, why his channel got deleted?
How to Rerender a Vue Route When Path Parameters Change
Similar story to me. Academically fairly gifted from an early age, testing high IQ later (I know, I know) and was recommended to be placed in an advanced school.

My parents were modest and didn't pursue this, nevertheless, everything was easy until it wasn't. The part I never learned properly was effort=reward. I was also diagnosed with ADHD and was on ritalin for several years.

Later school years were bad for me because it involved a lot of rote learning. I did not have the discipline to do this and my grades slipped back to mediocre. University was better and I did very well again. I've done moderately well in my career, top few % of earners but I am unable to break higher because I'm constantly distracted and struggling to complete mundane work tasks which prevents me from getting to the top where my ego says I belong.

I take full acknowledgement of issues, I know it is my own doing. I don't know if it is too late for me to change but I'm slowly (because even here I lack the focus) trying to learn technique to change my entire approach. I've recently started looking at the power of habit forming as a means to improve discipline. I think I could benefit from a very tightly structured day where one thing naturally leads to another. Otherwise I tend to drift in and out of tasks and end of up the web, like now.
Buy Trustpilot Reviews You’d Neverwant to Hide – Kasey Pederson
It also assumes a few other critical things.

1. The person learning the fact trusts the source

2. The fact can be easily proven if the person doesn’t trust the source

3. There are no other facts which provide context that are missing

These are all critical in how the general public receives “facts”.
On a similar note, from Terry Pratchett's Discworld, on (an analog of) Pascal's Wager:

> Upon his death, the philosopher in question found himself surrounded by a group of angry gods with clubs. The last thing he heard was 'We're going to show you how we deal with Mister Clever Dick around here…'

(As mentioned elsewhere, while this particular example may not be great, this sort of thing is accepted practice.)
Thinking of elevators which stop at every floor on shabbat, maybe the search engine ought to run on a timeout, returning results for all the "most common searches" (such as the auto-fill suggestions for each letter?) on some interleaved schedule.

(I'm not concerned with electricity here so much as with "בורר", selection.)
I came here to say this. He also states

> if someone was not on LinkedIn or didn’t have a public Git account, I found myself thinking ‘well, what exactly do they do?’

How about spending time with their family, Hanging out with friends. Relaxing and refreshing themselves so they are fresh and ready to go in the morning.
I'm not sure those are comparable. If you remove ninja and shroud, you're left with ~infinity-2 people playing FPS games on twitch. Removing a high quality electronics repair channel on YouTube is a significant impact on that class of content.

I'm going away from YouTube to twitch and other services for some specific tech content. If it's relatively unique, people will find it. (Or if you build awareness over a long time, rather than starting on the day of disappearance)
It's going to be difficult to contain Chinese expansionism if Japan and South Korea can't put their differences aside.
I like Rust's approach of using `Result` enum
How to Secure and Harden OpenSSH Server
Agreed. I will not show you my repository accounts. Never ever will they get attached to my real persona. They will be taken down on the day they become public.

Pay me 300,000$ a month and we could talk about it without commitments from my side. Otherwise I don't want to justify myself towards my employer if I work on private stuff or not. Especially not with contracts in tech, which are already borderline abusive.

That said, I haven't touched my public repositories for quite a while. Why? I have a fucking job! Aside from that I also host gitea on my domain that you will also not get to know. Maybe I would create another one for public display, but that is very unlikely.

I get that some people are forward with this stuff and in general social media presence, but I am certainly not.

edit: Of course there is also bad code in my repos, but that is completely besides the point.
Brøderbund (and later purchased by The Learning Company) are developer names I haven't heard in a while. Good memories.

https://en.wikipedia.org/wiki/Broderbund

https://en.wikipedia.org/wiki/The_Learning_Company
Supercharge Your Shallow ML Models with Hummingbird
What's the argument for why fat binaries like this are a good idea, as opposed to having separate binaries that can be downloaded for different architectures? It seems like the main advantage would be when there is (something like) a networked drive simultaneously accessed by incompatible machines, with a secondary case for when the same drive is transferred from machine to machine (or when a single machine is upgraded to a different processor). Is this a large enough use case to drive adoption, or is there some other major benefit that I'm missing? Or is it that having 2x (or 17x) larger binaries to distribute isn't actually much of a downside, so even a small benefit is sufficient justification?
You can talk about guns in general. For instance it's totally ok to comment on how guns are bad. But it's against YouTube policy to provide any information on the manufacturing, assembly or sale of firearms.
https://support.google.com/youtube/answer/7667605?hl=en
Show HN: Tracking the billions of dollars spent each year on lobbying
Good times indeed !

Off topic. Little quiz:

RANDOMIZE USR 0

What for ?
I use Zulip for the day to day (it's amazing, I can't recommend it enough), but sometimes use Slack because some open source communities use it, and I'm always amazed at how damn slow it is. I can consistently out-type it, it's terrible.

I guess it was great when it started out, but they're slowly boiling the frog, who is us.
Some think the media got trolled - NPR has an article shedding light on why this isn't the case. Seems the media knows exactly the origins of this meme and that it was a hoax. What isn't a hoax is White Supremacist groups in response have started using the OK sign as a symbol of hate. Language evolves and gestures are a part of language. Anyway, here's a link to the NPR article on this matter: https://www.npr.org/2019/09/26/764728163/the-ok-hand-gesture...
Causing you to get angry is all it takes to warrant justification for jail time in your eyes? I am thankful you aren't in charge of any lawmaking.
I'm super into the 3-day weekends, but I also agree with the extra long vacation-staycation thing, where you can just "be" for a while. Like 4 days of nothin & puttering around, followed by 2 days of cleaning & finally attending to {X,Y,Z}.
> Everything was easy until it wasn't

Similar experience for me (apart from the social distancing - never an issue for me) - being told how clever I was by parents, relatives, teachers, class-mates etc from ages 5 or 6 up to early-/mid-teens. It soaks into you and you end up becoming a bit arrogant about things.

For me I had a rude-awakening during my late teens when we did our first "real" exams and I assumed that what with me being so clever, these exams that everyone had to do must be pretty simple. After all, if non-clever people had to sit the same standard exams as someone clever like me, then they must be a walk in a park, right? No need to study or revise! Everyone has been telling me I am so smart for as long as I can remember, so no need to put any effort in - my natural smarts will carry me through! Hurrah!

...the outcome was predictable - I got pretty middling grades of mostly "B"s.

For some I accept that "straight Bs" would be a great outcome, but it was more or less the first time in my life where I had to face up to the fact that I wasn't guaranteed academic success, celebration and congratulations for being so smart from everyone. Instead everyone - myself included - was slightly disappointed in my performance.

Lesson learnt.

Now I have my own kids and wondering what to do if they are smart. I heard someone say something along the lines of "never tell your kids they are smart - instead congratulate them on how well/how hard they worked on something".
So how do you know if you're compliant? Can you do some A/B testing?
What Government , platform, news network or tech firm isnt controlled by the Global Zionist Jews ?

They have the finger in everything
I had trouble getting through this article because my internal monologue was screaming "Envoy and xDS wouldn't have this problem". But that's exactly what they decided ;) HAProxy is a little behind the state of the art on "hey I could just ask some server where the backends are", and it shows in this case. (The "slots" are particularly alarming, as is having to restart when backends come and go.)

xDS lets you give your frontend proxy a complete view of your whole system -- where the other proxies are (region/AZ/machine) and where the backends are, and how many of those. It can then make very good load balancing decisions -- preferring backends in the AZ that the frontend proxy is in, but intelligently spilling over if some other AZ is missing a frontend proxy or has fewer backends. And it emits metrics for each load balancing decision, so you can detect problems or unexpected balancing decisions before it results in an outage. https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overv...

I also like the other features that Envoy has -- it can start distributed traces, it gives every request a unique ID so you can correlate applications and frontend proxy logs, it has a ton of counters/metrics for everything it does, and it can pick apart HTTP to balance requests (rather than TCP connections) between backends. It can also retry failed requests, so that users don't see transient errors (especially during rollouts). And it's retry logic is smart, so that if your requests are failing because a shared backend is down (i.e. your database blew up), it breaks the circuit for a period of time and lets your app potentially recover.

The result is a good experience for end users sending you traffic, and extreme visibility into every incoming request. Mysterious problems become easy to debug just by looking at a dashboard, or perhaps by clicking into your tracing UI in the worst case.

The disadvantage is that it doesn't really support any service discovery other than DNS out of the box. I had to write github.com/jrockway/ekglue to use Kubernetes service discovery to map services to Envoy's "clusters" (upstreams/backends), but I'm glad I did because it works beautifully. Envoy can take advantage of everything that Kubernetes knows about the service, which results in less config to write and a more robust application. (For example, it knows about backends that Kubernetes considers unready -- if all your backends are unready, Envoy will "panic" and try sending them traffic anyway. This can result in less downtime if your readiness check is broken or there's a lot of churn during a big rollout.)
I propose that a 20 year old phd will have many options open to them, including taking an easy job and spending their own time on an interesting hobby. If a person can be educated with the information and methods to succeed, they should be better able to interact with the world. Slowing down a person with the potential to finish formal education so that they can spend more time being spoonfed isn't going to improve their chances.

Also, if one chooses a grinding slog of a job, it's better to be a 20-year-old phd. Presumably, they're getting paid well, and they can start on their early retirement fund from better positions vis a vis a generic 20 year old.

I am unconvinced by your argument.
Microsoft brings Android OS development for Surface Duo in-house
The CCP bans so many apps, websites and other western technology, so this seems like a reasonable action just on that alone.

And given how bad TikTok is with user data (mostly minors too), I don't see how banning it would be a bad thing.

There will be American or western clones within days that replace it.
oddly, the feature that is suggested as being awesome is in fact go's _worst_ feature, which is:

value tuples are not error handling.

it is not sufficient to rely on an IDE or linter to catch lack of error-case handling. they are semantically identical, and in practise worse, to exceptions: at least exceptions will bubble up, and be caught.. somewhere.

and i'm not saying exceptions are the solution. they really are awful. in my opinion, 'either'/'oneof' types are the best solution here: if something returns either a failure of a success value, then you as a developer are forced to handle the failure condition:

// pseudo c#
either<error, int> result = get_string_length(str);
return reslut.match(left: _ => 0, right: x => x);

you may choose to throw an exception, you may choose to return a default. but you absolutely cannnot _not_ handle this function's failure condition (sorry, double negative..).
Steps to improve your Cyber Security