Why does man print "gimme gimme gimme" at 00:30? (2017)

(unix.stackexchange.com)

1058 points | by jamesy0ung 78 days ago

42 comments

  • IgorPartola 78 days ago
    Sorry time: years ago I worked on a telemedicine web app before telemedicine was nearly as popular as it is today. Part of the application had patients filling out questionnaires online to show answers to the doctors. We were onboarding different parts of a large healthcare system throughout all this (cardio, GI, etc.) and each had questionnaires that required different logic for when and how to display the questions, so the application had a fairly powerful system for driving the conditional logic of when questions do and do not show up.

    Well one day I am working on a new set of features to help support the new clinic that’s coming online and for whatever reason the question that should by all rights show up, does not. As I am getting deeper into debugging why, I pepper the code with nonsensical and slightly angry debug statements that show up alongside the questions. After solving the problem I happily clean up and commit the fixed code and move onto the next thing.

    Well, it turns out I didn’t clean up all the debug statements. The statement I left in said I SEE YOU!!! in big red letters if you answered a particular set of questions in a particular way. This was discovered by a patient. Of the psychiatric clinic that just came online. On the questionnaire meant to evaluate paranoia.

    Since then I have started using things like aaa and 111 as my debug markers.

    • mattnewton 78 days ago
      The strings used for debugging at Google were supposed to include “DO NOT SUBMIT” which, a bot to check for this was added after a debug strings made it to production (It was before my time but I believe it was after the legendary WD incident- “western digital” was remapped to “woodly doodly” in test code that accidentally shipped for those curious)
      • smitelli 78 days ago
        > "DO NOT SUBMIT"

        Kinda verbose, ain't it? Just speaking from my own personal experience, usually when I resort to print-debugging I'm already pretty punchy and more likely to use a quick "ASDFASD" or similar.

        • names_are_hard 77 days ago
          I worked on a codebase that had a special logging function with a name like NoPushLog that was just a direct wrapper of the base log function. A githook checked that this string was not in pushed code.

          This solves many of the concerns raised in this thread about readability, automation, avoiding typos in the magic string.

          The tricky thing you have to solve is how to push the code that defines the custom logging function, but there are solutions.

          • mattnewton 77 days ago
            It doesn’t allow you to put that in comments, config files or other languages though like a plain text string.
            • sneak 77 days ago
              Why wouldn’t it? Sounds like the git hook is probably just grep…
              • mattnewton 77 days ago
                Then why have a function?
                • ajb 77 days ago
                  Because of you made a typo, you're more likely to notice than in a comment or string, because it will fail, even at build time if you're using a compiled language
                  • mattnewton 76 days ago
                    Right, but the whole point of DO NOT SUBMIT is that it doesn’t need to be in the compilation step. It can be in data files, comments, etc. You can change your syntax highlighting theme to spot the typos x (I added them with a keyboard shortcut anyways)
                    • sneak 76 days ago
                      You need to compile the code with all the debugging logging in it so it can run and print out all the “got here 3”s and so forth.
                • saagarjha 77 days ago
                  Because it distinguishes the normal logging function from the ones that are for local debugging.
        • twic 77 days ago
          I use the strings "XXX" and "999" for this (the latter because you sometimes need a dummy value in a numeric context), and have a global git hook which stops me committing a changeset which includes them.

          I occasionally need to override the hook, for example when using mktemp -t, or when some floating-point data actually contains a run of 9s. But mostly, it is quite specific at catching stuff that shouldn't be checked in.

        • EvanAnderson 77 days ago
          > > "DO NOT SUBMIT"

          > Kinda verbose, ain't it?

          I always used the word "doberman" for this purpose. I've never written code for a project that legitimately included the name of a dog variety. A simple grep for "doberman" in the production release CI pipeline catches it. If one ever did slip thru I figured it wouldn't be too offensive to anybody.

          • durumu 77 days ago
            I've used NOCOMMIT. Less verbose, equally clear.
            • domoritz 77 days ago
              I'd be scared to spell it with one M or two Ts.
            • HaZeust 77 days ago
              Not if a layperson comes across it and you miss an omission.
          • hotspot_one 77 days ago
            depends. If you are paranoid and afraid of dogs, ...
        • bipson 78 days ago
          Yes, but you can check for "DO NOT SUBMIT" with automation.

          You can't automate checking for random strings, right?

          • neutronicus 77 days ago
            Perhaps an abbreviation would be the best of both worlds, and debug strings should be prefixed with "DNS"

            You won't need to submit that particular string working at Google, right?

            • tetha 77 days ago
              We could also have an acronym for the more severe "DO NOT SUBMIT - SECURITY EXPECTATIONS COMPROMISE".
              • pixl97 77 days ago
                DNS-SEC...

                Confused sysadmins wondering if this is SOX code...

          • anyonecancode 77 days ago
            Related in terms of being easy to search for, I use the abbreviation "TK" as a placeholder for text or incomplete code. Took this from the publishing industry (my partner worked in magazines) -- it's a combination that does not appear in regular English and so is easy to both see and to use search tools for.
            • anthk 77 days ago
              TK is a semi-well known widget toolkit/GUI toolkit which came from TCL and today it's the default toolkit for Python. Nothing fancy, just basic menues/buttons and widgets, but they get the job done in a hurry.
            • ASUfool 77 days ago
              I hope you never built a rooTKit.
          • Tyr42 77 days ago
            The automation which can check for do not submit itself is hard to submit. Or at least updates to it are hard to submit.
            • organsnyder 77 days ago
              Just disable that particular linting rule (or however it's implemented) in that repo.
            • Dylan16807 77 days ago
              forbidden_string = "DO NOT " + "SUBMIT"

              Seems easy enough?

          • trelane 77 days ago
            > You can't automate checking for random strings, right?

            No, but you can make the string configurable.

          • pjerem 77 days ago
            Well in the LLM era, you could. I’m not sure you should :)
        • rlpb 77 days ago
          XXX is already highlighted by most editors by default (or at least mine) and seems suitable. Any comment to be committed to a shared branch should probably contain more specifics and not contain that, if you wanted to institute a policy.
        • corobo 77 days ago
          I use xyzzy

          - Nothing happens

          - Easy to find string in code, output, wherever

        • metrognome 77 days ago
          It's about writing code that your peers can read. "DO NOT SUBMIT" is clear as day. "ASDFASD" probably does not mean "this is a debugging string" to most people.
        • default-kramer 77 days ago
          I use "NOMERGE" plus the habit of grepping for it before I merge a branch.
        • refulgentis 77 days ago
          They pay you enough that you'll respect the need to be professional and write "DO NOT SUBMIT" over "ASDFASD" or similar.
        • mattnewton 77 days ago
          Not really? it’s close to the minimum string you’d be okay with never actually wanting to commit. Never had a problem with it in logs, but it could be in a comment next to the log if you did. Easy enough to add a shortcut for if you really have a problem typing it out, but at my typing speed my brain has always been the bottleneck, not the number of characters.
        • secondcoming 77 days ago
          "GOT_HERE_1"
      • raverbashing 78 days ago
        Pro tip: never add a "funny comment" especially an error message that's "never supposed to happen" unless you're happy with that message showing up in a board meeting, in front of your boss or worse (and it being traced back to you)
        • Suzuran 78 days ago
          I did this once with the deliberate intention that be traceable. Holding down a few keys while clicking on a specific small set of pixels in an application we were developing for a customer would produce a specific message that was attributable to me personally. I did this sort of thing in most things I worked on back then, partially as a "calling card" and partially as a means of being able to prove my involvement in a given product if the need ever arose. This saved our bacon when a sales rep sent an "evaluation" copy of the nearly completed product to the customer, without authorization, that consisted of our entire source tree. (This was the 1990s and we were running MS-DOS, no file security)

          Suddenly the customer tells us they have "repurposed" an "internally developed program" and they cancel our contract. The sales rep was upset that he would not be getting a commission on the sale and mentioned that he had "even sent them a demo", which led to the discovery of what had happened. My boss and I went to the customer's site to "finalize the paperwork", and when we were shown the application (which had extremely minor UI changes) I checked if the hidden click spot still worked, and it did! The customer was horrified. My boss was outraged.

          We ended up getting paid the full contract amount plus a large bonus in exchange for agreeing not to sue. The sales rep decided to leave voluntarily rather than be fired.

          • dannyobrien 77 days ago
            There's a fine tradition of this, especially at early Microsoft. It's documented here: https://www.pagetable.com/?p=43 , and includes hidden messages that Gates allegedly added himself to prove that code the company licensed could still be traced back to him. (I hit the Ric Weiland one mentioned on my first computer, the Ohio Superboard II - https://www.pagetable.com/?p=43#:~:text=the%201977/1978-,Ohi... ).

            This was all in the era of Gates' Open Letter to Hobbyists[1], when "Micro-Soft" was licensing their code to companies, perhaps because direct sales to hobbyists didn't work out.

            [1] https://en.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists

          • MonkeyClub 77 days ago
            > Holding down a few keys while clicking on a specific small set of pixels

            Did you draw inspiration for it from Bullock's The Net (1995) by any chance?

            • jpm_sd 77 days ago
              I like the way you phrased this. Maybe someday academics will refer to Bullock's net the same way we talk about Occam's razor, or Maxwell's demon, today.
            • Suzuran 77 days ago
              I don't think so; I don't remember ever seeing it
          • LorenPechtel 76 days ago
            Yeah, back in the DOS days I would normally embed something that would respond to specific nonsense.
        • mackman 78 days ago
          Listen. If it’s never supposed to happen then you definitely want a customer to tell you if it happens. Best way to make sure that happens is to insult their mum. It’s just good engineering discipline.
          • bartread 78 days ago
            In my younger and more foolish years I worked for a company called Redgate and, whilst there, I had to do some licensing jiggery pokery that stopped people using our tools if the licensing code had been tampered with or removed.

            I didn't want to make it too easy for people trying to crack our tools so, if such a problem were detected, the error message spat out to the console bore no relation to what had gone wrong.

            By "bore no relation" I mean the error message would be one of a number of lines of dialogue from a scene in a House episode where House is trying to figure out who Wilson's girlfriend is... which led to this:

            https://gist.github.com/gregoryyoung/871736

            Yes, Greg Young (the event sourcing guy) ran into an error that said "Because I wanna ask you about your girlfriend. I must know who she is, or you would've told me her name," because he'd moved Smartassembly minus the licensing DLLs. Of course, he didn't realise what he'd done "wrong" so he tweeted it to his considerable following and it went viral.

            Because I'm exactly the sort of walking cliche you'd expect I was blissfully unaware of the unfolding drama, being away on sabbatical snowboarding at the time. I hadn't taken my laptop with me, I'd disabled data roaming on my phone to avoid a whopper of a bill after a couple of months away, and had only a gen 1 iPad to access email and internet. So of course I came back in the evening to discover that it had all kicked off, with this ludicrous chain of emails where people were trying to figure out what was going on, until somebody had the sense to go and look in our source control system (which at the time was still svn for most things), and figure out that it was my fault.

            People saw the funny side and it wasn't that big a deal but the reason I bring this up is that the last line of dialogue in that scene is, "Your mama," delivered by Wilson to House, and it was also the error message for the final failure scenario I was looking for. I'm glad that one didn't get printed.

            • tverbeure 77 days ago
              Back in the nineties, 3D Studio used to be pirated by every kid in their dorm and more. The software had license checks all over the place apparently, but crackers tried to remove all of them.

              However, if they missed one, it would move a random vertex by some random amount which is obviously very visible when rendering a 3D scene.

              When people complained about this on forums (usenet mostly), they outed themselves for using pirated software.

              • grujicd 77 days ago
                You should be 100% sure that such code never ever gets executed by legitimate user. As seen above, it doesn't have to be a bug in licensing code, it could be something external.
                • LorenPechtel 76 days ago
                  Yup. Long ago, join an online Command and Conquer game. Boom, everything blows up. Piracy watchdog that reacted to my repairing Windows and not realizing I needed to reinstall the game after that.
            • eastbound 77 days ago
              System.exit(0); in Java is probably the most evil thing invented, when the license check fails (preferably launch a thread and do it without stacktrace, after a random time).

              To this day I still think Google’s motto only referred to “Do no System.exit(0)”.

          • m3047 77 days ago
            Sadly I mostly agree with this. File it with "the first time people get the password right tell them they failed, making them enter it a second time" and other janky but highly effective stuff.
            • eastbound 77 days ago
              I believe you can get someone’s entire list of passwords this way.
        • nicce 78 days ago
          I write alot of #![no_std] code in Rust and forgetting debug messages is luckily impossible because compiler won’t compile in the end if you forget something.
          • mattnewton 77 days ago
            The nice thing about DO NOT SUBMIT is that it worked in comments, text protos and other configuration files, and every language.
      • riffraff 78 days ago
        Was the debug string that made it to production embarrassing?

        I remember a swearword appearing in a very big national company login form once, and I'd have felt sorry for the dev if it wasn't so hilarious.

        • PetahNZ 78 days ago
          Yea, I have seen a very inappropriate debug statement being left in the led to the dev being promptly fired.
          • arethuza 78 days ago
            I was leading a startup development team in the late 90's and one of our developers told me that some very inappropriate test data had been sent to IBM to be included in a product demo and burned onto tens of thousands of discs that they would distribute.

            Eventually it turned out that it was the single word "sheep" - which taken out of the relevant alt.* context was pretty harmless.

            Talk about a moment when I thought my career had crashed and burned...

            • MonkeyClub 77 days ago
              > Eventually it turned out that it was the single word "sheep" - which taken out of the relevant alt.* context was pretty harmless.

              Please, do contextualize it?

          • HaZeust 77 days ago
            Likewise; they tried to pin it on me, and I had to go to the Git commit history to show it was another employee. My administrative leave was promptly revoked.
        • mattnewton 77 days ago
          “Western Digital” was replaced with “Woodly Doodly” on the srp. Not really thag embarassing but I am sure WD didn’t appreciate it
      • indrora 77 days ago
        When I worked as a technical writer earlier in my career, we had a debug/prod check: If you used a series of words it would fail you in prod (refused to build). These were usually codenames of projects and such.

        One afternoon, I added the phrase "[Ww]ombo\s[Cc]ombo" (it supported regular expressions) and an expansion set (&prodbomb; evaluated to &wca; &wcb; to create "womb combo") but only in prod. In debug builds, it would produce "Wombat Combat"in bright red text.

        This was a useful way to mark pages as "Don't build this in prod yet" - a habit some teams had of just yolo'ing their development branches right into production instead of doing a rebase to main. More than one build was saved by it within a few months.

      • veunes 78 days ago
        It's amazing how many processes evolve because of incidents like these.
      • thephyber 77 days ago
        All of the comments seem to talk about automation for detecting sloppy logging.

        Is nobody reviewing code before merging it upstream?

        • mattnewton 77 days ago
          Belt and suspenders.

          Every line was reviewed but that doesn’t mean it would be caught every time. And if it’s automatable to catch things like this it should be.

          • thephyber 71 days ago
            Right, but I’m pointing out that everybody is using a belt and nobody suspenders.
      • CPLX 77 days ago
        > "DO NOT SUBMIT"

        That's pretty good advice if you find yourself dealing with a large tech company.

    • mstade 78 days ago
      I did something similar years ago when working on a gambling site where people could upload bets in bulk using specially crafted files.

      During development this would sometimes break but only in very specific circumstances, and because they were so absurd and seemingly specific to our local development environment I just added an error message saying "watch and amaze while the application eats itself!" Or something to that effect. It was inspired by an error I saw with the Discworld game for the original PlayStation.

      Of course, once this hit production it turns out the det of circumstances necessary to trigger this error wasn't quite as specific as I'd thought, and support was overloaded by hundreds of people calling in to report the error, worried that their money was gone. Of course, people using these feature were high rollers placing very large bets, so management was not happy...

      Fortunately I wasn't fired and we fixed the issue very quickly, but man I felt the edge of that sword really close to my neck. It was at one of my first jobs as well nearby 20 years ago. I definitely learned some valuable lessons that week. :o)

      • doublerabbit 78 days ago
        > I wasn't fired and we fixed the issue very quickly, but man I felt the edge of that sword really close to my neck.

        The same experience. I was working for a pornography company and where I was configuring load balancers. I had a test page of semi-naked red deviless with the words "Hello Minion" above her head which I had forgotten to remove.

        So during peak times, when the misconfigured LB went active it threw that page to the public, advertisers and the other white labelled websites.

        • eru 78 days ago
          I feel like given the industry, they should have a higher tolerance for slightly spicy placeholder images?
    • tomphoolery 78 days ago
      I had a comment in this file for a very long time but the project lead was something of a Professional so he removed it. The comment was "# MULTIPASS!"

      https://github.com/workarea-commerce/workarea/blob/master/co...

      Some context:

      - The 5th Element is a cool movie

      - My sister's dog was named Leeloo Dallas Multipass and she was like my favorite dog of all time

      - I was the original developer of the `ProductMultipass` search query feature

      - Turns out, funny comments make other developers like your product more

      • roydivision 78 days ago
        I handed a project over to a new developer once before leaving the company. I returned about 18 months later, and he'd stripped out the one Easter egg I'd put in. No sense of humor that chap. Good coder though.
        • PetahNZ 78 days ago
          I made a website for a goat breading society. It played screaming goat sounds if you typed the Konami code. I was sad the day that site was replaced.
          • yellowapple 77 days ago
            If I was a goat I, too, would scream if I was breaded :)
      • 0xfeba 77 days ago
        I just made one last week that cracks me up still:

        // We are liiiiiving in a material world, and I am a ma-ma-material org.

        const materialOrgs = await db_read<Org>(organizations, { type: 'materials' });

      • worstspotgain 78 days ago
        She's not my bride. She's my fare.
      • qingcharles 77 days ago
        Username checks out.
    • Terr_ 78 days ago
      > Since then I have started using things like aaa and 111 as my debug markers.

      I often use my initials and "DEBUG", so that the string (A) is distinctly grep-able before committing code and (B) if it somehow ends up in production it's not totally mysterious.

      • adastra22 78 days ago
        I like this, but use the initials of annoying Steve down the hall.
        • daurnimator 78 days ago
          And if he isn't "annoying Steve" now he will be known as that soon enough :)
          • dctoedt 77 days ago
            > And if he isn't "annoying Steve" now he will be known as that soon enough :)

            I once heard a guy — named Ed — who responded to a query about something with, "Well, I'm special." You can guess how he was referred to from then on ....

      • sn9 77 days ago
        Am I the only one who just uses my name?

        As in "MYNAME: " prefixed to whatever useful information I might need.

        • greenchair 77 days ago
          you are not the only one buddy!
      • ajross 77 days ago
        FIXME is also popular.
      • jxramos 78 days ago
        same, "DEBUG 1", "DEBUG 2", "DEBUG 3 with description xyz", etc.
        • Terr_ 78 days ago
          > "DEBUG 1", "DEBUG 2"

          If you use language expressions that automatically become file/line info, that frees you from juggling unique labels. Then it can be saved into your IDE as a insertable code snippet.

          It goes without saying that a real interactive debugger session is even better, but it isn't always convenient or possible.

          • TremendousJudge 77 days ago
            Sometimes an interactive debugger session will make the issue you are researching not happen -- I don't know of a way of tracking down race conditions that isn't logging everything that happens until I find out which thing happened before which other thing that wasn't supposed to
            • Terr_ 77 days ago
              > Sometimes an interactive debugger session will make the issue you are researching not happen

              I still remember the first time that happened to me, I think it had to do with some (not yet diagnosed) race condition on a PHP server between the HTTP requests it served, and the debugger had a side-effect of blocking the next request while I was inspecting the first one.

              That reminds me of another thing: Some debuggers allow you to set breakpoints and set them to not suspend or pause execution, but to emits a log-message to the debugger or terminal instead.

              Those are an upgrade over print-statements in that:

              1. You can't accidentally commit it and it doesn't show up to make your diffs weird

              2. You may be able to dynamically change what things it prints out without restarting the program

            • eastbound 77 days ago
              And the reverse: I change values using breakpoints. So the code runs (because the breakpoint condition is false) but the value is different. Example of breakpoint condition:

              (licenseActive = true) != true

          • jxramos 74 days ago
            yah that may be worth turning on that feature or altering the debug trace during a debug session to see what line comes up, not a bad suggestion. We turn off line traces in general so that the debug logs can be diffed after stripping off variant fields in the log records like object addresses and timestamps. While a project is in development the log line numbers would add a lot of diff noise.
    • jdwithit 77 days ago
      I've definitely committed debug messages before. Probably everyone who writes code has at some point. Thankfully it's never been anything TOO embarrassing. These days I try to always do a git diff and search for "print" (or whatever the language equivalent is) before I commit and push as a final sanity check.

      In high school, my friend had a habit of titling draft papers something inappropriate. Which was funny when we were peer editing each other. But inevitably, one time he forgot to change it back. We sat down in English class and as the teacher was walking around collecting papers, he glanced down at his and suddenly UH I GOTTA GO TO THE BATHROOM. He sprinted out the door straight to the computer lab and printed off a copy that didn't have a bunch of profanity in 24 point font at the top. I about died laughing.

      • bornfreddy 77 days ago
        Instead of git diff, you can also use git add -p, which asks you for each change.
    • mooktakim 78 days ago
      It doesn't matter how advanced debugging gets. At the end we always use print. Only reliable thing to do.
      • IshKebab 78 days ago
        Sometimes you can't even print and have to resort to toggling a GPIO pin...
        • bloak 78 days ago
          I've worked with systems that were so utterly and entirely broken that the only way I could confirm that a particular code path was followed was by inserting an infinite loop and observing that the system then hung instead of crashing.

          Combine that with a build system that is so utterly and entirely broken that the only way to be sure is to do a fresh checkout each time, and with a hardware set-up that involves writing the binary onto flash memory and plugging it into a device that is located under somebody else's desk in another room and then perhaps you have the Debugging Cycle From Hell.

          • Moru 77 days ago
            When I was programming at home om my Atari ST I thought debuggers was the greatest invention ever. It was wonderful to be able to step through assembler code line by line, instead of looking at BASIC print statement output and guessing what was going on and where. Made life so much easier.

            Don't people believe in debuggers any more?

            • cpgxiii 77 days ago
              Once you get to a complex enough system, sometimes a debugger just isn't enough.

              E.g. I have a multi-threaded and multi-process robot control system - I can't put breakpoints in the controller to debug why the robot misbehaves, because then the control loop timing is broken and the robot faults. Instead, you have to put the time into effective logging tools, so that you can capture the behavior of the running system and translate that into a simpler and smaller example that can be examined offline. Maybe those you run under a debugger, but you probably can express what values you want to examine and when more cleanly in code than in the debugger, with the significant advantage that it's easier to communicate "run this code and look at the output at step n" than "run this code with these breakpoints and these debugger scripts".

              My view at this point is that the conditions I would normally examine in a debugger with breakpoint and stepping are usually so rare (e.g. a few in potentially thousands/millions of iterations) that I need to write logic to express what checks and where I want to make them, and I would rather write that logic in the context of the program itself than do so in the debugger.

              • Moru 77 days ago
                Ofcourse there are edge cases that don't work with a debugger. I have been there too. Timing sensitive applications like controlling the fat-TV live on scanline/pixel level can't be debugged. Physical objects that move over a certain speed can't be live debugged because of physics. This is still edge cases.
                • cpgxiii 77 days ago
                  > This is still edge cases.

                  Arguably, once you are working on a sufficiently complex and mature system with good-enough tooling and tests and development practices, these edge cases can come to dominate. I don't spend time debugging simple things on their own, because the simple things on their own are generally well tested, so the failures that do happen emerge from their combination and integration into complex systems.

                  That said, I do spend a fair bit of time using a debugger as my first-line response to an issue - but overwhelmingly it's to examine a crashdump of the failure rather than investigate a live process.

            • polotics 77 days ago
              I guess that once you reach a certain level of coding, static verification, strong typing, solid unit tests, you only got timing multi-threaded Heisenbugs left to find...
              • LorenPechtel 76 days ago
                And even without that when you're faced with a bug caused by a large input of some kind it's often easier to dump a bunch of data and look for what doesn't fit.

                I've had two Heisenbugs, although no threading involved:

                1) Long ago, interface library for going from protected mode to real mode in I believe it was Borland Pascal (I can't recall for sure where this was relative to the name change.) Step through at the assembly level, it worked. Anything else it might work but that was unlikely. The only outcomes were correct or segment error, it never returned a wrong answer. Culprit: Apparently nobody used the code. The whole file was riddled with real mode pointers declared as pointers. Oops, when asked to copy a pointer the compiler emitted code that loaded it into a segment:offset pair and then stored it. If the segment part happened to be valid, fine. If it wasn't a valid segment, boom. The debugger apparently did not actually execute a single step, it emulated it--except for not failing on an invalid segment register value. In any other case the attempt to dereference it would have blown anyway, but this wasn't being dereferenced.

                2) Pretty recently, C#. I had a bunch of lazy-initialize data structures--and one code path that checked for the presence of data without triggering the initialization. But the debugger evaluated everything for display purposes, triggering the initializer. There is a way to tell the debugger to keep it's hands off but I hadn't heard of it until I hit it.

            • IshKebab 77 days ago
              Some people just don't believe in tooling full stop. Kind of mind-blowing. They're essentially coding with a fancy notepad.exe.
              • db48x 77 days ago
                What’s weird is that debuggers are so advanced now. rr and Pernosco are to regular debuggers like regular debuggers are to inserting an infinite loop into your code.
            • neongreen 77 days ago
              I used the debugger all the time when I was writing in Pascal (and later Delphi). It was great.

              Then I switched to Haskell. No (useful) debugger there.

              Now I write TypeScript, and.. somehow I never figured out how to do debugging in JS properly. Always something broken. Breakpoints don’t break, VSCode can’t connect to Node, idk. Maybe I should try again.

              • LorenPechtel 76 days ago
                The Borland Pascal had a problem with too much debug data. By the time that program got retired I could turn on the symbols for a few percent of the code, set a breakpoint and examine the situation when it triggered but not continue at that point.
          • qingcharles 77 days ago
            This is a hacking technique too -- I've seen it used for extracting entire databases via SQL injection by putting delays in SQL statements and then measuring how long the web page hangs, when you can't force any output on the page. You put different delays in for different string matches and eventually you can get all the table and column names this way.
      • serf 78 days ago
        I sort of laugh when using chatgpt/claude to code anything, if you ever mention to it that something isn't quite working right it'll pepper the entire code with printed debug statements rather than assisting you with any more advanced debugging methods.

        even the bots do it (joke)

      • brunoarueira 78 days ago
    • lexicality 78 days ago
      Personally I use the word "MEOW" because a) it's easy to search for and spot in logs b) it will (hopefully) never be a legitimate string in the kind of things I work on c) fairly unlikely to cause offence (unless the customer is a dog)
      • mananaysiempre 78 days ago
        Hope you aren’t inspecting COM or DCOM data then. Those MEOW all over the place.

        > The header of the marshaled object reference begins with a distinguished signature (‘MEOW’)⁶ [...].

        > ⁶ A Microsoft Program Manager who shall remain anonymous claims that MEOW stands for Microsoft Extended Object Wire representation. The author, while somewhat gullible, is skeptical of this story but is willing to give the aforementioned source the benefit of the doubt.

        — Don Box, Essential COM

        • Biganon 77 days ago
          I usually go with "coucou" or "prout", French for "hello" and "<fart sound>", respectively. When I'm fed up I use "merde".
          • IIsi50MHz 76 days ago
            Some time ago, when working on glue code between Excel and our product, I was very fed up with being unable to do exceptions or other sane error-handling on the VBA side. So, I wrote up some code with ```On Error GoTo hell```, which got me a public lecture.

            Now, when I'm not required to use some other name, I tend to name my error handlers "hope".

        • dh2022 77 days ago
          MEOW fits in 4 bytes and the string is probably aligned on 4-bytes boundary (being at the start of the reference) So probably not a bad choice for a binary protocol.
      • Tijdreiziger 78 days ago
        https://upload.wikimedia.org/wikipedia/en/f/f8/Internet_dog....

        (alt text: vintage meme depicting two dogs using a computer, captioned ‘On the Internet, nobody knows you’re a dog.’)

      • ithinkso 78 days ago
        Our testers (China and India) know that when they see KURWA or DUPA in logs that to send it straight to the polish site, we are considering adding a hook to check for those
      • ndsipa_pomu 78 days ago
        Not a good choice if you refer to "homeowners" in the app though.
        • stuartjohnson12 78 days ago
          Wanted to make this comment, scrolled in anxious anticipation hoping no one else had made it yet, sadness washes over me.
          • Damogran6 77 days ago
            Have an upvote, just the same. (From someone else who's thoughts aren't as original as he'd once thought.)
          • herodoturtle 78 days ago
            Hacker news poetry right here.
      • veunes 78 days ago
        It has a kind of charm to it. Like leaving your own harmless, personal mark on the code without risking another "I SEE YOU!" moment.
      • SpaceNoodled 78 days ago
        BRB grepping our codebase for MEOW
      • bendigedig 78 days ago
        I use "meow", "woof", and "cheeseburger".
      • coldpie 78 days ago
        I use "QWERT", for the same reasons.
    • goblox9999 77 days ago
      I once did the same except my debug message, created in a punchy mood late at night, was "YOU ARE BEING ATTACKED BY MOTHS." Left that in there and forgot about it until I received a very puzzled debug request months later...
    • mwkaufma 78 days ago
      CVS at my first job was configured to reject commits containing f-bombs after a spicy debug message sneaked into production and showed up in a children's game.
      • Daviey 78 days ago
        Back in 2009, I saw something similar was when a user reported a bug to Ubuntu regarding Pulseaudio[0]. Basically the error messages was:

          $ pulseaudio
          W: main.c: D-Bus name org.pulseaudio.Server already taken. Weird shit!
        
        I thought a user facing error message like this is inappropriate, so politely took the issue upstream [1].

        Lennart, who I had spent some time with in real life a few months previous, didn't yet have the reputation for being the person he is today. I thought he'd be pretty reasonable about it. Instead he closed the bug as "won't fix" and left the comment, "Sorry, but please don't waste my time, will you?".

        I was pretty shocked by his response, I lost a lot of respect for him at this moment and then wrote a long ass blog post about professionalism of developers and appropriate language for user facing error messages.. but still, Lennart tainted himself and showed the person we now know him as. (Also, if you are reading this Lennart, fuck you).

        Ubuntu ended up carrying a patch simply to remove this inappropriate language, I never checked if it was eventually cleaned upstream or if other distros also removed it.

        EDIT: I just checked, and it was eventually removed in 2011 [2]

        [0] https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/44...

        [1] https://lists.freedesktop.org/archives/pulseaudio-bugs/2009-...

        [2] https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commi...

        • pbhjpbhj 78 days ago
          Based only on your post I'm confused. You better a person for including "weird shit" in an error message. But the on a pubic forum tell them "fuck you".

          On the basis of profanity alone, your action seems far worse than their's?

          • Daviey 78 days ago
            This is a community, not an end user facing error message for a product for the public used by millions of people.

            I can use profanity in my communication, but I would never put foul language in an error.. same as I wouldn't in documentation or a formal letter.

            Just imagine a pop-up dialogue box on Windows or OSX showing an error with "Weird Shit!" in it. Could you?

            • Izkata 77 days ago
              It would be less scary than "...has performed an illegal operation" was to non-technical users.
            • beeboobaa3 78 days ago
              I can, and it'd be pretty funny. Better than "Something went wrong!".

              Why does it upset you so?

              • Daviey 78 days ago
                It wasn't me that raised the original bug, but a user. I didn't say it upsets me, but I do consider it unprofessional for a product.

                So tell me, why would it be "funny"? Are you, or have you ever been responsible for content end users might see?

                • serf 78 days ago
                  I don't think it's funny , but I do feel it's entirely more palatable than "WOOPS SOMETHING WENT WRONG <cute_dog_picture.jpg>" scheme that Amazon and other dotcoms use.

                  Regardless, the Lennart tirade added into the anecdote really just convinces me that the anecdote is there purely for axe-grinding.

                • beeboobaa3 77 days ago
                  Because it's practically identical to "Something went wrong!" but different and unexpected, which makes it funny. I don't know. Can you really explain what exactly makes something funny?

                  > Are you, or have you ever been responsible for content end users might see?

                  Yes. I don't do such things because of curmudgeons like yourself. But as a user I wouldn't mind at all, and think it's funny.

        • homebrewer 78 days ago
          What "reputation"? He's disliked by a very loud minority, the rest of us don't care. I will take someone like Poettering who's actively solving decades-long problems over a useless "professional" any day of the week. He's effective because of his bullish personality.
          • Daviey 78 days ago
            Either you know about his "reputation" or you don't.

            Those that have never interacted with him don't care, I agree (I mean, why would they?). But those that have, i'd suggest is a minority that can tolerate him.. but ho-hum, neither of have statistics on this so we'll never know.

            When I met and had discussions with him in 2007 he was mild and seemed to be constructive, i'd suggest his "bullish personality" became more prevalent with time.

            • majewsky 77 days ago
              I met him once in 2012 and ate dinner with him and Kay Sievers. I agree to your observation about "mild" and "constructive", and will extend by saying that he appeared to me as someone fiercely focused on technical challenges. Therefore the "please don't waste my time" bit further up the thread appears to me totally in character for him. Lennart is really similar to Linus pre-2018 in that regard.
          • speed_spread 78 days ago
            There's no correlation between effectiveness and rudeness. Some people are effective _despite_ being assholes.
            • tbrownaw 77 days ago
              > There's no correlation between effectiveness and rudeness.

              Ineffective assholes are nonentities. Therefore all assholes worth noticing are effective, and all ineffective people worth noticing are nice.

              I believe there's a name for this effect, but what it is escapes me at the moment.

              • FabHK 77 days ago
                It's Berkson's paradox:

                > Berkson's paradox is a false observation of a negative correlation between two desirable traits, i.e., that members of a population which have some desirable trait tend to lack a second. Berkson's paradox occurs when this observation appears true when in reality the two properties are unrelated—or even positively correlated—because members of the population where both are absent are not equally observed.

                https://en.wikipedia.org/wiki/Berkson%27s_paradox

            • consteval 77 days ago
              No, there's a strong correlation between leadership and being bullish. Because in order to get what YOU want done YOU have to advocate for yourself - other people won't advocate for you. Being stubborn is a type of advocacy.

              People will claim it's unprofessional, and it is. The problem is that when other's are also unprofessional you can't convince them by being professional.

              If you look at who moves up the social ladder fastest and retains their power the longest, they are typically hard-headed people. The have an almost unreasonable amount of confidence in themselves, and in many ways they are delusional.

              However, I would argue such a personality is better than being timid. Ultimately, past the computers and the programs we are humans, and human effects come into play. Success is not just measured by correctness; it's measured by perception.

              • mistrial9 77 days ago
                there is no simple way to dissect these inter-related statements, but from my point of view, no. Plenty of people here have dealt with serial abusers, which is being defended as "ends justify the means" above
                • consteval 77 days ago
                  To be clear there's a far, far gap between being abusive and being bullish. It's quite immature of you to make that leap and use that to paint me as pro-abuse to discredit my argument.

                  You could instead provide a real argument, not "well what you say is used to defend abusers!"

                  Yes, and famously Hitler wanted economic strength for his country. I guess wanting economic strength makes you Hitler? ... wait no, definitely not.

                  I don't have patience for these weak types of arguments. Saying nothing at all is free and easy, I would look into that more if I were you. Seems more your pace.

                  • tacitusarc 77 days ago
                    I find the content of your statements reasonable, but the ad hominem really undercuts the message.

                    Many years ago, someone replied to me saying, “you’re right, but your comment is so abrasive,” and that really stuck with me.

                    Humility and grace can go a long way, even in internet conversations.

                    • consteval 77 days ago
                      To be fair, my argument was taken in such a ridiculous and offensive direction I felt it necessary.

                      It's one thing to think I'm wrong, it's another all together to warp my argument to make me appear crazy. Or pro-abuse. Or whatever. That, to me, isn't in good faith and I quickly lose the motivation to be kind. I work under the assumption the people I talk to aren't stupid, they're aware of what they're doing. I won't extend pity or give people the innocence of a child. In my eyes, that is even more offensive.

          • toyg 77 days ago
            > Poettering who's actively solving decades-long problems

            He's doing that only because it's his job: his employer has an agenda (i.e. steering Linux fast enough and disruptively enough at a low level, so that serious competitors cannot arise), and he's implementing that agenda without a care in the world.

            Would I personally take such a ruthless mercenary over more community-minded folks? No.

        • sgarland 78 days ago
          The larger WTF here is a developer thinking that Linux having audio problems is weird.
        • snapcaster 77 days ago
          This seems so fragile and prudish. I can't imagine having any other reaction beyond chuckling and moving on
      • PhilipRoman 78 days ago
        Lol, at $work there is a big list of forbidden words, I was not aware of it until I created a pull request containing the phrase "bad packet". Turns out "bad" is in the list, along with stuff like "workaround", "hard-coded", and also a huge list of every slur and vaguely sexual term known to man, some of them oddly specific like "son of a motherless goat". Learned a few new words myself that day...
        • arethuza 78 days ago
          I remember reading a great story about someone doing embedded development who was doing something like download firmware onto a device and being told "Checksum is bad"...

          After much checking it was realised that this was because the checksum literally was 0xBAD....

        • johnisgood 78 days ago
          Why is "bad", "workaround" and "hard-coded" are on the list of blacklisted words? Sounds kind of dystopian; just because you forbid a word from the dictionary or remove it, it does not solve the underlying issue.
          • HanClinto 78 days ago
            My guess is it's about client perception (and perhaps even admission of guilt).

            My first encounter with this was as a young developer at an electronics manufacturing company. When discussing a request from a customer to change a particular undesirable behavior of the device, I referred to this as a "bug" in an e-mail to them.

            I was quickly reprimanded / corrected, with the explanation that -- while "bug" is a somewhat innocuous term to engineers, to non-engineer types it brings to mind a whole host of bad images, fears, and can lead to canceled contracts under the premise that we've delivered bad-faith product. I was initially very resistant to this idea, but I've seen the wisdom in this as I've matured as an engineer over the past 20 years since this run-in.

            For a related example, it reminds me of this issue that was opened on llama.cpp by a user who was concerned that the software had been "hacked":

            https://github.com/ggerganov/llama.cpp/issues/33#issuecommen...

            > Hey, I was reading your Readme.md and I saw that your repo was hacked. I want to ask what this means and wanted to check if the users like me also get the impact of hacking. Or, this is not the thing I should worry about?

            Of course, the repo was not hacked -- but the founder of the project mentioned that it had been "hacked together" (as a term of humility / self-deprecation) and some users got the wrong idea of what he meant by that.

            So I don't think this is about censorship, so much as good public relations. "Don't spook the horses" -- not all words mean the same things to engineers as people whose perceptions of technology are shaped more by movies and headlines.

          • Anthony-G 78 days ago
            Dystopian for sure: I’d wager that if the code-base lives long enough and the pool of developers is large enough, they will start using Newspeak words such as “ungood” or “doubleplusungood” – or other synonyms for “bad” – to work around the blacklist.
            • dotnet00 78 days ago
              You mean to work around the ungoodlist :)
              • geoduck14 78 days ago
                You joke, but the phrase "black list" isn't allowed where I work. It contains "black," which has racial connotations. We use "block list" instead. I didn't realize the connection to Newspeak until now
                • dotnet00 77 days ago
                  Yes, a lot of dumb little "American political brainrot" like that has been getting pushed in places.

                  Another example is GitHub changing the default branch name from master to main due to their perception that the existence of a master implies the existence of slaves.

                  • kevin_thibedeau 77 days ago
                    Electronics protocols are getting a newspeak renaming with sometimes humorous results when you see documentation where mass search-and-replace mangled a substring or they forgot to replace the bad words in all caps.
                    • PhilipRoman 77 days ago
                      This gem comes to mind: https://github.com/rust-lang/rust/pull/95508/files/76cf1e1e4...

                      Reads almost like a haiku

                           struct Simba {
                          -    mother: u32,
                          -    father: u32,
                          +    parent: u32,
                          +    parent: u32,
                           }
                           "I don't think this will compile"
                      • FabHK 77 days ago
                        Brilliant. The bot also replaced

                            // trust that the user knows what s/he's doing. 
                        
                        with

                            // trust that the user knows what s/they's doing.
                        • erik_seaberg 77 days ago
                          I'm still peeved about the bot that scolded us for the word "Mastercard," which was not only a household name but also an enum value on the wire that payment processing absolutely had to support.
                  • jacoblambda 77 days ago
                    okay so as much as people like to meme on the whole banning blacklist/whitelist thing, it actually makes things clearer to just say blocklist/allowlist, especially for non-native speakers.

                    People got grumpy about master/slave being replaced with server/client, superior/subordinate, leader/follower, and similar terms but that actually largely benefits as well in that it makes things clearer. Anyone who has dealt with bus protocols that support the more complex "multi-leader" setups or peer-to-peer setups knows how the master/slave terminology can be confusing and potentially limiting in accurately describing the parts of the system.

                    And the git master/main thing also is more a matter of just making things easier to pick up. Master can be confusing there for the same reasons it's confusing in bus topologies. Main instead is obvious. It's the main/mainline branch of the project. And that also helps set the divide for main vs feature vs maintenance branches (and release tags).

                    So yeah some of it was done under the guise of politics but that's generally been more about getting an excuse to make the change without people dismissing it rather than the underlying reason for the change to happen.

                    • dotnet00 77 days ago
                      I tend to not really notice whtever slight cleanliness/communication improvement any of these changes add (this is probably just a me thing).

                      So, putting politics aside, I don't really care as long as it isn't breaking existing stuff. My only point of contention has been the politics behind some of the pushes.

                  • jrockway 77 days ago
                    2 fewer characters to type every time you switch branches. I can’t complain.
                • snapcaster 77 days ago
                  Aren't blocklist and allowlist strictly better as terms? Black and white (even ignoring the connotations) require at least one level of indirection compared to explicit terms that describe what they are
              • Anthony-G 74 days ago
                Mea Culpa :)

                I actually agree with some of the other commentators that "blocklist" is probably a better term but it’s not easy to start using a new term instead of one I’ve been used to for decades.

          • nuancebydefault 78 days ago
            I don't like the 'bad gateway' Http response. I'd rather it'd find the good way and show me the freakin' website /i
          • secondcoming 77 days ago
            "blacklist" is also blacklisted
        • int_19h 77 days ago
          In some places, those lists are even more extensive as they include transliterations of profanities in all the various languages the product is ever localized in.

          Sometimes this leads to embarrassing issues. I remember one case where a Chinese guy named Hui was unable to make a blog post on his team's official public blog. Turned out that his name was on the list of banned words because of https://en.wiktionary.org/wiki/%D1%85%D1%83%D0%B9#Russian

          • LorenPechtel 76 days ago
            Somebody needs to study the Scunthorpe problem.

            I was trying to explain to my wife where something was. In the [profane word for vagina] section. The B section.

    • laurent_du 78 days ago
      This reminds me of the classical episode of the Onion "Is The Government Spying On Schizophrenics Enough?".
    • pcl 78 days ago
      I use ##### along with a git commit hook that rejects commits adding such text.

      I like the 5 pounds because they are visually easy to find on the screen, too.

      • projektfu 78 days ago
        Also prevents getting too deep in your markdown outline structure.
      • throwawayk7h 78 days ago
        I use DONOTCOMMIT the same way.
    • sensanaty 78 days ago
      Lol I remember early in my career using "fuck" and "cock" a lot for debugging. Very quickly learned to not do that, I instead replaced it with "banana" for the most part
      • wraptile 77 days ago
        banana has been there with me from the beginning! There's something weirdly satisfying about this particular word - the spelling, the sound and just sheer siliness just has a calming effect.
        • TRiG_Ireland 77 days ago
          To quote Sir Terry,

          Nanny Ogg knew how to start spelling 'banana', but didn't know how you stopped.

        • twic 77 days ago
          And for fine and trace logging, you've got bananana, banananana, etc.
      • johnisgood 76 days ago
        Going through one file:

            IMPORTAAAAAAAAAAAAAAAAAANT
        
            _F for functions.
            _H for headers.
            _V for fuck knows.
        
        There are funnier ones but I am lazy. :P
    • varjag 78 days ago
      I remember a colleague leaving a debug popup "fuck is wrong with the data" in a product outsourced to us. Naturally it popped during the customer demo, in presence of someone like Germany's minister of something.

      We had a good laugh; the dude was fired on the spot tho.

      • veunes 78 days ago
        It’s one of those mistakes that’s hilarious in hindsight for everyone except the person responsible
    • wonnage 77 days ago
      Twitter was working on streaming with chunked encoding, which resulted in this: https://x.com/ryankuder/status/474658110737371136
    • evilc00kie 78 days ago
      Well, maybe I shouldn't use "Hello" by Adele either for the same reason ^^*
    • Philadelphia 77 days ago
      I always use “elephant” as my debugging statement, since it’s unlikely to come up in the code and easy to search for when you need to remove it, and also pretty innocuous. If you’re writing software for zoos, you might want to try something else, though.
    • systems_glitch 78 days ago
      Ugh, we had a FNG that did debug things like that at a previous job. His "humor" got exposed to the client several times.
    • xnorswap 78 days ago
      This is why I enjoy writing C#/.Net, I don't need to deal with nonsense like print debugging.

      I don't think I'd be anywhere near as productive without:

         - Conditional breakpoints
         - Debugger.Launch 
         - Debugger.Break
         - Debugger.Write 
      
      
      Conditional breakpoints are essential, just run as normal and it'll only break when your bizarre edge case is hit.

      Debugger.Break and Debugger.Launch are like a breakpoint that gets hit even when you're not debugging, and prompts you to attach a debugger. ( Launch won't pause if you already have one attached, but especially useful when you want to attach to a start-up routine in an IIS hosted web-app. )

      Debugger.Write writes to a different output stream, and like all Diagnostic.Debug statements, isn't even compiled into release builds, so there's zero chance of it ending up in prod.

      These are essential tools for rapid debugging. Printing nonsense and hoping to spot it feels 20+ years out of date.

      • dotnet00 78 days ago
        There are endless numbers of cases where you can still end up having to just resort to print debugging, even in C#. Race conditions are a great example.
        • chris_pie 78 days ago
          you can configure the breakpoint to log stuff to the console, instead of breaking
      • throwaway2037 78 days ago
        Real question: Does Java have equivalent methods? I have never seen them.
      • rglullis 78 days ago
        Get off your .NET high horse. Every reasonably mature language has powerful debuggers.
        • xnorswap 78 days ago
          Well indeed, I could have said, "this is why I enjoy working in a mature environment". .NET just happens to be my experience.

          The point I was trying to make is that you shouldn't be print debugging in 2024.

          • rezonant 78 days ago
            Unfortunately it is not always possible to debug for a myriad of reasons
          • appendix-rock 78 days ago
            Yawn. I’m all but certain that all the environments in these “print debugging fail” stories have debuggers. The fact that generation after generation of programmers fall into print debugging, despite there being “no reason” to do it in many contexts for…decades at this point, should tell you that you’re missing something, not that everyone is dumb except for you.
            • xnorswap 78 days ago
              I'm not saying people are dumb, I'm saying we've failed to provide good dev UX for debugging, so that people find it easier to reach for print debugging than leverage their debugger.
              • xnorswap 78 days ago
                It's also clear I got the tone of my original post wrong, I was always trying to make this point, not some point scoring "I'm better because I use X".
                • ziml77 77 days ago
                  FWIW I didn't get the feeling at all that you were trying to come off as superior because you use .NET and its debugger.
        • neonsunset 78 days ago
          Does the GP comment claim that other languages cannot have similar quality of tooling? Why reply with a swipe?
        • high_na_euv 78 days ago
          I wish it was true

          My experience in cpp is 5 times worse than in .net

        • alfiedotwtf 78 days ago
          I still haven’t found a good way of debugging async code that also has timing restrictions…

          .., the world runs off print statements sprinkled throughout by a very frustrated and angry developer

      • ploynog 78 days ago
        Cool story bro. Let me tell the guys at work that we should just run .NET on our multi-core digital signal processors.

        And we should also teach them not to get their delicate timing out of whack because they'll immediately stop dropping incoming samples if any of them gets interrupted by a debugger.

        I'm sure everyone will be delighted.

    • dbmikus 77 days ago
      I used to debug with curse words until I accidentally pushed one of those into the company's open source repo and then we went and did some `git push --force` to scrub it from history.

      Now I just use my initials at the start of a debug line.

    • veunes 78 days ago
      This sounds like one of those lessons you never forget - the hard way!
    • matheusmoreira 77 days ago
      I gotta ask... Is the patient alright?
    • VBprogrammer 77 days ago
      Yeah, someone did that at a place I once worked with the C-word in some JavaScript debug logs. Never put anything in the code, no matter how temporary, that you would be embarrassed to have appear to a customer.
    • FuckButtons 77 days ago
      I just have a snippet that prints “DEBUG”, easy to grep for.
    • LorenPechtel 76 days ago
      I always start them with "Woof".
    • searealist 78 days ago
      [flagged]
  • sambeau 77 days ago
    If your software is free and the maintainers aren't getting paid then a few Easter eggs are a small price to pay.

    Colin was being paid, of course, but not primarily for maintaining man.

    Having said that, I once worked at a company (incidentally one where Colin worked, though after he'd left to join Ubuntu) where a developer added a line to the T&Cs that meant that a user granted their soul to the company. The intention was to check if the execs/legals checked the T&Cs like they promised to. They did not. Many souls were captured.

    • eastbound 77 days ago
      It could make the entire T&C invalid.
      • alanbernstein 77 days ago
        Why, is the soul an established legal concept? Or just the fact that nobody checked the thing?
        • opello 77 days ago
          Presumably if the T&C didn't have a severability clause the impossible soul capturing part could be argued to invalidate the entirety.
          • lolinder 77 days ago
            Do any T&Cs not have a severability clause? I'm not a lawyer and have written exactly one semi-legal document ever, but even I knew to put one of those in.
        • eastbound 77 days ago
          No, it’s the fact that someone is joking in the ToS, proves that no-one can take it seriously. It would require a phrase like “If any term is considered invalid, it doesn’t invalidate the others”, but even this sentence is not always applicable.
  • larodi 78 days ago
    Coding must be fun, using code too. Guys did right. This whole idea of opensource having to be coldstone serious is only because of corporations running it. But you see, when a program is being written by myself and my brov, I'd put easter eggs all over it, just ot remind people there were people on the other end of the line.
    • bauerd 78 days ago
      >I'd put easter eggs all over it, just ot remind people there were people on the other end of the line

      Most people won't come across your Easter egg since it's hidden. The ones that do encounter it will likely stumble over it, as did the OP, who had their CI pipeline broken. I think easter eggs are a poor tool to "remind people there were people on the other end of the line".

      Edit: at least outside of entertainment software

      • fkyoureadthedoc 77 days ago
        Oh no, anything but the pipeline run!
      • mrguyorama 77 days ago
        If your build pipeline depends on "man -w" and you don't work on man, the easter egg wasn't the problem.
        • Denvercoder9 77 days ago
          I guess you could have an integration test that validates that your installer puts the man pages in a directory that man searches in? It's a bit far-fetched but also not entirely outlandish.
        • rendall 77 days ago
          Agreed. I'm really trying but failing to come up with a non-screwed-up scenario where this Easter egg legitimately breaks a well-planned testing suite.
      • Nifty3929 77 days ago
        This! Is it illegal to have a sense of humor or something? Must everything be serious, when the consequences are essentially zero?

        Some of these old easter eggs are great, and I don't think we do enough of that anymore.

      • seabass 77 days ago
        Running `man` without any arguments is a fine place to put an easter egg, though. I'm glad this at least stayed there and was only removed from `man -w`.
    • Etheryte 78 days ago
      Yeah, definitely agreed, there's few things as fun and satisfying as a well hid easter egg. Doubly so if what you're working on is surrounded by a lot of red tape. My personal favorite is a Rick Roll I managed to hide in the source code of a government application I helped fix years ago on a consulting gig. The only way you'd find it is if you're a developer working on a very specific subsystem, but if you do find it, you'll know why it's there from the context.
    • morning-coffee 77 days ago
      One man's funny easter egg is another man's non-deterministic trigger for errant behavior in their workflow with possible real-world consequences, I suppose...

      Yet another reason I have a hard time trusting software that is the product of integrating many disparate pieces with different engineering processes into something used in any life-safety or mission-critical application.

      • kibwen 77 days ago
        If you want serious software, then pay for it.

        If you want free-as-in-beer software, you'll take what I give you, easter eggs and all.

        Anything else is just entitlement.

        • chgs 77 days ago
          Absolutely, if you’re precious about it review the code, remove the lines, and away you go.

          Your pipeline will error with an unexpected result from man, you can grep the man code for “gimme” and remove it in 2 minutes, far quicker than reading a man page.

          I miss the Linux world of the 90s before all the money grabbers came. I accept I’m in a tiny minority, and that would be fine. Sadly corporate interests overwhelm the ecosystem now.

        • retsibsi 77 days ago
          You can have, and share, opinions about a thing without feeling that you're 'entitled' to have it conform to your wishes! I'll take it or leave it, but I'll also feel free to say what I think about it (within bounds of politeness and decency).
        • __MatrixMan__ 77 days ago
          I have skepticism for anything that has a free/paid tier. The reduced functionality version has typically been gimped in a way that doesn't make much sense. You end up with cases where the button for the paid functionality is just missing so users don't even know that the thing is possible... and other such problems. It ends up feeling rather 1984. But I'd respect a maintainer who had a paid tier which differed in some kind of goofy way:

          - the free version does something goofy at 11:11, but works fine otherwise

          - the paid version is identical to the free version, but it doesn't do anything goofy at 11:11

          Of course it would be trivial to just do this:

              if time.now() == time(hours=11, minutes=11):
                  sleep(60)
                  freeversion()
          
          But if you've got a pipeline which absolutely must not fail then you should probably be paying the maintainer. Hacking around the easter egg would hopefully feel enough like an admission of guilt to just talk your boss into paying.
        • Ekaros 77 days ago
          I wonder how many paid for Linux distributions patched this out? As surely they have reviewed all pieces of code for exactly this sort of malicious behaviour.
        • larodi 76 days ago
          Indeed. This... like expectation that free programs should work the way somebody other than the author expects it, and particularly when it comes to opensource, which is most often made available under no promises and liabilities, seems from the side as some sort of cognitive dissonance mixed with a little too much self-centeredness.

          Even though the e.egg broke s.o.'s pipeline, it should yet be celebrated. Why? Cause otherwise you get libfuse's author rage quitting over endless pressure on himself and his codebase for little fun and no profit.

          Easter eggs are much less invasive and nasty compared to mid-video yt ads, which the world gladly takes alongside free content, including people who hate having their pipes tweaked with. Besides, there is enough evidence internet and the whole computing business works on workarounds and now with LLMs - on pure chance.

        • bloppe 74 days ago
          I agree that nobody has any business making any demands of FOSS maintainers whatsoever, but at the same time, software that's full of jokes (especially ones that cause code health problems) will be treated as a joke
      • Denvercoder9 77 days ago
        > non-deterministic trigger

        This easter egg was entirely deterministic, though.

        • bloppe 74 days ago
          Depending on how closely you look at it, literally everything is deterministic.
  • thih9 78 days ago
    Note that it’s no longer there.

    > The developer of the man-db, Colin Watson, decided that there was enough fun and the story won't get forgotten and removed the easter egg completely.

    https://git.savannah.gnu.org/cgit/man-db.git/commit/?id=b225...

    • cyptus 78 days ago
      at a discussion about this issue i read a comment which i cant find right now but was very beautiful. It was saying that we should keep easter eggs like this, because in the end this is what differs us humans from machines.
      • Cthulhu_ 78 days ago
        Which is valid. But it's also valid that certain systems should work consistently and reliably. I mean in this case it seems mostly harmless, but in a hypothetical scenario a hacker needs to fix the production system of a hospital after a major disaster but needs to look up the docs for a command aaand... "gimme gimme gimme" shows up. No internet either.

        I'm all for easter eggs (and haven't added one in forever, maybe unit test test strings), but they shouldn't interfere with regular operation. This particular one could've been updated to only trigger for a certain command, for example.

        • thih9 78 days ago
          > in a hypothetical scenario a hacker needs to fix the production system of a hospital after a major disaster but needs to look up the docs for a command aaand... "gimme gimme gimme" shows up. No internet either.

          I thought the easter egg only occurs when man is called without arguments.

        • itsoktocry 78 days ago
          >but in a hypothetical scenario a hacker needs to fix the production system of a hospital after a major disaster but needs to look up the docs for a command aaand... "gimme gimme gimme" shows up.

          What obligation does a developer/maintainer have in this situation? If the hospital is using free/open source code, it's on them to understand how it works and how to fix it.

        • bongodongobob 77 days ago
          Then fork it and maintain it yourself, that's the beauty.
        • chgs 77 days ago
          this ain’t the movies bruv
      • umanwizard 78 days ago
        I’m sure I’m a human and not a machine. I even enjoy art and humor. But I think Easter eggs are cringey and not funny in the vast majority of cases.

        It’s just a difference in personality. Claiming that liking Easter eggs is the essence of humanity is a pretty extreme exaggeration.

        • itsoktocry 78 days ago
          >Claiming that liking Easter eggs is the essence of humanity is a pretty extreme exaggeration.

          Claiming that the parent claimed that easter eggs are "the essence of humanity" is an extreme exaggeration.

          • fkyoureadthedoc 77 days ago
            Not surprising coming from someone trying to bully people out of doing something they like by calling it cringe though.
            • umanwizard 77 days ago
              I'm not trying to bully anyone out of or into doing anything. Just expressing an opinion.
        • K0balt 78 days ago
          You need to report to lizard HQ to get your personality simulator recalibrated immediately. You are risking exposing all of us.
    • m463 78 days ago
      I just tried it on an old raspberry pi and it is there. (based on debian 9 stretch)
      • thih9 78 days ago
        This can be your reason to update to a non-EOL system.
        • m463 77 days ago
          or the humorous reason not to bother. :)

          (lol, this is not a mission critical, internet connected system)

          • thih9 77 days ago
            Looks like you're fine with not getting updates, you get to enjoy the easter egg then.
      • blahyawnblah 78 days ago
        You can't really expect that old of a version of Debian to be up to date
  • dang 77 days ago
    Related:

    Why does man print “gimme gimme gimme” at 00:30? (2017) - https://news.ycombinator.com/item?id=27994194 - July 2021 (211 comments)

    Why does man print “gimme gimme gimme” at 00:30? - https://news.ycombinator.com/item?id=15747313 - Nov 2017 (159 comments)

    Why does man print “gimme gimme gimme” at 00:30? - https://news.ycombinator.com/item?id=15746972 - Nov 2017 (1 comment)

    Why does man print “gimme gimme gimme” at 00:30? - https://news.ycombinator.com/item?id=15742221 - Nov 2017 (1 comment)

  • HackerQED 78 days ago
    A fun idea, but it should not be put in the ordinary flow. It will hurt users.

    `man -abba` would be nicer, as the author said in the original post.

    • kevincox 78 days ago
      The first answer explains that it was only supposed to trigger on error cases (no page specified) but due to an oversight also triggered if you specified a man page by the --path flag (rather than just the page name)
    • DonHopkins 78 days ago

        $ man --abba --format=json
        ["gimme", "gimme", "gimme"]
    • thih9 78 days ago
  • addaon 78 days ago
    This update broke my workflow!
  • joemi 77 days ago
    I set up FreePBX at my work when we got rid of our old phone system. We don't need a lot of extensions, so I just used 1xx, 2xx, and 3xx for difference types of extensions and had plenty of numbers leftover for future purposes with those. So I figured to add a little easter egg if anyone ever calls the 666 extension: it plays a clip of Vincent Price's terrifying laugh from the end of Michael Jackson's Thriller.

    Well, a year or two after I set that up, I got a text early one morning from a coworker who said the phones must have been hacked because they're not working right and whenever they try to call anywhere they hear a scary voice. When I took a look, it turned out that something went wrong somehow and all calls were getting forwarded to the last extension I added, which was 666. Needless to say, people weren't amused by my intended easter egg and felt insulted by the laughter.

  • tempestn 78 days ago
    Anyone have a hypothesis why there would be a test that calls man without arguments? Is the goal just to check that man is installed? Even so, you'd think you'd test the command as it's normally used...
    • kevincox 78 days ago
      Reading the answer it seems that the easter egg accidentally also triggered if you pass the page to load via --path. This was then fixed later (and then even later the whole easter egg was removed).
    • caymanjim 77 days ago
      I'm pretty sure the Stack Overflow question was contrived nonsense just so the other dude could tell his story in public.
    • int_19h 77 days ago
      It's discussed extensively in the comments on the linked SO question. The short answer:

      > Because we wanted the "manpath" - 'man -w'

    • Ekaros 78 days ago
      Automated test that verifies something like just build image installs correctly and man produces expected output?
  • sebstefan 78 days ago
    I feel like you can trust `man` to give you exit codes that make sense if you want to determine whether it exited correctly or not

    It's always shakey to use the length of `stderr` for that

  • xattt 78 days ago
    I had a QNAP Celeron NAS where I installed Ubuntu because it was out of support.

    The trouble was that it threw a kernel panic at certain times of the day. I troubleshooted it to no end - reinstalled Linux, did an EFI update. I chalked it up to something I did because I was running 16 GB of RAM when QNAP said max RAM was 8 GB.

    Fast forward to this year, and it fails to load up completely.

    It turned out that it was a silicon degradation bug that was a problem with J1900 devices.

    I wasted so much time over the years trying to troubleshoot something that I could not fix…

    • userbinator 77 days ago
      There is a hardware workaround for those. Involves a little bit of soldering.
      • xattt 77 days ago
        I did and it didn’t bring it back. It was its time…
    • bluedino 77 days ago
      The best part of stuff like this is all of the other stuff you fixed that you didn't know were broken or wrong, and all the things you learned along the way
  • lockedinspace 78 days ago
    Love these easter eggs, makes you not forget we are all humans
    • veunes 78 days ago
      Exactly! They're like the bloopers of the tech world
  • BLKNSLVR 78 days ago
    Almost totally off topic, but I love the scenario.

    Great song to roller disco to. Great beat, great build up. Prior to taking up roller skating (inline) I wouldn't have given the song much credence, but I get a little surge of adrenaline just thinking about having weaved through crowds of noobs with this song pumping.

  • Sparkyte 78 days ago
    Easter eggs like this show the quality of the work. Very charming and awesome!
  • elif 78 days ago
    Did ANYONE have "automated man calls" on their devops bingo card?

    I still don't understand what they were trying to accomplish...

    • 4gotunameagain 78 days ago
      If you read the linked question, they say that they were testing the output of "man -w" which prints the path of man pages.

      I can easily see that as a test for deployment image generation where you want to fiddle with the available man pages and test whether they will be accessible.

      • elif 76 days ago
        Who even installs man on production and why though... Gotta be some janky dev-on-prod situation.
        • 4gotunameagain 76 days ago
          Maybe you are building images for your employees to use while developing ? Maybe you are building an educational distro image that is accompanied with your product ?

          I can think of many things, so who knows.

    • dbtablesorrows 77 days ago
      I can imagine using man to generate random but realistic text in a test.

      MANROFFSEQ= MANPAGER=cat man sprintf

      • dbtablesorrows 77 days ago
        Turns out this gives some unprintable characters.
  • waynecochran 77 days ago
    The ABBA song instantly came into my mind the second I saw it -- I am truly a child of the 80's.
  • worstspotgain 78 days ago
    Narada Michael Walden came to mind, instead of Abba. Guess I'm both too old and too young.

    https://www.youtube.com/watch?v=OrnUuXiVgBc

    Edit: It's also a way better song, no wonder I remember it better.

    • jeltz 78 days ago
      No idea what you mean about being too old and too young. The ABBA song is from 1979 and the Narada song in 1985, just 6 years later.
      • worstspotgain 78 days ago
        Too young to remember Abba's song when it was new, too old to not remember Narada's song and get confused by it.
  • karaterobot 77 days ago
    More easter eggs please, not fewer.
  • AStonesThrow 78 days ago
    Because you can tune a filesystem, but you can't tune a fish.

    https://unixhistory.livejournal.com/1808.html

  • LordHeini 77 days ago
    Am I the only one to think that this is so incredibly sweet?

    More software should have these nice little things to remind us stupid little humans of our weird but oh so important humanity.

  • sirsinsalot 78 days ago
    I know someone who was on a team whose proprietary software was decompiled and it still contained the code comments.

    They were made public. They were horrific. Assume all code may become public.

    • jajko 78 days ago
      Depending on language/compiler this is normal, ie Java decompiled will contain all comments.

      Idiots using nasty comments or test data and then this leaking to management or users is nothing new, always a fireable offense showing immature behavior and lack of professionalism, something any company desperately need in software devs.

      • trashburger 77 days ago
        Bet you're real fun at parties.
  • hirsin 78 days ago
    It's not my first time seeing this, but I'm struck by some disappointment in the legacy of OSS here. The author clearly understood what was happening enough to post this to the unix SO - but not enough to find the `man` code and grep for the string that had to be present? I'll admit I don't immediately know where to go to look for the source code, but I can't imagine it's some tightly held secret address to a file share somewhere.

    Alternatively - maybe it wasn't the difficulty of finding it but the (perceived?) difficulty in requesting that it be changed?

    E - maybe the likely alternative is the "the customer has nukes so please fix it" entitlement? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95644#c4

    • strken 78 days ago
      I don't see Bill as doing anything wrong here. Given that he works for Cray on their own Fortran compiler, it seems reasonable that he would be allowed to report bugs in the competing product gfortran but not allowed to actually fix fix them, and that he would ask a question knowing full well that the answer would be "fuck you, pay me" just to be able to truthfully report that back up the chain.

      The nuclear-armed client seems entitled, but I don't think he necessarily is.

      • eloisant 78 days ago
        Nukes or not, telling open source developers "the customer is asking for it" twice is either entitled or very ignorant.
        • coldpie 78 days ago
          I spent years working on open source and I disagree. Politely nudging bugs is fine. Sometimes things fall through the cracks, and a quick prod will get someone's attention to take the time to go fix it. We do actually want to fix bugs for our users, after all. It is very easy to nudge bugs impolitely, so do this with extreme caution, but I don't think Bill stepped over the line in that issue.
    • jdnbndhxb 78 days ago
      It's a nice anecdote, don't think too much about it
    • gavindean90 78 days ago
      What does this have to do with the link?
  • rcarmo 78 days ago
    Oh man. I read the title and had immediate ABBA flashbacks, which I think kind of dates me…
    • noja 78 days ago
      Read the article...
  • martypitt 78 days ago
    What a lovely, civil exchange. (I hope that the tone on the socials at the time was just as civil).

    Developer plants an easter egg. It was a good one ... and it was a reasonable assumption it wasn't gonna break anything. Several people have a good chuckle. Someone gets affected negatively by it, so the developer says, "fair play, that wasn't the intent, let's remove it". Everyone hugs it out and moves on.

    I have no idea if this was the full story, or if his Twitter was aflame with negativity, but I imagine if this happened today, the tone would be much more combative than the exchange on the Stack Overflow page (eg: this HN thread, which is full of 'Easter Eggs Bad! Bugs!') -- which is a real shame.

    If humour be the bugs of life, play on.

    • klez 78 days ago
      Consider that SE comments are heavily moderated. Unfortunately if you read the chat linked in the comments (which got moved from the comments section) it's everything but fun and games. Also apparently the developer who suggested the feature had to set their twitter to private because he was getting bashed for this.
      • bradley13 78 days ago
        That's a shame, but (sadly) not unexpected. Humorous people who take themselves far too seriously. The negativity was explained decades ago by the "Greater Internet Fuckwad Theory". Sadly, things have not improved.
    • mjmsmith 77 days ago
      Stack Exchange comments are where humor goes to die^H^H^Hbe moved to chat.
  • tlrobinson 78 days ago
    > Fixed in master: https://git.savannah.gnu.org/cgit/man-db.git/commit/?id=84bd...

    Waiting for the bug report that the fix broke someone’s workflow. https://xkcd.com/1172/

  • chriscjcj 78 days ago
  • thrdbndndn 78 days ago
    After reading the whole thing there seems to be no explanation why it was changed from 0001 to 0030?
    • ARandomerDude 78 days ago
      > Let's mention that the initial commit triggered at 12:01am. A followup commit changed that to 12:30am with the commit log message "half past twelve" which is again quoted from the same song
      • winwang 78 days ago
        But 12:30am is 30 past twelve!
    • blipvert 78 days ago
      Check the lyrics
  • unethical_ban 77 days ago
    I don't think the minority opinion would have won out of it weren't for social media.
  • kunley 77 days ago
    Pity the author removed it
    • justin66 77 days ago
      This joke only three people are ever going to see is fucking up somebody's automated tests but I'm going to leave it in anyway seems like it would have been a poor approach to take.
      • kunley 77 days ago
        I will raise a glass of wine for the good impressions of whoever at 0:30am is taking care of automated tests instead of a glass of wine.

        kidding, but also: please get the perspective..

        • justin66 77 days ago
          > please get the perspective..

          There are certainly different points of view here.

          I'd immediately take the easter egg out because I just assume if I hear about a bug once, I'm going to hear about it again. The selfish reason to fix any bug ASAP: it's an easy way to make life easier for my future self.

          And yeah, also, why fuckup someone else's tests needlessly.

          > I will raise a glass of wine for the good impressions of whoever at 0:30am is taking care of automated tests instead of a glass of wine.

          Automated tests.

          • kunley 77 days ago
            Are you serious?

            I mean, are you writing automated tests of /usr/bin/man ?

            • justin66 77 days ago
              I'm reacting to a Stack Overflow comment that begins "We've noticed that some of our automatic tests fail when they run at 00:30 but work fine the rest of the day."

              I don't know what you're doing.

  • feralchimp 77 days ago
    "gimme gimme gimme" from man after midnight, you say?
  • clintboxe 76 days ago
    Too many ABBA references and not enough Black Flag. I need some more. Don’t ask what for.
  • gregjw 77 days ago
    Evergreen post, this gets to the front page every 6 months at this point
  • moatel 78 days ago
    At 10:31 does it print "man man man"?
  • jll29 77 days ago
    Got a good laugh out of this post, thanks.
  • w4rh4wk5 78 days ago
  • krick 78 days ago
    I hate such "jokes" so much. I just need to say it. Obviously, me saying that won't change anything, I don't even believe there is a minor possibility that anyone reading this may remember it in the future and know better than doing something like that, but, really, I hate it so, so, so much. As if there's not enough semi-intended weird behaviors in all our systems. Of course, I won't pretend that I believe that if not for the things like that we could live in a world where technology actually exists to save our time, not to spend more time on maintaining technology. What a silly idea. The majority of people on this forum only exist to maintain the technology.

    But still, there's no more mind-numbing, infuriating, exhausting feeling, than to find out that a thing you were debugging for the last hour was supposed to be a "fun little joke". Fun? You know what's fun: when stuff just works. That's about the most fun thing there is.

    • tuyiown 78 days ago
      You’re so intense about it, I just want that there would be more right now !

      Generally people make way to much assumption about software behavior «just work» is easily confused with «works as I personally expected»

      You’re assuming too much, expecting too much, and get frustrated. I don’t think you deserve it, but I don’t think you have the right mindset about it either.

      • ozim 78 days ago
        Let’s not downvote the guy to oblivion.

        He is somewhat right. I think Easter eggs belong in computer games and user facing stuff like website or online forum.

        There shouldn’t be jokes in something like man or grep.

        • tuyiown 78 days ago
          Yes, he and you should not be downvoted, I agree, I fully understand how one can want to never be bothered by others playfulness.

          But I'm in the team that software is made by people, and that should be reflected. Jokes, like always, must be respectful to strangers, and strangers have to be polite and allow others to express themselves, jokes are not a trap.

          There definitely should be jokes in man and grep, it's just have to be of good taste (this one was good). We're not in a high stake diplomatic field. Removing all the jokes by principle is just giving in to the great consensus leveler that crushes humanity. Embrace humanity, don't crush it.

        • NikkiA 77 days ago
          There are literally dozens of easter eggs in VMS/OpenVMS, while DEC were many things, and failed at the market ultimately, I don't think anyone accused them of being unprofessional.
        • aniviacat 78 days ago
          Is man not user facing?
          • ozim 77 days ago
            If we define users as a subset of all users - by gamers and people who only visit websites or use web apps.

            But I expected it could be inferred from my post.

    • travisjungroth 78 days ago
      > The majority of people on this forum only exist to maintain the technology.

      That’s quite a belief and would certainly affect how you perceive easter eggs.

    • pantulis 78 days ago
      It depends on the particular easter egg. In this case, well, printing "gimme gimme gimme" after midnight is not that hard to catch and from what I understand it doesn't affect the basic functionality. I prefer to think of it as a kind reminder that software is written by humans, at least from the time being.
    • keybored 78 days ago
      This is OSS. So it is impossible to have a rational discussion on it here—OSS has the halo of No Warranties And If You Complain You Are Entitled. Including intentionally adding things that turn to break things in the most puzzling, Heisenbug-looking way.[1]

      [1] It doesn’t work after midnight???

    • wodenokoto 78 days ago
      HN is obviously not where you’ll find people sympathetic to this point of view, but in the grander scheme of things, the no-Easter-eggs attitude won out
      • appendix-rock 78 days ago
        The no-Easter-egg attitude ‘won out’c sure. There’s not much else you can conclude from that, though. Not even that it’s the popular opinion.
    • RHSman2 78 days ago
      Nothing more frustrating than being so offended, so easily.
    • _V_ 78 days ago
      Software bugs out sometimes. You cannot assume that everything will work as you expect even without easter eggs like this.

      If this triggers you so much then maybe, just maybe you chose the wrong career path. You know, all that "if you can't stand the heat, get out of kitchen. If you can't stand the debugging, ...." ;-)

    • wetpaws 78 days ago
      [dead]
  • prettywoman 77 days ago
    [dead]
  • jll29 77 days ago
    [flagged]
  • jll29 77 days ago
    [flagged]
  • snvzz 78 days ago
    [flagged]
    • arjvik 78 days ago
      Sad. I think more people smiled and had their day improved by encountering this bug than people who had their day ruined by debugging this.
      • hi-v-rocknroll 78 days ago
        Easter eggs are joie de vivre character against the tyranny of mediocre, boring doldrums and people who suck the life and joy out of everything cool and interesting, or can't grok art.
        • amiga386 78 days ago
          I agree. Also, Debian agrees, this is one of their most fundamental and important tools:

              $ apt | tail -1
                                                      This APT has Super Cow Powers.
              $ apt moo
                               (__)
                               (oo)
                         /------\/
                        / |    ||
                       *  /\---/\
                          ~~   ~~
              ..."Have you mooed today?"...
          
          Also, aptitude:

              $ aptitude --help | tail -1
              This aptitude does not have Super Cow Powers.
              $ aptitude moo
              There are no Easter Eggs in this program.
              $ aptitude -v moo
              There really are no Easter Eggs in this program.
              $ aptitude -vv moo
              Didn't I already tell you that there are no Easter Eggs in this program?
              $ aptitude -vvv moo
              Stop it!
              $ aptitude -vvvv moo
              Okay, okay, if I give you an Easter Egg, will you go away?
              $ aptitude -vvvvv moo
              All right, you win.
          
                                             /----\
                                     -------/      \
                                    /               \
                                   /                |
                 -----------------/                  --------\
                 ----------------------------------------------
              $ aptitude -vvvvvv moo
              What is it?  It's an elephant being eaten by a snake, of course.
        • ozim 78 days ago
          There are places where you can do art and places where there is no place for it.

          You can spray paint railway infrastructure - you still will be chased out and even might get shot at.

          If you do the same on random wall in the park you might at worst be scolded by someone and be chased out by police but most likely not shot at.

          Basic OS tools like man are more like railway infrastructure. So for me Easter eggs belong in games or something like restaurant web site or online forum like hn.

          • samatman 77 days ago
            The railway is entitled to paint its property however it wants to.

            By that logic, the maintainers of man, who hold the copyright, and merely license it to you, have the same right.

            Don't like it? They were generous enough to release it under terms where you can compile a fork without the joke in it.

            Apparently they decided that being harassed by humorless scolds was more hassle than just removing the joke. Many such cases.

            But it also sucks. Steamrolling all the whimsy out of FOSS sucks. Everyone who takes umbrage at whimsy and easter eggs, hassling maintainers about it, is a thief of joy.

            • ozim 77 days ago
              My argument is about “art” and then making an excuse that one can do everything because otherwise he is a boring dolldrum and thief of joy.

              It is also the same on HN if you make “witty comment” you are going to be sent back to Reddit so is HN community thief of joy and bunch of dolldrums?

              I guess not - but also not every easter egg is art and most are not and one we are discussing is pretty much “go on Reddit with that” level of art.

        • lukan 78 days ago
          Would you still think it is art, if you would have been the one to stay up late at night, fixing some mysterious bug, that turned out to be a joke?
          • eptcyka 78 days ago
            What specifically can this particular easter egg do to keep people up at night? If this easter egg breaks anything, I feel like the underlying issue is not the easter egg itself.
            • lukan 78 days ago
              The top comment seems like a real story here, about what can happen, if you expect a time, but don't get a time.

              The last thing you usually suspect, is that the system call is wrong. So you spend a lot of time investigating everything else. I like a good prank - they usually work by the prankster being around and ready to step in, if the joke goes too far. Not what happens, if you deploy the prank worldwide. There are worse things for sure, but still this is not something I can applaud. I wasted too much time on other useless shit. so I would likely not be amused having my time wasted some more by someone thinking he is funny.

              • eptcyka 78 days ago
                What time? What are you on about? The easter egg is invoked when man is invoked without arguments.
                • lukan 78 days ago
                  Then I might have missinterpreted the comment and issue.
                  • eptcyka 78 days ago
                    There was a bug where it was also invoked when using the `-w` argument.
          • dijit 78 days ago
            yes, I would have had a chuckle.

            And truthfully, a consistent repeatable bug, in software intended for human consumption (man in shell scripts would be at least a little weird, like vim in shell scripts) is not so bad really.

            And midnight isnt so late, I have a heritage of systems administration, all kinds of things happen at 3-4am; its a good feeling to debug and prevent them.

            • lukan 78 days ago
              I like working up late at night as well, but if the kids wake me up in the morning anyway, I don't want the night work to have been useless and avoidable.
          • mistercheph 78 days ago
            Yes, I’d probably laugh too. A person who becomes miserable because of a joke that unintentionally misdirects their task for the day, has mostly miserable days, and resents the world for every ounce of joy contained in it; and spills the bile in their heart back out as revenge for their daily suffering.
            • lukan 78 days ago
              Yes, there are people who have mostly miserable days. Do you think, they deserve even more misery, by wasting them even one further day, that could have become a joy otherwise?

              How could they find joy with such a joke?

              • mistercheph 77 days ago
                Can't help them, why worry about trying to make people who have chosen unhappiness happy? Leave them behind
      • ryandrake 78 days ago
        Not sad to me. A program is expected to behave sensibly for all of its inputs, reliably producing its outputs. Larger systems depend on their sub components working properly. Imagine if grep had an Easter egg where it randomly output a joke 1 out of every 1,000,000 runs. How would you debug that deep in a bash script somewhere, as was the case for OP.

        If you absolutely must write an Easter egg, put it in the “About” screen or the command line usage string or something… not in the program’s primary output.

        • wpietri 78 days ago
          Saying that it "is expected" is a rhetorical trick, projecting your personal notions onto the structure of the universe. You may expect that, but I don't.

          To me, software is a community effort. Communities are made of people, and people have gloriously many motivations for their work. A spirit of play is one of those motivations, and I'm glad people honor it. Yes, it shouldn't cause much trouble along the way. But that's not because of some theory about what software it's for. It's because of the people.

          • snvzz 78 days ago
            Try reading man(1) i.e. doing man man sometime.

            The expected behavior is described there.

        • strogonoff 78 days ago
          A real-world program (a product of fallible humans, made for fallible humans, executing on hardware built by fallible humans and operating in unpredictable environment) is never bug-free or 100% reliable. There is always a chance that it will fail to behave sensibly—expecting otherwise is foolish and poor design. That holds with or without easter eggs.

          Easter eggs is an element of controlled chaos.

          • ryandrake 78 days ago
            Yea I don’t want to deal with some joker’s controlled chaos at 10:30PM before launch day trying to isolate a rare-repro bug that turns out was deliberately added. If that makes me a Grumpy Graybeard then I accept that name.

            I wouldn’t want my home builder to insert an Easter egg that causes my windows to open randomly in the middle of the night on one day of the year because he found it “joyful.”

            • strogonoff 78 days ago
              If output of man invoked without any arguments causes a critical bug right before the launch day, or the equivalent of your windows opening randomly in the middle of the night, you have much bigger things to worry about than that easter egg. (I doubt a true Graybeard would ever find oneself in such a circumstance.)

              If bit flips become more common as transistors get smaller, that’s certainly going to throw a much less controlled wrench in the works.

              • Ekaros 78 days ago
                It might not be critical bug. But it certainly could be failed build job. Which you then have to rerun wasting time or manually hunt down and waste time tracking where it comes from.

                And something like this printing out in error could indicate that you have been compromised and you should lock down everything. Verify that you full system is clean and go through all of the logs.

                • strogonoff 76 days ago
                  This ad-hoc approach looks very suboptimal as a threat detection heuristic. Judging about your system’s security by whether there are binaries that behave in upredictable ways means a game of whack-a-mole against buggy programs (which is 100% of them, remember?), while letting real threats go by.

                  A way of making sure your binaries are trusted is supply chain security, which starts with not obtaining them through unvetted sources. If in that situation a known-trusted man says a funny joke at midnight, your spidey senses would not be triggered.

                  In other words, if there is a way for suspect binaries to get into your system, you have a bigger problem. If there is no such way, you can be sure it’s benign behaviour, a bug in the program, an Easter egg, or even a bit flip or some unlikely interaction of factors. If you are not sure whether you have eliminated all such ways, sure, it might seem like a cause for worry—however, I don’t think attackers you should really worry about would try to make themselves noticed through jokes with Western cultural references (or through any jokes for that matter, or in any way at all).

              • keybored 77 days ago
                Read the submission. It also would print that Easter Egg with `man -w`—give me the man path (after midnight).
                • Dylan16807 77 days ago
                  What makes you think they didn't read the submission?

                  Occurring with -w was a bug that happened to be located in the easter egg code. It wasn't the actual easter egg. If you hit it as intended, you do have bigger things to worry about.

                  So you could argue that it's bad to have extra lines of code because that's 0.01% more space for bugs to hide in, but 0.01% extra code is hardly something to launch objections over. Nothing about that is easter egg specific.

            • ElFitz 78 days ago
              The analogy starts breaking down when you start paying your home builder.

              I would suggest not relying on some joker’s code and write your own instead.

              Open source is open source. That’s all that’s promised, and we aren’t entitled to anything more.

            • mistercheph 78 days ago
              Yeah I’m sure that launch was going to go super great, grinch and co launching profit seeking clickable trash hole gets disrupted by man command bug and their feelings are really hurt because somebody did a whoopie cushion? Woops, saddest story i ever read, what a bunch of poor sobs
            • idunnoman1222 77 days ago
              eggs in the manual buddy. It’s like a joke while you’re reading really dry documentation.
        • _V_ 78 days ago
          Expecting software to "behave sensibly" is your own faulty assumption. I write software and I've learned never to expect such thing in an environment, that almost anything can bug out, even including the CPU itself.
        • seanhunter 78 days ago
          Oh please. 'man' is fundamentally different to 'grep' and if you can't see how you shouldn't be producing systems of any kind.

          For starters the user of 'man' is an interactive unix user. Other than really unusual edge cases (eg processes which produce printed versions of the unix manual, and the test scripts of the OP in the stackexchange) there are no non-interactive or batch uses of man, it isn't used in pipelines or scripts etc.

          Whereas grep is a staple of batch processes, scripts, cronjobs large and small as well as being a key tool for interactive use.

          • cperciva 78 days ago
            The Tarsnap website has the man pages for tarsnap utilities, for easy googling; they're generated basically by `man | sed`.

            I would be very annoyed if the Tarsnap website was broken because someone decided to throw in an Easter egg and make the output occasionally inconsistent.

            If anyone reading this is ever considering putting in an Easter egg like this: Please check if stdout is a terminal! If your output is going to a terminal, it's probably safe to be silly. If your output is going anywhere else, you should absolutely not play games.

            • seanhunter 78 days ago
              Checking that stdout is a terminal is a good idea indeed.
            • mistercheph 78 days ago
              Admit it, you’re very annoyed even when Tarsnap does work, this is more of a question of character.
        • asimpleusecase 78 days ago
          So is AI an Eater egg machine?
        • hi-v-rocknroll 78 days ago
          [flagged]
      • snvzz 77 days ago
        There are people who abhor surprises. I am one of them.
    • mbStavola 78 days ago
      Software can and should be fun, especially if it's harmless. Where is the hacker spirit?
      • mrweasel 78 days ago
        There is simply to little fun and weirdness left in modern software, and that's quite sad.

        We should stride to make software a little more fun, have a little more character and have certain human touch to it.

        Obviously don't have your database write "FART" in place of data, just because the user is "dave" and it's not 16:45 in the afternoon, but harmless messages in the code, weird log messages and otherwise harmless reactions to predetermined inputs.

      • voidfunc 78 days ago
        Software should fulfill its requirements and do nothing more.
        • scbrg 78 days ago
          In this case, it did. The requirement is clearly specified in the top answer:

          if you invoke man after midnight it should print "gimme gimme gimme", because of the Abba song called "Gimme gimme gimme a man after midnight"

          You might not agree that that's a good requirement. Others' requirements aren't always aligned with yours :)

        • PetahNZ 78 days ago
          Have you never worked for anyone before? The software I make is always expected to do more than what the requirements stated.
        • kalleboo 78 days ago
          This is Hacker News, not IBM Suits News
        • anthk 77 days ago
          Not a great motto for Emacs (ORG-Mode, Calc, Info reader, Doctor, IRC, Web, directory browser/editor, shell, games, email, NNTP, text adventures, SSH/FTP/whatever integration...) or Nyxt (complex functions for bookmarking and making discrete-math like graphs on info, scrapping features, shortcut keys for links, and so on.)
        • nasmorn 78 days ago
          Resistance is futile
        • mistercheph 78 days ago
          My requirement for all software: make me smile :)

          Requirement fulfilled, under budget too :))

        • hulitu 78 days ago
          > Software should fulfill its requirements and do nothing more.

          And shall be _tested_ _before_ delivery.

          I know, it's expensive ... /s

        • _V_ 78 days ago
          [flagged]
      • hulitu 78 days ago
        Hacker spirit is gone. All is left are code writers. Most of them are not able to test their code for the most obvious mistakes (see Crowdstrike ...). /s
    • Am4TIfIsER0ppos 78 days ago
      You must hate VLC on Dec 25.
      • Anthony-G 78 days ago
        A few years ago, I was suprised to discover that lots of people actually do hate VLC at this most wonderful time of year. Only two of the top 10 search results are broadly positive about this feature: https://duckduckgo.com/?t=ftsa&q=vlc+santa+hat+&ia=web

        And in a VideoLAN forum thread, at least one user was willing to recompile the source in order to remove the objectionable icon (presumably before it became a configurable option in the application settings): https://forum.videolan.org/viewtopic.php?t=53998

        • Am4TIfIsER0ppos 77 days ago
          Some people have a visceral hatred of Christmas due to its heritage. GP appears to only hate easter eggs. A good thing it is open source and one can modify if they wish. I wish I had the skills to remove the things I hate.
          • foobarian 77 days ago
            It's open source and we mold it to the way we like it! Right?

            One time I decided I would like my workstation login prompt to work like the Monty Python bridge of death and print "what is thy name" etc. instead of the usual login:. Tracking down where exactly this string was turned out to be really hard, I don't even remember exactly but somewhere in PAM source code?

            Anyway after that I became less quick to tell people "just change the source!"

      • snvzz 77 days ago
        I do not celebrate xmas, or engage in religion. It'd annoy me for sure.

        Fortunately, I run mpv.

        • skeaker 77 days ago
          Not engaging with it I would understand, but being annoyed by it is Grinch behavior honestly. If men at war can put aside combat for one day [1], you should be able to tolerate a different icon on a computer program for one day (or at least be understanding as to why people would enjoy that sort of thing even if you don't).

          1 - https://en.wikipedia.org/wiki/Christmas_truce

          • snvzz 72 days ago
            I am not gonna be defending religions citing some traditional religious truce, when more than 1/365th of wars have been religious motivated.

            My take is that xmas should not be a holiday. We should observe the solstice if anything at all.

            Fortunately I live in Japan, and xmas is officially not a special day.

    • hulitu 78 days ago
      > Easter eggs are bugs, plain and simple.

      And what are bugs then ? I prefer Easter eggs instead of bugs. At least they are intended behaviour.

    • itsanaccount 78 days ago
      [flagged]
      • rubberpoliceman 78 days ago
        I think you’ll find we’re pedants.
        • addaon 78 days ago
          The pedants are out there complaining. The pendants are in here just hanging around.
        • kurisufag 78 days ago
          no, no, the poster he's replying to is the owner of a necromancer's ancient artifact.
  • varelaz 78 days ago
    I'm against easter eggs, at least right now. First of all not of them are harmless, can you make sure that it wouldn't break anything important, would it tolerate race, religion, gender and after all of these would it remain fun? It's hard to be responsible and fun in the same time.
    • 9dev 78 days ago
      Well… I find your conclusion a bit sad, and turned upside down. Instead of banning all things fun for fear of misstepping, maybe it’s time to take things less personally, be more tolerant towards others, and push for positive change instead of trying to punish others for not being ”aware“ enough?
      • varelaz 78 days ago
        I'm not trying to punish others, I just don't find it fun anymore with all respect to everyone who keeps up. Before it was naïve and simple, right now it just more complicated, often looks commercialized or not appropriate.
        • 9dev 78 days ago
          I didn’t mean to imply you personally aim to punish others, but that we should collectively strive to foster a culture of positivity rather than instilling fear of offending others, until people say nothing at all anymore (or say a lot that doesn’t mean anything).
    • _V_ 78 days ago
      Why on Earth would jokes have to "tolerate" race, religion and gender or anything else? The point of (some) jokes is to challenge anything and everything you deem to be a norm.

      I'm starting to think that many tolerance-preaching people are the most intolerant bunch by far.

      • illys 78 days ago
        Well, my 2-cent is that you can laugth of everything but not with everybody... So defying the norms with Easter Eggs sent to the wild can be an issue. You have to know your audience to properly chose your level of impertinence.
        • _V_ 78 days ago
          I completely agree with the first sentence - however I would argue that normal, level-headed and sane person either laughs or just shrugs and moves on if that particular joke is not to their taste.
    • aniviacat 78 days ago
      Is the Google "Minecraft" easter egg intolerant of gender?

      Easter eggs can certainly be problematic when used in APIs (or similar) where access is intended to be automated (and therefore vulnerable to surprises).

      But in user facing code, easter eggs are perfectly fine.

      • chuckadams 77 days ago
        It's an Easter egg, so clearly it's intolerant of other religions!
      • varelaz 78 days ago
        Is it just a marketing tool of a mega-corp which tries to look nicer and engage you more?
        • ARandomerDude 77 days ago
          I'm sure some companies use easter eggs as marketing/recruiting tools.

          That said, I've put a small number of user-facing easter eggs in publicly-traded MegaCorp code before. In every case, it was an inside joke among devs that the higher-ups never knew about it. The C-Suite is uptight and we definitely would have been reprimanded if they were aware.

        • aniviacat 78 days ago
          I don't know what your point is.

          Yes, Google is a corporation and yes, Google tries to build a product people want to use.

          (Building things that people like is a good thing.)

          • varelaz 78 days ago
            I don't say it's bad. It's commercialized experiense and it's cool if you love it. I just wouldn't treat it the same as devs fun of hiding things for valuable user who loves their product and I'm talking from dev prospective, not user.