Hacker News new | past | comments | ask | show | jobs | submit login
GitHub Zen API (api.github.com)
97 points by bencevans on Sept 13, 2013 | hide | past | favorite | 52 comments



After curl-ing for a while in a loop, and sort -u:

  Anything added dilutes everything else.
  Approachable is better than simple.
  Avoid administrative distraction.
  Design for failure.
  Encourage flow.
  Favor focus over features.
  Half measures are as bad as nothing at all.
  It's not fully shipped until it's fast.
  Keep it logically awesome.
  Mind your words, they are important.
  Non-blocking is better than blocking.
  Practicality beats purity.
  Responsive is better than fast.
  Speak like a human.


Got the same list after about 100 authenticated requests: https://gist.github.com/peterjmag/6551440


You could turn these into a data file for fortune[0].

I currently use the "Cluefire and Damnation"[1] fortunes and pipe it into ponysay[2] at login.

[0]: https://en.wikipedia.org/wiki/Fortune_%28Unix%29

[1]: http://www.cluefire.net/

[2]: https://github.com/erkin/ponysay/


Great fun with cowsay

  $ curl https://api.github.com/zen -s | cowsay

   _____________________
  < Speak like a human. >
   --------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||


See also:

  $ curl https://api.github.com/octocat

           MMM.           .MMM
           MMMMMMMMMMMMMMMMMMM
           MMMMMMMMMMMMMMMMMMM      _____________________
          MMMMMMMMMMMMMMMMMMMMM    |                     |
         MMMMMMMMMMMMMMMMMMMMMMM   | Speak like a human. |
        MMMMMMMMMMMMMMMMMMMMMMMM   |_   _________________|
        MMMM::- -:::::::- -::MMMM    |/
         MM~:~   ~:::::~   ~:~MM
    .. MMMMM::. .:::+:::. .::MMMMM ..
          .MM::::: ._. :::::MM.
             MMMM;:::::;MMMM
      -MM        MMMMMMM
      ^  M+     MMMMMMMMM
          MMMMMMM MM MM MM
               MM MM MM MM
               MM MM MM MM
            .~~MM~MM~MM~MM~~.
         ~~~~MM:~MM~~~MM~:MM~~~~
        ~~~~~~==~==~~~==~==~~~~~~
         ~~~~~~==~==~==~==~~~~~~
             :~==~==~==~==~~
You can also append `?s="your message here"` to use it to say something other than one of the GitHub Zen messages.


Awesome, aliasing this as cowzen.


Have you seen that it comes with other examples?

     ls /usr/share/cowsay | xargs -n1 -I{} cowsay -f {} foo | less
Some of them are.. well..

"Cow Operation"? WTF


Best ones: vomit cow and Kosh.

Kosh works exceptionally well with tiny zen sayings.

    ______________________________________ 
   < Mind your words, they are important. >
    -------------------------------------- 
       \
        \
         \
     ___       _____     ___
    /   \     /    /|   /   \
   |     |   /    / |  |     |
   |     |  /____/  |  |     |     
   |     |  |    |  |  |     |
   |     |  | {} | /   |     |
   |     |  |____|/    |     |
   |     |    |==|     |     |
   |      \___________/      |
   |                         |
   |                         |


whoa whoa whoa there is a command-line vorlon available? what?


    $ ls /usr/share/cows/
    beavis.zen.cow  dragon-and-cow.cow     hellokitty.cow  moofasa.cow    sodomized.cow    turtle.cow
    bong.cow        dragon.cow             kiss.cow        moose.cow      stegosaurus.cow  tux.cow
    bud-frogs.cow   elephant.cow           kitty.cow       mutilated.cow  stimpy.cow       udder.cow
    bunny.cow       elephant-in-snake.cow  koala.cow       ren.cow        supermilker.cow  vader.cow
    cheese.cow      eyes.cow               kosh.cow        satanic.cow    surgery.cow      vader-koala.cow
    cower.cow       flaming-sheep.cow      luke-koala.cow  sheep.cow      telebears.cow    www.cow
    daemon.cow      ghostbusters.cow       meow.cow        skeleton.cow   three-eyes.cow
    default.cow     head-in.cow            milk.cow        small.cow      turkey.cow


On Debian, how do I get all these magnificent cows?


Once you have cowsay installed, you can invoke them with cowsay -f.

For instance: cowsay -f kosh "Understanding is a three-edged sword."


sudo apt-get install cowsay

Cows are installed to /usr/share/cowsay/cows


> Great fun with cowsay

... and ponysay: http://i.imgur.com/Df09hpV.png


What are these things called? And how do I make one and append into my code?


Great idea, gonna put it in my bashrc (:


Never realized there was an emojis api too... https://api.github.com/emojis


Surprisingly profound: Anything added dilutes everything else



Of course this is false if you add more of the same. ;)


except that it still DOES dilute everything except the thing that was added


no.


    $ grep bofh .bash_aliases 
    alias bofh="nc bofh.jeffballard.us 666 | tail -n 1 | sed -e 's/Your excuse is: //'"

    $ bofh
    The air conditioning water supply pipe ruptured over the machine room


The comments below demonstrate that, while cute, virtually all of the statements it comes up with are entirely subjective, quite superficial, totally ambiguous, and useless for most things.

Great conversation starter though!


This reminds me of a small project I tossed together:

http://git-fortune.bclune.org

It grabs a random commit message from a github repo and displays it. By default, it pulls from a repo containing the original debian fortunes as commit messages. But you can point it to other repos like this:

http://git-fortune.bclune.org/twbs/bootstrap

Inspired by What the Commit? and /usr/bin/fortune.


"Non-blocking is better than blocking."

You don't say.


FWIW this is not a statement about programming (node.js vs ruby or whatever)


I wonder who would naturally equate blocking to Ruby specifically. Or non-blocking to Node.js for that matter.

Is Node.js VS Ruby even a thing?


They're in constant battle for the hipster programmer crowd. Ruby is too old for "I used it before it was cool," but node is kinda still there.


Oh right! I meant to say Go vs Node.js. Only one walks away.


Go has a weird subset of admin/programmer people who haven't discovered erlang and think they are too good for C.

Node has a weird subset of web people who haven't discovered erlang and think they are too good for deploying a message/job dispatch queue with python or ruby.

If you want to be really bored with all these "modern" programming advancements, learn erlang and lisp and smalltalk. Everything is just reinventing their aspects over and over and over again targeted to audiences as "new new new!"


How can you be sure? Just curious, not saying you're wrong.


technoweenie works at GitHub :)


Is there anything related to the zen of python?

I got "practicality beats purity", that is in it ("Special cases aren't special enough to break the rules. Although practicality beats purity.").


$ npm install github-zens -g

$ zen

A Node Module which prints the zens (offline list). https://github.com/arjunbajaj/github-zens



If you wanna read short messages from which you won't benefit in any way, might as well try:

http://whatthecommit.com


Is this used anywhere at all, or is it just an easter egg ?


I had made something like that with fortune and php many-many years ago.

I wonder if GitHub has a static list of quotes (like fortune does) or they generate them dynamically.


"Responsive is better than fast."

I don't agree with this.


I assume it's not a reference to responsive ("self-resizing") HTML, but rather things like user input lag (a common problem in apps.) Better to have a zero-lag async calculation than a nominally faster but UI-blocking synchronous calculation or request.


I think it's actually meant to encourage putting up things like spinners, page transitions, etc. Make the user feel that something is happening, and they won't feel slowed down.


But that doesn't mean it is better than fast. I would say "if not fast, be responsive"


I think the message is this: fast is an impossible standard to meet since there will always be inconsistent user experiences, so aim to be responsive before being fast.


I agree with it very much. When I'm zipping files on Linux and my system grinds to a halt due to hard drive contention, I don't want faster zip times, I just want the damn thing to be responsive while it zips in the background.


If you're running zip from the command line, try setting the priority with 'nice' when you run it. That should allow you to continue using your system while zip crunches away in the background. If you forget to set the priority level at runtime, use 'renice' to set the priority level of a running process.


ionice[1] is even better for this use-case.

  [1]: http://manpages.ubuntu.com/manpages/raring/man1/ionice.1.html


Not that there is any right answer here (that's the whole point), but my interpretation is less a technical one than the ones suggested so far.

Being fast gets you to far away places, but being responsive gets you places where you want to be.


When you think about it, it doesn't even make sense.


I don't.


Check response headers. Pretty strict rate limiting.


it just says "design for failure" ?

[edit] okay i get it refreshing gives another message etc. etc.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: