skysight-inc/HackerNews huggingface dataset:
I think you're using the term "RAII" in a much looser sense, and we didn't call it that at the time (though I don't have a convenient way to demonstrate this now that Google Groups has nerfed their search). C++ code from that period (and Google C++ code to this day) violates RAII regularly by acquiring resources in non-initialization contexts.

RAII without exceptions is pretty inconvenient: acquiring resources can almost always fail (the only exception I can think of is locks) and so you need some kind of return value, which is precisely what you don't have in a constructor. So you need a flag value in the initialized object which you later have to check, which means that all your resourcy objects are "nullable", in the sense that the type system can't guarantee you that they're in a meaningful state, and you need a dynamic check.

Maybe you mean that people commonly used destructors for cleanup before C++ had exceptions, and I certainly agree with that. But using destructors for cleanup is not the same thing as RAII.

Without RAII, without exceptions, without destructor cleanup, perfectly OK:

int fd = open(fname, O_RDONLY);
if (fd < 0) return FAIL;
...
close(fd);
return OK;

Without RAII, without exceptions, with destructor cleanup, perfectly OK:

int fd = open(fname, O_RDONLY);
if (fd < 0) return FAIL;
File file = fd;
...
return OK;

Without RAII, with exceptions, terrible buggy dangerous code:

int fd = open(fname, O_RDONLY);
if (fd < 0) return FAIL;
File file = fd;
...
return OK;

Note that this is exactly the same as the previous "perfectly OK" example!

You can try to fix this up with catch(...) { close(fd); throw; } but the correctness of such convolutions depends intimately on the precise contours of how exceptions can happen, if at all, in the File constructor.

With RAII, without exceptions, terrible buggy dangerous code:

File file(fname, O_RDONLY);
...
return OK;

Correct version:

File file(fname, O_RDONLY);
if (!file.ok) return FAIL;
...
return OK;

With RAII, with exceptions, perfectly OK:

File file(fname, O_RDONLY);
...
return OK;

Note that this is exactly the same as the "terrible buggy dangerous code" above. The difference is only that now the File constructor signals failure by throwing an exception instead of setting a flag.

This is also the most efficient of all the versions on the happy path because it doesn't waste memory on success flags or conditional jumps (in this function and in its caller) on checking them. It's also the most concise and, arguably, the least error-prone. (Google policy disagrees.)
On the C&O Canal towpath once around Great Falls, I encountered a bunch of geese, with goslings. One or more started to hiss as I got closer. I was wearing thin running shorts, socks, and shoes, and I really did not want to take on an enraged goose. I also did not care to take a detour through brush I knew to be full of poison ivy, so I turned around, I suppose a couple of miles earlier than I had meant to.

One of the friends I encountered turning back had been bitten by a goose, and said that it was as if somebody had grabbed his flesh with pliers. He thought I had been wise to turn around.
Given that writer's track record on self-reflection and introspection, I'd say it's not.
Michael Shellenberger makes a similar case [1] for many uses of plastic, too— for example, items like hair combs and eyeglass frames used to be made out of tortoise shell, and like whales, the tortoises were under major threat until plastic replaced all of that and they went back to being all but ignored by humanity.

So yes, there is a ton of unacceptable plastic waste out there, but the net effect (he argues, anyway) is still overwhelmingly positive for the environment, particularly if we can focus eco efforts on ensuring that plastic ends up safely land-filled rather than being overly consumed with reducing the upfront production of it.

And one of the nice things about this approach is that it's not an uphill battle the way guilting people about their lifestyle choices is— you can work with NGOs to lift people around the world out of poverty, and a natural part of them becoming richer will be having the mental bandwidth to look around and demand things like a safe, well-organized waste processing pipeline.

[1]: https://www.amazon.ca/Apocalypse-Never-Environmental-Alarmis...
I had a phone that supported voice over LTE (volte) and wifi calling. Worked fine on another network, but that network did not have the coverage I need, so I had to go with AT&T. With their '5g' 'upgrade', they stopped allowing voice calls, as those would go over 3g. Except, there was a period of time where volte worked fine on at&t - my guess is when they were reconfiguring for 5g, they accidently configured things to work the way they should, but then realized their 'mistake'. I had to get a new phone since I need the AT&T coverage.
Perhaps a little later in the boot process perhaps?

Its likely possible. After all, the unreal engine does have at least some rudimentary 3d graphics support.
> Its not like Microsoft is a singular mind here

The author of the blog post is the author of the second comment on GitHub. Also[1]:

> Afterward, the same dev also used a fake name to hang out on our discord and talk about Windows Terminal without telling anyone who he was. I figured it out and confronted them, and they failed to see anything wrong with that behavior. It's a really special team they have there.

[1]: <https://nitter.net/cmuratori/status/1522471966929653761>
If he got the central bank I would find it very amusing

He would just need to stop there and focus on managing the central bank instead of A&M bank

Although A&M bank could have become one of the most respected investment banks given its connection.

Almost all of which have similar origins (and ongoing operations) in something lucrative and unsavory.

So you either win or you lose. He lost after being so close to winning. My lack of admonishment comes from my main observation that he could have stopped before starting A&M bank and been indistinguishable from any other well off person. He was a respected business leader at the time.
Sadly, while it can buy mansions, islands, planes, and even rockets, money can buy neither love nor self-awareness.
Yes, Purify surely existed. I've never heard of a university leasing out Purify licenses to undergrads. I don't know anything about Insure++.
imo more common in the anglosphere that masters degrees are watered down these days. But top universities should have respectable programs still.

The masters students at my current uni (ETH Zürich) are easily the best software engineers I have ever worked with.
The big thing that this misses is accessibility.
Currently the term "unsafe" is overloaded, as both the keyword used to mark definitions of things that require manual verification, and as the keyword used to mark a block to acknowledge that such verification has been done.

The correct approach is obviously to separate these two terms, and use "sus" to mark items that require verification, and "yolo" to mark that such verification has been done. Or:

sus fn dangerous() { ... }

yolo { dangerous() } // can only call dangerous inside a yolo block
Not sure anyone could perform the digestive experience of 2000 kcal of broccoli in a day?
I've used lots of debuggers and debugging tools, have a thorough understanding of their capabilities and have written and extended such tools myself. Print statement debugging will always be a tool in my arsenal. Sometimes - surprisingly often - it's just the fastest way to figure something out.
Hmm, that's interesting—that seems like an inconsistency in the story. OP, what year was this?
For me boilerplate names is an issue for whatever object orientated language you choose, unless you correct it in the dev cycle.
I'm Brisbane outskirts. Moved here to avoid the crazy Sydney prices about 5 years ago. We would expect a bit under double now, maybe 70% up.

It's crazy. Great to feel you have more equity on the surface, but it's meaningless really as you have to sell to buy if your moving and then things like rates and stamp duty are higher than ever.

I think the best solution is cap how many properties people can own. Homes are good for people or investors, not both. While interest rates are the main driver, a country like Australia has little ability to far steer outside global rates. From that I think the best solution is to place a limit of ~3 residential properties per person, or something like than with a grace period to ease the new rules. Get the big investors out of the market. Make homes for people again. Action should have been 15 years ago before it was todays problem, but was still obviously heading this way. It's going to be hard to unwind now without creating serious pain somewhere.
Isn’t increasing consumption through increased efficiency (decreased cost) a crucial factor for how standards of living are raised? I don’t see how this is a paradox.
Inequality was so much more then, as it still remains in some parts. You could move to some countries today with that amount of money, rent a large house there and employ a bevy of staff. You'd not last too many years but you could achieve it.
I blame the disagreement on online communications. Can you imagine this conflict lasting this long if these guys had been talking about it in person over coffee? They would probably behave with much more restraint and respect for each other.
Looks like Microsoft finally found someone good enough at terminal emulator development to fix the performance issues.

I can't shake the feeling that the original Github issue and the heated discussions in there were more Windows Terminal devs not wanting to admit their knowledge gap in this area than impracticality and complexity.
It's not a great look to open a blog post with sarcastic comments referring to (unneeded) controversy, though. Regardless if you were right or wrong.
They said grammatically correct, not typographically correct ;-)
Yeet is only a placeholder for avoiding bikeshedding (https://rust-lang.github.io/rfcs/3058-try-trait-v2.html#poss...), but I do wonder if having it as the final keyword would in fact be a net negative.

Sure, some people won't know the meaning of the word, but I'd argue that "raise" or "throw" meaning "propagate the previously caught error" is not obvious either, we're simply used to it. And it would take no time at all to infer from context/look up and it would be easy to remember.

The biggest potential downside I can think of is opening the floodgates for adding more memey words to the language which could indeed be harmful.

But I do think that having a quirky keyword like this could be a great benefit and not just in the "relating to them kids" sense. In my experience, the biggest obstacle to entering technical fields (a more relevant subtype of this is learning complex programming languages, such as Rust) is, for most people, not the lack of intelligence or resources, but rather the feeling that the insiders of those fields are in a different "category" of people.

This is especially evident in interactions with PhDs. Even smart people, who have themselves successfully studied the fields in question at some point in their lives, upon finding out that someone has a PhD cease all attempts of analyzing what the PhD is saying and just nod along, as if the degree is an impenetrable intellectual barrier.

In spite of being a decent programmer, it took me a long time to start reading computer science papers. Not because they were too complicated or I lacked context, but because the intentionally the language used made the work appear alien.

And including even just a bit of spontaneous humanity can completely break this perception. I find this especially effective in textbooks. All of the textbooks I found most useful added many humorous tidbits. The purpose of those was not to have the amusement counteract boredom, the topics were fascinating by themselves, but rather to demonstrate to the reader that the author is in fact an individual of the same species. This is important, because such connection cannot be established if the book restricts itself solely to its main topic. The author is infinitely more knowledgeable than the reader in the relevant field (otherwise the reader would have no use for the textbook), so this demonstration of equality must come from elsewhere.
I mean you talk about manufacturers most android phones are not American these days.. We're talking about operating systems where the moat is a lot more about the app ecosystem
IRR is a vanity metric for VC Funds
Ask HN: Does anyone have a SMTP service for not sending bulk email?
I have a few projects where I want to send email from an Application. These are mainly demo servers for showing things off to clients. When the customer buys the software they hook it up to their Exchange/Office365/Mail infrastructure.

Right now I'm using postmark, with my own domain but I feel my use case isn't geared to their market. Their minimum plan is 10,000 emails a month. I'd need less than 1,000 emails a month.

Does anyone know of a SMTP provided that would a good fit.

Requirements

- Send from my own domain

- SMTP server available over TLS, not sending email via a API call.

- Transactional Emails are all I'm sending.
How to profile your PHP applications with Xdebug
REBL
It really does run a ton of different services under the hood. It's designed for their type of scale, a small-scale deployment would probably work OK without Zookeeper and similar.

https://develop.sentry.dev/architecture/
The Case for Higher Rates
Mortgage/Treasury Spreads, Part I
We are still discovering exploitable petroleum faster than we are burning it. Peak oil is going to be peak demand for oil as solar wind and batteries continue their exponential price performance improvement curve.

Unsustainability is a terrible argument against oil. The problem is the pollution, not the fact that it's finite.
I see a lot of people expressing love and nostalgia for like VB6 and stuff but to be honest... maybe it's me being younger and not having experienced VB during its prime, but when I got to work with VB6 and VB.NET it was a _nightmare_.

I can see that the tooling might've been great and all, but the language is seriously just horrible. And as for VB.NET, my experience was that the bearable parts were the ones it inherited from the .NET and C#. It might've been fine for prototypes, but at least IME prototypes never stay that, they get swamped with features and a few years down the line you have a Frankenstein's monster of badly thought out features struggling to interact with each other... except with VB, all of that is mixed in a soup of On Error Resume Next. I don't really see how anyone would put up with that in 2022
The simple explanation is that Rust has an equivalent of Java-style exceptions of "throw here, handle elsewhere", but has a different syntax for this. Instead of try/catch, there's a `?` operator to return ("rethrow") the error to an outer scope. It's a better fit for Rust's use of a generic Result type, but overall its usage is similar to the checked exceptions in Java.

Because Rust uses the type-safe explicit Result/? approach for all non-bug failures in the program, the implicit panic (that behaves similarly to RuntimeException in Java) is reserved for assertion failures and crashes only.

`catch_unwind` is not guaranteed to work in Rust. There's a setting to disable it and always hard abort() the whole process on every panic. Rust is serious with panics being for programmer's bugs only, and not trivialities like "file not found".
I've seen several applications made with Godot, and I've even tried to make one myself. It's possible, but in my opinion the GUI workflow isn't rich enough yet. The article mentions the positives (and there are plenty) but things that should be simple like adding fonts or styles are still awkward. But it can be done - as mentioned Godot's own application was written in the engine itself.

I also don't know about GDScript as a language to do anything serious in... maybe focus on C#?
The "trivial" solution doesn't work. And they thus had to do the non-trivial thing and write their own custom text renderer.

If I'm right in my reading, the author of the tweet is wrong to complain about them saying it's "trivial," because they never did.
I had pegged it as between 20 and 30 years ago, but someone pointed out that the author said they tried using asan. 40 years ago most universities didn't have Unix boxes accessible to random undergraduates at all.

GCC started having parts written in C++ 12 years ago: https://lwn.net/Articles/542457/
Well yeah, in a post Electron world any application smaller than 60Mb may as well be magic.
> End project was to build a control/monitoring application for an electric motor

This is actually a funny use-case for .NET as anything low-level and hardware oriented tended to be harder to do without the libraries, which (if they existed) weren't .NET

Not sure what the hard limitations were that you refer to; VB.NET / C# where always the easiest way to get a windows GUI (WinForms) app running. For industrial computing solutions tended to use Windows CE and Windows XP with COM apps.
> is /more/ respectful of privacy than most of the tech industry,

I see you haven't used the new, privacy busting Windows 11 OS, yet?
maybe solve a few issues? idk
I use a combination of both. Logging usually requires less setup overhead, so I often opt for that. Sometimes though, the path it takes for the code to reach the part I'm interested in can be pretty obscure. It's in these cases that the debugger truly shines.

It also depends on how many things you are interested in. If you care about, say, a complex object with many properties, then the interactivity of a debugger trumps logging.
As a developer I love the idea of plaid, but the pricing is scary. The 100 first banks is great, but the pay as you go does not give me any ideas of the pricing.

I love how Stripe presented the pricing page, 1.5$ per account, 10cents per fetch balance. Very clear. I still have no idea how much plaid will cost me.
Location: Dhaka, Bangladesh
Remote: Yes
Willing to relocate: Yes
Technologies: PHP, Golang, ES6+, Node.js, Express.js, MongoDB, Redis, Timescaledb, mySQL, Postgresql, GKE, AWS, Git, Protocol Buffers, Serverless, Kubernetes, Microservices,
Résumé/CV: https://1drv.ms/b/s!AuZA4xNg3fgDjPpvd7hG-lgTAiyg1Q?e=W4ABzF
Email: contact@iampavel.dev

I am a senior software and full stack engineer with over 15 years of experience. Please see my resume for more detailed information
In the early 2000's I was planning to buy a specific car. The salesman told me not to even think about for getting it under $20k. I came back the next day and told a different sales guy that I wanted the car for $16,750. He came back from the manager's room after a minute or so and said "lets do the paperwork".

I always wondered what part of my tactic worked the best... I wasn't sure if it was setting the oddly specific price or my terseness or maybe both.
How to Become a Web Developer in 6 Months
Hm. If its a timing issue, regular debuggers affect that and will perturb the experiment.

Fast, lightweight logging can be a necessary tool.
I guess I’m not tuned in enough, because I don’t understand the proposal.

How does this improve on (?)?
unreal engine is more than just rendering. Like QT, it's a cross platform application toolkit. There's no reason you couldn't port the underlying platform (which is reasonably well abstracted) to something lower level
Onja.org | Engineering Manager & Growth Manager | Madagascar, Africa | onsite

Looking for a meaningful and intrepid change? Join us training underprivileged youth into world-class software developers in Madagascar!

We’re hiring:

1) Engineering Mentor/Manager: A Software Engineer that will be the key to helping our Junior developers begin their careers: coaching them on interview technique, communication, and professionalism, while guiding them on the technical aspects of their work: https://onja.org/software-engineer/

2) Growth Manager: to lead our young enterprise of 20 developers. This will involve developing enterprise strategy, managing our client acquisition team and handling client interactions: https://onja.org/growth-manager/

You’ll join our beautiful team in Mahanoro - a peaceful beach town on Madagascar's East Coast.

Feel free to contact me, Sam, at join@onja.org for a chat / more information.
> Funny thing is the well-known company of Warren Buffet / Charlie Munger, Berkshire Hathaway, is in between stocks and ETF, and the modularity clustering put it in the ETF community.

Well BRK is very diversified and very value oriented, hence it's very defensive. ETFs are by nature much more defensive than stock picking and especially stock picking among growth/tech/bio-tech.

If Tesla is the bridge between stocks and crypto, BRK is the bridge between value stocks with huge unmovable moats which makes them very defensive (Saudi Aramco, Exxon, Walmart, Shell) and ETFs which are defensive by definition.
In my honest opinion one of the largest meta-problems ever amounts to decent mechanistic routes of helping each other being not taken in favor of more feel-good decent sounding verbal coping.

Virtue signaling should be banned.
I like the ring of that but housing with an extra room seems unlikely to become affordable, ever.
You have exactly the same effect in play if somebody calls you and ask how long it takes for you to arrive to a meeting point. If you answer 10 minutes, it will be seen as an approximation between 10 and 20 minutes. If you answer 8 minutes, it will be considered as 8 +/- 1 minute.

This is really impressive, this works each time. Especially if you are on ski slopes and you have two groups trying to meet at a given point. 10 minutes == "We can do another run or two". 8 minutes == "We need to pay attention, they are coming right now!"
Target Figured Out a Teen Girl Was Pregnant Before Her Father Did
Sometimes from my business dealings and introductions in Europe, I feel many people there are trying to replicate this.
> just give me drag and drop

`designer` does this. Instead of assuming Qt doesn't come with a RAD drag & drop, you could have spend two minutes to verify.

> python backend

https://doc.qt.io/qt-6/designer-using-a-ui-file-python.html
That's why I like Vue. It's mix of the two with a synchronized ecosystem for the core libs and a simple API.

Vue 3 kinda tanked all that though.
Musk calls for investigation into groups controlling access to information
t-mobile is not. The issue with at&t is they have a specifice whitelist of phones, and are using the 5g cutover as an excuse to force phones not on their very limitted list off their network. These phones work just fine with 4g, which is still supported.
It can sometimes be surprisingly difficult to sit down in isolation and decide what the ACTUAL maximum you're willing to pay for an eBay item is. That's part of the whole "auction" gimmick I guess: there can be an element of wanting to beat any competitors.
AT&T gave me a free iPhone SE because of this. I prefer Android using generic brands bought online that have a good feature set at a lower cost. None of these phones will work with AT&T even though they meet the technical requirements of the new network standard because AT&T is whitelisting select brands. This should be illegal.
Can't tell if you're joking or not, but this is hilarious regardless.

I believe a more serious answer would be: You could easily trap the error number and make it pop up in a MsgBox, then decide what to do with each type of error. Complex objects or functions would often each need their own custom error handling code, but it wasn't hard to do.
Looking at any single step on a path and rejecting it because the extreme end of the path isn't desirable is a quick way to never make any progress.

We can improve things, we can do social good, and never slide to authoritarianism. (I assume you are talking about authoritarian communism vs, eg, council communism.)
It's brand new!