Posterous theme by Cory Watilo

Reviewing The Noticer by Andy Andrews

Michael Hyatt is the CEO of Thomas Nelson, a giant Christian publishing house. He's been tweeting about a soon-to-be released book called The Noticer. I've never done this before, but Hyatt's enthusiasm lead me to request a reviewer's copy of the book in exchange for my promise to post a review on my blog. Here goes. The Noticer tells the story of the ageless Jones (not Mr. Jones, just Jones) who helps people in crisis find perspective and meaning in life. The Noticer is a quick read and felt familiar... like a Patrick Lencioni leadership/business fable, but focused on inspiration and encouragement rather than business principles. There are also traces of Carnegie's How to Win Friends & Influence People and Chapman's Five Love Languages. Jones helps people save marriages and families, brings hope to the hopeless and offer meaning for those who find none in life. Brief interactions lead to transformed lives. Jones reminds me of Papa from The Shack. Jones isn't God, but he does have a hard-to-pin-down spiritual character. Where Papa is "especially fond" of each person, Jones is their "best friend". Like Papa, Jones appears differently to each person -- Latinos know him as Garcia, and Asians know him as Chen. Jones is a sage and encourager. He teaches his friends to ask what others would change about them if they could? "[I]f you want to be a person of influence -- if you want people to believe the things you believe or buy what you are selling -- then others must at least be comfortable with you (p15)". Another favorite quote comes from a time when he encourages an aging widow about her purpose in life: "Sorry, but I've never known a single person who made a tiny difference. I am not even convinced it is possible. So, you will have to settle for making a huge difference" (p 85-86). Many personal development books teach techniques that lead to or feed greed. While Jones' advice is definitely practical, it aims towards higher purposes, for affecting change, reconciliation, love and making big differences in our world. This is the best kind of inspiration. Like so many books that use narrative to teach truth (think A McLaren's A New Kind of Christian, Lencioni's books, or even The Shack), the plot of The Noticer can be forced and thin at times, but it doesn't detract much from the book. To fully flesh out the wide ranging themes would have required a book that was four times as long and would have moved the short and readable text out of the reach of many. Even if this book doesn't affect "change in an instant", it may be a jumping off point into deeper topics pushing you to find wise friends who will speak truth and offer the same Jones-like "perspective". Looking for motivation and inspiration? Pickup a copy of The Noticer.

Feeling Nostalgic... And The Next Five Years

I'm feeling nostalgic today, my last day at MarkMonitor. My good friend Blake Hayward and I founded CollectiveTrust five years ago. MarkMonitor acquired "us" about three years ago. That chapter closes today. Looking back, it's easy to break down my career into five-year chunks. The first five years I spent in grad school, discovering programming, and getting started as a consultant. The next five years I focused on tabbed browsing and NetCaptor. The last five years have been spent on anti-phishing technologies (and more recently R&D stuff) at CollectiveTrust/MarkMonitor. It's hard not to wonder what's in store for the next five years. They say you overestimate what you can accomplish in one year and underestimate what you can accomplish in five years. At least I know how the next five years will start. I'm taking a few days off this Easter week before starting Monday at AT&T Interactive/YellowPages.com on the Search and Data Services Team. I'm excited for a number of reasons... but mainly because it looks like I'll be working with a very strong team made up of *really* smart and experienced people. Most of my work has been independent or as team leader so I'm looking forward to learning how much a strong team can accomplish. What about the next five years for our family? Deo volente, our youngest, Claire (5), will be the age our oldest, Lauren (10) is now. Luke will be 13 and probably eating us out of house and home. Lauren will be 15 and I'll be training as a ninja to scare away the boys. And Nancy and I will celebrate our 20th wedding anniversary. Wow!

Graphing Total Daily Tweets

Last year I started tracking the total number of tweets posted to Twitter every day. I wrote a Ruby script that uses the Twitter API to post a new tweet to a private Twitter account and log the ID number of that tweet. That script runs once a day at the same time every day. Tweet IDs appear to be auto-incrementing integers, so we can track the total number of tweets posted in the past 24 hours by subtracting today's tweet ID from the previous one. Another Ruby script processes the log file so I can feed it to Excel to produce pretty graphs. I started the script in April 2008 and promptly forgot about it before checking out the results today.
Media_httpadamstilesc_udktm
This graph shows the number of tweets posted each day for most of the last year. I had to smooth the data in a couple of places when Twitter was down... in those cases I just extrapolated between the closest two points. A few quick takeaways:
  • As noted by others, Twitter is busier on weekdays than on weekends
  • Notice the traffic surge during the November 2008 elections
  • Notice the decrease over the 2008 Christmas holidays

Data Store Shards in Google App Engine?

Media_httpadamstilesc_kvcfd
The picture on the right shows the unique id numbers of some of the shortened URLs in the ur.ly database, sorted by created date. Those unique ids are automatically generated by Google App Engine's data store. Surprised by what you see? Most databases make it easy to generate auto-incrementing id numbers as keys for database access. At first glance, it's surprising that the ids generated by GAE are not in order. They aren't random, but there are some interesting patterns. This shouldn't surprise us - what we're seeing is one way that the data store makes scaling possible. It looks like the data store is partitioned or sharded so that different groups or sets of items live in different databases. Ids 28-33 live in one place while 14-18 live in another. Each shard is responsible for generating its own unique ids, and the range of ids a given shard can generate is somehow limited so ids from different servers won't collide (see the auto_increment_increment and auto_increment_offset variables in MySQL for something similar). I also assume that ids are distributed (think memcached's consistent hashing) so finding the correct shard for an id is quick. If ur.ly ever gets really busy, it'll be interesting to look for evidence of a larger number of shards, perhaps dynamically allocated in response to need.

ur.ly - Dang Short Urls Powered by Google App Engine

Google App Engine let's you build web apps that run on Google's infrastructure. What's the best way to get familiar with a new framework like this? Build something -- preferably something simple and useful, and that's what I set out to do. I've played around in the URL-shortening space pioneered by TinyURL and understand the problem domain well. I've built a couple of these in PHP and Ruby (merb) and registered the ur.ly domain in September 2007 but never released anything. When GAE launched, memories of Steve Rubel's Could a Billion TinyURL's Go 404? post (hat tip to Dave Winer) echoed in my brain. Why not build a URL-shortener on GAE and let Google worry about scalability? So I built ur.ly, a simple, super-scalable (thanks GAE), fast (yeah memcached) URL-shortening application. There's an API to make it easy to use and it's open source so you can play with the code or run your own. Feedback anyone?

Volunteer Pumpkin

Media_httpadamstilesc_qhxbc
I'm a composting geek. We compost all of our non-meat table scraps, coffee grounds, and some yard waste and then dig it into our garden soil each year as a natural fertilizer. It's always fun to see what "volunteers" pop up from that compost. After Halloween we composted our jack-o-lanterns, and this year our favorite volunteer is a pumpkin vine, complete with one little pumpkin. I wish coffee plants would volunteer. Hmmm.