Firstly, this is frikking hilarious. I giggled so loudly while reading it that my girlfriend asked what I was laughing at and she was so captivated by it that I had to sit on the couch with her reading it, flicking to the next page of the downloadable whenever she'd finished.
Secondly, I applaud the style/premise of the book. Cats especially are aiming at an underserved demographic that would absolutely be interested in programming but do not have the same number of and level of quality of 'ins' (ways of getting into programming) as other demographics. Along the same lines I would love to see 'scripting for Sims 4 builders' or 'Love Calculator and other scriots for your next sleepover'.
Thirdly, I really like the way that this is pitched. I feel like so few tutorials give a high level overview of programming rather than diving into specifics of languages. I can only think of "Hello Ruby" as being analogous, although I'm sure others exist.
Finally, I love the art style. Not much more to be said than that.
My cat still seems to run out of space when tail recursing when certain values get adjusted, I figure he needs to go into functional programming and no longer use shared and mutable positional values with what he uses to thread.
Aww I'm touched! But no need, this is not my main account and I only use it for this book, while I see you have a lot of history already. But thank you!
Excellent work! Did your dog delete the sections on cat & mouse games, and em-cat-bedded programming? Oh, and making sure the code was appropriately tabbified?
Yeah violating ethics is something that happens when you get caught doing something others don't like and like any non-critical error a cat can just walk away from that or spend their time reprogramming the short-circuited device.
To answer seriously: it might not be most people's favorite language, but it's probably one that the most practicing programmers today and people who ever took a programming language in school any time in the last 30 years, can read; and therefore it's probably the best choice as the basis for a humor book.
Java has so little syntax—and yet what little syntax it has is C-ish—that it's mutually intelligible to everybody from programmers who only know C, to programmers who only know Haskell. (Maybe not to programmers who only ever learned 6502 assembler, but they have their own humor books published 40 years ago.)
(Is there a term for this in linguistics? A measure of the eigenvector of mutual intelligibility a language has to all other spoken/written languages?)
i don't know, but, why not, say, BASIC? (most programmers being able to understand) or, Smalltalk, (little syntax, that ''fits inside a postcard'') or a lisp?
BASIC was commonly understood in the 80s despite lots of very different dialects and also in the 90s mostly because of Visual Basic. Is it still true that developers are familiar with BASIC? I would expect that JavaScript and maybe Python replaced BASIC as lingua franca. JavaScript looks simpler because it basically (pun intended) doesn't have a standard library to learn, with all the problems deriving from that.
Java doesn't seem a bad choice because if one sticks to the basics probably everybody can figure out what a simple program does. Smalltalk, I wonder how many people here ever read a Smalltalk source file [1]. Lisp, maybe more, at least to look once at all those funny parentheses (disclaimer, I wrote my fair share of Lisp but I know the effect it does on most people.)
[1] One random Smalltalk project from the list of trending Smalltalk repositories on GitHub https://github.com/svenvc/zinc
I think you misinterpreted. It's not that more programmers know Java; it's that more programmers know a language with a syntax similar to Java.
I don't really know Java. But I know C, and Java looks enough like C that I can get what Java code is trying to do.
Personally, I've never learned any language with similar-enough syntax to BASIC, to understand what a (real, non-trivial) BASIC program is trying to do. Would I recognize a BASIC subroutine if I saw one? Probably not.
And it's not about a language having "less" syntax, either, but rather about it having very few syntactic features that're unfamiliar. Smalltalk is a rather large novelty the first time you see it. (`ifTrue`? You mean I've got to use closures to branch?)
Looking at my cats, I presume they ignore anything neat and impressive, prepared for them. And instead go for the first thing that satisfies their current whim.
So, a hodgepodge of bash, basic, Python, JavaScript and some C. Or Java if it happens to be just on top in some menu. And NIH: obviously theyr own ZiggyLang or ZazaScript.
There's a POSIX utility named "cat" and cats already know what it does, but if a man wants to know, he just types the following words into the terminal and then presses <Enter>:
# eix sys-apps/dog
* sys-apps/dog
Available versions: 1.7-r6
Homepage: https://packages.gentoo.org/package/sys-apps/dog
Description: Dog is better than cat
NAME
dog - Command line utility for the sheep daemon
SYNOPSIS
dog <command> <subcommand> [options]
DESCRIPTION
dog - Sheepdog is a distributed storage system for QEMU. It provides
highly available block level storage volumes to virtual machines.
Sheepdog supports advanced volume management features such as snapshot,
cloning, and thin provisioning. The architecture of Sheepdog is fully
symmetric; there is no central node such as a meta-data server.
The server daemon is called sheep(8). A command line utility is avail‐
able via dog(8). QEMU virtual machines use the sheep daemon via a
block driver available in qemu(1).
For more information, run 'dog <command> <subcommand> --help'.
This sort of writing is a wonderful departure from the traditional and is underrepresented in programming books. There are a few other examples that I know of which could be considered similar, but don't focus as heavily on the illustrative approach show here. Some works for comparison would be; Land of Lisp, Realm of Racket, Clojure for the Brave and True, Learn you a Haskell for Great Good!, Learn you some Erlang for Great Good!, and Why's (Poignant) Guide to Ruby. There may be more I am not aware of. On the topic of cats programming there is also JavaScript for Cats, which is great too.
JavaScript for Cats taught me more about JS than any other book or course combined. I don't know how it compares to the other examples you mention, but there's something about the informal style that just works for me and my attention span.
During the day, my cat will sit behind me while I am coding in Javascript. We practise mentoring system. He can focus in it, not disturbed by the cooked chicken. I think both of us may have ADD/ADHD.
I'd like to recognize and appreciate how exceptionally captivating these illustrations are. Karen's illustrations [0] bring whimsical beauty to this quirky book - it's a perfect match.
In the sea of "Corporate Memphis" [1][2], it's pretty refreshing to see the good stuff.
Thank you! Karen's illustrations are indeed wonderful.
And thanks for the tip re SVG. The originals are large raster images and the JPGs with lossy compression seem to be much smaller than a PNG embedded within a SVG. I'm open to suggestions though. The printed book will use the uncompressed images of course. :)
Excellent! I plan to buy your book and use it to teach my daughter programming. She loves cats and doesn’t leave the side of her cat. I will read this book to the cat, and maybe my daughter will pick up something too.
I have dreamed about using a pet feeder to gradually teach my pets how to use buttons and eventually limited keyboards, to see how abstract of concepts they are able to interact with.
I was hoping this was in that domain.. but alas, I could see this being entertaining to 8-14 year old children.
I recently wrote a high level book on data science with a bunch of pictures and illustrations (not nearly this nice).
I am a big proponent of the idea of fusing art and technical content in a pedagogical way.
This is really nice, even if I'm not the target audience, I can appreciate just how much care and effort went into this work. Best of luck moving forward!
While reading this, I'm running the following commands on my media server in the sitting room corner:
eject /dev/sr0 && read && eject -t /dev/sr0
The `read` is there so I only have to press the Enter key to close the disc tray before my feline fired catches it (I learned the hard way when the motor stopped working on `/dev/sr1`). He’s clever enough to have figured out that it’s me typing on the laptop that causes the DVD tray to eject and he gets equally excited when he sees me pick up the remote control for the Blu-Ray or CD player.
There was a man with a cat and he loved it so dearly. One day he thought if the cat would have been a woman, they'd have a nice time together. The God was listening – low and behold the cat turned into a beautiful woman instantly.
The man was surprised but overjoyed. A few years passed with both having a great time together, and one day ...
A mouse appeared in front of the woman and she grabbed it with her tender hand and ate it raw and alive right that very moment.
The man was disgusted to see this and the God remarked "Look I can change a being from outside but what they are inside even I can't change!"
Disclaimer: No pun intended; just sharing after reading the title for fun. No offence to cats around :)
Coincidentally, after I managed to get my sister to name her daughter Ada after the programming language, I will eventually have to make an effort to get her acquainted with programming. This book will make a good starting point.
Read the sample. I was sold as soon as I ran across terms like “The Society for the Promotion of Cat Ascendency (SPCA)” and “The Association for Cat Machinations (ACM)” and the following disturbingly accurate paragraph:
“Juvenile humans, in particular, are capable of having their internal logic be permanently reconfigured by repeated exposure to certain powerful instructions. These kinds of devices are called purrgrammable logic devices.”
Yes, of course :) It reads "To deal with concurrency issues, you may be tempted to experiment with multiple threads. Do not do this. You will end up with some regrettable racing conditions and then a terrible tangle."