MurphyA/hacker-news huggingface dataset:
by ndriscoll | 2025-05-31 14:06:52+00:00
I might just be taking the specific use-cases you're talking about for granted? I tend to think the reason you'd use task-specific thread pools in the first place is because the contended resource is CPU and you want different priorities for different types of tasks. E.g. if you have different types of long-lived connections (e.g. websockets) and want to make sure that even if you have 100 type A connections and 50,000 type B connections, you want ~even CPU to be split between A and B. You could use semaphores, but then you're usually waking a B (in response to some socket IO you were waiting on) just to put it to sleep. It seems like it'd make more sense to use two platform thread pools (with the different thread groups waiting on different sockets)?

Is your advice more about things like object pools or connection pools?
by osigurdson | 2025-05-31 14:08:11+00:00
It is interesting how the industry ended up with things like TDD when it doesn't work for something as simple as a function that adds two numbers together. While not completely useless in some edge cases, its complete lack of any kind of formal underpinnings should have given us a clue. So many bad / unexamined ideas in the Uncle Bob era. Far closer to a religion than anything else (complete with process "rituals" even).
by rcleveng | 2025-05-31 14:08:23+00:00
Wrappers are good even when non dealing with multiple currencies since in many places some transactions are in fractions of cents, so depending on the usecase may need to push that decimal a few places out.

I always have a wrapper class to put the logic of converting to whole currency units when and if needed, as well as when requirements change and now you need 4 digits past the decimal instead of 2, etc.
by perrygeo | 2025-05-31 14:08:29+00:00
Such an important point, I've seen and suspected the end of ZIRP being a much much greater influence on white collar work than we suspect. AI is going to take all the negative press but the flow of capital is ultimately what determines how the business works, which determines what software gets built. Conway's law 101. The white collar bloodbath is more of a haircut to shed waste accumulated during the excesses of ZIRP.
by roywiggins | 2025-05-31 14:08:32+00:00
I think it's just much easier for an LLM to learn how to be convincing than it is to actually be accurate. It just has to convince RLHF trainers that it's right, not actually be right. And the first one is a general skill that can be learned and applied to anything.

https://arxiv.org/html/2409.12822v1
by kragen | 2025-05-31 14:10:45+00:00
There's an overview in https://en.wikipedia.org/wiki/Solidarity_action#United_State....

You'll probably be interested in reading https://chicagounbound.uchicago.edu/cgi/viewcontent.cgi?arti..., "Secondary Boycotts and the First Amendment", in the University of Chicago Law Review, by Barbara J. Anderson:

> Section 8(b)(4)(ii)(B) of the National Labor Relations Act (NLRA)¹ makes it an unfair labor practice for a union to "threaten, coerce, or restrain any person" with the object of requiring that person to cease dealing with another.² In NLRB v. Retail Store Employees Union Local 1001 (Safeco),³ the Supreme Court held that this section proscribes union picketing designed to influence consumers to boycott a struck product whenever such picketing "reasonably can be expected to threaten [the picketed retailer] with ruin or substantial loss."'⁴ Although the Court noted in passing that peaceful picketing is entitled to some first amendment protection, the Court found it "well-established" that Congress had constitutional power to prohibit "picketing that predictably encourages consumers to boycott a secondary business."⁵

I'm not sure whether NLRB v. Retail Store Employees is still valid law. But "secondary boycotts" are often understood as something much more coercive as simply "union picketing designed to influence consumers to boycott a struck product" (https://digitalcommons.du.edu/cgi/viewcontent.cgi?article=46..., "Secondary Boycotts Under the Taft–Hartley Act" Philip Hornbein, Jr., 01953):

> The distinctive feature of a secondary boycott is that it is directed against a neutral party rather than against the employer directly involved in the labor dispute. The target of the secondary boycott is a third party who is engaged in business dealings with the employer as a customer, supplier, or otherwise. The object of the secondary boycott is to cause the boycottee to cease doing business with the employer.

Consider disputes other than labor disputes. Suppose Phyllis believes that, because you are gay, you are so immoral that she won't sell groceries to you in her grocery store. This is deplorable but not really threatening and coercive; you can still buy groceries from Chad's grocery store down the street. But suppose Phyllis convinces Chad's employees to strike unless Chad refuses you service as well. Suddenly the situation has taken on a much darker cast; Chad may have nothing against gay people, but he may start refusing you service simply as a matter of self-preservation. If this goes on, you may rapidly find yourself without sources of food or employment unless you recant your homosexuality.
by simonw | 2025-05-31 14:10:54+00:00
I've been having an interesting challenge relating to this recently. I'm trying to calculate costs for LLM usage, but the amounts of money involved are so tiny. Gemini 1.5 Flash 8B is $0.0375 per million tokens!

Should I be running my accounting system on units of 10 billionths of a dollar?
by HarHarVeryFunny | 2025-05-31 14:11:36+00:00
I'm not sure what the "challenge" is there, but certainly true in terms of human psychology.

My point was that if you are part of one of these accident-prone groups, you are certainly worse than average, and are probably safer (both for yourself, and everyone around you) in a Waymo. However, if you are an intelligent non-impaired experienced driver, then maybe not, and almost certainly not if we're talking about emergency and dangerous situations which is where it really matters.
by rcleveng | 2025-05-31 14:11:43+00:00
Land grab? Not sure I'd call it that, but maybe it is.

I looked at it more as there were N different ways of configuring tools to be called, so they created N+1 (https://xkcd.com/927/) but have had good success at getting alignment on it.

While not knowing the reasons that OpenAI supported it, I would imagine it was along the lines of: "This is not more bad than the others we have seen, may as well use it"

Since that time, thankfully many folks have jumped into looking at it and making it better. I just wish the spec was good and easy to follow (I read through it, and I'm still looking for the real spec)
by AlphaWeaver | 2025-05-31 14:12:05+00:00
Erlang's use in the telecom sphere has primarily been focused on switching, routing, and real time voice processing on the backend. Beyond just handling cellular traffic, many internet switches are written in Erlang too. It's only recently that Erlang has been used for more of the type of code that could run on the frontend. (The niceness of writing Elixir is a big part of that too.)

The primary blocker to running Erlang on mobile has been the lack of portability of the BEAM VM itself, which is why this project is so exciting!
by handsclean | 2025-05-31 14:12:45+00:00
Here’s a version that’s IMO much simpler still, about half as long as both (after fixing v2’s line count cheating), and fixes a bug: both article versions wait an extra 60 seconds between the last attempt and returning an error.

func do(ctx context.Context) error { for attempt := 1; ; attempt++ { if request(ctx) == nil { return nil } if attempt == 10 { return fmt.Errorf("failed after %d attempts", attempt) } select { case <-ctx.Done(): return ctx.Err() case <-time.After(time.Second * min(60, math.Pow(2, attempt-1)*(0.75+rand.Float64()*0.5))): } } }

I think the problem with the original isn’t using a formula, it’s over-parameterization. Declaring constants right next to where they’re used once isn’t giving you anything but the opportunity for naming issues and rigidity in how you combine them. If they aren’t passed in or repeated, then I wouldn’t pull them out; if they are, then I’d try to look for minimal and natural boundary points, like just min and max, or maybe an attempt → delay function.
by ZoomZoomZoom | 2025-05-31 14:13:41+00:00
Please, reread the statement I'm arguing with. I posit that you can mostly avoid "everything is an incantation for a while" if you're onto the correctly constructed track to knowledge.

Consider, how it's been done traditionally for imperative programming: you explain the notion of programming (encoding algorithms with a specific set of commands),explain basic control flow, explain flowcharts, introduce variables and a simplified computation model. Then you drop the student into a simplified environment where they can test the basics in practice, without the need to use any "incantations".

By the time you need to introduce `#include <stdio.h>` they already know about types, functions, compilation, etc. At this point you're ready to cover C idioms (or any other language) and explain why they are necessary.
by brudgers | 2025-05-31 14:14:23+00:00
1. Multimeter.

2.Soldering iron, for starting out I suggest spending a little more and getting a Hakko 888 instead of something cheaper.

3. Flux, Leaded solder, Braid.

4. Broken things you want to repair (for me it has been electronic musical instruments).

5. Practice, Patience, and hobby money.

6. Pay for Youtube Premium.

7. Ali Express Account.
by reconnecting | 2025-05-31 14:14:48+00:00
You're right, blanket blocking based on IP ranges (like TOR or DC) often creates false positives and punishes privacy-conscious users. Therefore, unlike the traditional way of blocking an IP just because it is from a data center, tirreno suggests using a risk-based system that takes into account dozens or hundreds of rules.

As in my example, if the IP is from a data center and creates a lot of 404 errors, send it to a manual review queue or to automatic blocking (not recommended).

Personally, I prefer to manually review even bot activity, and tirreno, even if it's not directly designed for bot management, works great for this, especially in cases when bad bots are hidden behind legitimate bot UA's.
by simonw | 2025-05-31 14:15:50+00:00
If you've found web development frustrating over the past 5-10 years, here's something that worked great for me: give yourself permission to avoid any form of frontend build system (so no npm/React/TypeScript/JSX/Babel/etc) and code in HTML and JavaScript like it's 2009.

The joy came flooding back to me! It turns out browser APIs are really good now.

You don't even need jQuery to paper over the gaps any more - use document.querySelectorAll() and fetch() directly and see how much value you can build with a few dozen lines of code.
by appel | 2025-05-31 14:16:10+00:00
Thank you! Hope you don't mind, but I took the liberty to have Gemini convert it to python, since I'm not familiar with Deno. Appears to work just fine. I posted a gist here in case it is useful to anyone else: https://gist.github.com/appel/a6accfab384f80cb12c9c20a1075e9...

I'm of course happy to take it down if you do mind, just let me know. And thank you again!
by xorcist | 2025-05-31 14:16:11+00:00
I see a pattern with AI companies. They always try to solve a really hard and not very useful problem. It's the same as with self driving car companies ten years ago: If you believe self driving tech is ripe for commercialization, the reasonable thing to do is something capital intensive and a special case where the technology most likely to succeed. For instance, heavy trucks automatically following others in formations for long drives. Saves gas, money, and potentially personnel.

There is a clear business case and buying large trucks is already a capex play. Then slowly work your way through more complex logistic problems from there. But no! The idea to sell was clearly the general problem including small cars that drive children to school through a suburban ice storm with lots of cyclists. Because that's clearly where the money is?

It's the same with AI. The consumer case is clearly there, people are easily impressed by it, and it is a given that consumers would pay to use it in products such as Illustrator, Logic Pro, modelling software etc. Maybe yet another try in radiology image processing, the death trap of startups for many decades now, but where there is obvious potential. But no! We want to design general purpose software -- in general purpose high level languages intended for human consumption! -- not even generating IR directly or running the model itself interactively.

If the technology really was good enough to do this type of work, why not find a specialized area with a few players limited by capex? Perhaps design a new competitive CPU? That's something we already have both specifications and tests for, and should be something a computer could do better than human. If an LLM could do a decent job there, it would easily be a billion dollar business. But no, let's write Python code and web apps!
by thejoneser | 2025-05-31 14:16:11+00:00
My impression (partly from reading Zephyr Teachout's excellent book Break Em Up) is that a farmer cooperative would not find the big grocery stores willing to carry their products. Those stores are intimidated by whichever of the big-3 processors is active in their region. Selling at a farmers market or mom & pop store may be totally feasible, but the grower had better be sure that was a long-term solution, because the big processor will blackball them for trying.
by smcameron | 2025-05-31 14:16:38+00:00
One thing I did not see mentioned in the article, or in these comments (according to ctrl-f anyway) is the use of feenableexcept()[1] to track down the source of NaNs in your code.

feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);

will cause your code to get a SIGFPE whenever a NaN crawls out from under a rock. Of course it doesn't work with fast-math enabled, but if you're unknowingly getting NaNs without fast-math enabled, you obviously need to fix those before even trying fast-math, and they can be hard to find, and feenableexcept() makes finding them a lot easier.

[1] https://linux.die.net/man/3/feenableexcept
by simonw | 2025-05-31 14:16:59+00:00
"Speaking of AI, is it any use? Well, somewhat. It writes half-useful CSS. It saves time on some things (but also makes bizarre choices on other things -- whatevs). I basically paired with it occasionally. It was OK."

Hardly a ringing endorsement there!

Apparently even saying "I tried AI and it was somewhat OK" is enough to summon the anti-AI comments.
by parsabg | 2025-05-31 14:17:21+00:00
Good analysis. Would it make sense to look at cumulative capital raised in addition to whether the companies have raised a Series A, to account for large seed rounds which don't seem uncommon with this cohort of companies? Series A as a milestone could obscure some details, e.g. company has raised a small seed round previously so the next round is labelled as series A, or company has raised a large seed round so doesn't need a series A within 24 months.
by diego_moita | 2025-05-31 14:19:19+00:00
That is a smart question.

In 1987 the economist Robert Solow said "You can see the computer age everywhere but in the productivity statistics".

We should remark he said this long before the internet, web and mobile, so probably the remark needs an update.

However, I think it cuts through the salesmen hype. Anytime we see these kinds of claims we should reply "show me the numbers". I'll wait until economists make these big claims, will not trust CEOs and salesmen.
by nurettin | 2025-05-31 14:19:39+00:00
I inherited systems that trade real world money using f64. They work surprisingly well, and the errors and bugs are almost never due to rounding. Those that are also have easy fixes. So I'm always baffled by this "expert opinion" of using integers for cents. It is pretty much up there with "never use python pickle it is unsafe" and "never use http, even if the program will never leave the subnet".
by toast0 | 2025-05-31 14:20:19+00:00
I think a lot of that was following what sold. If nobody is buying these things at Fry's, it doesn't make sense for them to stock them.

IMHO, there was a drop in good deals around the time they got rid of the purchaser who was doing the embezzleing (2008), and also new stores started opening with 'boring corporate store' theme ('new' sunnyvale store, vegas). If I'm gonna be at a boring corporate store and not getting good deals, why bother?

Then there was the year? or so of circling the drain when there was some sort of credit problem and they tried to switch from owning inventory to a consignment model and most of their vendors weren't interested so they had no inventory.
Show HN: Fontofweb – Discover Fonts Used on a Website or Websites Using Font(s)
by sim04ful | 2025-05-31 14:20:58+00:00
Hey HN, I've been working on fontofweb.com on and off for the past 4 years, and I'm keen to share it with you. It lets you type in the URL of any website and see exactly how the fonts are used: all the weights, line heights, and sizes.

A big plus is that it doesn't require a Chrome extension, unlike a lot of other tools in this space.

You can also search for a specific font and find websites using it. For example, check out sites using Inter: https://fontofweb.com/w/inter. This reverse font search even supports looking for multiple fonts at once, like here’s an example with Inter and Space Mono: https://fontofweb.com/w/inter/space-mono.

My goal with Font of Web is to build up a comprehensive database of font usage across the web. By collecting and analyzing this data, I believe we can uncover some valuable trends, such as:

* Common font pairings * Popular heading fonts over time * Market share of commercial fonts * Top font foundries based on actual usage

I originally built a version of this four years ago and was surprised by how much organic interest it received.

I’ve now rebuilt the tool from scratch, moving away from browserless.io — which was quite expensive — to an invisible iframe approach with a proxied URL to handle CORS (it’s a straightforward solution, and I’m rather surprised it isn’t discussed more often). This change has completely eliminated all costs related to web scraping.

Here's the Tech Stack:

* Remix + HeroUI + Tailwind * Rust Backend in Axum * Authentication with OTP email and Google social auth (via openidconnect) * Sqlite running on the same VPS as the API service * $5/mo VPS * Cloudflare CDN * Cloudflare R2 for storage * Zeptomail for emails (very cheap and reliable, highly recommend!) * Simple Analytics: https://dashboard.simpleanalytics.com/fontofweb.com * Logging: Journalctl :)

There are currently 275 websites in the database, and I'm working on increasing this. Stats are available at: https://api.fontofweb.com/stats.

While the main site doesn't need an extension, for more robust searching and to help with Cloudflare-protected sites, there’s a chrome extension available.

There's also a public API for domains that have already been checked. For instance: https://api.fontofweb.com/report?domain=apple.com&path=/.

There's also RSS feed I’ve got no idea why you would need this directly, but I'm using it because Pinterest allows you to automatically populate boards with an RSS. https://api.fontofweb.com/rss

Appreciate your thoughts and feedback
by BoorishBears | 2025-05-31 14:21:09+00:00
How is it YC's fault the consumer apps failed to raise a Series A?

I personally have a consumer AI product that had 3 competitors get into YC, and they just didn't perform very well:

- One has so little distribution the only sign of life in the last 3 months was that they updated their landing page.

- Another released a disappointing app, didn't really iterate on it, and eventually pivoted into being a legal AI answering machine after that flopped.

- The third took down their app shortly after YC and pivoted to a content creation site for YT channels... then randomly let their site start going down, ignoring the customers, and doesn't seem to be doing anything anymore.

Meanwhile some competitors that didn't get into YC are now at 7 figure MRR (I'm at a measly 5 figure MRR). So it's not like the space these apps were in is as disastrous as these comments are making them out to be: YC took a chance and unfortunately these teams just weren't the right teams.
by cratermoon | 2025-05-31 14:21:34+00:00
Who uses unbounded exponential backoff?

Also the author focuses entirely on client needs, and forgets the other reason to use backoff to be nice to the server: when the service is overloaded and slow but not down, clients all backing off allow the server to catch up. But of course it's important to use bounded exponential backoff with jitter, otherwise a bunch of clients that have backed off can all retry within an narrow window, and the server is again overwhelmed.
by SamuelAdams | 2025-05-31 14:21:40+00:00
This feels like how Microsoft fired all their QA and expected developers to fill that role.

On one hand I think automating content moderation is a great idea. People who review content are exposed to very unhealthy things, and tend to experience trauma after a long enough time (2-5 years). Anything AI can do to reduce trauma of employees or contractors I think would be a net win.
by subpixel | 2025-05-31 14:22:19+00:00
I agree with you to a point.

In smaller businesses some roles won’t need to be hired anymore.

Meanwhile in big corps, some roles may transition from being the source of presumed expertise to being one neck to choke.

I’d love it not to be true, but the truth is Jira is to projects what Slack/Teams are to messaging. When everybody is a project manager Jira gets paid more, not less.
by matthewdgreen | 2025-05-31 14:22:40+00:00
It’s crazy that our grids are still held together by the speed of a physically spinning generator. It’s like driving your electric motors with brush motors or using analog tape instead of digital audio, POTS instead of VoIP. A perfectly reasonable but still obsolete technological anachronism that will be gone within our lifetimes.

Watching the enormous progress we’re making on upgrading our energy infrastructure is definitely one of the most exciting things happening in tech. People seem determined to stick to old ideas.
by pydry | 2025-05-31 14:22:41+00:00
It's curious how the "true narrative" people fight with such a passion for so frequently coincides with the dominant war narrative currently pushed by the imperial power center they live under.

That is, until 10 years later when they have a new narrative about a different military rival. They quietly stop pushing the old narrative and everyone quietly admits the old one was kinda bullshit all along.

E.g. my views didnt change one iota since 2003 but these views at some point magically stopped conferring a "Saddam sympathizer" moniker from people who demanded unthinking ideological commitment.

It works the same way with people who live under and unthinkingly consume Russian imperialist propaganda too. The more passionate ones make routine demands for ideological purity similar to the one above.
by gostsamo | 2025-05-31 14:22:53+00:00
You saying that consumers having meet on dumping/low prices is illegal? You are a communist! /s You saying that a businessman is obliged to go against their own interest in stead of selling their meds to the highest bidder? You are a communist! /s Free market without regulation is exactly that - freedom for those who can shape the market as they wish and no government violence necessary so it is kosher.