I sometimes forget one of the main reasons I like programming, and that's that programming is fun. People can talk all they want about problem solving and helping others to accomplish tasks, but for me it's all about realizing that I can do it, and that's always been a fun thing. Granted, there's some code to write because some user (somewhere) needs a new feature, or there's a bug to be tracked down and squished, but the main reason I like programming is that it's, well, fun.

Of course, what with everything else, I had forgotten this. Life is busy and I'd generally gotten to the point where any programming I did was to do with something that others were asking me to do: give a technical presentation, write an article, consult with a start-up, deliver a course, or start another book. I was programming, and it was OK, but I was doing it to get to some end-point, not necessarily to have fun. I wasn't programming for the sake of programming; I was programming because I had to.

And then something wonderful happened.

I came across Erlang. Or to be more precise, I was pointed at Erlang by one of my past-students who wrote an intriguing article about an Erlang CMS called Zotonic for Linux Journal magazine. The author of the article, Michael Connors, then sent me an email together with a "you've gotta take a look at this!" plea. Based on this, I thought Erlang interesting enough to explore it more and I've been learning Erlang for a number of months now.

In fact, I've been programming in Erlang just for the heck of it!

I'd forgotten what this was like: writing code, realizing that I can do it, and then getting it to work can be so much fun! Nobody is asking me to write Erlang code. I'm also not writing the next-best killer Erlang application. And, I've not got some darn-hard problem that needs solving in Erlang. I'm simply programming in Erlang in my spare time and it's fun. What a lovely feeling.

Of course - me being me - I couldn't resist the opportunity to tell others about my latest language "find". So, when O'Reilly Media asked me if I wanted to do another webcast, I jumped at the chance. Feel free to check out my own personal take on Erlang. Enjoy, and have fun!

[Ed note: Are any of you HF readers programming in Erlang? Even if not, do you agree with Paul--if so, what is fun about programming for you?]

First, a quick overview of the new features in iOS 5. For the OS itself, the biggest change is the addition of iCloud to the storage solutions for apps. Primarily Apple apps are leveraging this ability to support synching at this point, with Photo Stream, iMessage, and iTunes purchasing support, among others, but as time moves on that will expand. Newsstand support has the potential to change the publishing industry by providing a centralized place on the device and method of updating subscription type materials. You can find the Apple summary of these and other features here.

There are lots of other bells and whistles, the new Siri app is a personal assistant app that can parse meaning from verbal messages and find out information for you, but it only really works on the new iPhone 4S. Twitter integration is system wide now, and the new Reminders app is also really cool. It has geo-fencing for tasks, so you can set up a task that says "remember to take my shoes home from work" and when you leave that place, iOS will send you the reminder.

What does iOS5 mean for Xcode? Xcode has two major changes. First, there is now storyboarding support. That means that instead of creating each .xib file and manually linking them together and coding the transitions, you can create a big .storyboard file that contains all of the .xibs for your app and you can graphically edit the transitions between views.

The second big change is that Apple has added ARC (Automatic Reference Counting) to Xcode. A lot of the memory management work that we teach in the book has been automated. While it is stil important to understand what is going on, all the retain/releases that we have so painstakingly put in our code are now handled automatically.

What if you want to use the book with the new Xcode? Just a couple of things that you should know about. First, all the downloaded code here on headfirstlabs.com will still work, no problem. Second, when you create new projects, there are some new checkboxes to be aware of. When the project starts, there are boxes to "Use Storyboard" and "Use Automatic Reference Counting." In order to use our book as it is, you'll need to UNCHECK these two boxes. That's it. If you keep those two things in mind, all the examples in the book will still work without a problem.

One of the things that keeps technology exciting is constant change! Fortunately, these changes are relatively minor as long as you set up the project properly and you'll have happy coding. In the meantime, we're busily working on updating the book, which will be out early next year.

I'm often asked how I came to write for the Head First Series, specifically on their Python-related titles.

I'd been working with Perl for years and had written or co-written two Perl-related texts, and towards the mid-to-end of the 2000s had started working with Ruby quite a bit, no more so than as a result of all the (justified) hype surrounding Ruby on Rails. As a consequence, I'd read (and own) a lot of Ruby-related books.

Now, imagine my surprise when, one fine day, there I was sitting, re-reading some of the material in my well-worn copy of The Ruby Programming Language when - I kid you not - a big bolt of lightning shot out of the sky and buried itself in my beloved book. Take a look at the photographic evidence if you don't believe me.

I took this as a sign that my days of programming Ruby were numbered and that somebody, somewhere was trying to tell me something...

OK, I'll admit that some of that story is not totally true. Actually, the bit about the lightning isn't.

What actually happened was that it was my turn to cook dinner and, as Cooking for Geeks had yet to be written, I didn't yet understand how important it is to actually pay attention while cooking. You see, in one hand I had a pot which I popped on the stove-top to heat up. In the other hand, I had the Ruby book. When the pot got hot (or so I thought), I set the book down on the stove-top while I attended to the pot's contents.

It was then that I noticed a rather strange burning smell... then smoke... then (very nearly) fire. The Ruby book was smoking! Not paying attention, I'd switched on the wrong heat-ring on the stove-top and placed my book directly on top!

Needless to say, dinner was delayed that evening. But, I took this as a sign that my days of programming Ruby were numbered and that somebody, somewhere was trying to tell me something... and, anyway, the contract to co-write (with David Griffiths) Head First Programming (which uses Python) had just arrived.