Saturday, November 22, 2008

How To Be Dissappointed in Something You Recommend

I recommend purchasing Expert Python Programming, by Tarek Ziadé. I am extremely disappointed in this book, but I'm recommending it specifically if you already have a good grasp of Python.

You see, I was really looking forward to recommending this book. I had hoped that the many people I know with a good developer head on their shoulders, but had not approached Python with seriousness before, would find this a perfect introduction to sit down with. While I'm really pleased with the writing and structure of the content, I'm afraid this is a book suffering from severe editing oversights. There are subtle mix-ups in terminology in many places and some code samples that are simply and absolutely incorrect.

This is where I made my decision:

>>> from threading import RLock
>>> lock = RLock()
>>> def synchronized(function):
...     def _synchronized(*args, **kwargs):
...         lock.acquire()
...         try:
...             return function(*args, **kwargs)
...         finally:
...             lock.release()
...     return _sychronized
>>> @locker
... def thread_safe():
...     pass

I'm actually not going to point out the actual two mistakes here (I suspect most people that notice will only notice one of them). I want to demonstrate that the problem can be subtle for someone new, but otherwise with a good understanding of software development. This rendered the text applicable to a much smaller readership than it would have otherwise been perfect. I want to repeat how much I really liked the writing, and that I really am recommending it this book. I simply want to express my simultaneous disappointment. I'm really looking forward to posting a glowing review of a second edition of this book.


A closing note...

I sat with this book on myself for the last two weeks trying to decide what to do about my decision on it. Honestly, it was a difficult choice to write about it at all. I am certainly not making any friends at Packt. Make your own decision with this free sample chapter.

Thursday, November 13, 2008

How To Follow the Book Meme

This is not a bug.

I traced the book meme that is going around back to this guy. My nearest was The Best Software Writing. Somehow, I really like what this random peek into a book gave me to post. Somehow quite fitting.

The rules for this meme thing are :
  • Grab the nearest book.
  • Open it to page 56.
  • Find the fifth sentence.
  • Post the text of the sentence in your journal along with these instructions.
  • Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

Wednesday, November 05, 2008

How To Spin Your Wheels in Content

The week has been giving me little time to write, with lots of things to run around and do. I'll be waiting on my auto work to get done tomorrow and have more free time going forward. This blog a day thing has been difficult to do with any value so far, but I'll make it all average out. Anyway, I'm cheating today with a preview. This is a list of things I will absolutely be writing in the coming weeks.

  • How To Understand AppEngine Datastore Under the Hood - Part 3 (by request)
  • At least one new "How To Test Django ..." post
  • Per chapter reviews of the exciting new book, Expert Python Programming by Tarek Ziadé. For now, please check out this free chapter!
  • Announcement of a new project many people are aware of to help guide both new and moderate Python developers
See you 'round the tubes.

Tuesday, November 04, 2008

How To Vote

I voted.

Being a geek, I took a keen interest on the touchscreen voting machine used in my county. There was a checkbox within the larger label for each option. This kept everyone safe from the common "finger slip" mistake that has plagued the touchscreen voting machines. I also took note of a window along the side, where I could watch my votes being recorded on the paper receipts. I feel pretty confident most voters will completely ignore this physical verification.

There were some parallels I drew between this and a recent interest of mine: touch screen interfaces. Voting machines might make us angry every few years, but mobile phones and PDAs annoy us each and every day. We're reaching a critical point in the cheapness of touchscreen displays, making them the inevitable first-class interface. We need to come to some standards and practices that give them the consistancy and expectedness that we get using our common interfaces today. At the same time, I'm glad to see a place where some creativity can happen seriously.

Monday, November 03, 2008

How To Own A T-Mobile G1 for One Week

So I've had my G1 for about a week now and I'm happier with it every day. There are still some issues I have, but none that are related to the most important piece: the Android operating system. I love the software available and new things come at a decent pace. There are some network issues, but limited to my particular side of the apartment complex. I don't know anywhere else in town that I don't have good coverage.

Interestingly, to me, my favorite application is Bubble, a basic bubble level app that works vertically or horizontally or to test the level of a surface. I don't have a lot of use for it, but it highlights some of the things I like most about open, portable devices. I imagine a real reduction not just in the number of devices I need (I'll be selling my iPod soon) but just the number of things, period.

Now, I have felt like there is a lack of games for the system. More, that the games there are have been pretty much feeling like prototypes pushed to the Market because it feels cool. I'm really hoping this will change, but I think the mobile gaming market is going to need a good cross-platform solution before we see really nice things. I'm sure the iPhone people will tell me how they have better games, but I can't imagine really good entertainment available until we get a common platform for Android, the iPhone, Windows Mobile and Blackberry devices, and their brethren. Get on it, Adobe. If you loose mobile, you loose your foothold.

I've started to get really interested in mobile development. Some serious thought went into hacking in the Android SDK to get Jython on the device, but I feel confident it will be done and I simply don't have the cycles for it. It has given me a new mindset in my web work, however, and I'm giving some real consideration to the problems there are doing just about anything on the mobile web. Yeah, this Android Browser can handle just about any page I've tossed at it, and I'm really happy about that. We can't deny, however, that it just doesn't work to implement the same on something completely different. I don't like dragging text and I hate horizontal panning with a passion.

Sunday, November 02, 2008

How To Blog a Day for November 2008

So, the recent interest in National Blog Posting Month has made me shift gears from NaNoWriMo to, obviously, posting once a day every day this month. Obviously, I missed the first, because I was out of town. I could have managed it anyway, but the change in plans was late in the game and I was out late that night. This still gives me a chance to flex the writing muscles and I'm really happy to take part in it. Thanks to everyone who has inspired each other to keep this going this month.

This is my semi-mandatory and semi-cheating meta-post about the month, where I get to say I posted for the day. Really, I'm just filling time by writing about the fact that I'm going to be writing. To give this emptiness a little meat, I'll say that I have something of a schedule. I have a few topics to be covered in some fun posts and even somethings to cover in a series of posts. It will be a fun month.

Everyone, keep me honest. Yell at me if I miss a day.
I write here about programming, how to program better, things I think are neat and are related to programming. I might write other things at my personal website.

I am happily employed by the excellent Caktus Group, located in beautiful and friendly Carrboro, NC, where I work with Python, Django, and Javascript.

Blog Archive