frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

What the Fuck Happened to Nerds

https://mrmarket.lol/what-the-fuck-happened-to-nerds/
23•vrnvu•35m ago•4 comments

Your ePub Is fine

https://andreklein.net/your-epub-is-fine-kobo-disagrees-blame-adobe/
560•sohkamyung•10h ago•190 comments

Apple Foundation Models

https://platform.claude.com/docs/en/cli-sdks-libraries/libraries/apple-foundation-models
103•MehrdadKhnzd•4h ago•27 comments

Even more batteries included with Emacs

https://karthinks.com/software/even-more-batteries-included-with-emacs/
183•signa11•6h ago•37 comments

Curl will not accept vulnerability reports during July 2026

https://daniel.haxx.se/blog/2026/06/15/curl-summer-of-bliss/
359•secret-noun•2h ago•106 comments

Show HN: Kage – Shadow any website to a single binary for offline viewing

https://github.com/tamnd/kage
556•tamnd•15h ago•108 comments

There Is(Ǝ) – Such That (∋)

https://www.fractalkitty.com/there-is-3-such-that/
29•evakhoury•3d ago•11 comments

Bitsy

https://bitsy.org/
189•tosh•3d ago•6 comments

Firewood Splitting Simulator

https://screen.toys/firewood/
811•memalign•5d ago•241 comments

Dalus (YC W25) Is Hiring a Senior Software Engineer in Germany

https://www.ycombinator.com/companies/dalus/jobs/5IDmKJt-senior-software-frontend-engineer-german...
1•sebastianvoelkl•1h ago

The Last Surviving Japanese Porsche 912 Police Car

https://kottke.org/26/06/the-last-surviving-japanese-porsche-912-police-car
90•zdw•2d ago•31 comments

21 years and counting of 'eight fallacies of distributed computing' (2025)

https://blog.apnic.net/2025/12/08/21-years-and-counting-of-eight-fallacies-of-distributed-computing/
82•teleforce•8h ago•15 comments

Why does paper fold so well?

https://www.bbc.co.uk/programmes/w3ct8k70
41•zeristor•1d ago•11 comments

Rio de Janeiro's "homegrown" LLM appears to be a merge of an existing model

https://github.com/nex-agi/Nex-N2/issues/4
345•unrvl22•17h ago•186 comments

A short history of Cerro Torre, the most controversial mountain (2012)

https://www.markhorrell.com/blog/2012/a-short-history-of-cerro-torre/
40•joebig•4d ago•16 comments

Exploring building a tiny FUSE filesystem

https://www.shayon.dev/post/2026/161/building-a-tiny-fuse-filesystem/
6•shayonj•2d ago•1 comments

Ask HN: What are you working on? (June 2026)

226•david927•16h ago•820 comments

Formal methods and the future of programming

https://blog.janestreet.com/formal-methods-at-jane-street-index/?from_theconsensus=1
260•eatonphil•20h ago•94 comments

Show HN: Trace – Offline Mac meeting transcripts you can flag mid-call

https://traceapp.info
159•AG342•1d ago•57 comments

Chaosnet (1981)

https://tumbleweed.nu/r/lm-3/uv/amber.html
83•RGBCube•13h ago•12 comments

TorchCodec 0.14: HDR Video Decoding for CPU and CUDA, and Fast Wav Decoder

https://github.com/meta-pytorch/torchcodec/releases/tag/v0.14.0
46•scott_s•4d ago•5 comments

The only scalable delete in Postgres is DROP TABLE

https://planetscale.com/blog/the-only-scalable-delete
164•hollylawly•3d ago•58 comments

Windows 11 users are tired of MS account requirements creeping into everything

https://www.windowscentral.com/microsoft/windows-11/windows-11-users-are-tired-of-microsoft-accou...
318•josephcsible•11h ago•220 comments

Perlisisms (1982)

https://www.cs.yale.edu/homes/perlis-alan/quotes.html
115•tosh•18h ago•56 comments

Caddy compatibility for zeroserve: 3x throughput and 70% lower latency

https://su3.io/posts/zeroserve-caddy-compat
184•losfair•19h ago•52 comments

Segmented type appreciation corner (2018)

https://aresluna.org/segmented-type/
72•unexpectedVCR•3d ago•16 comments

Show HN: Discover Wikipedia articles popular on Hacker News

https://www.orangecrumbs.com/
111•octopus143•15h ago•26 comments

Write for One Person

https://wizardzines.com/comics/write-for-one-person/
211•evakhoury•2d ago•65 comments

UK Brings in Full Social Media Ban for Under-16s

https://deadline.com/2026/06/uk-social-media-ban-under-16s-x-youtube-tiktok-reddit-1236956163/
4•01-_-•22m ago•0 comments

How to earn a billion dollars

https://paulgraham.com/earn.html
621•kingstoned•21h ago•1631 comments
Open in hackernews

Test-case reducers are underappreciated debugging tools

https://tratt.net/laurie/blog/2026/test_case_reducers_are_underappreciated_debugging_tools.html
152•ltratt•5d ago

Comments

sigbottle•5d ago
I've only ever known about these through compilers, very cool.

On one project, through a variety of circumstances, dead code elimination was straight up not working, but we wanted to show the theoretical improvement of some approach - but we couldn't figure out why at the moment (we did spend a whole week chasing down the root cause after - maybe worth in hindsight...).

We were doing it by hand at one point, but someone suggested using CReduce for shrinking the code. Definitely was an interesting test-iterate loop...

mrkeen•5d ago
> To make things even worse, the community that has most thoroughly embraced them are compiler authors, who many programmers think of as being an impossibly skilled elite

The article's approach seems super ad-hoc, leaving you to have to think hard, do all the work, and make all the mistakes.

If you were to go down the other path, you might try dividing and conquering the problem. An arbitrary Pair<A,B> is trivially constructed from an arbitrary A and an arbitrary B. So if you can generate a string, and a number, you could generate a User full of number and string fields. If your generate function accepts a number describing how complex a string to make, then you can also choose how complicated to make your User. That's all shrinking needs to be. Repeatedly trying smaller Ns while the problem still happens (the problem being one of your unit tests - not an additional "interestingness" test you need to write.)

You'll probably way more likely to hit boundary cases by using the structure of the input and making interesting variations that way, rather than hoping you can permute the right bytes from the CLI.

pfdietz•4d ago
For more than 20 years I've been doing automatic test input reduction as part of testing Common Lisp compilers. The reduction is on randomly generated inputs, but they are structured in such a way that reduction always gives a valid program that should (in the absence of compiler errors) not signal an error.

It's a tremendously economical way to test compilers. For a modest and finite investment in testing infrastructure I get an unlimited number of tests. Over the years I've run many billions of test inputs on various Common Lisp implementations, although I'm mostly focusing on sbcl these days. When a bug is found the input quickly reduces to a something small that usually immediately tells the developers where the problem is (usually but not always something introduced recently.)

I also have a testing harness that cobbles together usually erroneous Lisp code and sees if the compiler blows up (the sbcl compiler as designed must never throw an error condition even on erroneous input.) This exploits a corpus of public Common Lisp code, combining and mutating the code in various ways.

skybrian•5d ago
Property-based testing frameworks will often do test case reduction as well (called shrinking).
Jtsummers•5d ago
Shrink Ray, described in the article, is developed by D.R. MacIver who also developed Hypothesis. I remember when it was announced a while back but had forgotten about it, I guess I have something to play with tonight.
akshayshah•5d ago
These days, he’s also working on Hegel - bringing test case reduction and PBT to more languages.

https://hegel.dev

macintux•5d ago
Brilliant tools, well worth investigating for any system-critical applications. They don't seem to get enough attention outside of the FP community.
hungryhobbit•5d ago
I read the first part of this article, then gave up and Googled "Test-case Reducers".

I'm not sure if that's an article failure (that I didn't want to read a whole ton of text and C code details), or a success (as it got me interested in the topic). I guess both?

Jtsummers•5d ago
> I read the first part of this article, then gave up and Googled "Test-case Reducers".

It's answered pretty early on:

>> Test-case reducers try to reduce the length of an input

If that still doesn't answer the question, try this extension:

>> Test-case reducers try to reduce the length of an [error causing or interesting] input

Hnrobert42•5d ago
I read the whole article, and I am still confused. I get that test case reducers find the smallest error causing string. I don't understand why that is particularly valuable.

Also, do test case reducers work on integers or other numbers? What about reducing some other complexity? Is this for developing unit tests or just debugging?

kg•5d ago
A reduced test case means you run less code to process the test case, which means your breakpoints trigger less frequently (and the remaining breakpoint triggers are more likely to be relevant to the actual bug). It also means all your debugging steps are likely to run faster and produce less data to sort through. Your log files will be shorter and easier to read/grep, etc.

Imagine being handed a sheet of 10 equations and being told "1 of these equations is wrong." Now imagine that someone came in and erased 8 of the correct equations - they just saved you a bunch of time.

nnunley•5d ago
I have a similar tool to shrink ray, called [bonsai](https://github.com/nnunley/bonsai). I designed it to allow me to try to inline and reduce code for both simplifying single file examples, as well working across multiple files. It uses Tree-Sitter for syntax awareness, and the [Perses algorithm](https://doi.org/10.1109/ICSE.2018.00046) as the methodology for simplification.

I'd love to get some feedback if anyone's interested.

ltratt•4d ago
This looks interesting, and definitely useful for non-C/Python languages, which existing reducers I know of mostly don't have explicit support for! I can't get it to build though (I've filed an issue).

I was also wondering: is there a UI while reduction happens? I've found Shrink Ray's UI improvements in the last year to be much more useful than I first expected: not just because it gives me something to look at, but because it really helps me understand if reduction is on the right path or not. [Some of the new Shrink Ray extras like being able to rewind reduction to a past point and to skip passes are also really useful too.]

anitil•4d ago
What a great idea to include tree sitter
bobbiechen•5d ago
Nice share. Increasingly I am thinking about ways to improve verification ("interestingness tests"), ever since reading https://www.jasonwei.net/blog/asymmetry-of-verification-and-...
WalterBright•5d ago
Dustmite is a fantastic tool for finding a bug in your program, by removing parts of the code until the result is the bug.

https://dlang.org/blog/2020/04/13/dustmite-the-general-purpo...

Created by Vladimir Panteleev

anitil•4d ago
> Unfortunately, Shrink Ray has no principled way for me to express this. Fortunately, I have no principles, and use unsafe hacks like this

I really appreciated the humour in this article. I've always wanted to use creduce, but it looks like Shrink Ray is easier to set up and get running (pip install, set up a harness, run)

seanhunter
•
4d ago
Making the smallest test case that reproduces some bug is hugely valuable when debugging complex systems, especially if you have a wierd heisenbug that is hard to manifest reliably. Having a small reproducible case massively narrows the scope of the search for the bug.

Similarly, narrowing test cases to the smallest case that reproduces a particular behaviour so you're only actually testing a very targeted thing will make the test suite faster and also make it easier to fix tests which break because they exercise a very narrow path.

Doxin•3d ago
Reduced test cases make it way easier to figure out what the actual bug is. E.g. a real world example is when I tested a "slugify" function with hypothesis. It almost immediately spat out this failing test case:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaẞ

Boy I sure do wonder what character could possibly be causing issues there. whereas without shrinking it might instead spit out something like

ЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДẞЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп

Which makes finding the offending character a lot harder.

chriswarbo•4d ago
> I didn't want to read a whole ton of text and C code details

There's no C in there? It seems to be Python and shell scripts.