If you’ve seen my Confident Code talk you know I’m a fan of the cowsay utility.

cowsay "Quack"
 _______
< Quack >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

In fact, I like it so much I wanted to share it with people who might not have had a chance to try it yet. So I put it on the web.

Enjoy it for all of your ASCII-animal speech-bubble needs. The source code is on GitHub if you’re curious. Interesting implementation notes:

  • It was written from scratch starting last Saturday night and then over part of last Sunday.
  • The original Cowsay program, written in Perl, is included in the app. I use IO.popen to open a Perl process and generate the ASCII art.
  • I started with a simple Sinatra service. Then I added Rails in, and mounted the Sinatra service in the routes file.
  • I use Erector for views, and DataMapper for persistence (what little there is).

On a personal note…

It’s a silly little app, but it’s kind of a big milestone for me personally. All my programming career I’ve worked on other people’s projects. I’ve made regular attempts to kick off projects of my own in my spare time, but invariably I’d get sucked back into day-job/client work, lose momentum, and stop in the middle. My home directory is littered with half-completed project repos.

As sad as it may sound, I think this marks the first time I’ve been able to find a small enough project scope that I could actually launch a working V1. I’d proven to myself that I could write libraries and books, but until now I still hadn’t proven I could launch an app of my own.

So, yay for me!

Published by Avdi Grimm

8 Comments

  1. Congrats! I’m glad you made this post because I have the same problem: I can ship other people’s stuff, no problem, but never finish up my own stuff. It’s been easy to get down on myself about it, and it’s good to know that other devs I respect have the same issue and can overcome it.

    Reply
  2. Woot! Shipping is awesome.

    Reply
  3. Fantastic resource. Does it provide an API for mash-ups?

    Reply
  4. Is small.cow no longer included with cowsay? That’s my favourite.

    Anyway, this reminded me to put my ancient cowfortune up on GitHub. It’s been in my .profile for ten years now… https://github.com/granth/cowfortune

    Reply
  5. […] weeks ago I created cowsays.com, in an effort to introduce the joy of Cowsay to more people. In the announcement I talked about how I created the site over a 24-hour period (not counting some UI tweaks). What I […]

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *