MurphyA/hacker-news huggingface dataset:
by benjiro | 2025-10-18 15:34:56+00:00
> Here in europe cars have become so expensive compared to just 10y ago.

Check the ownership of the different brands and you will discover from the dozens of brands in Europe, there are really only a few companies making cars. And the "mother company" then shares chassis between models, engines between models. So you can have a a Lada with a Renault engine, with a Dacia chassis. We see 3 brands, but in reality, its one brand.

* Groupe Renault's owned brands include Renault, Dacia, Alpine, and Lada.

But wait ...

* Stellantis was formed from the 2021 merger of two major auto groups: PSA Group (which included Citroën and Peugeot) and FCA (Fiat Chrysler Automobiles). Therefore, the brands Stellantis owns are now a part of Citroën's parent company, which include brands like Peugeot, Fiat, Jeep, Chrysler, Dodge, and Opel.

You see the issue very fast. If you own many brands, do you compete against each other, or do you "stabilize prices for max profit". Same issue with other brands...

Its like in the US, where if you trace back the brands, like 3 or 4 companies, own like 90% of the known US food brands. And when you have only a few companies, gentlemen's agreements about not competition too much are a thing.

Hey, why are HDD not dropping in prices for the last 10+ years. Well, there are only 3 brands left (with two that are huge). Hey, why did SSD/NVME prices suddenly skyrocket. Well, only a few brands make the stuff, and when one decided to increase prices, all of a sudden the rest also followed. Strange is it not...

We are in the age of monopolies again, and that is linked to a lot of the price issues.
by dgacmu | 2025-10-18 15:35:07+00:00
This seems like an unhelpful comment?

First of all, the ugrep performance comparisons are online (and haven't been updated to compare against this version that was only released 3 days ago). So your question is answerable:

https://github.com/Genivia/ugrep-benchmarks

The two are very close and both are head and shoulders faster than most other options.

And backwards compatibility is a mixed thing, not a mandatory goal. It's admirable that ugrep is trying to be a better drop-in replacement. It's also cool that ripgrep is trying to rethink the interface for improving usability.

(I like ripgrep in part because it has different defaults than grep that work very well for my use cases, which is primarily searching through codebases. The lack of backwards compatibility goes both ways. Will we see a posix ripgrep? Probably not. Is ripgrep a super useful and user-friendly tool? Definitely.)
by MarkBagh | 2025-10-18 15:35:35+00:00
The interesting part is GGPoker's tech infrastructure. They've built one of the smoothest online poker platforms - way better UX than the old WSOP.com. Caesars probably realized they couldn't compete with pure-play online operators who iterate faster. Better to sell the IP and license the live events than try to rebuild the tech. $250M note is interesting risk mitigation. If NSUS can't grow the brand online, Caesars can reclaim the IP.Wonder what the tech stack looks like for handling 10K+ concurrent players during big tournaments.
by rayiner | 2025-10-18 15:35:49+00:00
I can’t get Italian or Irish citizenship because I’m ethnically Bangladeshi. Many Americans, however, can get Italian or Irish citizenship, because they have grandparents born in those countries. Virtually all of these people are ethnically Irish or Italian—who else has grandparents born in Ireland or Italy? They are de facto ethnostates.

I certainly don’t begrudge them that—I’m grateful my people have their ethnostate. My ancestors have been in Bangladesh for 25,000 years—I shouldn’t (and in fact don't). need a visa to go back.
by linsomniac | 2025-10-18 15:36:29+00:00
>time for me to confess

Don't feel that way. I can totally understand why some people wouldn't "get" (or I'd put it "appreciate") The Far Side. It's a very particular kind of humor, and it's fine that it's "not everyone's cup of tea". I, for example, absolutely loathe poetry. It's like the cilantro of literature of me, and I don't have the gene that makes it not taste like soap. ... Who cares!?!

I have this "joke" that I dearly love, that I've never met anyone who gets it. It is a bad joke, largely because nobody gets it. It doesn't imply something in me or something lacking in ... everyone else. Humor is just what you find in it. It is: "Well, I defended my thesis in comparative literature, but it seems like he's got a pretty healthy pulse to me..."
by heresie-dabord | 2025-10-18 15:37:25+00:00
When people love an IDE product so much that they can't work without it, they have overspecialised to their detriment. And possibly to the detriment of the code itself.

> As for terminal IDEs

The GNU/Linux terminal is the killer app. Multiple terminals in a tiling window manager is peak productivity for me. (Browser in a separate virtual workspace.)

And modern scaling for a big display is unbeatable for developer ergonomics.
by wltr | 2025-10-18 15:37:33+00:00
So, if you have money, you can throw away as much as you can, right? I have bought loads of Apple tech during 2010s and all of it is trash. Every iPhone (e.g. models from 4 to 7) costs tens of dollars today, down from a thousand. Not only that, they’re basically useless. I have a few iPads 3 (the first one with Retina display), and it’s perfectly fine display, but VLC is the only app that works with it. Also, you can watch YouTube via browser, yet it’s not a pleasant experience. At least my MacBook Pro (pre-retina) works great with Linux, and possibly I’d keep it around as a Linux server, till it breaks. I cannot do anything like that with any of iOS devices that I have. Why?

When I purchased them, I had no idea that would be the case. My perfectly good iPhone 12 mini is already at its last legs (I bet a couple of years), thanks to iOS 26 and the liquid ass. Why is it so? Why should I stress about initial purchases? I’m not that poor and young, sorry, I’m worried about the footprint. And I hope you would one day too.
by chuckadams | 2025-10-18 15:37:35+00:00
I learned the C language from K&, and the C API by right-clicking on all the things in Turbo C on a 286. Learned a fair bit of lisp from emacs using C-h f. I do love the navigation capabilities modern IDEs have, but unless a library's author has gone off the deep end writing doc comments, they don't have the same discoverability.
by cameldrv | 2025-10-18 15:38:29+00:00
Yes. Back in the DOS days, and even before, when people used actual terminals, there was a keystroke buffer. You'd see people who really knew the interface fly through tasks being multiple keystrokes ahead of the UI. Stuff would just flash onto the screen and disappear as it processed the input that was already in its buffer. It should be possible to implement this with modern frameworks, but it requires thought.
by jandrewrogers | 2025-10-18 15:39:04+00:00
It is human engineer problems all the way down.

UUIDv4 is explicitly forbidden in some high-reliability/high-assurance environments because there is a long history of engineers using weak entropy sources to generate UUIDv4 despite the warnings to use a strong entropy source, which is only discovered when it causes bugs in production. Apparently some engineers don't understand what "strong entropy source" means.

Mixing UUID types should be detectable because type is part of the UUID. But then many companies have non-standard UUID that overwrite the type field mixed with standard UUID across their systems. In practice, you often have to treat UUID as an opaque 128-bit integer with no attached semantics.
by MarkBagh | 2025-10-18 15:39:50+00:00
Building an AI-powered SaaS right now and the cost economics are wild. 18 months ago, running GPT-4 on every user interaction would've bankrupted most startups. Today it's $10-20/user/month and dropping. this is the disruption curve Blackstone is talking about. Once AI becomes "cheap enough," entire business models flip. Industries with high-margin knowledge work (finance, consulting, law) are sitting ducks. Wall Street sees the tech, but underestimates how fast costs drop + capabilities improve. We're in the iPhone moment of AI.
by tremon | 2025-10-18 15:39:57+00:00
This is not a pipeline in the control flow sense; the full query is compiled into a single processing statement, and the query compiler is free to remove and/or reorder any of the subqueries as it sees fit. The intermediate results during query execution (e.g. temp table spools) do not follow the structure of the original query, as CTEs and subqueries are not execution boundaries. It's more accurate to compare this to a C compiler that performs aggressive link-time optimization, including new rounds of copy elision, loop unrolling and dead code elimination.

If you want to build a pipeline and store each intermediate result, most tooling will make that easy for you. E.g. in dbt, just put each subquery in its separate file, and the processing engine will correctly schedule each subresult after the other. Just make sure you have enough storage available, it's not uncommon for intermediate results to be hundreds of times larger than the end result (e.g. when you perform a full table join in the first CTE, and do target filtering in another).
by vinceguidry | 2025-10-18 15:41:17+00:00
You shouldn't have much difficulty, Ruby converts blocks to Procs whenever it needs an actual object. Their semantics are intentionally kept the same. This is unlike lambdas, whose semantics are closer to methods.

Pass the wrong number of of arguments to a Proc or block, it will pass nil for missing args and omit extras. Pass the wrong number of arguments for a method or lambda and you get an ArgumentError. Use the return keyword in a lambda, it returns from the lambda, just like if you call return in a method. In a block or Proc, it returns from the calling method.

So I would feel comfortable leaning on them for refactoring as it's as Ruby intended. Just use lambdas when you want to turn methods into objects and Procs when you want to objectify blocks.

You should get ahold of a copy of Metaprogramming Ruby 2 if you find yourself refactoring a lot of Ruby. It's out of print, but ebooks are available.
by wvbdmp | 2025-10-18 15:41:25+00:00
Eh, sometimes you need a quick fix and it’s just extremely concise and readable. I’ll take an INNER JOIN over EXISTS (nice but insanely verbose) or CROSS APPLY (nice but slow) almost every time. Obviously you have to know what you’re dealing with, and I’m mostly talking about reporting, not perf critical application code.

Distinct is also easily explained to users, who are probably familiar with Excel’s “remove duplicate rows”.

It can also be great for exploring unfamiliar databases. I ask applicants to find stuff in a database they would never see by scrolling, and you’d be surprised how many don’t find it.
by vessenes | 2025-10-18 15:41:49+00:00
rg is a first for me in that it's a CLI tool that an LLM taught me about -- it's a go-to tool for Claude and codex, and since I got most of my bash skills pre-dotcom-one-boom I'm historically just a grep user.

Anyway I'm trying to retrain the fingers these days, rg is super cool.
by macinjosh | 2025-10-18 15:42:20+00:00
No it’s not. Ofcom has no jurisdiction to make a US company do anything. The Internet is a global marketplace. If the UK wants to remove itself from this marketplace, like it did from the EU, it will need to do the blocking itself. But Ofcom knows what the government blocking access to information looks like and they don’t have the balls to do it.
by pdimitar | 2025-10-18 15:43:09+00:00
I don't think we need to bring languages and frameworks into this. Some of them make things worse, others -- much better.

Furthermore, the microservices craze only made things worse regardless of PL / framework.

IMO we have an entire generation (maybe two) of devs who never self-hosted. That's the main audience of the article and of many of the comments here.

The rest of us who only scoffed at the cloud and microservices were just waiting the world to start coming back to its senses again.
by never_inline | 2025-10-18 15:44:08+00:00
> I'm considering creating my own migration library tailored to our actual needs and usage. It should not be so hard.

Indeed. Go has like 5 options for SQL DDL migrations now. On python side there's alembic and bunch of homegrown stuff in various frameworks.

I think much of the complexity in liquibase comes from supporting various databases.

One thing to remember: mark a new version before each step that can fail, even if the steps themselves are together in the same file.

This is a problem I ran too much into with alembic in which each file is a single unit - a statement in the middle of the script fails and there's no simple way to roll back (unless your DB supports transactional DDL). So the pattern I have settled is to have only one simple change in one file. Liquibase of course doesn't suffer this because it has unique IDs per statement.
by cameldrv | 2025-10-18 15:44:13+00:00
The Turbo Pascal version of this was even better, because you could do a whole block of asm instead of just a single line at a time. As I remember there were annoying limitations in the C version around labels and such. It was incredibly useful when writing performance oriented code at that time because it was very easy to write code that would outperform the compiler.
by miohtama | 2025-10-18 15:44:31+00:00
It was not very common to interleave assembly in MS-DOS IDEs. Assembler and its IDE were separate tools you paid for. But not unheard of.

You could "dump" your OBJ file for assembly.

Later C compilers got some better inline assembler support but this was towards the 32-bit era already.

Also Borland had its own compiler, linker and such as separate binaries you could run with a Makefile but you really never had to, as why would you when you can do that in the IDE in a single keypress.
by duanhjlt | 2025-10-18 15:47:19+00:00
Nostalgia aside, those classic TUIs nailed responsiveness and cohesion. Modern setups can match features, but rarely that instant, synchronous feel. Emacs + Magit shows the power of text-first integration, yet JetBrains-style debuggers and glue still win for many. It’d be great to see a modern, fast, Borland‑like TUI with solid LSP and LLDB integration.
by benjiro | 2025-10-18 15:48:06+00:00
> Was on a road trip last summer, around Norway, in VW id.Buzz. Charging time of 5min vs 20min doesn't matter. When you're on that long trip, you need time to eat, go to bathroom, walk a little so your legs/back doesn't hurt.

That is often the argument that i see but people forget a lot:

Fast charging if often 20 > 80% for 20min. If you want 80 to 100, its a lot less fast (think how your phone slows down).

While you can drive down to 5% of less, it can become a issue if you do not find a charger. When the summer vacation happened, a lot of north traffic goes south, over France ( and reverse).

What happened? People ended up waiting 15 a 25min at the chargers traffic jam in their cars. Then they charged up to 80% (because the stations had people to manage the flow), and needed to drive out (or pay more/fine).

This resulted that your range was already reduced by 20%. You ended up wasting 15 a 25 minutes stuck in your car. And with airco's on because its summer, so more battery drain. Aka, you did not really tank X km range, but X - waiting usage - 20% less limit.

Its always fun to compare a gasoline engine 5 min tank job, vs "not a issue, we need to stretch our legs", but when the reality of long trips that often coincide with vacation periodes... Yea, then the disadvantages of that statement come into play.

So the irony is that, a EV with a realistic 500km range, got hit with a 20% at chargers, then another hit from the waiting, o and you had no choice, it was fast charge or no charge.

I remember warning people to not see EVs based only on short trips or long "out of season" trips but also on those typical school vacation trips that many take. Ironic part, if you drove a hybrid, 5 min tank job for 100% fuel at the regular price.
by GistNoesis | 2025-10-18 15:48:15+00:00
This is fundamentally a geometric problem and the author completely missed the geometry aspect by transforming everything into polynomials and root finding.

The naive generic way of finding distances from point P to curve C([0,1]) is a procedure quite standard for global minimization : repeat "find a local minimum on the space constrained to be better than any previous minimum"

- Find a point P0 local minimum of d(P,P0) subject to the constraint P0=C(t0) (aka P0 is on C)

- define d0 = d(P,P0)

- Bisect the curve at t1 into two curves C1 = C([0,t0]) and C2([t0,1])

- Find a point P1 local minimum of d(P,P1) subject to the constraint P1=C(t1) with 0< t1 < t0 (aka P1 on c1) and the additional constraint d(P,P1) < d0 (note here the inequality is strict so that we won't find P0 again) if it exist.

- define d1 = d(P,P1)

- Find a point P2 local minimum of d(P,P2) subject to the constraint P2=C(t2) with t0 < t2 < 1 (aka P2 on c2) and the additional constraint d(P,P2) < d0 (note here the inequality is strict so that we won't find P0 again) if it exist.

- define d2 = d(P,P2)

Here in the case of cubic Bezier the curve have only one loop so you don't need to bissect anymore. If curves where higher order like spirals, you would need to cascade the problems with a shrinking distance constraint (aka looking only for points in R^2 inside the circle

So the distance is min over all local minimum found = min( d0,d1,d2)

Here the local minimization problems are in R^n (and inside disks centered around P) with n the dimension of the space, and because this is numerical approximation, you can either use slack (dual) variables to find the tx which express the on Curve constraint or barrier methods to express the disk constraints once a t parametrization has been chosen.

Multivariate Newton is guaranteed to work because distances are positive so the Sequential Quadratic Programming problems are convex (scipy minimize "SLSQP"). (Whereas the author needed 5 polynomials root, you can only need to solve for 3 points because each solve solves for two coordinates).

A local minimum is a point which satisfy the KKT conditions.

This procedure is quite standard : it's for example use to find the eigenvalues of matrices iteratively. Or finding all solutions to a minimization problem.

Where this procedure shines, is when you have multiple splines, and you want to find the minimal distance to them : you can partition the space efficiently and not compute distances to part of curves which are to far away to have a chance to be a minimum. This will scale independently of the resolution of your chain spline. (imagine a spiral the number of local minimum you need to encounter are proportional to the complexity of the scene and not the resolution of the spiral)

But when you are speaking about computing the whole signed distance field, you should often take the step of solving the Eikonal equation over the space instead of computing individual distances.
by ludocode | 2025-10-18 15:48:21+00:00
These filesystems are not really alternatives because mdraid supports features those filesystems do not. For example, parity raid is still broken in btrfs (so it effectively does not support it), and last I checked zfs can't grow a parity raid array while mdraid can.

I run btrfs on top of mdraid in RAID6 so I can incrementally grow it while still having copy-on-write, checksums, snapshots, etc.

I hope that one day btrfs fixes its parity raid or bcachefs will become stable enough to fully replace mdraid. In the meantime I'll continue using mdraid with a copy-on-write filesystem on top.
by 29athrowaway | 2025-10-18 15:48:29+00:00
From the perspective of a plant... In soil, you have: silt, clay and sand. Plus other plants, fungi, worms, microorganisms, rocks, insects, animals, etc. Each plant needs different nutrients (nitrogen, phosphorus, potassium, and others), need different pH levels, can tolerate different salinity, etc. There might be different humidity, precipitation, wind speed, the water tables are different...

I guess all these differences translate into how the root must structurally develop to satisfy all those requirements and constraints.
by hansmayer | 2025-10-18 15:49:09+00:00
Don't know what to tell you. I read through your blog quite often and it just...does not come across as fully unbiased. While I am sure you are putting in a lot of effort and genuinely want to be impartial, it just does not come across as such. Now, you are making another assumption here. You may think you are getting early access because you are a trusted independent voice. But think about the alternative possibility: Would it not be a very simple logic to conclude you are getting early access because it is a way to affect your writing subtly (you may not be even aware) and trigger some un-concious self-censoring? From the reader's perspective, this is kind of like that "embedded reporting" in war theaters since early 2000s that was applied for propaganda purposes in the past.
by cmrdporcupine | 2025-10-18 15:49:23+00:00
We don't even have an accurate convincing model of how the functions of the brain really work, so it's crazy to even think about its simulation like that. I have no doubt that the cost would be tremendous if we could even do it, but I don't even think we know what to do.

The LLM stuff seems most distinctly to not be an emulation of the human brain in any sense, even if it displays human-like characteristics at times.
by theptip | 2025-10-18 15:49:42+00:00
Zvi made this point the other day, and then this counterpoint which I agree with more - if you think AGI is soon but you need to keep up the exponential datacenter growth for 2-3 years (or whatever “around the corner” means for the company in question) then a land-grab on consumer ARR is a faster way to short-term revenue (and therefore higher valuations at your next round).

OAI is also doing F100 and USG work; it takes longer to book the revenue though.

By selling porn and shopping you are in some sense weakening your position with regulators which you'll need when AGI starts displacing jobs - but you can also imagine thinking that this is a second order problem and winning the race is way more urgent.
by dasil003 | 2025-10-18 15:49:54+00:00
It’s odd to me that someone who reached E9 at Meta seems so unaware of the capriciousness and political aspect of promotions at high levels. These are coveted and extremely rare roles that many talented and ambitious people are earnestly working towards and most will never achieve just by the numbers. I see nothing wrong with ambition but to measure your career by level is a reductive perspective that can undermine the specific accomplishments and relationships you have built.

This obsession with levels is something I see with many junior engineers who have gone through school chasing shibboleths of success. Stanford, MIT, always chasing the well-defined carrot. But often failing to understand there’s a pretty low ceiling to success on the well trod path. Real value comes from solving novel and ambiguous problems without anyone telling you how to do it. You have to realize those levels are meant to capture something about how the most effective technical leaders operate, it’s not a roadmap or a checklist for you to cargo cult. The things that matter are the quality of the work you do and the perception thereof by those in power. “Levels” are just secondary HR structure to manage the masses of employees in large corporations, and if you think too much about them you’re taking your eyes off the ball.
by sshine | 2025-10-18 15:50:35+00:00
I switched to `ack` in 2017 because it handles recursive searches better.

I didn't bother switching to `ag` when it came around because of having to retrain.

But eventually I did switch to `rg` because it just has so many conveniences.

I even switched to `fd` recently instead of `find` because it's easier and less typing for common use-cases.

I've been using the terminal since 1997, so I'm happy I can still learn new things and use improved commands.