[{"data":1,"prerenderedAt":513},["ShallowReactive",2],{"NoscriptNav_XrRK2e2e8meJ0jKVGkb5ULGQDVi3UiFQ9nupAr7Yns":3,"\u002Fideas\u002Fpackage-manager-easter-eggs":8},["Island",4],{"key":5,"result":6},"NoscriptNav_XrRK2e2e8meJ0jKVGkb5ULGQDVi3UiFQ9nupAr7Yns",{"head":7},{},{"id":9,"title":10,"authors":11,"body":13,"canonicalUrl":499,"canonicalWebsiteName":500,"category":501,"date":502,"description":503,"extension":504,"featured":505,"fullWidthLayout":505,"image":506,"imageAlt":506,"location":506,"meta":507,"metaImage":506,"navigation":508,"path":509,"seo":510,"stem":511,"venue":506,"venueUrl":506,"__hash__":512},"ideas\u002Fideas\u002Fpackage-manager-easter-eggs.md","Package Manager Easter Eggs",[12],"andrew",{"type":14,"value":15,"toc":486},"minimark",[16,20,36,41,48,58,69,77,83,109,128,132,164,167,193,230,242,257,261,270,274,296,318,351,366,370,383,389,392,396,418,432,436,459,463,478],[17,18,19],"p",{},"It's Easter, so here's a tour of the easter eggs hiding inside package managers.",[17,21,22,23,27,28,35],{},"The very first known easter egg in software dates back to 1967-68 on the PDP-6\u002FPDP-10, where typing ",[24,25,26],"code",{},"make love"," at the TOPS-10 operating system's ",[29,30,34],"a",{"href":31,"rel":32},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEaster_egg_(media)#Software",[33],"nofollow","COMPIL program"," would pause and respond \"not war?\" before creating the file.",[37,38,40],"h3",{"id":39},"apt-and-friends","apt and friends",[17,42,43,44,47],{},"A cow-shaped thread runs through the history of system package managers, starting with ",[24,45,46],{},"apt-get moo",":",[49,50,55],"pre",{"className":51,"code":53,"language":54},[52],"language-text","$ apt-get moo\n                 (__)\n                 (oo)\n           \u002F------\\\u002F\n          \u002F |    ||\n         *  \u002F\\---\u002F\\\n            ~~   ~~\n...\"Have you mooed today?\"...\n","text",[24,56,53],{"__ignoreMap":57},"",[17,59,60,61,64,65,68],{},"Running ",[24,62,63],{},"apt-get help"," reveals the line \"This APT has Super Cow Powers.\" The ",[24,66,67],{},"moo"," subcommand has been there for decades and doesn't need root.",[17,70,71,76],{},[29,72,75],{"href":73,"rel":74},"https:\u002F\u002Fwww.digitalocean.com\u002Fcommunity\u002Ftutorials\u002Ftop-10-linux-easter-eggs",[33],"Aptitude's response"," is more elaborate. It lies to you, then gradually caves under pressure:",[49,78,81],{"className":79,"code":80,"language":54},[52],"$ aptitude moo\nThere are no Easter Eggs in this program.\n\n$ aptitude -v moo\nThere really are no Easter Eggs in this program.\n\n$ aptitude -vv moo\nDidn't I already tell you that there are no Easter Eggs in this program?\n\n$ aptitude -vvv moo\nStop it!\n\n$ aptitude -vvvv moo\nOkay, okay, if I give you an Easter Egg, will you go away?\n\n$ aptitude -vvvvv moo\nAll right, you win.\n\n                               \u002F----\\\n                       -------\u002F      \\\n                      \u002F               \\\n                     \u002F                |\n   -----------------\u002F                  --------\\\n   ----------------------------------------------\n",[24,82,80],{"__ignoreMap":57},[17,84,85,86,89,90,98,99,102,103,108],{},"Adding one more ",[24,87,88],{},"-v"," reveals the explanation: \"What is it? It's an elephant being eaten by a snake, of course.\" A reference to ",[91,92,93],"em",{},[29,94,97],{"href":95,"rel":96},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FThe_Little_Prince",[33],"The Little Prince"," by Antoine de Saint-Exupéry. And ",[24,100,101],{},"aptitude --help"," declares \"This aptitude does not have Super Cow Powers,\" which is a ",[29,104,107],{"href":105,"rel":106},"https:\u002F\u002Fwww.linux.com\u002Fnews\u002F10-truly-amusing-easter-eggs-linux\u002F",[33],"dirty, filthy lie",".",[17,110,111,112,119,120,127],{},"The tradition spread to openSUSE's package manager too. ",[29,113,116],{"href":114,"rel":115},"https:\u002F\u002Feeggs.com\u002Fitems\u002F36008.html",[33],[24,117,118],{},"zypper moo"," draws an ASCII hedgehog by default, and the source code invites translators to draw a different animal for their locale. Gentoo got in on it as well: ",[29,121,124],{"href":122,"rel":123},"https:\u002F\u002Feeggs.com\u002Fitems\u002F47251.html",[33],[24,125,126],{},"emerge --moo"," displays ASCII art of Larry the Cow with \"Have you mooed today?\"",[37,129,131],{"id":130},"pacman-and-portage","pacman and Portage",[17,133,134,135,142,143,146,147,150,151,159,160,163],{},"Adding ",[29,136,139],{"href":137,"rel":138},"https:\u002F\u002Feeggs.com\u002Fitems\u002F59538.html",[33],[24,140,141],{},"ILoveCandy"," to the ",[24,144,145],{},"[options]"," section of Arch Linux's ",[24,148,149],{},"\u002Fetc\u002Fpacman.conf"," turns the progress bar into a Pac-Man character eating pellets as it installs packages, because Pac-Man loves candy. Completely independently, Gentoo landed on the same word: adding ",[29,152,155,158],{"href":153,"rel":154},"https:\u002F\u002Feeggs.com\u002Fitems\u002F50075.html",[33],[24,156,157],{},"candy"," to FEATURES"," in ",[24,161,162],{},"\u002Fetc\u002Fmake.conf"," replaces the default emerge spinner with a livelier animation.",[37,165,166],{"id":166},"npm",[17,168,169,176,177,184,185,188,189,192],{},[29,170,173],{"href":171,"rel":172},"https:\u002F\u002Fgist.github.com\u002FAvnerCohen\u002F4051934",[33],[24,174,175],{},"npm xmas"," showed a Christmas-themed display. ",[29,178,181],{"href":179,"rel":180},"https:\u002F\u002Fwww.manvendrask.com\u002F2017\u002F05\u002F30\u002Fadvanced-npm-tricks-and-fun\u002F",[33],[24,182,183],{},"npm visnup"," displayed terminal art of npm contributor Visnu Pitiyanuvath, and ",[24,186,187],{},"npm substack"," honoured the prolific module author James Halliday. There was also a ",[24,190,191],{},"ham-it-up"," config option that printed \"I Have the Honour to Be Your Obedient Servant\" after successful commands, in a PR titled \"Talk less, complete more,\" both Hamilton references. All gone as of npm v9.",[17,194,195,196,203,204,207,208,211,212,215,216,221,222,225,226,229],{},"And ",[29,197,200],{"href":198,"rel":199},"https:\u002F\u002Fdev.to\u002Fvansh-codes\u002Feaster-egg-or-a-bug-the-mysterious-case-of-npm-rum-dev-3ki1",[33],[24,201,202],{},"npm rum dev"," works identically to ",[24,205,206],{},"npm run dev",". Turns out ",[24,209,210],{},"rum"," and ",[24,213,214],{},"urn"," are ",[29,217,220],{"href":218,"rel":219},"https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fv8\u002Fcommands\u002Fnpm-run-script\u002F",[33],"documented aliases"," for ",[24,223,224],{},"run-script",", so it's less of an easter egg and more of a happy accident that ",[24,227,228],{},"npm rum"," sounds like a pirate order.",[17,231,232,237,238,241],{},[29,233,236],{"href":234,"rel":235},"https:\u002F\u002Fgithub.com\u002Fnpm\u002Fcli\u002Fissues\u002F4091",[33],"Someone going through npm's codebase"," found an undocumented ",[24,239,240],{},"birthday"," command backed by completely obfuscated JavaScript that executed code from a separate npm package. Running it returned \"Please try again in 26632152294ms,\" a countdown to npm's birthday.",[17,243,244,245,250,251,256],{},"The community was alarmed. Obfuscated, undocumented code in a tool installed on every CI server on earth was indistinguishable from a supply chain attack. The ",[29,246,249],{"href":247,"rel":248},"https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnpm-birthday",[33],"package was eventually rewritten"," to be human-readable \"to make our users more comfortable,\" then the command was ",[29,252,255],{"href":253,"rel":254},"https:\u002F\u002Fgithub.com\u002Fnpm\u002Fcli\u002Fpull\u002F5455",[33],"removed entirely"," in npm 9.",[37,258,260],{"id":259},"pipenv","Pipenv",[17,262,263,264,269],{},"Pipenv swaps its install label to a pumpkin on Halloween and Santa on Christmas. When the community ",[29,265,268],{"href":266,"rel":267},"https:\u002F\u002Fgithub.com\u002Fpypa\u002Fpipenv\u002Fissues\u002F3128",[33],"asked to remove them",", Kenneth Reitz said \"The easter eggs stay\" and closed the issue.",[37,271,273],{"id":272},"python","Python",[17,275,276,279,280,285,286,295],{},[24,277,278],{},"import this"," prints ",[29,281,284],{"href":282,"rel":283},"https:\u002F\u002Fpeps.python.org\u002Fpep-0020\u002F",[33],"The Zen of Python"," by Tim Peters, 19 guiding principles for Python's design, and ",[29,287,290,291,294],{"href":288,"rel":289},"https:\u002F\u002Fgithub.com\u002Fpython\u002Fcpython\u002Fblob\u002Fmain\u002FLib\u002Fthis.py",[33],"the source code of the ",[24,292,293],{},"this"," module"," uses ROT13 encoding so that the code printing Python's design philosophy deliberately violates those same principles by being ugly and obfuscated.",[17,297,298,301,302,307,308,317],{},[24,299,300],{},"import antigravity"," opens your browser to ",[29,303,306],{"href":304,"rel":305},"https:\u002F\u002Fxkcd.com\u002F353\u002F",[33],"xkcd comic #353"," and has been in the standard library since Python 2.6. A second egg is nested inside: ",[29,309,312,313,316],{"href":310,"rel":311},"https:\u002F\u002Fgithub.com\u002FOrkoHunter\u002Fpython-easter-eggs",[33],"the module also contains a ",[24,314,315],{},"geohash"," function"," implementing xkcd's geohashing algorithm.",[17,319,320,321,324,325,328,329,332,333,336,337,342,343,346,347,350],{},"The ",[24,322,323],{},"__future__"," module has two. ",[24,326,327],{},"from __future__ import braces"," raises ",[24,330,331],{},"SyntaxError: not a chance",". ",[24,334,335],{},"from __future__ import barry_as_FLUFL"," is an ",[29,338,341],{"href":339,"rel":340},"https:\u002F\u002Fpeps.python.org\u002Fpep-0401\u002F",[33],"April Fools' joke (PEP 401)"," honouring Barry Warsaw as the \"Friendly Language Uncle For Life\" that makes ",[24,344,345],{},"!="," a syntax error and forces you to use ",[24,348,349],{},"\u003C>"," instead.",[17,352,353,356,357,360,361,108],{},[24,354,355],{},"hash(float('inf'))"," returns ",[24,358,359],{},"314159",", the first digits of pi ",[29,362,365],{"href":363,"rel":364},"https:\u002F\u002Fcode-specialist.com\u002Fpython-easter-eggs",[33],"hiding in the numeric internals",[37,367,369],{"id":368},"leiningen","Leiningen",[17,371,372,373,377,378,47],{},"In the early Clojure ecosystem, there was a plague of projects with names ending in \"jure.\" The maintainer of ",[29,374,369],{"href":375,"rel":376},"https:\u002F\u002Fleiningen.org\u002F",[33]," ",[29,379,382],{"href":380,"rel":381},"https:\u002F\u002Fgithub.com\u002Ftechnomancy\u002Fleiningen\u002Fcommit\u002F39732d5b649dedb70b14e88fe561dfc9ddb31611",[33],"had enough",[49,384,387],{"className":385,"code":386,"language":54},[52],"Sorry, names such as clojure or *jure are not allowed.\nIf you intend to use this name ironically, please set the\nLEIN_IRONIC_JURE environment variable and try again.\n",[24,388,386],{"__ignoreMap":57},[17,390,391],{},"As one commenter quipped: \"I'd say I've never seen this error message, but I don't want to perjure myself.\"",[37,393,395],{"id":394},"ruby","Ruby",[17,397,398,405,406,409,410,413,414,417],{},[29,399,402],{"href":400,"rel":401},"https:\u002F\u002Fchrisarcand.com\u002Fprogramming-easter-eggs\u002F",[33],[24,403,404],{},"rvm seppuku"," was an alias for ",[24,407,408],{},"rvm implode",", which removes the entire Ruby Version Manager installation. The commit message read: \"Added 'rvm seppuku' in honor of tsykoduk who can't spell so it saved his life.\" The uninstall log message was ",[24,411,412],{},"\"Hai! Removing $rvm_path\"",". RVM also had ",[24,415,416],{},"rvm answer",", with a notable bugfix in its changelog: \"rvm answer now uses perl, since the universe is written in Perl.\"",[17,419,320,420,425,426,431],{},[29,421,424],{"href":422,"rel":423},"https:\u002F\u002Fgithub.com\u002Fpry\u002Fpry",[33],"Pry debugger gem"," shipped a dedicated easter eggs file with a nyan cat command, and text snippets from Jermaine Stewart, T.S. Eliot, Leonard Cohen, and Fernando Pessoa (some of which remain in current versions). Installing the HTTParty gem greets you with \"When you HTTParty, you must party hard!\" which annoyed enough people that Tim Pope published a gem called ",[29,427,430],{"href":428,"rel":429},"https:\u002F\u002Frubyflow.com\u002Fp\u002Fgkgid4-gem-shut-the-fk-up",[33],"gem-shut-the-fuck-up"," to suppress all post-install messages.",[37,433,435],{"id":434},"go","Go",[17,437,438,439,442,443,450,451,454,455,458],{},"In Go's ",[24,440,441],{},"net"," package, a variable called ",[29,444,447],{"href":445,"rel":446},"https:\u002F\u002Fdev.to\u002Fymotongpoo\u002Feaster-eggs-in-go-source-code-2l02",[33],[24,448,449],{},"aLongTimeAgo"," was originally set to ",[24,452,453],{},"time.Unix(233431200, 0)",", which converts to May 25, 1977, the day Star Wars: Episode IV opened in theatres. It's used to force-cancel connections by setting a deadline far in the past. The value was later changed to ",[24,456,457],{},"time.Unix(1, 0)"," back in 2017 because Raspberry Pi boards sometimes boot with their clock reset to 1970, making 1977 no longer safely \"in the past.\"",[37,460,462],{"id":461},"homebrew","Homebrew",[17,464,465,466,469,470,477],{},"Homebrew once had a ",[24,467,468],{},"brew beer"," command, removed from the main codebase but preserved in ",[29,471,474],{"href":472,"rel":473},"https:\u002F\u002Fgithub.com\u002FDomT4\u002Fhomebrew-vintage",[33],[24,475,476],{},"homebrew-vintage",", a dedicated tap for anyone who misses it. The entire tool is already an easter egg of sorts, with its formulae, taps, casks, kegs, bottles, cellars, and pouring.",[17,479,480,481,108],{},"Know of more package manager easter eggs I've missed? ",[29,482,485],{"href":483,"rel":484},"https:\u002F\u002Fgithub.com\u002Fandrew\u002Fnesbitt.io\u002Fissues",[33],"Let me know",{"title":57,"searchDepth":487,"depth":487,"links":488},2,[489,491,492,493,494,495,496,497,498],{"id":39,"depth":490,"text":40},3,{"id":130,"depth":490,"text":131},{"id":166,"depth":490,"text":166},{"id":259,"depth":490,"text":260},{"id":272,"depth":490,"text":273},{"id":368,"depth":490,"text":369},{"id":394,"depth":490,"text":395},{"id":434,"depth":490,"text":435},{"id":461,"depth":490,"text":462},"https:\u002F\u002Fnesbitt.io\u002F2026\u002F04\u002F03\u002Fpackage-manager-easter-eggs","nesbitt.io","tooling","2026-04-03","A tour of the easter eggs hiding inside package managers.","md",false,null,{},true,"\u002Fideas\u002Fpackage-manager-easter-eggs",{"title":10,"description":503},"ideas\u002Fpackage-manager-easter-eggs","MoY0vr_ggfSeGfxY-8n2XFDBmuKidVLKLdZz0l8fCB8",1780596104911]