53 comments

[ 4.2 ms ] story [ 110 ms ] thread
"Responsive is better than fast."

I don't agree with this.

When you think about it, it doesn't even make sense.
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.

it just says "design for failure" ?

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

"Non-blocking is better than blocking."

You don't say.

FWIW this is not a statement about programming (node.js vs ruby or whatever)
How can you be sure? Just curious, not saying you're wrong.
technoweenie works at GitHub :)
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!"

Is this used anywhere at all, or is it just an easter egg ?
Great fun with cowsay

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

   _____________________
  < Speak like a human. >
   --------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
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?
sudo apt-get install cowsay

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

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

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

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.
What are these things called? And how do I make one and append into my code?
Great idea, gonna put it in my bashrc (:
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!

Check response headers. Pretty strict rate limiting.
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.
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.

Any genius can make it complicated.

Run toward bugs, not away from bugs.

Scaffolding.

100,000 lines... forever.

-----

God says...

Virtual-Notary.Org hereby notes that on Date: Friday September 13, 2013 10:55.32 EDT (UTC-0400)

a random drawing in the range [1, 100000], inclusive, based on a hardware source of true randomness, yielded the following decision.

  Random Value: 29348

----

run before him.

1:6 And his father had not displeased him at any time in saying, Why hast thou done so? and he also was a very goodly man; and his mother bare him after Absalom.

1:7 And he conferred with Joab the son of Zeruiah, and with Abiathar the priest: and they following Adonijah helped him.

1:8 But Zadok the priest, and Benaiah the son of Jehoiada, and Nathan the prophet, and Shimei, and Rei, and the mighty men which belonged to David, were not with Adonijah.

1:9 And Adonijah slew sheep and oxen and fat cattle by the stone of Zoheleth, which is by Enrogel, and called all his brethren the king's sons, and all the men of Judah the king's servants: 1:10 But Nathan the prophet, and Benaiah, and the mighty men, and Solomon his brother, he called not.

1:11 Wherefore Nathan spake unto Bathsheba the mother of Solomon, saying, Hast thou not heard that Adonijah the son of Haggith doth reign, and David our lord knoweth it not? 1:12 Now therefore come, let me, I pray thee, give thee counsel, that thou mayest save thine own life, and the life of thy son Solomon.

    $ 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
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.").