skysight-inc/HackerNews huggingface dataset:
I'm from Russia, hi^_^

russia and north korea saw that making western companies (some of which can pay up more than entire government budget in some of these countries) transfer rub or whatever is not working for many reasons (eg. if banks allowed it it would implicate the government etc). So their ransomware gangs use crypto now.

Russian ruble exists in name only. Well, it is used in country as normal for now, but it's nearly illegal to buy foreign currency in useful amounts so official exchange rate means nothing.

In truth if you want to actually help Russians/NKoreans, cutting money supply/laundering mechanisms for the elites would be a big step in that direction and crypto is a big big part of that now.
I fully support critical ignoring, and would just note that it has to be done programmatically. That is, you have to block things before they appear on the screen, through many of the tools mentioned in this thread. (For those who have to interact with social media professionally, but want to limit its lure, New Feed Eradicator is a godsend. https://chrome.google.com/webstore/detail/news-feed-eradicat...)

The reason you have to "ignore" them before you even see them is because of the "clickbait asymmetry principle", a corollary to Brandolini's bullshit asymmetry principle. Don't spend time vetting the stuff that wants to behaviorally addict you.

https://en.wikipedia.org/wiki/Brandolini%27s_law#:~:text=Art....
Learning Zig is a very low barrier to entry. From experience I can tell you that learning the language is a matter of weeks and most of the code in the wild will be very accessible to you once you've done that, because there aren't as many different plateaus of skill in Zig as you would find in many other languages.

For many people reading and modifying the `bun` source code is likely something they could start doing tomorrow if they were so inclined, because they already know the semantics of Zig for the most part, and it's only a question of syntax.
Thank you! 100% with you on the nightmare using code.

We'd love your feedback when you get a chance to dig in! Building AI features is SUPER fun with Rivet!
So... what if they wrote a query engine? I want to get some kind of argument for choosing the type system first, but there's none...

Imagine you get IKEA assembly instructions for a chair. There might be a few valid ways to start assembling a chair. There will be also ways that make chair assembly impossible. It makes perfect sense in that context to tell you "what the first step should be".

I don't see any reason for starting with type system in making a query engine. Things that come to mind as a better first step: select data constructor, or select paradigm imperative vs declarative. Maybe select the level of data consistency you aim for... maybe choose whether querying should be mostly interactive vs mostly non-interactive. There are tons of other decisions to make.

This "let's start with types" feels like that Star Wars moment where Vader randomly points at some spot through the cockpit window and tells the captain to head that way. And once the captain enquirers as to the reason this particular direction was chosen, Vader gives some vague answer like "why would you go anywhere else?"
> I don't know what this means.

You responded to this after your second quotation, I effectively said the same thing twice in different ways to make my point. Hopefully you understand it now. To be fair, it's a somewhat complicated sentence, took me a while to put that thought into words.

> so you can give access to the password manager as a "something they know" anyway.

Mostly true. Ignoring password manager breaches, as that hurts your argument a little. Security researchers are currently of the opinion that the last LastPass security breach leaked people's encrypted password vaults, which people have somehow managed to decrypt since then. In that case, the password was something the attacker had, not something they had to know. But I think I mostly agree that access to the password manager can at least (mostly) be seen as something they know.
Because the rest of the periodic table is also there? I don't know what else to say: if there is something in the Earth's crust then it is in the Earth's ocean as well. Where do you think all the water came from anyhow?
Node or Deno dependencies would be a fairer comparison.
What I'm most fascinated by is the experiments scientists come up with to learn about bees.
A prime example is all the hoops Tom Seeley jumped through to learn how swarming bees pick a new home. He found that they measure the volume of the cavity they move in, they consider how high up the place is, how big the entrance is, and whether bees have lived there before - just to mention a few. He performed his experiments on a "bee-deserted island" (with no honeybee colonies). The icing on the cake is that bees hold a democratic debate & voting as they make a life/death decision. He shared it all in his easy-to-read illustrated book: Honeybee Democracy, highly recommended.
Maybe we can plant fields of new coal to be found in a million years ;-)
How does that relate to async/await? This is an arbitrary implementation choice. Generic reader/writer in Rust wouldn't matter since it will get optimized away, only leaving cooperative multitasking code if the buffer were to be filled by another thread/producer/source.
Ask HN: What's a mnemonic or concept that's helped your engineering career?
What are some mental models, mnemonic or memory tricks that you've developed to help you through your software engineering career/journey? I'll start first:

When I'm working in javaScript and trying to figure out whether to use `for...in` vs `for...of` I think about this trick I found and modified (https://maximorlov.com/forof-vs-forin-memory-trick). The author uses UFOs (unidentified flying objects) but I use foreign objects for mine. If I'm looping over objects, I say they are foreign objects so I grab the `for...in` loop for objects. That means the only thing left is `for...of` for arrays.

This other one is less of a mnemonic and more of a concept that was like an "ah-ha" moment in my software engineering career. (I can't remember if I came up with it or read/heard it somewhere so I apologize for not being able to give credit if credit is due.) A large percentage of apps that we create as software engineers are mostly glorified forms and/or spreadsheet. You are submitting some data to a database. We are then outputting that data in some UI. That means everything we do - from design all the way to DevOps - is to support or "dress up" a form and/or a spreadsheet of data. It helped make things a little less daunting for me.

Curious what other's may have conjured up.
My bank and credit union allow me to deposit checks from my phone via the apps; their websites don't offer that option.
The Social Radars has an episode where they interview PG, covering much of the history of YC: https://www.thesocialradars.com/episodes (second from the bottom).
A particularly interesting use case for async Rust without threads is cooperative scheduling on microcontrollers[1]; this article also does a really good job of explaining some of the complications referenced in TFA.

[1]: https://news.ycombinator.com/item?id=36790238
I think type classes and packages can happily interoperate without knowing of each other, just like abstract types and packages do currently...well I guess the concepts idea would make it so you'd need even less coordination. But yeah, would be nice if Julia had formal interfaces.
> He added that “we write all our client side code at 37signals now in pure JavaScript and the same too with any internal libraries. This is going to bring that in line.”

He provides this as a justification for the change, though this is very thinly veiled. 37signals is only one of the users of the framework, what about everyone else (which, judging by GitHub reactions, dislike the change)?

This definitely seems to have been rushed, and perhaps suggests that the framework author is solely developing the framework for 37signals. If that's the case, it seems strange to market the product to the public in the first place -- if it's just for one company, why not keep it that way?

I see a common pattern these days in that companies tend to market the open-source nature of a subset of their products as a positive. Though, in many cases, this is done to ease the maintenance burden, instead of it being a community-driven project. Is this what's going on here?
Check out this article, which uses an "open source" tool (the tool is Powershell, so inspectable).

https://christitus.com/windows-11-perfect-install/

Direct link to script: https://raw.githubusercontent.com/ChrisTitusTech/winutil/mai...
Wow, that many guarantees should persuade me to base my tech stack on Bun and Zig.

Seriously, I think this question is worth asking. Why was Zig chosen as the language when it’s not even stable, and what implications does this have for the long term viability of the project (besides the fact that its _fast_)? Zig’s head guy isn’t even sure when Zig will hit v.1.0, and Bun’s head guy hasn’t really responded either AFAIK.
I'm curious about the Bun Framework API, is there a release date set for that?
In other words is the sky blue?
Async Rust is especially problematic in the enterprise world where large software is built out of micro-services connected through RPC.

Typically, if you want to build something with Rust, it'll have to use async, at least because gRPC and the like are implemented that way. So the vanilla (and excellent, IMO) Rust language doesn't exist there. Everything is async from the get-go.
If you struggle a great deal in certain situations with concentrating, Adderall instant release (small dose) worked great for me as needed, but it can easily become tolerated and lead to blood pressure/heart issues if taken regularly in higher doses.

I never had much luck with other drugs because of seeming inevitable tolerance problems and side effects.
Maybe "add a runtime that switches execution contexts on behalf of the user" and "force the programmer to reimplement everything" are not the only options.
Actually I think “it’s a reflection of society’s bias” is a totally reasonable statement to make if you’re product is a reflection of societies generated content.

Rather than impugning the model makers for not curating societies content to erase its biases, to my mind it demonstrates what’s broken with society, and should be used as an indictment of how we encode our society in our media - the fact that if you asked an oracle a question it produces racist output is more an indictment of society itself because the media of our society IS racist. Sweeping it under the rug serves no one, IMO.

Instead the story is “AI models are racist,” which misses the real problem. The real problem is that when a human in our society wants to portray a robber, they use a black man. That should be the story, and pitching it as a flaw with AI models is like criticizing the color of the paint when the foundation is cracked.
I would welcome more of these being incorporated into society. They are beautiful and natural.
The author's point is that Rust is not a good language for software like that example. But very, very little software is like that, and you can always divide it up in large blocks inside of what Rust fits quite well.

Personally, I'm a bit more radical than the author. You won't be able to write software like the example correctly. It should just not be done, ever. Machines can still optimize some sanely organized software into the same thing, maybe, if it happens to be a tractable problem (I'm not sure anybody knows). But people shouldn't touch that thing.
I was born here and I've lived here all my life. I still live here.
"Use your KEYBOARD ARROWS to view the story" reminds me of the way Minecraft Legends pops up a hint saying "Press [left mouse button graphic] to start" when you click or press space or escape or literally any other commonly used "ok that's nice, please proceed" key.

If you understand my intent well enough to post a passive-aggressive note telling me how I should ask to move to the next part, you understand me well enough to just skip to the next fkn part.

Edit: Just launched Minecraft Legends to confirm details and that it still does this. Apparently it's changed a bit but still pops up "Press [left mouse button] to start" on the splash screen and, if you hit space, changes to "Press [picture of enter key] to start" so I feel my point stands.

Edit2: Oh and when a cinematic starts... if you hit Esc it pops up a similar tip saying "Press ␣ to continue." WHAT DID YOU THINK I WANT- ugh I'm over it.
> I'd argue Windows Phone 7 was one of the purest examples of usable UI I've ever interacted with. Then it all got destroyed. The sad reality is that good, usable design is never the top priority.

Very much agreed. WP7 was a nearly perfect platform for communication.
> We want to use the whole computer. Code runs on CPUs, and in 2023, even my phone has eight of the damn things. If I want to use more than 12% of the machine, I need several cores.

Isn't that already, in this strong generality, an almost always wrong assumption?

Sure, one can do massively parallel or embarrassingly parallel computation.

Sure, graphic cards are parallel computers.

Sure, OS kernels use multiple cores.

Sure, languages and concepts like Clojure exist and work - for a specific domain, like web services (and for that, Clojure works fascinatingly well).

But there are many, even conceptually simple algorithms which are not easy to parallelize. There is no efficient parallel Fast Fourier Transform I know of.
The second sentence of the article is

> A strange tip had arrived from Belgium’s gambling commission.

I can't speak to Belgium specifically, but in many areas one of the responsibilities of the gambling/gaming commission is ensuring "fair" gambling. So they probably care more about the impact of match fixing on the "fairness" of sports betting rather than the reputational (I assume that's what you meant rather than "repetitional") risk to any particular sport.

When betting is involved, I don't see match fixing as all that different from someone bribing a casino employee to use dice loaded in their favor or help them cheat in a game of cards. Or depending on who's involved, maybe it's more like the casino using dice loaded in the casino's favor.

In any case I think it basically amounts to fraud. The published odds are inaccurate because the outcome has been fixed, allowing the people aware of that to make money at the expense of the people unaware. Fraud is generally a crime, so as long as the match fixing isn't reflected in the published odds IMO it isn't all that surprising that it's a crime.
i haven't heard FAA asked them to self investigate. I hope that's true because that would mean the 63 corrective actions found are likely already applied. Maybe we'll get a launch by Halloween.
> it's mostly legacy RFID stuff that's trivial

I don't know what it's like globally, but around these parts it is way more common to encounter one of these "legacy" systems than any of the modern stuff. Many large campuses were early adopters of fob-based access and upgrades are prohibitively expensive.

One of my favourite attacks against the existing HID-card based systems is... once you scan a card, the 24-bit identifier is split between an 8-bit facility ID and a 16-bit card ID. If you encounter a door that won't open with the card you have, start decrementing the card ID; many of these places assigned card IDs sequentially and by trying smaller IDs you're trying cards for employees who have had longer tenure at the company.
... And it is hugged to death now.
I am not sure why you're stipulating that there needs to be a threshold of minimal examples to present a contradictory pov, or why you need those counter examples to be greater in number. Most mammals don't have bills, but platypuses exist. Should we not describe a paltypus as a mammal simply because there are not enough examples of this type of animal? Or maybe I misunderstand your point.
> Larrikin is an Australian English term meaning "a mischievous young person, an uncultivated, rowdy but good hearted person", or "a person who acts with apparent disregard for social or political conventions".
You’d need a full lifecycle analysis to determine that. Sorta like how ethanol fuel is more polluting than just gasoline https://cleantechnica.com/2022/09/13/ethanol-burns-clean-but...
If you prefer more academic pov, there is a WIP book called "Building Query Compilers"

https://pi3.informatik.uni-mannheim.de/~moer/querycompiler.p...
Mostly cause I wanted something boxed where I don't have to invest too much time.

But yeah I regret that decision now.
> But that's nearly the opposite of what the borrow checker tries to do by statically bounding objects, at compile time.

Arc isn't an end-run around the borrow checker. If you need mutable references to the data inside of Arc, you still need to use something like a Mutex or Atomic types as appropriate.

> The degree to which a big language runtime and GC weren't a boogeyman for some problem spaces was really eye-opening.

I have the opposite experience, actually. I was an early adopter of Go and championed Garbage Collection for a long time. Then as our Go platforms scaled, we spent increasing amounts of our time playing games to appease the garbage collector, minimize allocations, and otherwise shape the code to be kind to the garbage collector.

The Go GC situation has improved continuously over the years, but it's still common to see libraries compete to reduce allocations and add complexity like pools specifically to minimize GC burden.

It was great when we were small, but as the GC became a bigger part of our performance narrative it started to feel like a burden to constantly be structuring things in a way to appease the garbage collector. With Rust it's nice to be able to handle things more explicitly and, importantly, without having to explain to newcomers to the codebase why we made a lot of decisions to appease the GC that appear unnecessarily complex at first glance.
Spyware exists primarily to steal data, firefox also has "some" other uses. Calling firefox "spyware" dilutes the meaning by implying it's somehow similar to actual spyware.
Congrats on the release. May I ask if the company is still hiring C++ engineer? I work full time in system programming, and the job post says 'post something you built with bun along with resume' which really confused me as I don't typically build things ON Bun.
That just doesn't follow. You're making multiple leaps. First that Apple is going to add or switch to ad support for their services. The second is those ads will be as invasive as Facebook ads.
Artie (YC S23) is hiring a founding engineer
Because the parent didn't say "prior success guarantees future success".
The IDFA on iOS is a random device identifier and not tied to your identity. It would allow an advertiser to correlate that it’s the same device that has installed several apps, nothing more. It also resets in certain situations.

Facebook on the other hand, creates a grand central repository of everything there is to know about you and sells it to whoever wants to pay. Just like Google.
Home Economics is an actual economic discipline imo that is often overlooked.
Any chance of this coming to Windows? Most of our developers are on Windows systems.
They have to set up the replacement (topics API) before they get rid of the previous solution (third-party cookies). Sites need time to adjust and implement the new systems.

They also need to not make sweeping changes to the ad industry that could be described as anti-competitive or monopolistic. I doubt they'd get away with just turning off third-party cookies in their browser.
>The fact of the matter is that Google is their biggest financial contributor, and that means by proxy Google can influence them. I don't have any examples right off the bat,

Exhibit A.

Fine, it's a potential conflict of interest. But there's still a step between having a potential conflict of interest and being compromised by Google / influenced by proxy. You don't get to jump from point A to point B. That's FUD.

There are near-monthly examples of Mozilla going against Google on big-ticket items, and nobody seems to be able to point to any examples otherwise, but we're supposed to criticize them for being too dependent on Google while ALSO criticizing them for profitable side-projects or cross-marketing that diversifies their revenue (like VPN, Pocket, the Disney movie thing, etc.)

Simultaneously:

* "how dare they work on something other than Firefox even if it makes money" and

* "how dare they monetize Firefox" and

* "how dare they take so much money from Google"
Awesome work Cai and Andy. Do you have advice on structuring functions for best results? (eg, is it a good idea to give my agent access to things like a calculator "in case it needs it" or be careful about spoon-feeding it the tools I think it needs)
I don't know; I discovered it after he died and have been using it mainly for post-Ebert reviews. I'm actually not super familiar with his taste in films.
From a financial perspective IBM's model of buying up customer's by taking over smaller successfull outfits, maximizing profit's while the quality goes down the drain and using that profit to restart the process have actually been successful enough over the last 2 decades since they switched from being an engineering company to an capital fund with a tech focus.

This is probably just the same strategy ie IBM might have realized that their cloud department is as popular as it will ever be and is now entering the squaze phase of it's lifecycle.
If you write a library that implements websockets on top of the Read trait or on top of sockets, is it *also* an async websocket library, with no additional code and without containing any instances of the async keyword? In many languages the answer is yes.

I guess I should specify that this is true even in a single-threaded context and even without any additional buffers or whatever.
Anyone know why there isn't a single type/interface that allows for consumers to supply any of Arc, Rc etc boxed values?

I haven't investigated it deeply, but I was developing something in Rust, and whether something needs to be threadsafe or not is entirely on the consumer's use case... bad separation of concerns for the provider of a generic interface to have to specify the specific type of boxed value. 100% fine if the behavior in this case is to pre-allocate the max possible boxed type memory requirement.

This is the only thing I was really frustrated with in Rust
> You might say this isn’t a fair comparison—after all, those languages hide the difference between blocking and non-blocking code behind fat runtimes, and lifetimes are handwaved with garbage collection. But that’s exactly the point! These are pure wins when we’re doing this sort of programming.

Until all the work you're trying to push is generating so many allocations that your GC goes to shit once every two minutes trying to clean up the mess you made. (https://discord.com/blog/why-discord-is-switching-from-go-to...)
Even if their cloud revenue were half of what they reported, their offering would still be several times larger than DigitalOcean, Vultr, Linode, and several others combined. No one is claiming that IBM is the largest cloud provider, but come on.
> Async Rust is especially problematic in the enterprise world where large software is built out of micro-services connected through RPC.

A weird way to use Rust since you can do a lot of messaging within the process, and use the computing power much more efficiently.

RPC is essentially messaging and message-passing. Message-passing is a way to avoid mutable shared state - this is the model with which Go became successful.

RPC surely has its use but message passing is another, and very often inferior, solution to the problem set where Rust has excellent own solutions for.
Probably because accessing PyPI directly is slow, because of the Great Firewall.