Expert Python Programming book review Sat, 24 Jan 2009

The sordid story

I, too, was contacted by Packt Press to review Expert Python Programming by Tarek Ziadé. I finished reading the book months ago, but didn't get around to writing the review.

Then I saw the review from some person I don't know and the reply from Tarek. Tarek then went on to work through all the "bugs" and put out a new revision of the book. I still didn't get around to writing a review.

Then I saw Orestis' review. This review is pretty comprehensive. I think it covers a lot of the things I was going to say, so I'll just fill in the gaps.

The short review

The book is pretty good. It's really aggressive in that it's trying to cover a lot of ground and as such some of the chapters don't get very deep. Even so, I think the book does achieve it's mission:

  1. it tells Python developers who are unaware of tools that would help them do development in Python what they're missing,
  2. it tells them what tools and other things in the Python world fill those gaps,
  3. it walks through how to use those things (generally speaking)

There are two things I wish had been different. The first is that every chapter should have ended with a "further reading" section that listed books, magazine articles, urls and other resources that further cover the topic. That would have really helped people the book is targeting.

The other thing I wish had been different is that many of the urls used throughout the book are "fragile": they're really long, have a lot of funky bits in them, and if the owner of that site moves anything around, the url becomes a dead link. I'm not really sure how to fix this, but maybe books should have links in them that redirect through the book's web-site to the url in question. When the resource at that url goes away, then the book author can change the web-site to summarize what was there or provide a different link.

If you're interested in the book

If you think that's interesting, check out the Tarek's blog entry about the book and sample chapter.

If you still like it, then it's probably worth buying or waiting for Packt Press to send you an email to review it. ;)

Status: 12/23/2007 and year in review Sun, 23 Dec 2007

It was a pretty wild year for me. I had a massive health crisis at the beginning of the year, wrote an almost-working compiler for a functional language using SML targetting SPIM, finished up grad school, got married, landed a job at Participatory Culture Foundation, made a lot of new friends, mentored a GSoC project, helped out with GHOP, started the big push for PyBlosxom 2.0, released a new version of Bee Careful, Marvin under a CC BY-NC-SA 3.0 license and submitted my first patch for Firefox 3.0.

I started the Nomadic Telecommuting Herd which has regular meetings, but hasn't extended beyond Chris and I, yet. I'll push this more at some point in the spring when it's more fun to go outside.

I also joined a few projects that I haven't been able to get to yet like the Python docs project and Geyser. I'm interested in helping out both of them, but haven't found the time yet.

This year I want to tame the firehose, get some good work done, participate more in other projects, possibly learn C++ and reach out to other people in the area (Somerville, MA, USA) to get together and hack more. I'd also like to get a new laptop, but the longer I wait, the better the possibilities become.

Status 12/07/2007 Fri, 07 Dec 2007

Went out to lunch with Chris, John and Dean (who I don't think has a blog). That was pretty cool. We talked about a bunch of stuff and the hamburgers at Christopher's in Porter Square (Cambridge, MA, USA) are really good.

I continued working on adding enclosure viewing support to the subscribe preview page in Firefox 3.0. I've almost got Yahoo MRSS support in. Mental note: one wastes less time if one double-checks the tests to make sure they're testing correctly. Oops.

I'm doing some minor mentoring for GHOP mostly on PyBlosxom related tasks. I'm on both of the mailing lists for GHOP-PSF and it's hard to keep in mind that the people working on these tasks are students in high school and early undergrad. It's like an army of really able, but not very experienced, bodies hungrily munching large bites out of project todo items. PyBlosxom had 4 tasks in last week and 4 in this week. It's great because the help is fantastic and it's forcing me to get around to work on organizing the project and development for PyBlosxom 2.0.

If you're in high school or college and want to do some Python-related work, definitely take a look at GHOP! If you're a Pythonista or Pythoneer and have some spare cycles, definitely come help us mentor. If you have a Python project and need help with screencasts, documentation, testing and other small tasks, take a look at GHOP. Titus has more on his blog.

PyBlosxom 2.0 is going to be a huge overhaul from PyBlosxom 1.4. I'm getting lots of help from the people who hang out on #pyblosxom on IRC, Ryan, Michael and various other people who pop on, ask questions and help identify issues. Progress is excellent so far.

In PCF land, I have a blog focused on PCF work and Miro development. It's at I figured I'd keep it separate. It runs on WordPress so that's giving me some WordPress experience.

Whoever fixed NetworkManager for Ubuntu Gutsy should get a gold star. I did an update on 12/4 and picked up a new set of packages and my perpetual wireless networking problems all went away. Bless you!

Also, if you've got young children in your life, definitely take a look at Bee Careful Marvin. It's geared towards children up to around 6 or so. You can get a professionally printed version at Lulu, but you can also download a PDF for free. It's released under a Creative Commons BY-NC-SA 3.0 license and "the source" is all at that link. Print it out, copy it, give it to your young friends, translate it, rewrite it with Star Wars dialogue, ....

Bee Careful, Marvin! (2) Sun, 11 Nov 2007

Back in 2005, S and I wrote a children's book called Bee Careful, Marvin. We did the entire thing by hand using free/open source software (Ubuntu, Scribus, the Gimp, ...) and self-published it on Lulu.

After two years, I finally got around to updating the book. I updated the license to a Creative Commons BY-NC-SA 3.0 license, moved the licensing text to the end, added a dedication page and updated the colophon. I also put all the "source" in version control using Bazaar and built a Trac instance to manage it and any other books S and I write going foward. The Trac instance is at

The "source" is under a disjunctive set of licenses: GNU General Public License 3.0 or later and Creative Commons BY-NC-SA 3.0. People can choose which one fits their needs better.

The book is free--I encourage anyone to download it, purchase it, copy it, give it to a friend, give it to a child, translate it, adjust the layout, ... Light user testing has suggested it appeals to children between 2 and 4 years of age.

It took forever to get around to figuring out how to manage the pieces, but I'm pretty happy with what we've got set up. We're currently working on the next book... hopefully we'll get it done by the end of the year.

Bee Careful, Marvin! Sat, 17 Dec 2005

S and I wrote a children's book a year or so ago and only recently finished making needed revisions and self-publishing it on We ordered a few copies to make sure it looked good in print and they showed up today and they're fantastic!

The book was created using Open Source tools The Gimp and Scribus. The book is released under a Creative Commons license (by-nc-sa 2.0). We decided not to collect royalties, so the price of the book is solely Lulu's publishing costs.

The book isn't perfect--there are some color issues I'm puzzled about. It's our first book, though, and we're really excited--this is a wonderful moment for both of us.

Our Lulu storefront.

Status 04/05/2005 Tue, 05 Apr 2005

It's shaping up to be a long, but productive week.


We're working through the problems a bunch of problems with the contributed plugins that have been sitting around for some time. This includes assigning licenses to all the plugins, adding version/author information, making sure they have some modicum of documentation, and at some point (hopefully) testing them all out in PyBlosxom 1.2. Hopefully this will put the contributed plugin pack in a much better state of being.

Steven, Bill, Wari, and Doug decided that it was high time we started using various features of CVS to make development better. I've had some growing pains with this and kind of wished people had figured things out and written up a process before making the changes. Even though I'm grumbling about the way it's happened, it is a good thing it is happening and it will make it a lot easier to do some of the things we've been doing for a while now. It'll also help a huge amount now that we've got more than one or two active developers.

I have a lot of plans for the PyBlosxom manual, but haven't had time to execute on any of them yet. The wiki we were storing documentation in was taken down since the jackass ISP that Wari had got all befuddled and confused and terminated his account with them. The problem here is that I had documentation in the wiki I hadn't had time to port to the manual yet. Fortunately, Wari sent me the contents of the wiki. I had documentation in there that I hadn't had time to port to the manual yet.

I'm 90% sure I know how to restructure what we've got right now to allow for Bill's index caching and also other storage systems. Depending on how things go with everyone else's PyBlosxom projects, I'll prototype this, write up a specification, send it round, and then implement the resulting modifications all before the next version of PyBlosxom.

Since Ted's PyBlosxom presentation at PyCon 2005, we've had 10-20x as much PyBlosxom development activity. That's been really exciting but also really daunting. Definitely a lot of growing pains mostly between my style of running things and peoples' vision for how things should be run.

Steven is still working on fixing the PyBlosxom registry to be a bit more user-friendly. We're short on flavour templates and some people really dislike this so I want to spend a week building new flavours at some point in the near future. Maybe I'll toss all the flavours in the contributed plugin pack to replace the existing flavour examples that come with it (I highly doubt anyone uses any of them).

Getting there....

grad school

I was accepted into the masters program at Northeastern University CCS. Starting in September, I'll be a full time grad student. My advisor is Mitch Wand (which is very exciting) and I was awarded a Dean's List Scholarship which reduces the costs assuming I maintain a 3.0 GPA and miscellaneous other things in fine print. All very exciting.

Need to learn Lisp, review all the stuff I learned in college, and attempt to get ahead of the game by covering as many of the things I'm going to be learning as possible.


I've adjusted the way I'm working on DarkRifts such that I'm limiting myself to one coding goal every week. This will reduce the amount of stuff I'm doing there, but more importantly, it makes it easier to schedule things and gives me time to work on all the other non-DarkRifts stuff out there.

My book(s)

I'm in the process of looking at Lulu to do some self-publishing. S and I wrote a children's book last year which might be a good candidate for Lulu. The problem being that we'd need to redo the layout.

On top of that, I'm novel-izing the D&D campaign that I've been in for a year and a half. That's been going really well so far. I'm done the first couple of chapters. If anyone else plans to do something like this, it helps to take really good session notes and maintain a public set of summaries that other people in the campaign can fix.

On top of that, S and I have some ideas on the next children's book, but we still need to sit down and flesh them out a bit.


Work has been super busy the last couple of weeks on top of everything else.

And I started running again and I finally got around to cutting my hair, too.

Thank yous Tue, 30 Nov 2004

A month ago, my girlfriend and I wrote a children's book about a bee who gets stuck. It was pretty wild writing it--I had most of the process down before I met her, but she definitely filled in the pieces I hadn't figured my way through yet. It was really great--we were a great team. Anyhow, so last week we finished moving the book over to PDF format, printed a copy on the color printer downstairs, and gave it to my friend to give to his daughter. Turns out she really liked it--which is really great! And she wrote us a thank you note which was really really neat!

We enjoyed writing the book. We especially enjoy the fact that someone enjoyed it.

Seven Pillars of Wisdom Sun, 16 May 2004

I really loved reading this book. Between the sullen commentary of the Arab revolution from the perspective of TE Lawrence to the wonderful descriptions of the other characters involved it is at once a fascinating piece that talks about the Middle East and the cultures that exist there and also a journey by a single man putting forth all his efforts for a cause he doesn't quite believe in.

Anyhow, it's phenomenal. Definitely worth reading.

AMAZON::0385418957::Seven Pillars of Wisdom, by T.E. Lawrence

O'Reilly is such an amazing company Fri, 02 May 2003

This just blows my mind. To date, I've never read an O'Reilly book I thought was a waste of time. I've never had anyone ever tell me they think O'Reilly was a sucky publisher and that their books were terrible. I've never heard anything negative about them at all--as near as I can tell, everyone thinks they're great. On top of that, Tim O'Reilly is a pretty cool guy. That's pretty unusual.

Then they do really intensely cool stuff like adopting the Founders' Copyright. Granted, it's for old books and most people don't find value in those older texts, but what a cool thing to do and those books _do_ have value. There's a lot of wisdom in those old texts--nothing to laugh about. If people read more of them, there would be a lot fewer web-programming noobs running around with not a clue in their collective noggins.