Ok, so I may very well be one of the slowest writers ever, but I am pleased to finally announce that I have completed a draft chapter for what I hope will become my next book: The Nature of Code. Based on my experience getting Learning Processing out into the world I’ve decided to go ahead and experiment with self-publishing. I’m not sure what service I’ll ultimately use or exactly how I’ll distribute the text (most likely as a PDF for sale online as well as print-on-demand physical book) so feel free to write me with suggestions, etc.

Let’s take a moment to go over some of the finer points as to why I am doing this.

Dollars and cents

Learning Processing retails for $49.95 (amazon’s discount is 10%: $44.95). When the publisher sells a copy of the book, I get some money (yay for me!). Based on my first royalty statement, this works out to approximately $3.73 per copy. Sure, I’m not writing books about programming with Processing to get rich, but I did spend a couple years working hard on the project and every little bit counts.

Let’s assume for the moment that I could sell the same exact book via lulu.com. The actual cost for printing the book would be ~$14.00. Ok, so let’s say I choose to sell the book at $25.00 (half the actual current cost.) That’s $11 of profit for every book sold, lulu takes 20%, leaving me with ~$8.80 per book sold. The book costs half as much and I get more than double the revenue! Now, this is just one scenario. I haven’t decided what service to use, how much of a mark-up is appropriate, etc. But you get the idea. There’s no reason a no color, no frills, beginner programming text needs to be $50.00.

Release early, Release often

As an author, it’s just nice to have total control over the process. With self-publishing, I can do things like release early drafts of PDFs online for feedback (see below). This is not something I could have easily done with a traditional publishing house. Instead of spending months or years writing a book before anyone sees anything, the idea is that I can just put stuff out there (for cheap) as I type and then iterate. And there are no limits of how I choose to distribute the book (excerpts published as tutorials on Processing.org? Free on my site? PDF for a million dollars? Audio book? It’s all fair game.).

Once the book is done, I can easily continue to make changes and update. Now, Processing has a fairly stable API, one that is not going to undergo massive changes anytime soon. And sure, how gravity works, the formula for the mandelbrot set, these aren’t concepts that are going to change that often. Nevertheless, anytime you write a technical book, technology changes faster than you can write, and no matter how careful you are, there’s no way to avoid making a serious amount of mistakes. With self-publishing and print-on-demand, I don’t have to wait (possibly years) for a print run to finish selling in order to make changes. I could make them daily if I wanted to. And that Chapter on PHP that I realized I really should have included in Learning Processing, well, I could just add it whenever I so choose.

Downfalls

There are certainly some pitfalls to self-publishing. One major issue, of course, is deadlines. Without a publisher I’ve got very little pushing me forward other than myself. In fact, getting this first chapter done took me twice as long as I intended. And other projects are getting in the way, I’m not sure how fast I will actually get to chapter #2.

The other main issue is distribution. I don’t care if I don’t get my book in Barnes and Noble, I mean who is really buying Processing books at Barnes and Noble?! I do need Amazon.com, but looks like there are plenty of print-on-demand options that can be distributed via Amazon. The major question for me is university bookstores. I don’t have any numbers, but it does seem to me that Learning Processing gets stocked in a lot of school bookstores because it is being used as a text for classes. So this is something I need to figure out, how can I get a self-published book to stores.

Oh yeah, an index. The publisher made an index for me. There’s got to be a way I don’t need them for that, though.

In the end, I could be wrong. This could be a failed experiment. Maybe no one will buy it, maybe I won’t finish it. The nice thing, however, is that if I’m really headed in the wrong direction here, I can always change my mind and start sending out proposals to a publisher. But the other way around, going from a publisher to self-published, well, that wouldn’t be so easy.

So, if you’re interested in checking out what I’ve started so far, for now (subject to change), you can purchase the PDF on lulu.com. I’m selling draft chapters for small amounts with the idea that I could raise a little bit of money to pay for design, typesetting, technical editing, etc. once I’ve got a more finished draft.

http://stores.lulu.com/dshiffman

or on scribd.com:

The Nature of Code. Chapter 1: Vectors. The Nature of Code. Chapter 1: Vectors. dshiffman Draft chapter one of my upcoming book “The Nature of Code”. This chapter covers the concept of a vector and the basics for programming motion with the PVector class in Processing.

Come one, Come all

It’s taken me a little while, but here’s a brief recap of what was quite possibly the most heart-warming and thrilling conference I will ever have the chance to attend — ART + CODE: a symposium on programming environments for artists, young people, and the rest of us.

IMG_7189

First, a hearty thank you to Golan Levin who did a tremendous job planning and organizing the mind-bending experience. Some highlights:

Oxford Project Part III — Thanks to the ever ebullient Ira Greenberg and Miami University for sponsoring (and the Studio for Creative Inquiry @ CMU for giving us space), we were able to convene before the main festivities began to give Processing a push towards some number past 1.0. Stay tuned for exciting improvements in Processing’s video and OPENGL libraries as well as to the IDE itself.

Saturday was a day full of workshops. In the morning, I attempted to teach an entire semester of ICM in under three hours, followed by an afternoon mix of topics related to physics simulation and image processing.

20090308-IMG_7203-1   20090308-IMG_7201-1

Sunday was the day to end all days with the lineup of speakings including lead developers of the languages / environments: Alice, Pure Data, Scratch, Hackety Hack, Processing, Max/MSP/Jitter, vvvv, ExtendScript, and openFrameworks. Some highlights within highlights here were Luke Dubois’ demo of “what is known in the biz as random atonal crap” and Sebastian Oschatz’s boy band metaphor for multi-screen setups (one that I really need to take a look at more closely as we develop “most pixels ever” at ITP.) Videos of all the Sunday talks will eventually be posted at vimeo/artandcode.

20090309-IMG_7204-1  20090309-IMG_7208-1  20090309-IMG_7216-1

On Monday, I was lucky to have the chance before heading home to catch the work of Casey Reas and Marius Watz at the Pittsburgh Center for the Arts.

Of course, all of this was really just an excuse for a nice group photo.

bs08_121208-32  bs08_121208-35  bs08_121208-6

This is long overdue, here are some photos and video from my class’ winter show on the IAC video wall. Six of the projects were made in Processing, three in openFrameworks, and three were pre-rendered video projects (synced using openFrameworks).


Big Screens ITP Show at IAC from shiffman on Vimeo.


As an addendum to the previous post, here’s an early draft excerpt from Chapter 7 on steering behaviors, more specifically a tutorial related to my new path following examples. Also an excuse to cover the dot product in more detail. All based on Craig Reynolds of course.

This semester, I’ve started working on expanding my nature of code tutorials into a book. My plan is to self-publish (looking into a few options) and have drafts available for download / purchase as early as this summer. I’ll also be publishing excerpts from the book as tutorials on processing.org (the first will be a PVector tutorial) and on this site as well.

sign up for e-mail updates about the book

Here is a PDF of the draft table of contents for those who are curious. Feedback is welcome!

I’ve added three new steering examples (based, of course, off of Craig Reynolds’ Steering Behaviors for Autonomous Characters) to the nature of code tutorials. Ultimately, it’s my goal to build out all of Reynolds’ algorithms into a Processing library (much like Open Steer), so stay tuned. . .

   

Path Following
Flow Field
Crowd Path Following

I hope to have a new tutorial about the use of the PVector dot product in the path following examples posted in the next day or two as well.

Montreal

2009-02-28 17:42:40 -0500 IMG_7179

I recently returned from a great visit to Concordia University in Montreal where I gave two presentations about Processing. Thank you to Matt Soar and Jason Lewis for being such excellent hosts.

For more, check out the excellent work being created at Obx labs.

Two announcements.

I am incredibly honored and excited to be participating in the upcoming Art and Code symposium, organized by Golan Levin at Carnegie Mellon University.


Visit Art and Code

In addition, I’m finally working on a new tutorial page for the Nature of Code site. The tutorial will be about resolving collisions and I’m using the excellent book Mathematics and Physics for Programmers as a basis. I’ve posted the very first example, a simple implementation (using PVector) of two circles (equal mass) colliding. Note the collision is an idealized elastic collision. And the example isn’t terribly sophisticated and needs some improvements in order to work with more than two objects.

Reblogging from REAS: “Ben Fry and I did an interview about Processing with Randal Schwartz and Leo Laporte for FLOSS Weekly. It’s archived at http://twit.tv/floss52.”

Also, check out this wonderful blog by Rachel Zucker and Arielle Greenberg: poems for the first 100 days, a new poem every day of Obama’s first 100 days by a contemporary American poet.

http://100dayspoems.blogspot.com/