skysight-inc/HackerNews huggingface dataset:
It's not a million miles from it though. If you start from DRY as an approach to OO design you'll produce something vaguely reasonable and be close enough to where you want to be that you can learn the differences.
>Similarly, in my work with industry partners, some of the most rigorous methodological discussions I've ever had have been with them.

I am willing to believe this depends a lot on which industry you are working in, what are you selling, and who are your clients.
> The latter usually comes after extended exercise

If you're in shape and get enough sleep a moderate amount of exercise shouldn't make you tired. Being a parent might contribute more to the tiredness though
Rust is undoubtedly a step forward in correctness, but boy, the article's code is so thick that for me, that I am a C++ programmer, is almost unreadable, especially for a quick reading...

I skipped all the code and only read the text. I got to the point where it mentions that the language prevented them from storing a pointer to a stack object in a heap object, and that's really great, but boy oh boy, the code presented, and the error messages, where very difficult for me to grok even after the first few times...

It seems to me that the more sophisticated the safety a language provides is the more complex its error messages/code are. It would be so nice if we could solve both problems at the same time...
You may not need them but what about others?
> And that's why users have to prevented from installing all of those other browsers?

...yes? Who are people going to complain to when ANOther browser leaks their PII from an iPhone? Who will get the bad PR? It won't be ANOther browser because lord knows they've been getting away with it for years with little to no consequence. Why would Apple put themselves - and their customers given their marketing claims to care about their privacy - in a position where that privacy can a) be compromised and b) reflect badly on Apple?
> It's an interesting correlation, but within those organizations there does at least seem to be some elememts of meritocracy involved. Although, Stalin, Hitler, Mao etc. were all military based dictatorships who preached (though perhaps poorly practiced, or misinterpreted) Marxist ideas.

I think meritocracy can be a by-word for negative discrimination, for enforcing conformity and disempowerment. "They must stay a developer because they're good at it; they must remain a welder because they're fast".. few can change to explore whether they're a good or crap manager or artist without serious negative QoL impacts/risks. Meritocracy is hierarchy's whip.

I think the preach/practice dichotomy is worthy of deeper unpacking. In my limited experience, practicing collective ownership is hard and takes skills, willpower and expectations we're not readily taught (because most of us grow up through multiple hierarchies).

Thanks for the podcast link. Bookmarked.
Wetter and higher temps? (Le temps can mean 'weather' in French).
It's doesn't do the same job, it's more like manifest v3. Which yes, with current ads that's enough for 99% of them. But especially once Chrome drops support for manifest v2, you'll start seeing a lot more antiadblocks and your rule based adblock won't be able to get around them.
which mostly gloss over the fact that there are other classes of bugs that it doesn't prevent

That's nothing more than a technically-dressed version of whataboutism, isn't it? Or can you show other languages that do prevent those other unnamed classes of bugs?
You still have classes, even if you ignore inheritance entirely. And e.g. with the built-in dependency injection in ASP.NET it feels like you're subtly encouraged to use composition for many cases. This is still very much OO-style programming, inheritance is only one part of this.
In the past 8 days you've linked to your site in 10 separate HN comments. It's hard to imagine this doesn't benefit you...
does the surgery still worth doing for 35+ people?
I would have agreed with this whole-heartedly when I first started using ECS. It has its own difficulties though.
What if you're developing an authoritative game server? There will be no vsync event.
Thanks for doing a great job. I really hate most of the software I have to use these days, but Mattermost is one of the few exceptions. It is fast, it isn't intrusive, it respects me and my time, all while doing what it promises.

To me it is better than the competition, since their products affect my computer speed, even though I just got an update. I'd much rather have the productivity not taken away by Mattermost than features (although Mattermost has 100% I need).
Pretty sure Coinbase already requires a photo ID if you want to send or receive any coin to or from an external address. I know this because a few years ago I decided to completely pull (what little I had) out of crypto, and couldn’t send BTC from my Coinbase account to my own wallet without submitting a photo ID, which was not what I signed up for. Apparently having a U.S. bank account linked wasn’t enough at that point.
Why can’t they bring their JITs? They’ve got better security records than Safari does.
I do have a different take. My experience comes from helping edtech companies with data science. So, I get to see many potentially good things that edtech companies don’t do.

I personally think it is ethically imperative to analyze patterns of student performance and motivation within learning software, with the goal of system/software improvement. Why? Because enhancing the efficacy of education at scale is really, really valuable—and I’m not speaking from a finance perspective. In fact, there is very little money to be made by making online education more effective.

I don’t agree that using data for continuous product improvement should be called “forced surveillance and data harvesting.”

I know there is a real issue with advergaming and “user as product.” This is not what I’m referring to. I’m asking for more nuance.
Well, didn't she do well (as the host of a popular UK TV game show used to say about contestants)

https://www.corinnemaier.info/english/

Of course, you work to pay for the rest of your life but I think there is a role for craft and teamwork in all of this.
Users don't want notifications from random websites they browse to, but they need them for pwas they install to their home screen which are supposed to have parity with apps
Why would you count in 3 year slots? You're saying that it could happen on 1950, but not 1951, and not 1952, but again on 1953?

What if there was La Niña on 1952, 1953 and 1954? Your method does not account for that. Natural events and climate do not adhere to someone's made up "mod 3" date statistics.
I learned some Haskell years ago but it didn't stick with me. Lately, I want to get back into functional programming to see whether I'm missing out on something. This book looks nice, and so does OCaml. Any suggestions on books, courses, or resources on this subject?

Also, just to get proper motivation, why should I learn functional programming as a capable Software Engineer?
> Only methods explicity declared as virtual can be overriden

You can with "new", no?

public class Foo
{
public void Say() { Console.WriteLine("Foo!"); }
public void Think() { Console.WriteLine("I;m thinkin about thos beans");
}

public class Bar : Foo
{
new public void Say() { Console.WriteLine("Actually, Bar!"); }
}

So with Bar we have inherited Think(), but have overridden Say(). Ok technically the MSDN docs will say that we've "hidden" the inherited method Say(), but the effect here is that we've overridden something not marked "virtual"

edit: Oops yeah I'm talking rubbish, see replies for more info :D
Waited a long time for something like this. Tired of wasting time on IAM roles.

Congrats on your launch!
I’ve written a JVM in Rust where I was pretty much unable to work without unsafe, and while I know the general consensus is that it is a sin to use, I managed to get away with a few usages wrapped tightly inside a safe API. Sure, I had memory problems during writing, but with MIRI and some debug assertions they were not hard to hunt down and I really only had to get that few lines of code inside unsafe blocks right.

What I’m trying to say with all that, do not be afraid to use unsafes in Rust. It is part of the language for a reason. Sure, do use ARC for some non-performance critical whatever, because it frankly doesn’t really matter. But where it matters, and you decided to use a low-level language, then go for unsafe if that’s the only reasonable way. The result will still be much safer than the other low-level languages. I believe the problem here is the same what C++ tried to achieve: making people believe it is a high level language. That is just dishonest, and really should not be the goal of Rust.
Why it seems like just about everybody tries to remove actual programming from my interaction with AWS?

Cloudformation with it's horrible piles of YAML (that you end up templating anyway), serverless framework with slighty less horrible YAML again with hundreds of tricks in it just to make it flexible enough for larger projects and multiple environments.

Absolutely horrible HCL in terraform which again tries to reinvent the wheel with it's broken implementation of conditionals and iterations.

And now this. As if creating a simple pipelines and basic AWS setups was what everybody is struggling with. Today even some founders and CEOs can handle that!

Thanks, people! I will be better off writing everything in actual programming language, with proper apis, network communication tooling, proper abstractions, libraries, iterations, conditions and all the good stuff. No need to take it away from me and replace with YAML or, even worse, web interfaces!
You've still got the concept of data hiding and an object lifecycle, I think. You're right in functional programming we often operate in quite a similar way to "objects without inheritance" - your module has an internal data structure, creates it at some point, manipulates it through a series of module functions. of course in functional you are usually not usually mutating directly.
It's not OO tutorials, it's OO.
If you want to save the ecosphere ... you do not go about and divert people's attention - which is very much a limited resource - to minuscule factors of the problem.

You do instead point them to the big pieces of the pie chart.

Here's a good overview but anyone who wants to can find such info lying around everywhere:
https://astralcodexten.substack.com/p/carbon-costs-quantifie...
Even 3-4 year old children will try to extend the play available by climbing up the slide in reverse, etc. I guess that's their version of climbing on the roof.

To keep the older kids interested, I try to find a way for them to play floor-is-lava and circumnavigate the equipment. Doesn't encourage the younger kids to climb beyond their limits but can still prove an interesting puzzle for the 5-10 year olds.
My introduction to programming course in my university was in OCaml. It was all downhill from there when it comes to the programming languages I had to use.
For whatever it’s worth: I think it’s harder to learn rust as a C++ programmer than it is for a new programmer.

Reason being that you have to unlearn your paradigm before you’re able to learn the new paradigm; and it’s made slightly worse by giving the appearance of similarity (since certain concepts map directly, like flow control and loops).
we use `jitsi` plugin and works like charm

out of the box you get free `jitsi` but you can attach your own instance as well
If you make it unnecessary difficult for great candidates to apply, then maybe you’re not the kind of company they’re looking for. What other thoughtless decisions are they making?
Apple does give you the choice: Go buy Android.
After many years of OOP, I'm not sure if we gained anything from OOP, and if it wasn't a solution in search for a problem.

At first I was enthusiastic. Then I've realized that there might be better ways to solve problems than trying to fit everything in a "everything is an object" mentality.

OOP can lead to overly complex code, uneeeded abstractions and design patterns thrown on top of each other for no good reason.

There was a thinking that using objects you can model or imitate real life, but that is silly. And of course, programming doesn't deal with real life, but with bytes and instructions, data and actions performed on the data.

I still use OOP because most of the industry demands it, but when I can, I try to use a data oriented and a bit of a functional approach, even if I am using an OOP language.
You often encounter this entire thread of rhetoric when someone wants to put a diversion into the central argument, yeah but it doesn't ____.

But Rust does do that, match exhaustiveness, forcing the handling of errors and the type system enables things like CreuSAT [1] using creusot [2]

[1] https://news.ycombinator.com/item?id=31780128

[2] https://github.com/xldenis/creusot

> Creusot works by translating Rust code to WhyML, the verification and specification language of Why3. Users can then leverage the full power of Why3 to (semi)-automatically discharge the verification conditions!

Units of Measure, https://github.com/iliekturtles/uom

The base properties of the language enable things that can never be done in C++.
That sounds like a HUGE legal liability.

Ask your lawyer first.
> We need to stop the focus on how we can influence the changing climate and start thinking about how we can adapt to various scenarios.

It's much easier to tell people to buy a Tesla than to tell them their children/descendants will have a much worse time on this planet.

There are many things we could do to adapt and curve the issue, but it looks like we're going to suck every last bit of resource of this planet until it kills us.
As the sibling comment alludes to, checking errors is a major pain and needlessly repetitive if you expect any exception in a chain of computations to be handled the same way.

I can't speak for Rust, but in Haskell you can just do something like

f >=> g >=> h

in the context of Either or whatever.

All of this has nothing to do with Go's specific typing discipline or syntax around it, of course. I was just commenting on how the most popular static languages probably aren't the prettiest or most reliable examples of the approach. Plus Go is far more likely to shit the bed at runtime in spite of its typing.
Yeah that's exactly right. Even when I over-strain myself my body is still kind of in a shock for 40-50 minutes (during which I also drink a lot of water) and then suddenly boom, I can eat an elephant.

Same with digestion. I found out the hard way that taking a walk after the restaurant is an awful idea. The body really needs a relaxed pose and to be not doing anything else for at least an hour after a meal (with slowed down metabolisms this can go up to 3h, sadly) so you can properly get your nutrients. Only then you should be doing another activity.
> 1. Nigeria has 30 MILLION people that use it (crypto)

30 or 34 m users out of 206m isn't the whole market, not close.

> Most of the usage is for cross-border transactions

And why mostly "cross-border transactions" ? Could it be that NIBSS has the domestic market:

https://nairametrics.com/2017/09/26/why-the-m-pesa-miracle-h...

https://nibss-plc.com.ng/

https://www.crunchbase.com/organization/nigeria-inter-bank-s...

So, the huge Nigerian domestic market has a SEPA-like product for domestic transfers. It's not a bitcoin thing.

Do you think that this success (and the success of EU SEPA) won't be noticed in Africa?

https://www.un.org/africarenewal/magazine/november-2021/new-...
This claim would be a lot more compelling if, when confronted, you were able to list the things "Linux hated about C++" and show how Rust has them.
You just made my day, @ratww!
Couldn't MEGA simply change the client-side javascript to just send them the plain text password?
> - trigger a full tree rendering, passing the new model

I agree the Elm model makes it easy to reason about it.

Just because we pass "the state of the world" each time instead of mutating it, does not mean that we need a full tree rendering. That is an implementation detail.

We can update just the relevant part. If we think of it mostly as pure functions a lot of it is easier to memoize and — for same input — it is possible to return the same output straight away.
It appears the actual problem was that they weren’t able to track things that far and mistakenly sent out notices to the wrong customers.
Does anyone else reading these things feel like they are in an Orwellian nightmare? Do we hate Eastasia or Oceania this week?

Apple, caring about privacy? Perhaps I'm just old-school, but I'll never be able to read that without the risk of coffee all over my screen.
> If you start a merch shop for your blog (or put in ads/sponsored content, etc.), then the whole site needs to be GDPR compliant.

And you do business in the EU. If you have a merch shop, but don't serve EU users (no EU shipping, not accepting EUR as a currency, no EU specific languages (German, French...), ...) there is no problem.
Ohh, I got one. Rust is less secure than C++ because it causes people to be overconfident in its security properties. The sharp edges of C++ are a feature that cause people to focus on correctness, not just get it for free.
Video Editing Tips for TikTok
Only on desktop
I have been using Google Analytics for years and it has become really crappy. Especially the latest release where you can't even see your daily traffic anymore. Everything is lagging behind, you can only see the actual data 2 days after the fact.
On the other hand I have 3M+ page views, which would induce a $129/month Plausible bill.
That's simply too much, especially because I have a very low CPM.
They show up as small features on new playgrounds where I live. However, our nearest neighbourhood playground was recently revamped, and the council polled nearby residents so we could vote on what sort of elements we were hoping to see added. I thought that was quite positive.
Github explicitly leaves out proprietary code bases, included microsoft windows source code (Microsoft own github and uses it for their own products).

If Microsoft included their own source code when training copilot then at least they would be intellectually honest, but they don't. They only consider GPL and other free and open source code to be up for grabs.
Show HN: Duckist.com – Sharing Passwords Easily
I actually like to ask people in interviews to model a car and car factory because I want to see right away if they go deep into the nonsense of extending everything, or if they can use composition, or get away with something focused on maintainable code that meets requirements.

I've seen it all. Prius extends Car extends vehicle extends motor extends ...

Right within the first five minutes of the interview.

But I also think these old "a bike extends a " tutorials were the most frustrating thing in the world and made no sense to me when I was trying to learn OOP in the first place. From my memory, I recall all the examples I could find were absolutely nonsense but blogs were full of posts with lots of non-real-world about connecting web requests things to a DB code and lots of "yeah it's just like a person is-a mammal which is-an animal which...".

It wasn't until I wrote some c++ and looked at how it worked in the heap and stack before I started to understand it better. Then later I learnt about SOLID and discovered that you almost never really want to use extension in practice (at least in the problems I worked on), except for things like interfaces in places you expect (and plan to have, and even better if you already do have) a reason for variations in sub-types that have the same contract, or need to cross system boundaries.

I almost always want to use composition. I will use extensions but this should be really specifically be selected for a few key points.
The book "Design Patterns: Elements of Reusable Object-Oriented Software" has an initial chapter that provides one of the most concise introductions to OO I've read. Its main focus is on polymorphism and it provides some easy to understand examples.

In fact, if you think of Go as an OO language (which I guess many won't), it has all the things you actually care about from OO. It doesn't have inheritance and you don't explicitly declare that a type implements some interface (). Since there is no inheritance of implementation you are forced to use composition, which is what people tend to end up recommending after a few years of fighting with OO code that has been written by people in love with a Linnean hierarchies and complex approaches to DRY.

() There are tricks to accomplish this, for instance creating a New() function that returns an interface type, which will make the compiler ensure you implement the interface).
Docker does all its work in a central daemon running as route. Any docker command you run is just sending messages to that central daemon.

You can see some downsides to this when you do the classic developer setup system of having a docker image with your tools and mounting a volume of your source tree into the container for building. When you build, the build products in your filesystem are owned by root because the code was actually running under the daemon. This can cause all sorts of pain.

When you run something like podman, there's no daemon - it's all just processes running as your user (like any other script) so files created end up on your filesystem owned by you.
Hey HN!

I am a part of a small IT business and like many of you, we face the constant problem with securely sharing passwords between clients and between coworkers.
Of course, there are systems for this, but with busy schedules or mere complacency, it's a challenge to get all involved to set up these services accordingly. Failure to do so means that the passwords to accounts with critical user data often end up as contents of non-encrypted email messages or other equally unsafe means of communication. Confidential files share the same fate.
We decided to take a different approach instead, which we think balances ease of use with security.

We named the service Duckist.com and with it, you can generate self-destructing messages containing either text or media, that are encrypted on the client-side. This means the server never actually sees the unencrypted message.

# Technical

This is only relevant if you'd like to know what's under the hood, which I know many of you guys here, certainly are :)

What we do is use the browser to create a password that is then used to encrypt the message on the client-side. The encrypted message is sent to the server and on the frontend side we generate a URL such as this:

https://duckist.com/msgs/messageID#password

How is that beneficial? When a person visits this URL, then the browser won't send anything the hash to the server. This means that when someone reads the message, Duckist.com never sees the password.

To see this is actually true, pop up the terminal with `netcat -l -p 9001` and input http://localhost:9001/hello#mysecret into your browser.
You'll observe that `mysecret` was never sent to the server.

To see we are sending/receiving the messages encrypted you can use the browser's inspect functionality.

We saw the benefit of the tool's existence and decided to turn it into a public project hence I'd love to get your feedback. I am thick-skinned so just come at it in full HN style :)

This is actually an old project that we decided to rename, revive and improve. I previously wrote about it here: https://news.ycombinator.com/item?id=21513362
> uBlock Origin isn’t on iOS, but as of IOS15 the Safari Extension API has everything uBlock would use.

It doesn't. See all of the "Not supported" in this list, especially blocking webRequest: https://developer.apple.com/documentation/safariservices/saf...