[stub for offtopicness]
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
For those interested in how this (hilarious) error text came to be, it's been hardcoded in cpython since 2001!https://github.com/python/cpython/commit/ad3d3f2f3f19833f59f...
The author, Jeremy Hylton, is now a Principal Engineer at Google working on AI search quality. It's quite remarkable that in 24 years, a single person's career has gone from a tongue-in-cheek memorialization of certain syntax being forbidden, to working on ubiquitous query systems that don't require dedicated syntax at all!
Reminds me of `break rust;` causing the Rust compiler to emit an internal compiler error. I wonder which other languages have similar easter eggs.
`break rust;` causing the Rust compiler to emit an internal compiler error
Is this real?
error: internal compiler error: It looks like you're trying to break rust; would you like some ICE?
Lovely, and the word game is just great.
https://play.rust-lang.org/?version=stable&mode=debug&editio...
error: internal compiler error: It looks like you're trying to break rust; would you like some ICE?
--> src/main.rs:2:5
|
2 | break rust;
| ^^^^^^^^^^
|
= note: the compiler expectedly panicked. this is a feature.
= note: we would appreciate a joke overview: https://github.com/rust-lang/rust/issues/43162#issuecomment-...
Tcl really became “Enterprise-ready”[0] at this time.
The Stardate time format had nothing to do with Sun. I added it to Tcl while working at Scriptics, as an easter egg for the then-upcoming Tcl2K Conference. One of the conference events was a competition to implement a standard-to-stardate conversion utility, using an arcane formula. Only one guy entered the event. He spent a couple hours agonizing over the implementation (as he was looking for a job at Scriptics, he was eager to impress) only to have the easter egg revealed afterwards. Of course he won the competition anyway. And he got the job, too. – Eric Melski
This one in Haskell is coincidental, but used as a joke:
``` import Data.Function
main = do let it = fix error print it ```
On HN, you can add code blocks by indenting with 2 spaces:
import Data.Function
main = do
let it = fix error
print it
If NLP counts, try xyzzy in gemini.google.com
It's always so cool to see this kind of Easter eggs. So sad that they're not as common as they used to be.
There are all sorts of easter eggs and jokes in Python, for example a joke about blind people that GvR prevented from being reverted:
https://marc.info/?l=python-dev&m=130991276326041&w=2
In 2024 suddenly everyone is grown up and corporate and has never done anything wrong.
In 2024 suddenly everyone is grown up and corporate and has never done anything wrong.
Trying to be considerate of others, even when they are different from ourselves, is indeed kind and good and does come with maturity. You needn't be corporate or have never done wrong to be considerate.
Innocent times. Perhaps Hylton could join the "vote of no confidence" motion in order to get justice for Tim Peters:
And just like that, I'm down the drama rabbit hole.
How is it remarkable? Random people didn't get to add stuff to Python in 2001. It was a niche thing and someone who was contributing to it was likely to be a smart and dedicated person who would naturally have an impactful career ahead of them.
It's a misconception that the informal playful hobby hacking things are their separate world from real professional development.
I think OP is commenting more so on the reversal of the developer’s relationship with rules of syntax than their personal capabilities.
20 years at google, now thats some F-U money!
Part of me says that python has not gone out of its way to expose preprocessor hooks for good reason, and reasonable adults should stay away from it.
The other part wants nothing to do with reasonable adults anyhow. Such fun could be had.
Growing old is mandatory; growing up is optional.
Thank you for connecting 2 sayings of Murakami Haruki :)
1.痛みは避けがたいが、苦しみはオプショナル
Now, I don’t know how representative this book is of Murakami’s novelistic style, but I wonder: Is this low-maintenance, attention-deficit prose part of Murakami’s attraction, especially among the young? Do people enjoy reading him for the same reason they persist in listening to music as blandly familiar as Clapton’s? If Martin Amis is engaged in a “war against cliché” a phrase in danger of becoming a cliché itself then Murakami, on the evidence of this book, is a serial appeaser. How much does his thigh hurt? “Like crazy.” How do we know the weather is nice? Because as he tells us (twice) there’s “not a cloud in the sky.”
self-styled zero-percenter and book reviewer in the above
2.^_^?(Norwegian Wood)
(Roughly, “growth is pain, nongrowth is unfortunate”)
Literally: it's difficult to avoid pain, but suffering is optional
“You can hold yourself back from the sufferings of the world, that is something you are free to do and it accords with your nature, but perhaps this very holding back is the one suffering you could avoid.” - Franz Kafka
as blandly familiar as Clapton’s
If it hadn't been for Clapton, I probably never would've heard of Laylā bint Mahdī bin Saʿd bin Muzahim bin ʿAds bin Rabīʿah bin Jaʿdah bin Ka'b bin Rabīʿah bin Hawāzin bin Mansūr bin ʿAkramah bin Khaṣfah bin Qays ʿAylān bin Muḍar bin Nizār bin Maʿad bin ʿAdnan.
https://en.wikipedia.org/wiki/Layla_and_Majnun
Lagniappe: https://www.youtube.com/watch?v=EZ8magpNo10&t=93s
You’ve managed to sum my whole approach to life in one beautiful sentence. Thank you.
Python has a whole bit about how it is for "consenting adults" and that's why it lacks public/private visibility modifiers and presumably why it exposes all other manner of metaprogramming magic. If they were worried about "reasonable adults", these other design decisions would be curious. :)
Batteries are included. Nannies are optional.
If you stopped people from doing this the easy/obvious way, they'd attempt it in a worse and more hacky way.
Huh, that’s convenient and really useful. When I do ridiculous import hacks, i usually just do it be importing a module, that trades the ast module to rewrite code, exec it and shim in an exit(). A preprocessor would be so much more ergonomic.
I used the ast rewriting stuff mostly before dicts were all ordered - replacing fist literals with an ordered dict call, which was actually useful.
I love how flexible python is. Most cursed thing I ever did was mutating strings in place, which led me eventually abusing mmap as well to write scripts that mutated themselves. Now I feel need to write lisp interpreter as a producer.
mutating strings in place
They’re immutable. Were you directly writing to the memory location with ctypes or something?
Yep!
Haha great hack. Something tells me I'll run across someone seriously using this in like 10 years...
It won't take that long (I already have two use-cases for it).
The only concern is how brittle it might be vs. future Python releases.
I'm assuming you've written 10 in binary.
the Python developers have strong opinions
except when it comes to downloading, installing, or running anything Python related. maybe by 2124 we can give users a python app and let them run it without 20 steps. (oh who am i kidding, by then we'll rewrite everything in whatever comes after Rust)
Yep, that proves my point, thank you
That's quite interesting.
Now, I'm left to wonder if this could have been used to better handle the Python 2-to-3 transition, e.g '# coding: six.python2' would adjust Python2 code to be valid Python3, or '# coding: six.python3' would adjust Python3 code to run under Python2 - e.g adding/removing the b"..." or u"..." prefixes!
It could help, but the parts it would help with are the easy parts. The challenges of py2 to py3 were the runtime behavior change: a Unicode and regular string containing ASCII were the same string in py2, as in you could use them as keys of a dict and they'd key the same entry. In py3 a bytes and str of the same ASCII would identify different entries in the same dict.
Some more nasty changes: various built ins like .keys() and .values() return lists in py2 but iterators in py3. Code gets very verbose if you use the six utilities or other workarounds to translate code safely - most times those are called they are used once, but every once in a while they are used twice.
Imo if you have such a tool that can rewrite at import time you should just commit the transformed code, and clean it up incrementally. The hard parts are the behavior changes that can cross long distances like the str v bytes behaving so different than py2 Unicode v str
I thought getting cute with import-hooks was probably the most creative possible way to get fired, but I see now that this was naive. My only regret is that the codec regex probably prevents using stuff like "μtf8" to really troll people properly, so now I'm going to have to use import hooks, preprocessors, and sys.settrace to monkey-patch every function to the previously called one, while swapping stdout and stderr every 17 minutes.
Make sure you enforce use of curly braces like all good languages
For the first time in a very, very long time I'm running into something that totally blows my mind and sets off lightbulbs like this is...
Now that I know this is possible, it seems like it would be a fun addition to the Hy, Hissp, and Coconut projects: https://hylang.org/ https://github.com/gilch/hissp http://coconut-lang.org/
Are the dependencies introduced via this coding hook strategy picked up by `pip freeze' or uv?
Otherwise, ..have fun with that :). Probably easier to rewrite any library rather than fight such dragons (because if someone put this in, what other traps await? Seems almost guaranteed.)
best use case I've found so far is pyxl, inspired by jsx https://github.com/dropbox/pyxl.
You can write code like
# coding: pyxl
print <html><body>Hello World!</body></html>
Super cool! It would be kinda funny to make a pseudocode python that get’s “decoded” by an llm. Obviously it would be hideous but probably somewhat fun :)
I'm glad y'all like it, more to come soon :)
Tangential, but if all you want is inline code generation from Python and not a full preprocessor, you can use the excellent cog from Ned Batchelder:
Tied with Coq for best name
Let's not forget this fine contribution to the Python's nest. https://github.com/ajalt/fuckitpy
And this: https://github.com/Roger/escrotum
Let’s not forget https://web.archive.org/web/20210308033218/https://github.co....
There are also seeeeeveral LOVE2D libraries with overtly sexual names. The most egregious example that comes to mind is the (now defunct compat library) "AnAL." There's also HUMP, Pölygamy, Swingers, Adult Lib (debatable but close enough), Gspöt, Möan.lua, fLUIds (also debatable, but there's a clear theme here), and yaoui.
10 years ago this was just a joke, but today, now that we're finally agile enough so that any disorganized jumble of completely unreviewed and unversioned notebooks might suddenly become a production pipeline? Why let a little thing like critical errors halt the execution of that perfect nightmare you've been working on! The only problem is that the database still won't let you shove a string into an integer slot, but data-science is looking forward to switching over to spreadsheets completely as soon as we can migrate the data from redshift.
I'm sure this tiny inconvenience can be taken care of with the help ofhttps://github.com/ostafen/viperdb or, if we want to stick to the juvenile innuendo, https://pythonhosted.org/pickleDB/
Big lol
I remember that I wanted to implement a python module that would improve upon the builtin Django groups. So following a tradition of adding ex to the end of the existing name, I named my module "groupsex".
After taking a peek at it I decided to rename it to groups2 instead :)
Not python but literally yesterday I had do a double take when I saw https://github.com/janestreet/sexplib
I was introduced to S-Expressions a few decades ago yet it is still the case that 100% of the time I pronounce 'SEXP' as 'SEX-P'
Ah the traditional lispish naming for predicate functions, applied to questions of an amorous nature!
I occasionally run across something called K8-Sexecutor, or at least that's how I pronounce it.
the children's exchange dot com drops the s, just in case.
You can always ask the folks at Experts Exchange for guidance on naming things.
As a community we really couldn't come up with a better name, eh?
PrePy could have worked... I guess lol maybe it was taken, cause Pydong... yeah.
I had actually considered PrePy and variations thereof for the magic_codec project (which is the example implementation showcased in that post), unfortunately all of these had been used by other projects before. Pydong is the name of the blog :)
Ah I did not realize this. Whoops. Thanks for clarifying!
Dong is a very common name in some countries.
I think it's the name of Vietnam's currency.
Also a common name as is Phuc.
I had a partner that was a translation coordinator and they would play me this VM from one of the Vietnamese translators, every time he called he would say, “Hi this Phuc, ha ha that is funny to you, anyway …”
Not a prude but this name just reeks of immaturity.
To me it was always just a silly way of pronouncing "Python", especially in reference to terrible shenanigans like the ones the post talks about :P
* As you can see by opening the link, "pydong" is the name of the blog, not the Python preprocessor
* I'm glad that we are not ants. Deciding everything "as a community" would be hell
Pydong is the blog name.
Isn’t it a play on words/reference to Pudong in China? It’s a nice central part of Shanghai.
I think the title of this needs to be changed as it implies that this is a preprocessor project named Pydong. As far as I can tell that's simply the name of this blog and this post is about how python has a preprocessor built-in if you abuse the right mechanisms.