Saturday, March 03, 2007

Hasta La Vista, baby

But what did he say when he came back?

I think he just grunted.

I've been busy. With this. But now I'm back (perhaps not every week since there are three more chapters to write).

When I've started this Blog the idea was "blog at least once a week." Nobody will read a blog unless there's content, once a week. Just say something, have a point of view.

That's easy - once a week - easy.

Said he.

A while back I thought "I'll write another Erlang book." I feel stressed here, put upon. At the last (every) Erlang conference they say "when are you going to write another book?" - I say "soon." I approached a few publishers (the BIG ones, I won't embarrass them by saying who).


They said "no".

I said "why".

They said, "there is no market"

Chicken and egg.

Then I discovered Print-on-demand and the Lua book, I mailed Roberto Ierusalimschy, we exchanged a few emails. I thought "I'll start a publishing company." I'll be my own publisher.

I had great dreams "We'll be like Faber and Faber", I'll be T.S.Eliot we'll publish great books, beautiful books, wonderful books, books that make you make you think, with code, code that makes you cry, code that makes you think...

Cool, cool, we'll published Erlang books, Haskell books, Clean books, Prolog books, this is an art form, let's create some art, lets publish art.

He called it the "art of computer programming", remember ...

I'd found my publisher - me - great - no grovelling letters to publishers.

I wrote to the Erlang list "I'm going to write a book..." I've got a publisher.

A few days passed ...

"Hi my name is X.Y ... I'm a friend of Dave and Andy, ..., would you like to talk to them ..."

"Talk sure, no harm in talking."

I mailed Dave - I said "convince me that you can sell more books than I can sell." - come on if I give up my dreams of being T.S.Eliot then something has to give.

And so I started work. Dave said "the first thing you have to do is find a voice" - like, ummm, I've got a voice, hello.

He said "write a few chapters" we'll fix the voice.

He said "Joe you sound like you're standing on a mountain preaching, I want you to imagine you're sitting at a terminal with your friend beside you, explaining how things work."

I struggled - he re-wrote bits of my text - like "this" he wrote.

When I started I thought "who is my audience." I had in my mind the Erlang crowd. As I wrote we re-focused - it became "the Java programmer who has heard about Erlang and wonders what it is."

...

Sorry, Guys (Erlang Guys) this one is not for you, you know this stuff

...

Yesterday it happen. It clicked. I'd been feeling tense, nervous, hyper. It happens like this - ask Helen.

I wrote the otp introduction chapter. The book's in beta so this chapter was not yet written. I went into pure flow. I wrote for three hours in your time ten seconds in mine. Then the tension dropped, I felt expunged, cleansed, relaxed.

Then I read what I'd written.

In the gen_server there's a function called terminate with two arguments (terminate/2).

So I called the section "Hasta La Vista, baby."

I would never ever have written that six months ago.

I found a new voice I didn't know I had.

Thanks Dave, for helping me find a new voice.

Enjoy the book.

Joe

10 comments:

Don said...

I ordered the beta book the instant I read about it on programming.reddit.com - I think you made a good decision going with the Prag guys... you'll reach a lot of people through them.

I read your thesis during my vacation in Maine this year - along with a Hemingway novel... sorry to say he's a better writer. I hope you're not offended.

I have dabbled with Erlang for quite some time now. I'm hoping the book gets me into gear and brings me to the next level.

omeday Erlang will be appropriate for one of my projects. I work in biotechnology - and I'm waiting for the day when I have a high throughput, highly concurrent application to design and build...I know what language I'll be using.

I'm glad you're back to writing blog entries and really appreciate you taking the time and effort to write the book.

Vamsee said...

Whoa, whoa, whoa... I think I'm hyperventilating! Thanks for answering our prayers. Never regretted giving my money to PragProg :). Me off to order a copy...

Lawrence Oluyede said...

I bought the PDF beta yesterday and it's great. You sound like a true Pragmatic Programmer in the pages. Thanks for the effort. I don't know Erlang very much (I'm a Python dev) and I'm gonna love the book ;-)

Aidan Kane said...

and I've just finished reading that book... and what a book it was!

On on hand I feel really rather pleased that there's finally a wonderfully straight forward introduction to Erlang that any programmer can understand. On the other I'm a tad jealous that everyone has access to this resource and it's no longer my satisfying little secret!

just need to get ahead of the game before everyone is banging on about Erlang after the first videocast hits the web I guess.

Aidos said...

any idea of when we can expect the next installation of the book Joe?

I've just finished reading your 'Making Reliable Distributed Systems' thesis and I'm feeling very inspired. really loved your idea of having "magic" processes for dealing with things like spawn - it just feels clean and elegant. do you have plans to expand on this further?

Dave said...

I smiled as I read your post Joe. I am so glad that you have written this book, and in doing so that you have found a new "voice" which will be comfortable to those learning the language for the first time. As an aside, I *am* exactly your target audience; an experienced programmer of Perl, Python, Java/JEE and now Ruby (and Rails) who has been tyre-kicking dynamic languages like Haskell, Lisp and Erlang for a while now.

I think you are right in your identification of target audience, and your book represents a tremendous opportunity to bring Erlang to this broader audience. And you must be right, because I just bought your (beta) book from the PragProg site. BTW I got interested (again) in Erlang and inherently distributed and concurrent programming languages after seeing Andre Pang's erlang talk at Linux.conf.au 2007. His slides are available here:

http://www.algorithm.com.au/talks/concurrency-erlang

rfielding said...

I went through the beta of the pre-release pdf of the upcoming book some time ago and am waiting for my print copy to arrive in the mail. I probably typify the curious Java/C programmer who is newly intrigued by Erlang. I think a few things are under-emphasized in everything I have read from any source:

- The FSM/Tail recursion link. Functions doing receives and tail recursion look almost exactly like a state in the FSM that might be specified in design planning. Contrast this with OO, where the methods are generally verbs rather than states when code gets written.

- Cleanly modelling FSMs without tail recursion (ie: in Java) is less natural than it should be. Ping/Pong comes to mind.

- How programs that have mutable state at the heart of their design are properly (as in with same asymptotic performance) translated to the single-assignment idiom. For example, in a game of Go, you just write a single cell into a 19x19 array and you are ready to evaluate that move. Creating a new NxN array populated to the new position on every move would be asymptotically worse, so it's a non-solution. This one design patterns issue could be the subject of an entire book (or industry?) because single assignment apparently moots a huge body of algorithmic knowlege.

- Conceptual similarity to CSP, and where it actually differs from that formalism.

Robert Dober said...

It is quite unique for me to have the opportunity to read the thoughts of an author while reading the book, and I like it a lot. BTW Joe I am sure that Dave did indeed something really good to you by helping you to find your voice for the book, but mind you, I had love to read more from you in the style above, yes even about Erlang or Ruby or Smalltalk :).

Great writings.

Cheers
Robert

Adam said...

Joe,

I was wondering if in the second edition of your book you might include a short history of Erlang beginning with its roots in Prolog. I have been reading http://www.coli.uni-saarland.de/~kris/learn-prolog-now/ and have found it fascinating to see where things started off in Erlang. I do not have an ACM account to be able to read your presentation at HOPL-III.

I have also been enjoying your thesis and found that a lot of material made more sense in the order it is presented there.

Thank you for your great contributions to society!

-Adam

Anonymous said...

[url=http://firgonbares.net/][img]http://firgonbares.net/img-add/euro2.jpg[/img][/url]
[b]buy bluetooth software, [url=http://firgonbares.net/]soft sales software[/url]
[url=http://firgonbares.net/][/url] adobe photoshop cs3 for mac full version price comparision software
sell software source [url=http://firgonbares.net/]retail store layout software[/url] software in shops
[url=http://firgonbares.net/]software discount price[/url] store locater software
[url=http://firgonbares.net/]buy software uk[/url] Photoshop CS3 Extended Mac
to buy oem software [url=http://firgonbares.net/]what software to buy to[/b]