113 comments

[ 0.28 ms ] story [ 140 ms ] thread
Author here. Looking to get feedback from programmers before publishing. You can download a sample chapter at: https://programmingforcats.com/download/
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?
Meow. Mwahaha. Why Java? What made you think that cats would like OOP and lots of boilerplate?
I was thinking cats would prefer scala.
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.

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?)

"Java has so little syntax... ". I pronounce this the understatement of the (admittedly young) decade.
I took Object Pascal, C, C++, and Visual Basic. Never Java
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

BASIC was commonly understood because it had no structure or boilerplate to learn, just a few commands.
What you see in the Zinc repository is (obsolete) serialization format, not the code the programmer works with.
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?)

Java is like an older brother. He gets all the work done, takes responsibility, accepts blame and still takes a lot of flak. Undetered.
Herding cats is always my go-to metaphor for software projects.
I don't particularly like cats, but the intro is so well written I'd been tempted to read a little further.

A few folks have already vented that they don't like it. Don't care too much about it. A good bunch of people might love a book like this.

So, there is already "The Naming of Cats", the book needs "The caching of Cats" and you have the two most difficult chapters covered.
Don't forget "The Herding of Cats"!
Well, the two most difficult things with cats is how to name them, how to cache them, and the offset by one when counting the herd.
We need a little discussion as to the best programming paradigms for cats - I'd call it "Cool for Cats"
It is interesting how cats will implement tail recursion.
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.
this is purrfect, I love it can't wait to have the full book: good luck finishing it!
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.

I can't really think of anything critical to add.

Thank you! I agree that cats are an underserved demographic! P.S. Tell your girlfriend to buy you the book for your birthday :)
Are there any good resources for felines in tech?
Think about a chapter about electronics! Soldering with cats is... Weird!
Would you like to have my username instead? If yes then I can message you my details via your site and we can mail hn together to request a change.
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!
No worries. I like your book sample and thoroughly enjoyed your illustrations :)
Will there actually be basics of programming in there or is it just for cuteness?

Buying it either way but it might be a means to finally kindling an interest into it in my spouse. :P

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.
Programming for cat.

    $ /bin/cat - | python -
    print("Hello, world!")
    ^D
    Hello, world!
You should have included some string manipulation.
Nah, handling mouse events would be better.
Knowing my cats, they would experience a buffet overload.
And a red spot in a loop ;-)
Toilet water is a better name for Java indeed
The people you’re hoping to sell this to aren’t interested in programming.

If you can’t sit down for an hour to learn something, you’re going to hate programming because that’s literally the entire job.

You’re thinking of the readers, not the buyers. This is an important distinction, since they may not overlap much.

I.e. this might be one of those books which is meant to be bought as gifts for others, regardless of whether the recipient will read them or not.

Except for the multitasking legstand reference, your introduction describes Donald J Trump

I suggest you change your title to reflect the premise of your book e.g. Programming for Egomaniacs

there's got to be a good python joke for cats but I can't think of what type it would be
Python is highly preferred by tabby cats.
who do not like C 'switch'
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.

>but alas, I could see this being entertaining to 8-14 year old children.

Or adults with a working sense of humor.

Sorry I was raised by the internet.. my sense of humor is much darker than this... (As I would imagine is the case for most 15 year olds)
The internet is and has always been appreciative (and chockfull) of light memes and cat videos as well...
Miauw! Does it have threads? I love threads. Especially if I can turn them into a mess. and what comes last knows what no-one first comes So that.
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."
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.
"Chunky Bacon!"

I loved the characters, sidebars and various stories; I don't remember too much of the Ruby content, however.

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.

:-)

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>:

man cat

As a cat I've been waiting for someone to write a new UNIX shell for us named fish.
Do I have good news for you :) http://fishshell.com/
Why is it called fishshell and not shellfish?
Because...

Bash Shell -> Fish Shell

And if it was shellfish it would be a PITA to Google it.

You ever think you might be sounding a little shellfish?
Because it went Shell, then like C Shell, then like Korn Shell, then like Bourne Again Shell, and then there's like TCL shell.

The 'sh' goes at the end. Shhhhhhhhh.

But there is "sh" at the end of "shellfish"!
there's also an 'sh' at the end of 'fish', which is why that's the name of the shell.
That makes it Shell Friendly Interactive Shell which is redundant. Then there would be Shell Korn Shell, and Shell C shell. The 'sh' for Shell goes at the end as like a grammatical marker. It's postfix. Sh-FI-sh is awkward because it's prefix of the Shell -> 'sh' and also includes the 'sh' for Shell at the end making it a Shell X Shell sort of thing.
OK, I see the logic. How about "She Shell C Shells on the C Shore"?
I've always been surprised that nobody has built a small, secure shell named "nutshell"...

  # 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
:)
`man dog` for me gives:

SHEEPDOG(8) System Manager's Manual SHEEPDOG(8)

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'.
(comment deleted)
I love it!

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.

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!

> even if I’m not the target audience

Ah - so you’re not a cat?

The cat would just eat the mouse, not so much for programming XD
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.”

Excellent work!

This reminds me of The Unadulterated Cat by Terry Pratchett.

Good job!

This site is designed to destroy old eyeballs. Is it just me or is the font razor-thin? Firefox Ubuntu 19.04 HiDPI

Changing <body> CSS rule to "color: black; font-weight: normal" was required to actually read the page here

I thought it was Cats (the scala library) :D
I thought it was Cats for Scala (the library)