[HN Gopher] 0xCAFEBABE & 0xFEEDFACE (2003)
___________________________________________________________________
0xCAFEBABE & 0xFEEDFACE (2003)
Author : diggan
Score : 113 points
Date : 2024-08-13 01:03 UTC (21 hours ago)
(HTM) web link (radio-weblogs.com)
(TXT) w3m dump (radio-weblogs.com)
| novagameco wrote:
| Rust will yell at you if you use specific magic numbers like
| these
|
| edit: yes, 0xCAFEBABE is a warning but 0xFEEDFACE is not:
|
| 3405691582
|
| https://github.com/rust-lang/rust/blob/d0ea1d767925d53b2230e...
| kevindamm wrote:
| that sounds like 0xBADDBEEF
| esterly wrote:
| OxDEADBEEF
| oguz-ismail wrote:
| 0xB16B00B5
| steveklabnik wrote:
| This is only for rustc, not for arbitrary rust programs.
| userbinator wrote:
| That says all I need to know about the community.
| tbrownaw wrote:
| 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?
| oguz-ismail wrote:
| Yes.
| kragen wrote:
| 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
| SanjayMehta wrote:
| But why?
| nimih wrote:
| 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.
| SanjayMehta wrote:
| I feel my leg is being pulled, ever so gently.
| fch42 wrote:
| 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.
| cbzbc wrote:
| 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.
| Krssst wrote:
| https://www.oxfordlearnersdictionaries.com/definition/englis.
| ..
|
| > but sometimes considered offensive if used by a man to a
| woman he does not know
|
| There are billions of other magic numbers to choose from
| anyway.
| johnisgood wrote:
| 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.
| Krssst wrote:
| Just don't take the risk. Why is there a need to put
| potentially offensive words in the code when there are
| billions of alternatives?
|
| Some people may find it funny, but it mostly gives an
| image of immaturity.
| layer8 wrote:
| 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.
| HappMacDonald wrote:
| 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?
| kragen wrote:
| perhaps https://news.ycombinator.com/item?id=41238488
| will provide helpful context on the different ways people
| think about these things
| SanjayMehta wrote:
| Oh.
|
| I was reading them out in hex. As in CA FE BA BE ...
|
| Now I feel stupid.
| ryandrake wrote:
| 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.
| yongjik wrote:
| Not just that, but they also wrote the numbers in _decimal_ -
| they didn 't even want them in the code as an example of what
| not to do.
|
| Maybe someone was having too much fun and got carried away,
| but what an odd sense of humor.
| omoikane wrote:
| > wrote the numbers in decimal
|
| 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).
| 8n4vidtmkvmk wrote:
| 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.
| lifthrasiir wrote:
| 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.)
|
| [1] https://github.com/rust-lang/rust/pull/92469/files
| fch42 wrote:
| 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)
| pton_xd wrote:
| 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.
| Lammy wrote:
| Reformatted:
|
| irb> [184594741, 2880289470, 2881141438, 2965027518,
| 2976579765, 3203381950, 3405691582, 3405697037, 3735927486,
| 4027431614, 4276992702].map! { _1.to_s(16) }
|
| => ["b00b135", "abadbabe", "abbababe", "b0bababe", "b16b00b5",
| "beefbabe", "cafebabe", "cafed00d", "deadbabe", "f00dbabe",
| "feedbabe"]
| hyperhopper wrote:
| I wonder why are many many "babe" constants included, but
| only a single "d00d" constant.
| ramon156 wrote:
| It's because soos is the most perfect man
| lifthrasiir wrote:
| 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... ;-)
|
| [1] https://en.wikipedia.org/wiki/Hexspeak
| KineticLensman wrote:
| Burn baby burn
|
| (As per the Apollo guidance computer)
| kragen wrote:
| 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
| hoseja wrote:
| Rustaceans NOT beating the allegations.
| rr808 wrote:
| 0xDDDB00B5
| bitwize wrote:
| 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.
| steveklabnik wrote:
| This is only for rustc, not for arbitrary rust programs.
| cpburns2009 wrote:
| Wouldn't rustc flagging "problematic" numbers prevent
| arbitrary rust programs from having them in the source?
| bitwize wrote:
| 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.
| nequo wrote:
| I mean, 0xDDDB00B5 is about as appropriate in a codebase
| as 0xB166D1C5 or 0x73571C23 would be. Which is to say, it
| isn't.
| l33t7332273 wrote:
| What objectionable thing is 0x73571C23 supposed to be?
| tbrownaw wrote:
| nuts
| handojin wrote:
| Testicle. It's a small unit test.
| tbrownaw wrote:
| https://en.wiktionary.org/wiki/ickle
|
| Huh, cool.
| gymbeaux wrote:
| TESTICLE I believe
| g15jv2dp wrote:
| You're offended if someone wrote "testicle" in source
| code? Are you also offended about "ankle" or "hair"? The
| puritanism...
| nequo wrote:
| 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.
| g15jv2dp wrote:
| The mere mention of the word "testicle" makes you think
| that your coworkers want to have sex with you? Wow.
| nequo wrote:
| Have you tried talking about testicles in a work meeting?
| Genuine question.
| g15jv2dp wrote:
| There's a difference between "talking about it" and "the
| word is uttered somehow at some point".
| nequo wrote:
| A constant in a codebase is not "uttered somehow at some
| point." It is a fixture for everyone to see until it is
| changed by another commit.
| steveklabnik wrote:
| No. These tests are part of rustc's tests, not part of
| anything that runs for arbitrary Rust programs.
| cdchn wrote:
| 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.
| joshu wrote:
| because it would need to be an even number of digits
| onionisafruit wrote:
| I count 8 digits
| cdchn wrote:
| Sneaky isn't it? Its give for the first "word" then three for
| the second.
| kragen wrote:
| 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
|
| http://www.canonical.org/~kragen/sw/urscheme/compiler.scm.ht...
| inglor_cz wrote:
| I like the way how this is playful and useful at the same
| time.
| kragen wrote:
| :)
| rob74 wrote:
| The page you linked introduces another "suspect" to the "cafe
| babe" mistery:
|
| > _( "cafe babe") is used by Plan 9's libc as a poison value
| for memory pools._
|
| Both the NeXT computer and Plan 9 were developed in the mid
| 80s, so I wonder who used it first? But I don't think that one
| influenced the other?
| dgfitz wrote:
| I've used 0xc0ffee00 at work, recently even. 0xbec0ffee or
| 0xd0c0ffee were also in the running.
| mikewarot wrote:
| 0x08675309 also shows up fairly often.
| askvictor wrote:
| Does that mean anything?
| an_d_rew wrote:
| If you're a child of the 80's in North America it does!
|
| (Do a google search on the number, without the 0x0 prefix...)
| mysterydip wrote:
| Pop song in the 80s, 867-5309 (Jenny)
| sethrin wrote:
| It's a reference to a song ("867-5309 / Jenny") by Tommy
| Tutone. It's pretty dated by now.
| an_d_rew wrote:
| Dated?!
|
| DATED?!
|
| BLASPHEMY!
|
| ;-)
| phito wrote:
| Dated, just like putting noses to smileys!
| quesera wrote:
| iOS speech-to-text spells "smiley face" with a nose.
|
| FWIW! :)
| phone8675309 wrote:
| I feel older every day.
| 1-more wrote:
| 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
| cardiffspaceman wrote:
| It was fun to read about this in the North American
| Numbering Plan documentation.
| physicles wrote:
| 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.
|
| #define E_JENNY_JENNY_WHO_CAN_I_TURN_TO 0x88675309
|
| 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.
| bankcust08385 wrote:
| 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."
| Jupe wrote:
| = CAECBA8E
| 0xbadcafebee wrote:
| Welp, time to trademark the old handle.
| 0xF00DBABE wrote:
| Ditto. I wonder if I can get some sponsors too
| 0xDEADFED5 wrote:
| hey cousin!
| 0xDECEA5ED wrote:
| Hey fellas!
| malkia wrote:
| 0xC05FEFE
| mikehollinger wrote:
| Semi-related story with some insider baseball:
|
| 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.
| onionisafruit wrote:
| That was a great "Mike says no" moment.
| sargstuff wrote:
| vs. 80's commercial tag line about 'Mikey likes it"
| Dwedit wrote:
| 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.
| adzm wrote:
| 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!
| dec0dedab0de wrote:
| 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.
| bankcust08385 wrote:
| 7415 8E55A6E 15 A99407ED!
| parlortricks wrote:
| I always set my MAC to deadbeefcafe because it stuck out so
| much to see it in wireshark.
| leejoramo wrote:
| Great to see these UserLand Radio Blogs are still hosted all
| these years later. Dave Winer (and I am sure others) obviously
| worked to see that happen.
| lifthrasiir wrote:
| 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.
| kragen wrote:
| too bad pointer alignment isn't visible in a base64 dump of
| memory
| amsterdorn wrote:
| What about 0xDEADBEEF?
___________________________________________________________________
(page generated 2024-08-13 23:01 UTC)