MurphyA/hacker-news huggingface dataset:
by bell-cot | 2026-01-28 11:57:49+00:00
The article talks about masses of 10^17 to 10^23 grams being prime candidates for detection. (And also about 10^14 gram ones - in their final stages of evaporation, and thus a different sort of detection problem.)

If I'm not fumbling numbers, a 10^20 gram PBH is good for ~700,000 g's at a distance of 1 meter. And 7^9 g's at 1cm. Close interactions might be uncommon (unless the PBH is "orbiting" within a star or planet), but they would not be weak.
by atombender | 2026-01-28 11:58:02+00:00
Eliot's reading is fascinatingly horrible. I had the same traumatic experience hearing William Gibson reading Neuromancer, which comes across as a kind of parody.

As for "is it right?" — well, it's obviously one person's interpretation, and I would say Eliot's own performance should count as Exhibit 1 in the age-old debate about whether the author is the best interpreter of their own work!

[1] https://www.youtube.com/watch?v=5DFSvbkQaD0
by JumpCrisscross | 2026-01-28 11:58:12+00:00
> They were at the very least intentionally being a nuisance and in most cases breaking actual laws in the process

Pretti was breaking zero laws. You’d have to do some prosecutorial voodoo to conjure up a misdemeanor.

There is lawbreaking in that videos. But the felony-level stuff is all from folks in uniform. (Which, thankfully, they’ve started wearing.)
by f_allwein | 2026-01-28 11:58:25+00:00
> In Apple Calendar it's not possible to see the full year, and still have some visibility into which events are happening on the individual days

It‘s weird in general how tools/ websites seem to avoid putting too much information on a screen (see also: event listings, …). Why is that? Most people have big screens nowadays, so it would be feasible to have a view like the one described here, at least for desktop calendars.
by zozbot234 | 2026-01-28 11:58:55+00:00
Nope, the magic pixie dust language that was supposed to run Python-like code on GPU was Mojo /s

this is really just leveraging Rust's existing, unique fit for embedded, low-level and even retro-computing targets and trying the expand to the GPU by leveraging these same characteristics that are quite unique to Rust.

The real GPU pixie dust is called "barrel processing", "VRAM/HBM" and "non-flat address space with explicit local memories". And of course "wide SIMD+MIMD[0]" which is the part you already mentioned and is in fact somewhat harder to target other than in special cases (though neural inference absolutely relies on it!). But never mind that. A lot of existing CPU code that's currently bottlenecked on memory access throughput will absolutely benefit from being seamlessly ran on GPU.

[0] MIMD is the proper established name for what people casually call SIMT
by menaerus | 2026-01-28 11:59:10+00:00
I built a moderately complex and very good looking website in ~2 hours with the coding agent. Next step would be to write a backend+storage, and given how well the agent performs in these type of tasks, I assume I will be able to do that in the manner of hours too. I have never ever touched any of the technology involving the web development so, in my case, I can say that I no more need a full-stack dev that in normal circumstances I would definitely do.

I agree however on the point that no prior software engineering skills would make this much more difficult.
by egorfine | 2026-01-28 11:59:50+00:00
As a passionate systemd hater I still will not go back to using older bash-based initsystems and thus devuan.

I strongly believe that systemd brand is a worst thing that happened to Linux, hindering the spread and innovation in the Linux space, but at the same time I have to admit that systemd-as-pid1 is the best init system out there.
by apexalpha | 2026-01-28 12:00:04+00:00
>Many large corporations in Europe, especially in sectors of prior consistent growth and profit, are chock full of too many managers.

As an engineer who 'jumped' to middle management: yes. 100% yes.

It's kinda disheartening and also a little bit insane to sit in a room with 12 people who learned CISSP and ISO27001 by heart but could not explain what SSH is or what a container does.

Everything has to first be abstracted away from tech into 'risks' and then 'controls' and then these controls have to be re-translated into actual changes in IT systems.

However, at every layer and every abstraction so much detail is lost that they're essentially steering blind.

Last week one of them suggested that we should whitelist the entire IPv4 range of AWS to allow some SaaS (Jira?) to connect to our internal Git.

The policy said to do whitelisting and so they all approved it until I challenged it.

Crazy to watch and honestly so disheartening that I might go do something else. Trying to affect change feels like leaning against a wall.
by akoboldfrying | 2026-01-28 12:00:30+00:00
The Kalman filter examples I've seen always involve estimating a very simple quantity, like the location of a single 3D point, from noisy sensors. It's clear how multiple estimates can be combined into a new estimate.

I'd guess that cameras on a self-driving car are trying to estimate something much more complex, something like 3D surfaces labeled with categories ("person", "traffic light", etc.). It's not obvious to me how estimates of such things from multiple sensors and predictions can be sensibly and efficiently combined to produce a better estimate. For example, what if there is a near red object in front of a distant red background, so that the camera estimates just a single object, but the lidar sees two?
by tomhow | 2026-01-28 12:00:48+00:00
> and that Americans get indignant when it gets flagged

It's not exclusively (or mostly) U.S.A. residents who complain about contemporary politics topics getting flagged. We see plenty of complaints from Europe and elsewhere.

We've long accepted that there is a large overlap between politics and technology. The Snowden leaks in 2013 were huge, as were several other Wikileaks releases well before that.

HN has never been a politics-free zone. It's just subject to the same standard as everything else on HN: there has to be some "signfiicant new information" to the story.
by jll29 | 2026-01-28 12:00:54+00:00
I recently got wrongly accused of using LLMs to help write an article by a reviewer. He complained that our (my and my co-worker's) use of "to foster" read "like it was created by ChatGPT". (If our paper was fluent/eloquent, that's perhaps because having an M.A. in Eng. lit. helped for that.)

We were offended, but kept quiet to get the article accepted, and we changed some instances of some words to appease them (which thankfully worked).

But the wrong accusation left a bit of a bad aftertaste...
by idiotsecant | 2026-01-28 12:01:34+00:00
God doesn't have a typewriter, as far as I know. When he gets one I hope he clears up which 99.9% of human religions are heretical and which 0.01% are divine law, that would be really helpful.

In the meantime, rights are not granted by anyone. They are a contract between the governed and those that govern. Breaking that contract is the sort of thing that doesn't end up working out well for the governing class.
by christophilus | 2026-01-28 12:01:45+00:00
In TypeScript, I use the same validation library (Zod) anywhere I need to validate data. So, I validate my config / environment variables on startup using a Zod schema, I validate my RPC endpoint arguments the same way, etc.

I presume you could do the same thing with Django— use Django’s validation feature to validate everything including your config. It’s a nice pattern that gives uniformity and predictability to all of your validation logic.
by Peroni | 2026-01-28 12:02:09+00:00
I once approached Woz about potentially speaking at Hacker News London, fully expecting my email to be completely ignored. A few days later, he actually responded enthusiastically and mentioned an upcoming trip to the UK. He loved the grassroots nature of the meetup and was really up for giving a talk (for free!) to the community. I then had multiple delightful interactions with his wife who managed his logistics.

Devastatingly he fell ill just before his trip and had to withdraw. Fortunately we hadn't announced anything however I still mourn over the missed opportunity to be able to introduce this living legend to our audience!
by sgt | 2026-01-28 12:03:00+00:00
You can absolutely scale Django.

The framework itself is not the limiting factor. The main constraint of performance usually comes from Python itself (really slow). And possibly I/O.

There are well established ways to work around that. In practice, lots of heavy lifting happens in the DB, can you can offload workloads to separate processes as well (whether those are Python, Go, Rust, Java etc).

You need to identify the hotspots, and blindly trusting a framework to "do the job for you" (or for that matter, trusting an LLM to write the code for you without understanding the underlying queries) is not a good idea.

I'm not saying you are doing that, but how often do you use the query planner? Whenever I've heard someone saying Django can't scale, it's not Django's fault.

> When you start to run into scaling problems, your solution is within that framework and that becomes a limiting factor from my experience.

Using Django doesn't mean that everything needs to run inside of it. I am working on an API that needs async perf, and I run separate FastAPI containers will still using Django to maintain the data model + migrations.

Occasionally I will drop down to raw SQL, or materialized views (if you are not using them with Django, you are missing out). And the obvious for any Django dev; select_related, prefetch_related, annotate, etc etc.
by dgroshev | 2026-01-28 12:04:00+00:00
To add to this, constructive solid geometry systems like OpenSCAD seem to be practically incapable of doing anything related to surfacing, even if it's just G2 fillets or G2 continuity (much less more advanced work with splines and patches).

I think it's partially a positive feedback loop: the "hacker" tools (OpenSCAD) influence the aesthetic (blocky/square brackets, like in the post), which in turn influences the tools. When creating a simple fillet or a chamfer is an annoying exercise in constructive geometry rather than five mouse clicks, there'll be fewer fillets, chamfers, and flowing surfaces, even when they make mechanical or manufacturing sense; but then that becomes "the look", and people don't even think about fillets.
by dgb23 | 2026-01-28 12:04:02+00:00
I guess the important (and hard) part is to not make a categorical error and mix up design of high level functionality and UI with the plumbing underneath it.

The plumbing also needs iteration and prototyping, but sound, forward looking decisions at the right time pay dividends later on. That includes putting extra effort and thinking into data structures, error handling, logging, naming etc. rather earlier than later. All of that stuff makes iterating on the higher levels much easier very quickly.
by georgyo | 2026-01-28 12:05:02+00:00
If I'm reading any of this correctly, this doesn't apply to hardware attestation.

It seems apple has a service, with an easily rotated key and an agreement with providers. If the key _Apple_ uses is compromised, they can rotate it.

BUT, apple knows _EXACTLY_ who I am. I attest to them using my hardware, they know _EXACTLY_ which hardware I'm using. They can ban me or my hardware. They then their centralized service gives me a blind token. But apple, may, still know exactly who owns which blind tokens.

However, I cannot generate blind tokens on my own. I _MUST_ talk to some centralized service that can I identify me. If that is not the case, then any single compromised device can generate infinite blind tokens rending all the tokens useless.
by apercu | 2026-01-28 12:05:35+00:00
HN is where I keep hearing the “50× more productive” claims the most.
I’ve been reading 2024 annual reports and 2025 quarterlies to see whether any of this shows up on the other side of the hype.

So far, the only company making loud, concrete claims backed by audited financials is Klarna and once you dig in, their improved profitability lines up far more cleanly with layoffs, hiring freezes, business simplification, and a cyclical rebound than with Gen-AI magically multiplying output. AI helped support a smaller org that eliminated more complicated financial products that have edge cases, but it didn’t create a step-change in productivity.

If Gen-AI were making tech workers even 10× more productive at scale, you’d expect to see it reflected in revenue per employee, margins, or operating leverage across the sector.

We’re just not seeing that yet.
by sylware | 2026-01-28 12:05:36+00:00
It seems I will require a microsoft rust compiler and won't be able to use a small alternative plain and simple C compiler for xfce.

The beginning of the end, or are there plain and simple alternative microsoft rust compilers? Is microsoft rust syntax at least as simple than C?

Or the right way will be to use an alternative wayland compositor with the rest of xfce?
by McDyver | 2026-01-28 12:05:42+00:00
That's good for you!

Isn't that a selfish view, though? "Works for me,so I don't care that systemd is creating dependencies everywhere for everyone else".

I appreciate that it simplifies some things, but I can't understand that you can't choose which parts of it to install, or even replace parts of it with alternatives.

Isn't linux about choice? It feels we're going on a downwards spiral where choice is being taken away from us in every domain
by mrexcess | 2026-01-28 12:06:17+00:00
"Information wanting to be free" is a concept less rooted in idealism and more in a cynical view of human nature. Even the most closely guarded secrets eventually leak, and as the utility of knowing the secrets increases, the pressure to leak also does. The physical universe itself appears to favor disclosure and abhor secrecy.

>With modern technology we may be creating systems that end up imprisoning our minds for generations with no escape

That has been the goal of authoritarians for a long time. Orwell's vision of it involved obliterating even the capacity to think or speak about anti-state themes.
Show HN: SHDL – A Minimal Hardware Description Language Built from Logic Gates
by rafa_rrayes | 2026-01-28 12:06:18+00:00
Hi, everyone!

I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.

In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.

SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.

This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.

I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.

Repo: https://github.com/rafa-rrayes/SHDL

Python package: PySHDL on PyPI

To make this concrete, here are a few small working examples written in SHDL:

1. Full Adder

component FullAdder(A, B, Cin) -> (Sum, Cout) {

x1: XOR; a1: AND;
x2: XOR; a2: AND;
o1: OR;

connect {
A -> x1.A; B -> x1.B;
A -> a1.A; B -> a1.B;

x1.O -> x2.A; Cin -> x2.B;
x1.O -> a2.A; Cin -> a2.B;
a1.O -> o1.A; a2.O -> o1.B;

x2.O -> Sum; o1.O -> Cout;
}

}

2. 16 bit register

# clk must be high for two cycles to store a value

component Register16(In[16], clk) -> (Out[16]) {

>i[16]{
a1{i}: AND;
a2{i}: AND;
not1{i}: NOT;
nor1{i}: NOR;
nor2{i}: NOR;
}

connect {
>i[16]{
# Capture on clk
In[{i}] -> a1{i}.A;
In[{i}] -> not1{i}.A;
not1{i}.O -> a2{i}.A;

clk -> a1{i}.B;
clk -> a2{i}.B;

a1{i}.O -> nor1{i}.A;
a2{i}.O -> nor2{i}.A;
nor1{i}.O -> nor2{i}.B;
nor2{i}.O -> nor1{i}.B;
nor2{i}.O -> Out[{i}];
}
}

}

3. 16-bit Ripple-Carry Adder

use fullAdder::{FullAdder};

component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {

>i[16]{ fa{i}: FullAdder; }

connect {
A[1] -> fa1.A;
B[1] -> fa1.B;
Cin -> fa1.Cin;
fa1.Sum -> Sum[1];

>i[2,16]{
A[{i}] -> fa{i}.A;
B[{i}] -> fa{i}.B;
fa{i-1}.Cout -> fa{i}.Cin;
fa{i}.Sum -> Sum[{i}];
}

fa16.Cout -> Cout;
}
}
by joe_mamba | 2026-01-28 12:07:00+00:00
I don't get the obsession with the US here. That's a different country than the EU where I(and you to afaik) live and the target of the topic.

If I can't afford a house, it makes it no better to me if you tell me that some people in the US also can't afford one, like that's supposed to make me feel better or something.

And with 50% home ownership statistics, it seems I'm not alone. I'm glad the system worked for you but it failed me and so I will vote to those who put my interest first and not devalue my labor.
Show HN: Tool to Compare Camera Photo Quality in Seconds (Phones + Mirrorless)
by xthe | 2026-01-28 12:07:06+00:00
Hi HN!

I built an online Camera Benchmark Tool that lets you compare ANY camera (phones + DSLR/Mirrorless) with clean performance scoring across:

• Image Processing
• Autofocus
• Low-Light
• Sensor Performance
• Sharpness & Depth
• Real-world test data

Why I made this:
Most comparison tools are either too complex or too limited. I wanted something simple, fast, and data-forward that works for photographers, reviewers, and buyers.

Would love feedback from HN:
— What data should I add?
— Should I include AI-driven scoring?
— Interested in API access?

Try it.
by DannyBee | 2026-01-28 12:07:42+00:00
Yes, this is all true, but the comment I responded to wanted to be able to basically code rather than GUI sometimes , but still have the GUI up to date. Because of how onshape was built it makes this very very easy. Solidworks very much does not. Fusion360 also has good enough python bindings but it's still nowhere near as easy or integrated to do this (or debug it) as onshape.

So I'm kinda not sure what you are going for here. The fact that they are all the same kernels under the cover is sort of irrelevant. It's not that thin a layer and the layer matters a lot since it is what you get to use. It's like saying all of userspace is just syscalls. That's not what users see or interact with, the layer they interact with matters a lot to them.
by Gerharddc | 2026-01-28 12:08:29+00:00
> Every render in this post was made that way. Claude generated the geometry with vcad, imported each STL/GLB into Blender via MCP, set up studio lighting, and rendered to PNG. No human touched Blender.

This seems a bit wasteful to me. Why do you need an LLM to do the part of controlling Blender? Can't normal code be used to automate this instead? And save a scary amount of electricity in the process...
by em-bee | 2026-01-28 12:08:39+00:00
distributions started out with solving the problem that most developers at that time didn't even bother to build ready to run packages. they couldn't, because there were to many different architectures that not everyone had access to. so developers had to rely on users to build the applications for themselves. distributions then organized around that to make this easier for users. that's how the port system in BSD came about. linux distributions went a step further and built distributable binaries.

the problem was to not predict that developers would want more control over the build of their applications, which, thanks to architectures consolidating, became easier because now a single binary will reach the majority of your userbase. and the need to support multiple versions of the same library or app in the package manager. that support should have been there from the start, and now its difficult to fix that.

so it's unfair to say distros are wrong. yes, it's not an ideal design, but this is more of an accident of history, some lack of foresight, and the desire to keep things simple by having only the newest version of each package.

there is a conflict between the complexity of supporting multiple package versions vs the complexity of getting applications to work with the specific library versions the distro supports. when distros started out it looked like the latter would be better for everyone. distributions tended to have the latest versions of libraries and fixing apps to work with those benefited the apps in most cases.
by syhol | 2026-01-28 12:08:59+00:00
My gut reaction is to rush to the comments to shill my favourite task runner ( mise tasks[1], now with shell aliases[2]!) but pushing past that, the core idea of writing scripts in a file rather than a shell prompt is a great nugget of wisdom. But I disagree with this bit:

"I want to be clear here, I am not advocating writing “proper” scripts, just capturing your interactive, ad-hoc command to a persistent file."

What's the difference? Why not version control it, share it with colleagues. Imagine writing a unit test to test a new feature then deleting it when done, what a waste. Ok it's not exactly the same because you aren't using these scripts to catch regressions, but all of that useful learning and context can be reused.

I don't think the language you use for scripting is too important as long as the runtime is pinned and easily available on all engineers machines, perhaps using a toolchain manager like... mise[3].

[1] https://mise.jdx.dev/tasks/
[2] https://mise.jdx.dev/shell-aliases.html
[3] https://mise.jdx.dev/dev-tools/
by embedding-shape | 2026-01-28 12:09:07+00:00
Yeah, I don't doubt you, it's really effective at knocking out "simple" projects, I've had success vibe-coding for days, but eventually unless you have some reins on the architecture/design, it falls down over it's own slop, and it's very noticeable as the agent spends more and more time trying to work in the changes, but it's unable to.

So the first day or two, each change takes 20-30 minutes. Next day it takes 30-40 minutes per change, next day up to an hour and so on, as the requirements start to interact with each other, together with the ball of spaghetti they've composed and are now trying to change without breaking other parts.

Contrast that with when you really own the code and design, then you can keep going for weeks, all changes take 20-30 minutes, as at day one. But also means I'm paying attention to what's going on, so no vibe-coding, but pair programming with LLMs, and also requires you to understand both the domain, what you're actually aiming for and the basics of design/architecture.
by manmal | 2026-01-28 12:09:19+00:00
Sure, I'm not using it with my company/enterprise account for that reason. But for my private sub, it's worth the tradeoff/risk. Ethically I see no issue at all, because those LLMs are trained on who knows what.

But you can use pi with z.ai or any of the other cheap Claude-distilled providers for a couple bucks per month. Just calculate the risk that your data might be sold I guess?
by zozbot234 | 2026-01-28 12:09:53+00:00
170 compute units is still a crapload of em for a non-server platform with non-server platform requirements. so the broad "lots of cores" point is still true, just highly overstated as you said. plus those cores are running the equivalent of n-way SMT processing, which gives you an even higher crapload of logical threads. AND these logical threads can also access very wide SIMD when relevant, which even early Intel E-cores couldn't. All of that absolutely matters.