I'm surprised they didn't use 0xDECAFBAD for the Java format.
Even more interesting is the Wikipedia page https://en.wikipedia.org/wiki/Hexspeak catalogs a delightfully long list of hexspeak words and what they're used for.
in ur-scheme i assigned a magic number to each boxed type as an easy dynamic type test. procedures are 0xca11ab1e, variables moved onto the heap because they were captured by a closure are 0x1ce11ed, strings of text are 0xbabb1e, cons cells consisting of a car and a cdr are 0x2ce11ed, symbol objects used for naming procedures and variables are 0x1abe1, and all other types are unboxed. aside from being enjoyably silly, this was surprisingly helpful when i was single stepping through the code it generated in gdb. hex dumps are a lot easier to read when you do that
There are quite a few memorable words you can spell using 32 or 64 bits—like BA5EBA11. This is the story of me -not- choosing one of those.
These bit-pattern words are handy because they’re easy to recognize, especially in a random memory dump.
On my first “real” assignment, I was writing real-time embedded C code for a 16-bit processor that communicated with a host microprocessor on a server. We needed to run periodic assurance tests across a bus to ensure reliable communication with the host since we weren't constantly using the bus.*
We were given an unused register address on the host processor and told to write whatever we wanted to it. The idea was to periodically write a value, read it back, and if we encountered any write errors, incorrect reads, or failures, we’d declare a comm error and degrade the system in a controlled manner.
Instead of using zeros or something like 0xDEADBEEF, I decided to write 0x4D494B45 - "MIKE" in ASCII. It was unique, unlikely to be tampered with, it worked, and no one argued with me. The code shipped, the product shipped, and all was well. We even detected legitimate hardware errors, which I thought was pretty cool.
Fast forward two generations of systems, and long after I’d moved on from that team, the code had been ported around but that assurance test remained unchanged. Everything was fine until they brought up a new generation of systems, flipped on the firmware for that device, and 10 seconds later, my assurance test clobbered an important register. The entire system promptly checkstopped and crashed. It took the team days to figure out what was wrong, and I had to explain myself when they found "MIKE" staring back at them from the memory dump.
That was a fun project. ;-)
* Note: It would've been bad if our device went out to lunch because we were responsible for energy management of the server. If the power budget was exceeded and we couldn't downclock and downvolt the processor, something might have crashed or been damaged.
A side benefit of the 2GB address space limit for 32-bit Windows programs is that magic numbers are not valid pointers, and will instantly cause an access violation if used.
I chose my name partially for the 0xFEEEFEEE pattern that the Win32 HeapFree fills memory with in debug mode. I found it when I was very young in the debugger due to this very the reason and I've always loved the words in hex codes since!
My preferred way to make a "magic" constant has been using base64. For example, 0x31a82270 maps to base64 `MagicA==`. This approach is most useful when the magic constant itself shouldn't be obviously ASCII but still should be meaningful enough.
Kind of low-key hilarious that someone thought this was a serious enough issue to actually submit that code. I wonder if there is a written spec that helps to judge which integers should be considered "problematic" and which ones aren't.
Maybe they just didn't want the checker to flag itself.
I remember there was a similar check inside Google, where any file containing the words "DO NOT SUBMIT" will cause the presubmit check to fail. Naturally the presubmit checker needs to look for that string, but it couldn't trivially include the string as-is because that would prevent the presubmit checker from being submitted.
(Motivation for something like this is that if you inserted some extra logging statements or similar for debugging, you would add "DO NOT SUBMIT" in nearby comments, so that you will remember to remove them later).
It's also fun if you want to include that string in a template file so that users of the template don't forget to fill in the template before submitting.
The actual diff in question [1] does show that there have been multiple cases where such "magic" numbers did appear in rustc, so that the lint is meant to catch any such known cases to reduce possibly resulting complaints in advance, no matter you like them or not. (This is also why the list is not as exhaustive, as it needn't to be.)
And now I can't unrememeber and feel totally compelled to a) translate them and b) use them in my code somewhere.
Cannot help but think this is a deliberate pun, to get cynic's imagination going ... did they do this to poke fun at the PC brigade asking for it, or were they actually seriously believing it would make users look the other way ? Either option is funny.
(practically, used only "F0015601D" ... as IPv6 link-local address. No, wasn't a honeypot service)
if your coworker says 'ana over in sales is a babe' they're almost certainly commenting on her appearance, not just mentioning her gender. even if they don't explicitly mention her b16 b00b5, you may reasonably wonder if they're judging you on the same basis, and in particular whether you'd have a better yearly peer evaluation if you were a dowdy man instead of a dowdy woman
if they instead say 'leslie over in sales is a dood' they're just being explicit about his gender, perhaps because someone thought he was female
i'm not endorsing any value judgments for or against these statements, just explaining what other people's thinking (factually) is which leads to the kind of value judgments that lead to policies against putting b00b135 in your source code
i suspect cafed00d was included as a (possibly counterproductive) gesture to allay equity concerns like yours rather than because of any serious concern that a cafed00d constant would cause anyone any concern on its own
It's probably based on the Hexspeak Wikipedia page [1], which contains 7 "babe" constants and only 2 "d00d" constants. So we already had much more "babe" magic constants to start with, I wonder why... ;-)
A lot of my posts are mildly cryptic and meant to be humorous, but I’ll just put this out here seriously. I think anyone who originates an identifier like DEADBABE is a sick pup.
No wonder the compile times are so slow. Rustc comes with built-in content moderation!
Anyway I think they forgot a few, like 173406926 (// Intentionally written in decimal rather than hex).
Seems like they just checked https://en.wikipedia.org/wiki/Hexspeak. Kind of a weak effort, overall.
Really? Current mainstream political shibboleths are more important than for example their stance on module versioning or on whether C code should have a right to exist?
it seems likely that the degree of importance they accord to current mainstream political shibboleths is informative about the community's value system and decision-making process, and therefore how it will change its policy on module versioning and c code in the next few years
probably some people will think it's encouraging information, and others will think it's discouraging information, but either way it's important information
So someone using "0xCAFEBABE" or whatever, do you really think women take it personally, or what is the problem here? If I were to use it, there would be no target, and I doubt in most common uses there are any, so it does not make much sense to me.
I’ve never liked those hex words, especially the sexually connoted ones, but at the same time I find the existence of code checking for them very cringy.
Because every word and every combination of hexadecimal characters is "potentially offensive", and because those prone to taking offense are perfectly capable of finding it anywhere that they want to anyway?
> Because every word and every combination of hexadecimal characters is "potentially offensive"
No they are not. There are plenty of harmless combinations, like 0x1235679a or other with English words like 0xcafebad0.
Offensive was a bit of a strong word here, I was mostly paraphrasing the dictionary. However in male-dominated field, using an objectifying word targeting 50% of the world population is definitely in poor taste.
Most important of all, it looks unprofessional. It don't think it would look professional for HR to put jokes in our salary sheets, and I think the same applies to company code.
after the parent kills the children that were sending the commands to the slaves, it needs to wait to reap the zombies, because there's no garbage collection for the dead children. otherwise the process table might fill up from all the forking, like with a fork bomb. then stonith failover will nuke the server, unless it's on the blacklist of dummy servers
i wrote the stonith daemon in racket scheme because guile was too slow and was sometimes missing a heartbeat
Yes. Once I used Rust's Command in a wrong way, and after terminating a child it has turned into a zombie. I had to forcefully kill it manually each time this happened. It had to be fixed in the long run, because each run risked an OOM Killer (employed by the system) will show up and start its random kills. When I've finished my fixes, I've committed everything to the master branch and CI slaves started working nightly to bring me fresh binaries to execute in the morning. It wasn't much longer after smoke tests when it was apparent that the bug was eliminated. ;)
Just wait until they hear that it’s perfectly fine to show someone being graphically killed or blown up on prime time TV, but a national scandal if a boob gets flashed.
It’s just a particular flavor of first world problems combined with group policing using rage and shaming.
I know my libertarian tendency hackles get triggered when I see it, but frankly I’ve given up giving a shit. Mostly.
But there is a target here, too. "Ana" and "Leslie". I get the "b00b" ones may be "bad" in the sense that those are sexually explicit nouns, but as for "d00d" or "babe", not so much as it requires a target.
It's a mystery, lost to the sands of time. IMO, it's highly unlikely anyone will ever discover why the maintainers of the Rust compiler decided to lint their codebase for a dozen or so magic numbers.
It's fairly simple - and I don't know why no one has pointed this out already.
If everyone starts to use the same magic numbers then they are no longer magic and you can end up with strange corner case bugs and holes where a magic number used in one context is mistaken for a magic number in another context.
the github commit's "conversations" log for the commit has a few notes you need to log in for to view. But then, the maintainer who merged said "it's just a few constants". Which is fair enough.
I think this would more belong into clippy; it'd be easier extensible then, and less "magic". But I'm just a 0xf001 who's intentions are 0x900d ... please don't let me 0xbe misunderst0x0d.
When I worked on Windows Phone during the good ol' days, my team used this for a sort of retail mode assert, for situations that really shouldn't happen. Instantly recognizable. The definition went something like this:
// This is a shout out to that 80s hit. You know the one.
The 1 in bit 31 was required to signify that it's a Win32 error code. The other high bits are essentially a namespace, which we used correctly for all our other error codes.
It's far better than constants like NEVER_USE_OR_MODIFY_OR_YOU_WILL_BE_FIRED that are supposedly for testing only but turn out to be used in production to control whether a beta feature appears or not, and so lead to a bunch of dead code that couldn't really be cleanly disentangled from good production code without someone familiar with it doing a diff review.
Wherever my Motorola MPx200 went, it says "Hello."
It's as old now as the first Jazz concert at Carnegie hall was to it. Fred Astaire's "Nice Work if You Can Get It" was #24 on the charts that year. https://en.wikipedia.org/wiki/1938_in_music
Crap. I used to think being alive was better than being dead. But come to think of it, the only ones complaining are the ones who are still alive. I’m conflicted now.
a long time a go I wrote a script that spit out random phrases in hex that would work as a mac address. I used to do this to mess with my coworkers in networking , and previous coworkers at the ISP I was still using. My HN username is the only one i remember though.
That's a Code of Conduct violation. It's not the 90s anymore, there's no quarter for this type of thing in modern development teams. Rust's style checker even flags up the use problematic magic numbers.
He means that the style checker only checks for those sorts of numbers in the source code to rustc.
But the point remains: there is far, far less tolerance for the sort of humor that objectifies women today, and even laughing at it can get you in trouble as Tim Peters recently found out.
I’m not offended. It is unprofessional. Talking about sex at a workplace that is not about sex is going to be offputting to many people who are not there to have sex.
Even more interesting is the Wikipedia page https://en.wikipedia.org/wiki/Hexspeak catalogs a delightfully long list of hexspeak words and what they're used for.