Rendered at 23:22:23 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
snitty 24 hours ago [-]
SIGBOVIK papers are almost always a delight
EDIT: From their 2026 publication
>Permission to make digital or hard copies of portions of this work for personal use is granted;
permission to make digital or hard copies of portions of this work for classroom use is also granted,
but seems ill-advised
layer8 24 hours ago [-]
Tangentially related, the only way for a Java properties file to be invalid is if it contains an invalid Unicode escape sequence (“\u” not followed by four digits, and not preceded by an odd number of “\”). After resolving Unicode escapes, any character sequence is a valid properties file.
hyperman1 17 hours ago [-]
I've had a program where some R code stuffs some input in an URL, fires it at a server, then reads the returned CSV. No error handling or validation is attempted.
As it happens, basically anything is a valid CSV.
If the input is wrong, the server responds with an XML error. This got interpreted as a CSV. Every line became a record, but no column headers were found so every expected field is null/NA. All these nulls get nicely sorted and processed, which causes more string errors, etc ... Mayhem ensues when thst stuff ends up in a database.
Can't agree more. I've dealt with a CSV where multiple CSVs were cat'ted together, but the originals were not in the same dialect and differed even in charset encoding. Wrote a statistics based parser that decided which part of the file had to be decoded which way. Interesting technical challenge, but my god the reasons for its existence were dumb.
xg15 11 hours ago [-]
Falsehoods programmers believe about CSV: "Yeah, sure it's a mess and there are like, a gazillion different dialects of it, but at least once you know the dialect of a file, you can decode it"...
NuclearPM 2 hours ago [-]
Claude decode this.
xg15 1 hours ago [-]
"How to use a billion dollar GPU cluster to parse commas, in 5 easy steps"
thesuitonym 9 hours ago [-]
My god. I love CSVs because the lack of any standardization makes them incredibly flexible, but combining CSVs is just a wild idea. What was that person thinking?
hyperman1 3 hours ago [-]
Nobody was thinking anything. A bunch of managers of a group of frenemy corporations was condemned by the governement to share date. Every company sent the data to a trusted third party. This party removed the source company, anonymangled things a bit, taped them all together, and sent the result back to everyone. Managers wanted CSV as it was easy to open in excel, and they were going to let their underlings process them manually. Then it turned out to be a few 10s of millions of records and excel couldn't yet deal with >64k rows, so IT got to deal with it.
kakacik 9 hours ago [-]
[dead]
BobaFloutist 6 hours ago [-]
Comma Separated Values, in which commas, separations, and values are all optional.
"An interesting thing about these images is that they’re not particularly
Perl-specific; for example, the program shown in Figure −3 also evaluates as the
number −3 in Python (and presumably several other programming languages.)"
We live in the age of Python, which I use every day. But I still also use Perl when it's the better tool for the job. And it often is!
Amorymeltzer 1 days ago [-]
In particular, I like "Figure − 3. − 3 ." as a good little easter egg.
0xbadcafebee 23 hours ago [-]
The remainder of the valid Perl programs are mostly valid due to a Perl
language feature that is not commonly present in most programming languages.
Namely, Perl has a feature called “unquoted strings”, in which a sequence
of alphanumeric characters by itself is parsed as though it were a quoted string.
As an example, Figure 5 is read by OCR as the text ME, which evaluates to the
string “ME” even though the ME isn’t quoted. This would result in a syntax
error in most other programming languages.
(To be fair to Perl, when perl is run with the -w flag to enable warnings, it does
helpfully inform the user that at some point in the future, the Perl developers
will most likely pick gggijgziifiiffif as a new reserved word:
Unquoted string "gggijgziifiiffif" may clash
with future reserved word at - line 1.)
xhrpost 22 hours ago [-]
So they might be valid older(<v5?) PHP scripts as well?
Izkata 17 hours ago [-]
PHP 5 had unquoted strings, and it looks like 7 did as well, but not 8.
asddubs 10 hours ago [-]
They were deprecated in php 7, but did work
comboy 15 hours ago [-]
For those who do not enjoy reading scientific papers this one is worth reading.
14 hours ago [-]
rurban 14 hours ago [-]
That's with the flexible perl5 parser with a dynamic lexer, which allows everything. For my new faster perl backend perl11-p2 I am using a PEG parser, similar to raku, which needs static rules for everything. So I bet it will not accept most of the noise. But I still can run only 50% of all perl programs.
jellevdv 8 hours ago [-]
I created an interactive canvas to try it out with Tesseract and WebPerl. pretty funny that it actually works
Why is this OCR program evaluation paint splatter as letters?
ktm5j 5 hours ago [-]
Yeah, I feel like this is more about 90% of random strings being valid perl programs.. the paint splatters have nothing to do with it.
JK-Swizzle 6 hours ago [-]
I’m with this guy. When are we adding every possible paint splatter to Unicode so that OCR can be more accurate in situations like this?
ideasphere 20 hours ago [-]
I’m more interested in how the OCR missed that ‘Stitch & Shutter’ watermark in the third one.
michaelt 15 hours ago [-]
It looks like the author used Tesseract, a traditional OCR image with lineage going back to HP flatbed scanners in the 1980s [1]
Obviously, it's been improved a lot since then - but traditional OCR is mostly about black text on white backgrounds. Or at least, the text being high-contrast relative to the rest of the document.
Light gold text on a white background, while there are black splatters? That's the sort of thing it would struggle with for sure.
This was such a fun April 1st paper. At Blekko (a search startup) everything was written in perl and it was my first deep exposure to the language. That said, with discipline you can write easily understood perl but like C you can also write deeply convoluted code. The parser though, that is a thing of incredible magnitude.
baron3dl 23 hours ago [-]
i loved programming perl. both the act, and the book. i long since gave it up, but i am still awed by how it could both be completely unceremonious and absurdly ceremonious. my $self = shift; for instance.
jacquesm 23 hours ago [-]
Someone should reverse that and see how many paintings can be made to execute as Perl and what those programs do when invoked.
kmoser 21 hours ago [-]
You could kill two birds with one stone by entering them in the Obfuscated Perl Contest, were it still being held.
mlmonkey 20 hours ago [-]
Every single day there's an Obfuscated Perl Contest being held somewhere on this planet....
idlewords 22 hours ago [-]
A whole new twist on "Hackers and Painters"
charcircuit 17 hours ago [-]
This is more about a bad OCR than about paint splatters. They also tried multiple OCR settings until one worked. If you used more accurate OCR this would be very different.
michaelt 15 hours ago [-]
More accurate OCR would recognise the images have no text
It all depends on which OCR to use and therefore meaningless.
It is especially more meaningless since they do not establish the baseline (OCR "pass" % on random input).
ashton314 20 hours ago [-]
I think you’ve missed the point…
ckdot 19 hours ago [-]
Honest question, and I’m not the person you answered to: what is the point? I sincerely don’t get it.
asgraham 18 hours ago [-]
Well a) it’s mostly a joke, b) to the extent it’s not a joke, it’s about how Perl accepts absurd inputs as valid programs, c) OCR paint splatters are just a funny way to get to weird arbitrary strings, of which a strangely high percentage (say, 93%) are valid Perl programs, d) so the choice of OCR doesn’t really affect the “validity” of the result, and e) the author did actually try multiple OCR settings and, when multiple OCRs produced valid Perl programs, chose “the most “interesting.””
odo1242 18 hours ago [-]
It's a joke about Perl. It's not meant to be taken seriously as a study about OCR.
isolay 14 hours ago [-]
> fruitful procrastination
It is so rare to find proper appreciation for this creative skill.
notorandit 18 hours ago [-]
The problem is the ocr, then.
13 hours ago [-]
brisket_bronson 24 hours ago [-]
Figure 6 represents the string
“gggijgziifiiffif”, which by pure
coincidence happens to accurately
represent the authors’ verbal reaction
upon learning that “unquoted strings”
were a feature intentionally included in
the Perl language
omoikane 20 hours ago [-]
There is a gem in the footnote right below gggijgziifiiffif, where it says it's possible to make a perl error quine by writing this line to the right location:
Illegal division by zero at /tmp/quine.pl line 1.
I just tried this perl 5.42.0, and any file name starting with a '/' will work.
> I just tried this perl 5.42.0, and any file name starting with a '/' will work.
any file name? How about /1
?
larsonian 10 hours ago [-]
Unquoted strings are the default in shell languages, and one of the design goals of Perl was to be a more powerful replacement for shell scripts. It's not a particularly surprising feature, really.
For anything more complex than a one-off script, Perl is pretty much always written with `use strict`, which disables unquoted strings and certain other (mis)features.
lta 23 hours ago [-]
I'm afraid I have to tell you you lack the soul of a poet to truly appreciate the brilliant design .
Perl is magic (like litteraly). I'm fairly sure it's one of the untold inspiration of the Harry Potter books
hluska 23 hours ago [-]
I really dig your whimsy.
tomaskafka 23 hours ago [-]
This is also a valid Perl program (I bet)
bitwize 23 hours ago [-]
necronomicon, maybe
xenic 18 hours ago [-]
Perl is such a ride. I wrote and maintained a nms/statistics/alerting stack around 2003-2004, ended up being around 200k LoC iirc. Just heard it is still in use at that company. My condolences to whoever has had to maintain that monster.
I was somewhat pleasantly surprised a few days ago when an LLM out of the blue decided to use perl, not python, for some simple scripting. There is hope in the world yet…
maxlybbert 13 hours ago [-]
And Perl from 2003-2004 was especially bad. It took amazing effort to pass a file handle as a subroutine parameter. I once took a look at the Perl code behind Bugzilla, and quickly decided that it was better to let sleeping dogs lie.
polarsanel 22 hours ago [-]
93% of Perl Programs are valid Paint Spatters too.
ChaseRensberger 6 hours ago [-]
> To be fair to Perl, when perlis run with
the -w flag to enable warnings, it does
helpfully inform the user that at some
point in the future, the Perl developers
will most likely pick gggijgziifiiffif
as a new reserved word
what a gem of a post
silvandeboer 16 hours ago [-]
The modern version would be to input the image without further context into an LLM and constrain the output to valid Rust.
sadboi_fandango 1 days ago [-]
Jackson Pollock was writing perl code all along
HeckFeck 24 hours ago [-]
My Stone Roses album cover is actually a bonus Perl program?
don-code 22 hours ago [-]
Full Fathom Five is my brain on Perl.
kmoser 21 hours ago [-]
No, when Pollock spattered paint on a canvas, it was generally on the floor, not the Wall.
hcrisp 5 hours ago [-]
Reminds me of the joke: "Perl – The only language that looks the same before and after RSA encryption”
criemen 23 hours ago [-]
> Apparently in the brave new world of neural nets, Anything Goes™
Quite some foresight indeed!
23 hours ago [-]
_doctor_love 20 hours ago [-]
I don't need to read the article because the headline is true.
A mentor taught me that you can also roll your face on the keyboard to produce a valid Perl program. It's easy and fun to try!
lisper 19 hours ago [-]
A cat walking across the keyboard works too.
spwa4 13 hours ago [-]
Luckily with AI, that has since increased to 100% with a small prompt ...
trpaslik 9 hours ago [-]
perl is a write-only language ;-)
NoMoreNicksLeft 20 hours ago [-]
I thought perl was finally dead enough people would stop mocking it. I'll wait til next decade.
theonemind 18 hours ago [-]
History in reverse: first you win, then they mock you, then they ignore you
Perl requires more brain power than most coders have, especially nowadays.
Perl has never disappointed me. Many years ago during just 2 weeks I'd written a few clever automations and orchestrations in Perl that had lasted with 100% availability for a decade after I changed that job. Even though my superior, the self-proclaimed "top coder manager all-in-one god" despised it (and me), he was incapable of comprehending and rewriting that. It was not because I obfuscated the code, but because of what I wrote in the first sentence above. In the end he hired a consultancy and got a monstrous solution in Java. But finally it was "his".
dukoid 10 hours ago [-]
Now I wonder if that holds for Objective C programs, too....
EDIT: From their 2026 publication
>Permission to make digital or hard copies of portions of this work for personal use is granted; permission to make digital or hard copies of portions of this work for classroom use is also granted, but seems ill-advised
As it happens, basically anything is a valid CSV.
If the input is wrong, the server responds with an XML error. This got interpreted as a CSV. Every line became a record, but no column headers were found so every expected field is null/NA. All these nulls get nicely sorted and processed, which causes more string errors, etc ... Mayhem ensues when thst stuff ends up in a database.
2024 (515 points, 125 comments) https://news.ycombinator.com/item?id=40197013
2021 (431 points, 165 comments) https://news.ycombinator.com/item?id=27929730
93% of paint splatters are valid Perl programs (2019) - https://news.ycombinator.com/item?id=40197013 - April 2024 (124 comments)
93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=27929730 - July 2021 (163 comments)
93% of Paint Splatters Are Valid Perl Programs - https://news.ycombinator.com/item?id=20834351 - Aug 2019 (7 comments)
93% of Paint Splatters Are Valid Perl Programs - https://news.ycombinator.com/item?id=19576425 - April 2019 (132 comments)
(Found by clicking the ‘past’ hyperlink leads me to https://hn.algolia.com/?query=93%25%20of%20paint%20splatters..., which gives me six results)
More interestingly, gnabgib reported a different number of comments, leaking the fact that they have showdead on (and you have it off)
"An interesting thing about these images is that they’re not particularly Perl-specific; for example, the program shown in Figure −3 also evaluates as the number −3 in Python (and presumably several other programming languages.)"
We live in the age of Python, which I use every day. But I still also use Perl when it's the better tool for the job. And it often is!
https://vandevliet.me/create-valid-perl-by-smearing-paint-on...
Obviously, it's been improved a lot since then - but traditional OCR is mostly about black text on white backgrounds. Or at least, the text being high-contrast relative to the rest of the document.
Light gold text on a white background, while there are black splatters? That's the sort of thing it would struggle with for sure.
[1] https://static.googleusercontent.com/media/research.google.c...
It is so rare to find proper appreciation for this creative skill.
See also:
https://news.ycombinator.com/item?id=40202182
https://news.ycombinator.com/item?id=19576872
https://codegolf.stackexchange.com/a/48394
any file name? How about /1
?
For anything more complex than a one-off script, Perl is pretty much always written with `use strict`, which disables unquoted strings and certain other (mis)features.
I was somewhat pleasantly surprised a few days ago when an LLM out of the blue decided to use perl, not python, for some simple scripting. There is hope in the world yet…
what a gem of a post
Quite some foresight indeed!
A mentor taught me that you can also roll your face on the keyboard to produce a valid Perl program. It's easy and fun to try!
Perl has never disappointed me. Many years ago during just 2 weeks I'd written a few clever automations and orchestrations in Perl that had lasted with 100% availability for a decade after I changed that job. Even though my superior, the self-proclaimed "top coder manager all-in-one god" despised it (and me), he was incapable of comprehending and rewriting that. It was not because I obfuscated the code, but because of what I wrote in the first sentence above. In the end he hired a consultancy and got a monstrous solution in Java. But finally it was "his".