Install with git git clone https://gist.github.com/85942af486eb79118467.git ~/Pictures/wallpapers
From the putc man page, "putc() is equivalent to fputc() except that it may be implemented as a macro which evaluates stream more than once."
I wasn't sure what this meant so I asked Shevek.
He launched into a lambda calculus explanation that eventually boiled down to: putc may evaluate it's arguments more than once, but fputc evaluates them exactly once.
This is because putc is implemented as a macro and the C preprocessor just does string substitution, leading to examples like the ones below.
Ignoring what putc and fputc actually do, let's look at a simplified version where they both simply do one operation twice and another operation once: