Tuesday, March 03, 2009

To The Top Of Mt. Ainslie

Yesterday, I took a fun jog to the top of Mt Ainslie. See, this is exactly what I'm talking about when I say Canberra is the most under rated city in the world. Not quite sure how I would get to the top of the mountain, I started jogging towards it. When I got to the base of the mountain, behind the top notch War Memorial, I learned there was a trail to the top.

Not only is it a well maintained trail with excellent views, but they also have plaques along the way to remember various engagements in WW II. Add to this the fact that I ran by a family of kangaroos, and I have to say, this was one terrific experience.

Here are some photos:

So here's my recommendation: If you do make it to Canberra, the first thing you should do is visit the War Memorial, and then make your way up the trail in the back for a spectacular view.

Monday, March 02, 2009

From Brisbane to Canberra

I'm tapping out this blog entry from the lobby of the hotel we're staying at in Canberra, Australia. We've finally arrived at the last city of our trip (well, not counting the top over in LA on the way home). Whew. It's also the last hotel - I can't say I'll miss packing up and heading to a new city nearly every day. Still, it is a terrifically fun adventure.

Here are some photos from our day yesterday around Brisbane and the Gold Coast:

I have to say, I have a favorite productivity toy: Offline Gmail. I enabled this on my I2X e-mail before our flight, and then used the flight time to read and reply to messages. It all Just Works - it's like being online, only you're not. I think Google's got a winner here. It's definitely worth play around with.

So now I'm in Canberra, Australia. This has to be the most underrated city in the world. They've got museums, monuments, government buildings to tour and parks to hike in. Yet, when you tell Australian's you're coming here, they think you're crazy - why go there? Well, I for one like it here. I've got to do some work first, but then I'm off to poke around and hopefully get a nice long run in.

Let's hope the WiFi cuts and my battery dies, so I can get to playing sooner rather than later.

From England To Australia - The Adventure Continues

I'm writing this blog post from Gold Coast, Australia. I've moved halfway around the world since I last had a chance to sit down, collect my thoughts and blog. What a trip it's been! Let me bring you up to speed....

Our Last Day In England

Here's some photos from our last day in England. As you can see, I took a jog through a local park which the hotel receptionist suggested might have deer for me to see. I was expecting a fleeting glimpse of Bambi as she ran from me, terrified (as is usually case the in US).

Well, things are considerably different over here. The deer were just loitering around, clumped together pretty much oblivious to me. I was informed later, if I had wanted to, I could have fed them.

How they keep so many deer in one spot without them becoming a nuisance to the town is beyond me.

Other highlights of the day included working from a quaint little pub. I had the perfect seat next to the fireplace. Perhaps the pint of beer was the key to making it such a relaxing place to work?

Flying from England To Australia

Our trip from England to Australia was remarkably uneventful. No lost luggage, or messed up meals. Like our flight to England, it went smooth as could be. In theory, the flight is pretty long (about 12+ hours to Singapore, 7+ hours to Brisbane), but with my 3+ hours of battery life on my laptop and 50 movies available to watch, it went by pretty quickly.

Brisbane

We flew into Brisbane instead of Sydney, and it turned out to be an excellent choice. Brisbane was the perfect city to contrast London, and our previous surroundings in UK. It's bright and sunny, down right hot, small, and with the oldest building in town from the 1820's, it's brand spanking new.

We traipsed around the city, seeing the highlights such as city hall, the man-made beach and the botanical gardens. By 3pm, jet lag had kicked in and were barely able to function.

We dragged ourselves back to the hotel and took a much needed 3 hour nap. We then woke up, went to dinner (for slightly above average pumpkin pizza, and a below average Spanish omelet) and came back and crashed.

Jet lag is truly amazing.

Hiking in Lamington National Park

After a day of walking around the city, we wanted to get out into nature so we hit Lamington National Park. It was an excellent rain forest to hike in and provided some really nice views.

By far the most exciting part of the trip was the drive up and down the mountain. Yikes! Even if we had been driving on the right side of the road (which of course, we weren't), it was still crazy scary with the sharp turns and narrow roads. But we made it in one piece, no problems.

The Gold Coast

45 minutes away from Brisbane is the Gold Coast, and the intriguingly named Surfers Paradise. We spent the night here and woke up to another wonderful day of sunshine and beaches.

And that brings us to right now. Whew, what a trip so far.

As for what's next? I'm not sure. At the moment, I'm going to do a bit of work and then perhaps hit the beach? How can you not at a place with paradise in the name?

Thursday, February 26, 2009

England's Roads as Theme Park Ride

So, we did something a bit unusual this trip - we rented a car. Shira was ready to tackle this whole driving on the left thing. She's done a smashing job so far!

Here's a short clip of her navigating the back roads of England:

I don't think the video comes close to capturing what it was like to be sitting, in what's usually the driver's seat, seeing folks whiz towards me on the wrong side of the road. Who needs Space Mountain, when you've got this?

A couple of observations / tips for driving in England:

  • Roundabouts (traffic circles) are a Good Thing over here, so don't fear them. They'll keep you from making right hand turns, which are surprisingly tricky.
  • Regardless of the cost, rent a GPS. Wow, this place would be dang near impossible to navigate without one.
  • If you're entering a roundabout, and there are two lanes, here's the logic you can use to decide which lane to be in: If you're getting off at the first exit in the roundabout, be in the left lane. If you're getting off at any other exit, be in the right lane.
  • Once you're in the roundabout, you've got the right of way, so you can keep circling, without fear that someone will pull in front of you (well, that's the theory anyway)

On the balance, it's been wondering driving over here and its certainly given us access to parts of the country we wouldn't normally see.

Wednesday, February 25, 2009

Hanging In Hereford

I spent the day entertaining myself in Hereford, a little town in the middle of nowhere, about 3 hours from London.

Just beyond our hotel is the Hereford Cathedral, where I spent a good bit of time wandering around. The cathedral dates from the about 1000 years ago and has been growing and changing since then. It's hard to imagine a building that's been growing and changing for 1000 years (think of the wars, regime changes, etc.), but there you go. On first glance, it appears to be one monolithic structure - but upon closer examination there are lots of details and nuances to it.

In the Cathedral you can see an exhibition which shows off the Hereford Mapper Mundi and Cathedral's chained library. And what is a Mapper Mundi and chained library? Well, I'm glad you asked.

The Mapper Mundi is a map of the world created in the 1300's - a remarkable feat, especially considering the monk who created the map never actually left town. The map, centered around Jerusalem contains real places, like the Persian Gulf and Ireland, and biblical places, like the Tower of Babylon and Noah's Ark. It's both insightful and entertaining.

As for the chained library, it is just what it says it is - a collection of books chained to the shelves. Books were incredibly pricey, (according to the guide, a book was at the time worth a small farm - or about $1,000,000 in our dollars) and they didn't want them walking off. So, they chained them down. The library contains volumes that go back 1000 years, easily. You can't touch anything, but you can get awfully close. This being the Cathedral's original library, it contains quite a few religious books. But, it also contained other secular reference material.

After my visit to the Cathedral I made my way to the recommended Cider Museum, but alas, it was closed. I leave Hereford with no new information about cider. Dang.

But, all isn't lost. While waking to the museum I found Sainsbury's - which is apparently England's answer to Wal-Mart. It appeared as though I could buy anything from a new TV to produce in the same store. And while they had a great many items to buy, there were still lacking Motts Applesauce. Is that too much to ask, snack pack sized cinnamon flavored apple sauce?

I then did a few more sites in the city (an epsecially old house and a small museum that covers local history) and then I found my way to the pub where I'm currently typing this out. I asked the waitress what the closet thing to a local beer was, and she recommended Wye Valley Bitter. Maybe it was all the walking I did, or the fact that it's served at just the right temperature (not warm, but not exactly freezing cold) - but I have to say, the beer is good. And, I'm not usually a fan of beer.

Did I mention, I started the day with porridge which contains brown sugar and whiskey? It was actually quite good, and certainly made for a chill morning.

I give Hereford two thumbs up - it's definitely a fun place to explore for the day (and stay around and relax in for longer).

Here are some photos from the day:

Wandering London

Yesterday we had a fun day wandering around London. In the afternoon, I wanted to get some work done, so I looked around for a quiet place to program.

My solution? Camp out at the Tate Britain. The paintings are spectacular, and would have much preferred to browse them, rather than work. But hey, they also made for great ambiance.

Here are some photos from the day:

Monday, February 23, 2009

Most Generous Casino Ever

I was quite surprised that the casino here in London offers free WiFi. That strikes me as both insecure and a distraction. But hey, what do I care, I just think they are being nice.

Someone did approach me as I snapped this photo of the casino floor - it was a fellow gambler who asked of this was in fact a G1.

The best part of this is that we aren't playing with real money - it's £ - which is essentially monoploly money, right?

-Ben (live from a London Casino)

Running Into History

While I spent most of the day working, I couldn't resist at least taking a jog through London. Luckily, there's so much history to see here, you literally can't go anywhere without run across some of it. I took a run through Hyde Park, and here are a bunch of the folks I ran into.

Oh, between the gray day and the fact that all I had was my cell phone camera, these photos are going to be silhouettes - as that's the best photos I could come up with. So yes, you'll have to use your imagination a bit.

Here's Peter Pan atop a cool statue that tells his story:

And Here's Franklin Delano Roosevelt. Other than a partially visible cane, there's no sign that he was crippled. That's not really a surprise, as the statue was presented to him by his Wife in the late 1940's. 50 years later, we were still debating if we should show his physical likeness as people remember him or he actually was.

I'm not sure who this guy is, but he's got cool battle gear and a strategically placed fig leaf.

And this guy - this was the best treat of all. This is a statue of Edward Jenner - the very guy who discovered the Small Pox Vaccine (perhaps discovered is the wrong term?). Regardless, I'm pretty sure my brother doesn't have a job if this guy doesn't reason out what he managed to.

While not a silhouette - I couldn't resist snapping this photo. It basically announces the date at which point water was fed to this point in Hyde Park. Nothing special, except that it took place in 1569. We were hundreds of years from existing at that point. That's so London, just having random stuff that makes us look like a terrifically young country.

OK, better get back to work - enough fun for one day.

Sunday, February 22, 2009

When Travel Works

Wow, international travel is amazing. 7 hours ago we were on a sleety airport in Washington, DC and now I'm in Heathrow airport in England.

Everything about the flight was smooth - no delays, screaming babies, snoring seat mates, meal mix-ups or hold ups in customs.

My only complaint is that my work laptop lasted 3+ hours, so I spent the majority of the flight working instead of goofing off. Stupid extended battery, always making me productive when I don't want to be.

Now we just need to make it to the hotel. How hard can that be?

Here's the Before-During-After shots that pretty much sum up the flight:

Update: We made it to the hotel just fine. We had one of the chattiest cab drivers I can recall, which was pleasant. Apparently, we've come to London during the European Cup Football finals, or something like this. Maybe we'll get lucky and get to see a football riot or something.

Tally Ho!

Friday, February 20, 2009

My Latest Photography Accessory - Why did I wait so long to buy it?

So, there's a photo of my latest photography accessory: two backup batteries for my digital camera. I can't tell you how many times I've been hit with a low battery at the most inopportune times (like, say when the first African American president is getting sworn into office?). Well, now I've got a fallback plan.

The only question I have is why the heck didn't I do this sooner?

One of the big reasons was my expectation of what an extra battery would cost. My main point of reference is a laptop battery which can be hundreds of dollars. I was thinking it might be worth it to just buy a new camera rather than shelling out big bucks for a battery.

I was totally wrong. The batteries are dirt cheap. These two batteries were like $6.00 and came to about $10.00 with shipping. That's nothing.

Now, these are after market batteries, so maybe they don't last as long as my official Canon one. But still, at $6.00 for 2, who cares? (When they melt down my camera, then I'll care).

So, do yourself a favor and buy a couple backup batteries today. Don't wait till you've lost that moment forever before doing something about it.

Reading Web Content Offline On Your T-Mobile G1

I've got some travels coming up, where it would be handy to have web content on my G1 that didn't require me to be connected to a network. That way, I could be doing some reading while in flight.

There may be a better way of doing this, but here's a solution that came together easily enough:

  1. Decide which web content you want to read. In this case, I wanted to grab Starting Forth by Leo Brodie (yes, I know, more Forth). You'll want to confirm that the site is readable on your G1 before you start this process.
  2. Pull down the content to your local computer. For this, I used wget, and ran the command:
    wget -r http://home.iae.nl/users/mhx/sf.html 
    
    The -r stands for recursive and grabs not only the page you point it to, but all subsequent pages on the site.
  3. Plug your G1 into your computer via USB and mount the SD card. Copy the files you've downloaded to the SD card. I placed them in:
      /Content/Books/Starting_Forth
    
  4. Using the G1 Market, install a File Manager app on your device. There are a bunch to choose from, but I randomly picked Astro File Manager, and so far I've been happy with it.

Now, when you want to read the content, you open up Astro File Manager navigate to Content >> Books >> Start_Forth and double tap on the HTML file to read. From there, the web browser should start up and you can navigate the site just like it were online - except it's all sell contained.

Happy reading! And good luck cloning the entire Internet to your cell phone's SD card.

Disclaimer: I'm new to the G1, so if there's a better way to do the above, please share! Thanks.

Thursday, February 19, 2009

Just Call Me Metal Mouth

When I was like 12 years old I had braces and this metal bar installed behind my bottom teeth. Well, a few years ago I had the bar removed as it was annoying.

The result is that these years later, my bottom teeth are out of whack.

But, good news, they can fix it. It's just going to take - you guessed it - braces.

Argh. Braces, again? I didn't like this experience the first time around, how am I going to enjoy it now?

OK, I'm totally living this up - I'm going to get neon ties for my braces, that's what all the cool kids are getting these days.

Also, if all goes as planned, I'll only need them on for 6 months. That's not too bad, is it?

Plus, it is kind of fun to watch them cope with a 6ft tall patient. They had to spend a few minutes adjusting the x-ray machine from 4' 2" kid sized, to Ben sized 6'. I wonder if I'll fit in their chairs? In another month, I'll know.

Argh. Reliving the awkward parts of your childhood isn't nearly as fun as you'd think it would be.

Wednesday, February 18, 2009

Don't take the money and run

I really like Paul Begala's advice to Governor Mark Sanford of South Carolina. Apparently, the Governor admittedly apposes the stimulus plan. Paul's recommendation:

If Republican politicians are so deeply opposed to President Obama's economic recovery plan, they should refuse to take the money. After all, if you think all that federal spending is damaging, there are easy ways to reduce it: Don't take federal money.

Gov. Sanford can lead the way. South Carolina should decline to accept any federal funds for transportation, education, health care, clean energy or any of the other ideas President Obama is advocating to fix the economy. And the rest of the GOP can follow suit.

It's actually an interesting point - different states are not only allowed, but encouraged to handle their own policies in their own way. For example, Delaware is a corporation friendly state, as a result, over 50% of US corporations are incorporated there.

So why not have the Republican law makers who are disappointed in the stimulus plan do their own think? Seems logical to me. And if it works, the rest of the country can follow suit.

Tuesday, February 17, 2009

My Forth Infatuation

You've got to wonder - why the interest in Forth. Well, I'm currently trying to learn the language beyond the basics (and reading the propaganda). And why am I doing this?

Two reasons. The first is the usual - for educational reasons. No doubt, Forth has important lessons about how to solve problems that will come in handy even if I'm programming in PHP. Also, who knows, someone could hire me to do application development in a Forth friendly environment.

The second reason: I think Forth might be an ideal language to program on mobile devices with. That is, if you want to actually write programs on your cell phone (not for, but on), Forth may in fact be the language of choice. Imagine that, you're standing around and want to write some code, so you take out your cell phone and start programming.

Ignoring for a second why you would want to do this (scripting? automation? because you're a geek?), here's what I find attractive about Forth in this context:

  • The syntax is totally flexible and being word based means you don't struggle matching up parenthesis or keeping track of other syntax elements.
  • The Forth philosophy of building software bottom up, makes sense. You could develop a rich vocabulary of words on a desktop computer, and then use them in a convenient way on the actual device.
  • Forth thrives where there are limited resources. A complete Forth environment is measured in hundreds of K, not Megs or Gigs, and is still quite fast.
  • A Forth environment will often include an editor and a file like structure built into it. Essentially, it's its own OS.
  • A Forth environment is interactive, so you can try stuff out easily, yet it also compiles it's code efficiently.
  • Forth words (effectively function definitions) are often a line or two long, making them manageable on a small screen.
  • Forth is highly extensible, so integrating it in with whatever functionality the cell phone offers (like, say, access to an underlying JVM) should be no big deal.
  • Forth has many implementations to choose from, including Java based versions which may require a minimal amount of porting before they run on a cell phone.

In other words, you might consider a cell phone to be a hostile environment to program in - it has few resources, small screen size, a poor keyboard, etc. This kind of environment makes Java or Scheme painful, yet Forth should thrive.

That's the motivation - it should be an interesting experiment to see if my hunch is in fact correct.

T-Mobile G1 Initial Thoughts

I've now had a T-mobile G1 for just a few days, so I'm ready to share my initial thoughts on the device. It will be interesting to look back, once I've really gotten to know the device, to see how accurate they were. They could, of course, be totally off the mark.

Thought #1: It's My Sidekick Grown Up

I've been a Sidekick fan for years, and have always thought that the Sidekick nailed a few aspects of mobile phones early on. Perhaps I have my Sidekick colored glasses on, but I see quite a few similarities in the devices:

    Sync - both devices sync up with a central server, meaning a lost of damaged device is trivial to replace. Google improves on the Sidekick's sync'ing by connecting up to your Google account.
  • Biased to Power Users - Both the G1 and the Sidekick have keyboard shortcuts that make for quick access to both programs and functionality within the programs. From what I can tell, the Sidekick is just a bit more streamlined here, with more keyboard shortcuts and a better keyboard layout (I miss having the arrow keys and the trackball).
  • Over-The-Air Updates - Both devices are updated automatically through the magic of Over-The-Air (OTA) updates. This means new software and functionality just shows up throughout the life of your phone.
  • Message Friendly Hardware - The keyboards on both devices are spacious and while not as nice as the early on Sidekick device's, still not bad. I'm amazed at how quickly I was able to move from the Sidekick's keyboard to the G1. Shira's had a BlackBerry for years now, and I still can't type on it to save my life.
  • Easy 3rd Party App Installation - Both devices allow you to browse through a list of apps, preview them, and choose to install the ones you want to have access to. There's no USB hassle or worrying about apps that crash your phone - it all just works.
  • Usable Apps - The web browser, e-mail and IM on the Sidekick were pretty advanced in their day, with web browser digesting real live pages without a problem. The G1 has built on this by providing cutting edge apps that are also next generation.

The end result is that I don't feel like I've given up all that much. Instead of feeling like I'm moving to a brand new platform (like BlackBerry or Windows would have been), I feel like I'm just using the next generation of Sidekick.

Thought #2: Who's this device for?

Corporate E-mail users rely BlackBerrys. Apple users and anyone with a love of beautiful technology can't resist the iPhone. 13 year old girls who type 90 words a minute gravitate to the Sidekick. Windows Geeks love Windows Mobile. But who identifies with T-mobile G1?

The obvious answer is the geeks. After all, what other phone can you get root access on? But, playing around with the phone, my initial reaction of who this phone was good for was a little bit different.

To me, this phone is ideal for entrepreneurs. The reason is simple: it appears to integrate remarkably smoothly with Google Apps.

As a small business, Google allows me to have corporate e-mail, a contact database, a group calendar and collaborative documents all for free and all under my own domain name (so nobody knows I got it for free). And now, with the G1, I can plug in my e-mail address at setup time, and have all these services perfectly sync'ed up on the go.

I've got the same e-mail sync, contact sync, calendar sync and document viewing that my big corporation friends have, but without a costly server setup. That seems like an absolute winner.

If I were Google, I'd be marketing the heck out of this combination.

Thought #3: So. Many. Apps.

As mentioned above, on the Sidekick you had the ability to browse through a list of apps and purchase those that interested you. For example, the phone didn't come with a stopwatch - no big deal, you went and downloaded the stopwatch app. No biggie.

I've heard plenty about how Apple has taken the concept and made thousands of apps available, and the general gist I'd gotten was that the G1 was lagging behind.

Well, coming from the Sidekick world, I have to say, I'm totally blown away. There are hundreds of applications for the G1 and at the moment they are all FREE. I'm like a kid in a candy story, trying to control myself and not download everything in sight.

If you're not used to have thousands of applications to add to your phone, then you'll probably be pleased with what the G1 has to offer. I know I certainly am.

Thought #4: This is fun!

I have to say, I'm still learning a lot, but overall, I'm really enjoying the phone. Yes, I called someone today accidentally and had them on the phone for 2 minutes before realizing it. Such is the joy of getting used to a new cell phone platform. But, overall, I couldn't be more pleased. I feel like I've finally taken a big step forward in terms of technology (from both my Sidekick and Shira's BlackBerry) and couldn't be happier about it.

The Role Of The Union

I think the speech Obama gave at the Lincoln Banquet a few days ago was one of his better ones recently. Like his speech on race or patriotism, it was really a teaching speech.

Give it a listen - even if you don't agree with his position, chances are you'll learn something.

Monday, February 16, 2009

On Demand Book Printing

I wanted a hard copy of the classic Thinking Forth by Leo Brodie. I also wanted it in a hurry. The good news is that it's availabe under Creative Commons (http://thinking-forth.sourceforge.net/). But, at 300+ pages, I didn't want to use my home printer for the project.

So, I gave Kinkos a shot - and they totally came through.

I uploaded the pdf, selected double sided printing and a basic binding, chose a location for pickup and provided a credit card. A few hours later, I had my own personal copy of the book ready.

I only got slightly fancy by using Adobe Acrobat to print the PDF to a new PDF with 2 pages per sheet in effect. The result was a 180'ish page file to print instead of a 300'ish page file, cutting the cost of printing significantly.

I'm really impressed with Kinkos - in a world where everyone owns a copier/scanner/fax/computer they are still providing relevant and important services.

What they really need is a widget they can allow authors to put on their websites. The widget could then walk folks through printing specific copies of a document or book. The author could pre-configure the document to use, paper type, etc. That way, I could have had my printed copy even easier, and the author could get a little cash for sending folks to Kinkos.

Even without a fancy widget, the print on demand stuff is cool. Now, if Kinkos had a way of providing me with free time to read the book...

Sunday, February 15, 2009

Almost A NASCAR Party

We got Pizza, Beer, good friends and the TV tuned to the Daytona 500.

One small problem - the race was called on account of rain.

D'oh, our plan to drink beer and watch the end of the race was a bust.

But, at least we've still got the good friends and food part.

Voice Mail That Works

One of the coolest features of the iPhone has to be the voice mail handling. Instead of calling in for your voice mail messages, they are downloaded automatically to the phone and you can play them like they were an audio file on your device. They become as easy to manage as e-mail or SMS messages.

No more trying to remember if pressing 7 deletes or saves your message.

This is such obvious functionality once you've used it, why did it take so long to appear?

I was disappointed that my new G1 doesn't offer this kind of support. But, it turns out, you can easily add it in - heck, it's even free.

Just install PhoneFusion+ from the Android Market and follow the setup instructions.

It even allows you to access your voice mail from your desktop/laptop via their website.

So far, the app is working great.

And here's the best part - PhoneFusion isn't tied to the T-mobile G1. They cover a whole range of platforms, including BlackBerry devices.

Shira installed the software earlier today on her Curve, and it works great.

Check them out - www.PhoneFusion.com - and get a glimpse of how voice mail should really work.

Saturday, February 14, 2009

The Shark

Playing a bit of pool and watching Shira show off her moves. She's way better than me - but that's not saying much.

Good times.

Friday, February 13, 2009

Gotcha Of The Day: Installing PHP 5.2 on Cent OS

I wanted to upgrade one of my servers to PHP 5.2.x. But, the standard upgrade command of sudo yum upgrade php wasn't working. Apparently, the default repositories don't have PHP 5.2 versions yet.

Thankfully, there's Google, and articles like this one that outline exactly what you need to do this upgrade.

I ran the steps provided, but when it came time to actually upgrade PHP, I got a whole bunch of errors that looked like:

Transaction Check Error:
file /etc/my.cnf from install of mysql-libs-5.1.31-1.el5.remi conflicts with file from package mysql-5.0.45-7.el5
file /usr/share/mysql/charsets/Index.xml from install of mysql-libs-5.1.31-1.el5.remi conflicts with file from package mysql-5.0.45-7.el5
file /usr/share/mysql/charsets/README from install of mysql-libs-5.1.31-1.el5.remi conflicts with file from package mysql-5.0.45-7.el5
...

And of course, the upgrade didn't happen.

After a bunch of trial and error, I decided I would first attempt to upgrade my version of MySQL and ran:

# Assume these have been run
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

# Upgrade MySQL
sudo yum --enablerepo=remi update mysql

Surprisingly, while upgraded MySQL, the new version of PHP was pulled down. The result was an up to date version of MySQL and PHP. Problem solved.

Thursday, February 12, 2009

News on the Autism - Vaccine Link

I brought up the topic of Autism and Vaccination a while back. My brother just passed me this article on the topic:

Confidential medical documents and interviews with witnesses have established that Andrew Wakefield manipulated patients’ data, which triggered fears that the MMR triple vaccine to protect against measles, mumps and rubella was linked to the condition.

Apparently, the guy fudged his data - only the most heinous sin possible in the world of science.

But here's the truly amazing part:

Despite involving just a dozen children, the 1998 paper’s impact was extraordinary. After its publication, rates of inoculation fell from 92% to below 80%.

Wow, one study involving 12 children reduced inoculation rates 12% 13%. Amazing. Who says one person can't make a difference?

Some West Virginia Photos

Here are a few photos from our latest West Virginia Trip. Nothing too impressive here in terms of photography, but I can't resist sharing.

Wednesday, February 11, 2009

Ben's Latest Gadget

Here it is, my newest toy, uh I mean business tool: a T-mobile G1.

So far, there's not much I can say about it. It feels small compared to
my sidekick, and I don't like how the keyboard isn't placed in the
center of the device, like my Sidekick.

But, I'm sure that's going to take some getting used to.

Now I just need to let this sucker charge up...and then the fun can
really begin!

--Ben

Tuesday, February 10, 2009

Two Forth Resources

Last night I was poking around for Forth programming resources and found the following interesting:

  • OLPC's Forth Lessons. This is an interesting approach to learning about programming. It makes use of Open Firmware, which is included with the OLPC's hardware. The lessons not only teach some programming basics, but also talk about poking around the guts of the machine. If nothing else, it's an intriguing example of a DSL.
  • I wanted to play with a Forth on my Windows box, but wasn't sure what my best implementation was (suggestions anyone?). I ended up going with minforth which compiled under Cygwin fairly painlessly. All I need to change was:
    /* ---------------------------------------------------------------------------
       GCC for Linux
    */
    #elif defined(__GNUC__) && defined(linux)
    

    To:

    /* ---------------------------------------------------------------------------
       GCC for Linux
    */
    #elif defined(__GNUC__)
    

    I then followed the instructions for compiling the app and it worked just fine. As for what appealed to me about minforth: I like it's simplicity, yet it isn't too basic - as it provides command line history, native function access, and seem quite robust. And while it wasn't updated too recently (3/2007), considering how old Forth is, that's still what I would consider relatively fresh.

If you've never encountered Forth, it's definitely a mind bending experience. And one definitely one worth having.

Gotcha Of The Day: Apache and PHP Crashing On Vista

So, I'm minding my own business, hacking away at some PHP code on my Windows Laptop, when all of a sudden my web app starts reporting this gem of an error:

Network Timeout
The server at www.localhost.com is taking too long to respond.

What the heck? Then, I noticed that Apache crashed and Windows Vista reported to me:

Apache HTTP Server stopped working and was closed
A problem caused the application to stop working correctly. Windows will notify you if a solution is available*

Huh? It's not like I'm programming in C here, the server shouldn't just crash?

Trying to be Windows savvy, I open up the event log and find the following messages present:

Faulting application apache.exe, version 2.2.11.0, time stamp 0x493f5d44, faulting module ntdll.dll, version 6.0.6001.18000, time stamp 0x4791a7a6, exception code 0xc0000005, fault offset 0x0006814c, process id 0x1b88, application start time 0x01c98b2d160f9940.

Faulting application apache.exe, version 2.2.11.0, time stamp 0x493f5d44, faulting module php5ts.dll, version 5.2.8.8, time stamp 0x493d75fc, exception code 0xc00000fd, fault offset 0x000df44f, process id 0x698, application start time 0x01c98b2d16b3c880.

Well, that's not very useful. But, it was useful enough for me to Google around and find this article where someone had a similar problem. The bug turned out to be:

If you include a nonexistent helper in the AppController::$helpers array, infinite recursion occurs.

As you can probably guess, it's the infinite recursion part that gets you. Turns out, infinite recursion on Windows Apache + PHP (specifically using xampp) causes the server to crash. In fact, the issue can be reproduced with the following script:

<?php
function foo() {
  foo();
}
foo();
?>

I think it's absurd in this day and age that a process actually crashes ungracefully when you hit a stack overflow error like this. I mean, at the very least, can't you report that you've hit stack overflow so the programmer knows what the general problem is?

I went back through my code, and sure enough, a cut and paste error was resulting in infinite recursion. I updated the code and my problem was solved.

*In other words, "Don't call us, we'll call you"

Monday, February 09, 2009

Ajax and WordPress - A Simple Approach To Integration

Tonight, the app I was working on was crying out for a small feature which Ajax would work perfect for. So, I busted out jQuery and wrote some JavaScript like*:

 function addToAddressBook(name, phone) {
   jQuery('#spinner').show();
   jQuery.post("http://myserver.com/ajax/add_addr.php", 
              { name: name, phone: phone }, 
             function(data) {
               jQuery('#spinner').hide();
               // do more stuff with data
             }, "json");
 }

And then it hit me, my script add_addr.php isn't part of WordPress, so inside of it I won't be able to access WordPress details like the current user. Which in this case, I wanted to do, because I wanted to add the address to the particular user that is logged in.

The solution turned out to be a Google Search Away. All I need to do, was put the following at the top of add_addr.php:

 <?
  require_once('../wp-blog-header.php');
  ...
  // works because we've imported the environment above
  $user = wp_get_current_user();
  ...
 ?>

Turns out, WordPress integrates nicely with 3rd party scripts. One more reason to like WordPress, I guess.

*It wasn't really an address book application. I could tell you about what it really was, but then I'd have to kill you.

2nd Annual West Virginia Getaway

It's hard to believe that just about a year ago, I had the opportunity to join Shira on a short trip to West Virginia. Well, I'm back again!

Once again, we lucked out on the weather, and I managed to get in a terrific run around town in the 50's instead of in the 20's and snow.

I have to say, I still really love this place. Everything about it seems quaint and historical, and the scenery is gorgeous. Even the college kids I ran by seemed in their own safe little bubble. Below are a few snapshots of the surrounding countryside. My camera phone can hardly do the scene justice.

Oh, and check it out - here's the town's version of rush hour. This appears to be the largest intersection in town, and it's governed by a 4 way stop. No fancy shmancy stop lights here.

I said it last year, and I'll say it again this year - I love being totally mobile.

Sunday, February 08, 2009

Scan Your Own Groceries - A Super Market Surprise

Giant by us now allows you to walk into the store, grab a hand scanner, scan and bag your groceries while shopping, and then pay in the front.

I have to say, it does appear to be a time saving - and even fun - activity.

I give Giant a lot of credit for this program. I can think of many reasons, the least of which being theft, that makes this idea "impossible."

Rather than waiting for their competitors to innovate, they are leading the pack. Well done. At the end of the day, Wegmans and Harris Teeter can copy everything Giant does, except their willingness to innovate.

--Ben

Getting Warmed At Dave's House

Shira and I hit my bro David's house warming party. What a good time! Lots of great food, and Dave's roomates and friends were lots of fun.

I even engaged in what I'd like to propose as the Simon House Warming Triathlon. It consists of a strength zapping game of Bocce Ball, a grueling round of Make And Eat Your Own Sundae and finally an endurance pushing game of foosball. You'll want to train heavily before attempting these activities - this is serious business.

Oh, and while I did well at foosball, Shira still beat me. She's been doing that since 7th grade.

Awesome party Dave!

--Ben

Some Disassembly Required

A few years ago, this tower randomly went. It didn't take long to figure
out that perched atop it was a camera that could swivel around and keep
an eye on the area.

Now, for no apparent reason, there appears to be construction underway
on the tower. Perhaps to remove it?

Could be random maintenance or an upgrade. Or, did the Obama
administration shut it down?

Jusr something for DC conspiracy theorists to chew on...

--Ben

Friday, February 06, 2009

12 Eductional Uses Of Twitter, And Another Publishing Platform

While playing around with Twitter and Google Spreadsheets I came across this fun presentation: 12 Educational Uses For Twitter.

The presentation has some simple, but clever ideas, to have kids and parents benefit from Twitter. Twitter happens to work well, because it's so drop dead easy, you need a minimal amount of setup and training to get value from it.

What I found equally impressive to the information, was how it was presented - as a Google Presentation. This makes for a step-by-step presentation, rather than say a blog post or other mainly textual format. Usually, to have this sort of user experience, you'd need a website to host your content on - not so with this approach. Just create your Google Presentation and the URL with the world.

I'm constantly amazed with the tools that are available to let people publish to large audiences, For Free. A Google Presentation is, of course, just one more option to add to the dozens if not hundreds out there. But, for the right person and project, it could be the absolute best way to go.

Check out the presentation to see what I mean.

Thanks to JMGubbins for mentioning the link.

What Absolute Mastery Of Your Job Sounds Like

The audio tapes from the Flight 1549 emergency landing have been released. Wow, they are an absolute must listen:

How amazing is that? Total and absolute calm. You'd think that they landed in the Hudson a couple times a day.

I think the tape shows what true professionalism is all about - staying calm and working together as a team to solve whatever problems are thrown your way. Talk about a teaching moment.

Thursday, February 05, 2009

Twitter Meets Excel and Google Docs

I've mentioned before how addictively easy to use the Twitter API is. Once you learn about it, you can't help but start embedding it everywhere.

With that said, I still think it's pretty cool that someone whipped up some Excel code to allow you to Twitter from inside a spreadsheet. Thanks go to my Dad for the link.

I couldn't help taking a few minutes and thinking how the Twitter API might mesh with Google Spreadsheets. Turns out, you can trivially make use of Google Spreadsheet's importXML function and Twitter's Search API to end up with a Live Search Feed embedded in your document.

Here's an example:

The magic involves putting the following two formulas in cells B4 and C4 respectively:

=importFeed("http://search.twitter.com/search.atom?q=" &SUBSTITUTE($B$2," ", "+"), "items summary", true)

=importFeed("http://search.twitter.com/search.atom?q=" &SUBSTITUTE($B$2," ", "+"), "items url", true)

Both of these cells refer to $B$2, which contains the search term to use.

Writing this was easy. Coming up with an actual case of where you'd use this, is trickier. Twitter provides a stream of what people are chatting about, so this allows you to embed real time conversations into your document. Again, why would you do this? Not sure...but you can.

Why You Won't Be Reading 25 Random Things About Me

There's this trend flying around Facebook where you author 25 random tidbits about yourself and then tag others to do the same:

Rules:
Once you've been tagged, you are supposed to write a note with 25 random things, facts, habits, or goals about you. At the end, choose 25 people to be tagged. You have to tag the person who tagged you. If I tagged you, it's because I want to know more about you!

I've now been tagged by a bunch of different people from completely different walks of life (ahh, the power of viral marketing), so it seemed like the responsible thing to do was to write up my own 25 random things.

But, after thinking it through, I've decided, it isn't going to happen. Don't get me wrong, reading these 25 things about friends has been wonderfully fun. And I certainly don't want to be a party pooper. But...

First, I've got this blog where you can learn waaaaaaaaay more than you ever wanted to know about me. I mean, religious and political views, rants about technology, photos, heck even romance tips. Geesh, if I told you anymore about me, you'd be sick of me already.

Second, I like to blog (which shows up on Facebook as notes, for those reading this there) because it's fun, and often cathartic. When it becomes hard, forget it, I'll focus my energy elsewhere. That's one of the reasons that blog posts bounce from topic to topic. Who wants to try to be the authority on just one area? This is fun, not work.

If I really did want to write up 25 random things, I'd spend days, if not weeks dwelling over exactly what to put in there. Then, once I had the list figured out, I'd need to figure out who to tag. I mean, who do I want to learn more about, and wouldn't want to bother? I get stressed out just thinking about it.

So, if you tagged me - thanks. I really enjoyed reading your 25 random items. And apparently, I take these things way too seriously to respond back appropriately.

Update: Apparently I'm not the only one who's seeing this 25 Random Thing Trend and has something to say about it - Time just published 25 Things I Didn't Want to Know About You. Though, it's interesting to note they think the 25 Random shtick is "more stupid than Twitter," I just think it's too much work.

My Drinking Problem

I don't think the photo does my desk at this moment justice - I've got quite a collection of glasses here. I really need to figure out a better algorithm for returning them to the kitchen. Whatever I'm doing, it isn't working.

And before you ask, the answer is: "that clear liquid in them is water."

Wednesday, February 04, 2009

Yet Another Dell Support Trick - Try Safe Mode

So, my attempt to fix Shira's networking issue on her Dell didn't solve the issue. I was out of options, so I called my buddies at Dell.

The first person I spoke with wanted me to check to see if the little picture of the computers, next to the clock, had a red X through it. Oh dear. This was going to be a long conversation. Luckily, she was in large company support, and so she transported me off to someone who's job it was to handle little peons like me.

The guy who ended up helping me had a much thicker Indian accent (whereas the large company support sounded quite American...hmmm...), but boy, did he know his stuff. He immediately had me boot into Safe Mode and confirm that the Internet connection was nice and speedy there.

This was an elegant way to prove that it's a software problem, not a hardware one.

We didn't resolve the issue - but at least I'm convinced it's not a bad Ethernet card.

This Safe Mode trick, like other Dell advice, will be going into my toolbox for future use.

One Cool Animation

I agree with Nicholas Patten: This is an amazing animation.

Apparently, the animation mirrors the legend of how the Chinese zodiac came into being. In my book, that makes it more than just eye candy, and is also telling a story.

It's definitely impressive stuff.

Dell Delivers - Mostly

Last night I was pleased to have my Dell Laptop returned to me. Dell promised me they would fix it in about 10 days, and sure enough, that's what they did.

They even left me voice mail when the device arrived at their depot and when it was shipped out.

So, they score a perfect 10 out of 10, right? Well, not exactly.

When I opened up the laptop box I found in it my laptop. And nothing else. Most importantly, no note explaining what they did. So, I called Dell and spent 30 minutes (and 4 seconds, but who's counting) trying to get one simple question answered: What did you guys do to my laptop.

The answer was pretty encouraging: they replaced the keyboard, heat sink/fan and motherboard. I don't know what they were thinking with the keyboard, but hey, I like the silky smooth one I got back.

It boggles my mind that Dell doesn't have a system to generate a canned letter that says what they did to the laptop. Heck, they did all this great stuff, shouldn't they get credit for it?

There's a lesson in here: without informing your customer, even the best actions go unnoticed. It's not enough to do great things - tell me about it. You don't have to boast. But you're customers shouldn't have to go searching for it either.

Worst Dialog Box. Ever.

Whenever I open up the Real media player on my Windows XP laptop I'm greeted with the following message:

And it's not like this message is subtle in any way - it covers up the content, so I inevitably lose the first few seconds of a video staring at this dialog box.

And what's so bad about it? First, like I said, it's completely disruptive. I understand ActiveSync wants to help me out and get me started, but isn't there a way to do this that is a tad bit more subtle?

Second, and far worse, I don't have a device I'd like to sync with this program. That's right, it's showing me this even though I have nothing plugged into the USB port. And what are my choices? I can click Next to configure the device that I don't own, or I can hit Cancel which it interprets as "you'll probably want to come back to this later."

But I don't want to come back to this. EVER. And for the life of me, I can't make it stop.

What kind of product manager could allow this sort of ridiculous logic into their software?

Tuesday, February 03, 2009

Two Color Toys

While looking around for a fresh color scheme to a nav bar menu, I stumbled upon these new color related goodies...

  1. www.coloring.com - this is actually a toy. Sit your kid (or bored programmer) down in front of the computer and have them color in some photos. It's actually a fun way to learn mouse dexterity, and may even keep the little one occupied for a bit. I bet the average 4 year old would have the site figured out way in just a few minutes.
  2. ColorSchemer.com's gallery - You can browse through 3000+ color schemes. You'll want to have a plugin like ColorZilla so you can quickly grab the RGB values from the swatches that are shown to you. I always find it a fun experiment to pick a fairly random color scheme and see what I can build out of it. Don't get me wrong, the results are almost always hideous, but at least it's fun.

What color toys tools are you using these days?

Monday, February 02, 2009

Democrats, Republicans and Geeks

There was an interesting interaction on the latest This Week with George Stephanopoulos, where you had Sen. Jim DeMint, Eric Schmidt and Rep. Barney Frank, among others, talking about the stimulus plan. Here's the first exchange:

SCHMIDT: I'm sure this stuff is going to get fixed by -- by you guys, because you're working very hard on it...

DEMINT: I wouldn't count on it.

SCHMIDT: And, by the way, you guys need to get this thing fixed. What we need is very simple. We need some form of a jobs program, something that causes jobs to get created, and we need credit to get -- get going again. That's what we should be talking about as a country.

(CROSSTALK)

SCHMIDT: And we can debate exactly how to do it, but get it going now.

FRANK: Well, excuse me. You (inaudible) it's called democracy, Eric. I'm sorry, but it's inevitable.

And then at the end of the conversation:

SCHMIDT: Chairman, the fact of the matter is, that if the government simply told everybody what you all were doing [by documenting the content on the website]...

(CROSSTALK)

SCHMIDT: ... and then people could track it and figure out whether it's actually working...

(CROSSTALK)

FRANK: But we are going to do that.

SCHMIDT: ... we could get through these classic fights that you all have.

STEPHANOPOULOS: As you know...

FRANK: Well, no, I differ -- differ with you on that. Please. Let's not obviate democracy. There are legitimate different philosophical differences between Jim DeMint and myself. Please don't treat them as some sideshow.

This just boggles my mind. Eric Schmidt is proposing a simple concept: Thoroughly document what you are going to do, do it, review how successful it was, and change it. It's that simple.

And how does Representative Barney Frank respond? You can't do that, you have to have a philosophical debate. Are you kidding me?

Schmidt is effectively suggesting an iterative approach to fixing our economy. I like it. It's sane. It's logical. And yet, even this, we can't agree on.

Seems to me that between Frank's interest in avoiding logic and DeMint's can't do attitude, we're screwed.

Look, this stimulus thing isn't that hard to do. Here's what we have to do:

  • Open up a new Google Doc spreadsheet
  • Create three columns: one for the name of the program, one for how many jobs it will create, and one for how it will positively impact jobs
  • Now, for each program you want to create, fill in a row in the spreadsheet
  • Have a logical debate on each program: does it create a significant number of jobs or does it impact job creation? If it does, whoo!, keep it in the package. If not, cut it.
  • For extra points, involve the whole country, and Ask Us

This does not need to be about philosophy and who can argue better than the other. This should be about what will create new jobs. It's that simple. And yet, I'm watching my own party hose it up. Argh.

Sunday, February 01, 2009

The game changer

This shot was taken as the Cardinals were inches away from a touchdown (to tie the game) and instead handed the Steelers a 99yrd touchdown.

While we're at half time, it's probably game over at this point.

On a good note - we had a fantastic time watching the game with cousin's Brendan and Juilia. They've got hosting a superbowl party down to a science. Super food, fun people and of course Shelly for entertainment. We had a fantastice time.

OK, Cardinals - you've got 2 quarters to pull out a victory. Go get 'em!

--Ben

Update: Wow, what a game! 2:30 left and Cardinals just pulled ahead. If they win this one, it'll the biggest comeback in Superbowl history. Guess I shouldn't be in the game calling business...

Potomac as Popsicle

I'm standing here at the Theodore Roosevlt Island parking lot waiting for David and his running buddy to show up, and I'm quite impressed by the look of the frozen Potomac. So peaceful. So, pristine? Nahh, not possible.

Let me tell you, if you are in to guys and/or gals in DryFit and Lycra outfits, this is the place to hang out. I kind of feel out done, as I'm wearing a cotton (yes, the cotton, the horror!) Lockeed Martin shirt I got as free shwag, instead of some $60.00 matching DryFit outfit.

The place is motiviational, if nothing else.

--Ben

Friday, January 30, 2009

Being The Mark

I just finished with my dental appointment. Good news is, I was given a clean bill of health. No filling, crowns or dentures needed. Whew.

The bad news is that I'm still the biggest sucker around when I sit in that chair. Would I like floride fluoride (which I'm told at my age isn't needed)? Yes! Would I like the more expensive floride treatment? Double Yes! Does that come with undercoating and floor mats? Hope so.

I shouldn't mock these guys - I genuinely believe they have my best interest in mind.

--Ben

Update: The problem is, it's not just my hygienist that wants me to fall for this, it's also Colgate. And come on, can you really take on Colgate?

Thursday, January 29, 2009

Saving Your Configuration of Damn Small Linux

I continue to be impressed with Damn Small Linux. Consider, how I've turned an ancient laptop (without a hard drive) into a jukebox just by turning it on with this CD in it.

The only annoying part of using DSL is that your configuration is lost on a reboot. So, the commands needed to setup my network needed to be re-entered every time I restart the computer.

Of course, DSL provides a clever way for addressing this. But, I've always looked at the instructions and decided I didn't have the time to sort them out. Turns out, they aren't that bad. Here's what I did to make my setup restore on a reboot:

  • Found a spare USB thumb drive lying around. Nearly any size will do.
  • Booted up DSL
  • I plugged the thumb drive into the computer and mounted it with the command:
      mount /dev/sda1 
    
    In my case, I was fortunate enough to have this work. If you have problems, you might want to check out this article
  • I updated /opt/bootlocal.sh to contain the commands I wanted run at bootup time. My script looked like:
    #!/bin/bash
    # put other system startup commands here
    
    # Change XXX to the name of your access point
    # and YYY to the passphrase used to access it
    echo "Setting up WiFi to XXX..."
    iwconfig eth0 essid XXX
    iwconfig eth0 enc s:YYY
    
    echo "Requesting IP address..."
    pump&
    
    I could get fancier, I suppose, for now, these are the main commands I need run at bootup time.
  • Under the "DSL" toolbar (where the start button is on Windows), I went to: System >> Backup/Restore
  • For device, I entered in sda1
  • A few moments later, the box disappeared. I confirmed I had a backup in place by running:
      ls /mnt/sda1/
    
    and confirmed that backup.tar.gz was found there.

I now had a thumbdrive with my configuration settings on it. Now, every time I boot up the computer, I enter:

  dsl restore=sda1

And after a few moments (faster than my Windows laptop boots), I have a running Linux system with a correctly configured network.

I'm telling you, if you have any hardware lying around, you've got to give DSL a try. It's just remarkable what kind of system you can put together that's less than 50 Megs.

Google Apps E-mail Gets Gmail Labs

I just realized that my Google Apps e-mail now has access to GMail Labs.

For example, I can now add a send and archive button or enable forgotten attachment detection. These even more esoteric features like mouse gestures available.

If for some reason you still don't have personalized e-mail (for either work or business), run, don't walk, to Google Apps and get yourself setup for free today.

Say goodbye to yourcompany@hotmail.com and hello to you@yourcompany.com.

Me, I'm just happy to have all these cool new toys to play with.

Insights On The Octuplets

I really enjoyed my Sister-in-Law's take on the Octuplet story. But that not too surprising, if there's anyone who's well versed on this whole baby-making-process, it's her.

Thanks for sharing Sis!

Wednesday, January 28, 2009

recovery.gov - Will it be enough?

The president and congress is busy hashing out the stimulus package. And while they do this, you can actually follow along. Weighing in at 258 pages, and being written in govyspeak, this isn't exactly easy to do. But, browsing through the bill, I noticed what a high profile the recovery.gov website receives. On page 20 it explains:

REQUIREMENT TO ESTABLISH WEBSITE.
The Board shall establish and maintain a website on the Internet to be named Recovery.gov, to foster greater account ability and transparency in the use of funds made available in this Act.

Excellent. The report even outlines what needs to be published there. For example, on page 12 the bill explains:

(A) Each such agency shall notify the public of funds obligated to particular infrastructure investments by posting the notification on the website Recovery.gov.
(B) The notification required by subparagraph (A) shall include the following:
(i) A description of the infrastructure investment funded.
(ii) The purpose of the infrastructure investment.
(iii) The total cost of the infrastructure investment.
(iv) The rationale of the agency for funding the infrastructure investment with funds made available under this Act.
(v) The name of the person to contact at the agency if there are concerns with the infrastructure investment and, with respect to Federal agencies, an email address for the Federal official in the agency whom the public can contact.

Again, this is more good news. As a citizen, we can understand why our money is being spent the way it is.

This is a huge step forward. But, is it forward enough? Why not write into the bill provisions for more functionality, like say...

  • What about a facility for the public to ask questions, and have the answer provided by the contact? Of course, the responses would be archived.
  • What about a digg style voting of the projects, where you can view the most and least popular among those funded? This would tell our government (a) where they are doing a good job (and have our support) and (b) where either the public has found a project unworthy of support, or more likely, where a project needs more information to justify its existence.
  • What about requiring RSS feeds and an API? That is, make the site not only one visitors can benefit from, but also one programmers can leverage. Can you imagine a Google Maps + Funded Projects mashup? That's a no brainer. This is also nice because the government won't have to add all the features to recovery.gov, concerned citizens will be able to chip in and help too.
  • What about taking the Facebook Fan concept and using it for projects. Imagine that as a fan of a project, you'd get regular updates about the status and perhaps even be involved in helping.
  • What about a feedback area, where citizens can report how the project has positively or negatively impacted them personally.
  • What about requiring the project owner to publish photos or videos of how the project is proceeding?

Clearly, recovery.gov is a step in the right direction and one that hopefully everyone can get behind. I just hope they understand that simply having a website isn't good enough. Like the rest of us on the web, they've got to innovate.

Tuesday, January 27, 2009

Using WordPress Galleries to Store Post Image Meta Data

One of the neat features in WordPress is that an end user can so easily attach meta data to a post.

For example, I might want to make some posts only viewable if a user is subscribed to the blog. I can fairly easily tweak the theme to show users a message if they aren't logged in. I can then instruct the owner of the blog to use a custom field (the layman's term for meta data) named visibility with either the value free or subscription. The result: I've managed to add sophisticated functionality, and the dashboard of WordPress more or less automatically supports it.

One area where I've seen this meta data approach break down is in the world of graphics. The classic example being a thumbnail image that goes with your post and is shown on the home page. I've seen this handled using the meta data feature above, where the user is instructed to set the name of custom field to thumbnail and the value to an uploaded file name, such as music.jpg.

The problem with this approach is two fold: (1) end users need to know how to use FTP well enough to put the image in place on the server. And (2) depending on a file name is quite fragile - what if the user isn't consistent about case or doesn't include a space. It works, but unlike the meta data solution above, it's just not smooth.

A Better Image Meta Data Solution

I recently learned about an existing WordPress feature which helps out with the above problem. That is, galleries. Every post gets it's own gallery (which, I think isn't a great name, but it'll do), which represents images associated with the post. What's interesting is that images in the gallery don't have to appear in the article. In fact, when you upload an image in WordPress, there's a specific Insert into post button you need to hit. If you don't hit this button, the image is in the gallery, but not actually shown to the user. I'm sure this is a bit confusing, but again, it seems reasonable.

It turns out that you can trivially use these images in the gallery as meta data. I'm sure there's a variety of ways to do this, though I found the most straightforward way was to make the image name the meta data key. To implement the thumbnail meta data I discussed above, you instruct users:

  1. On the post editor's toolbar, next to Update/Insert click on the Add Button image.
  2. Upload the file as you normally would
  3. For the Title attribute, enter thumbnail
  4. Do NOT click Insert Into Post. Just hit Save All, and close the dialog box.

The user is now done. The image is in the post's gallery and ready to be picked up by the theme.

The theme can then leverage a function like get_post_thumbnail below. You'll see that it queries for child posts associated with a particular post's ID. This is where the gallery is stored. It then iterates through every child and looks for the one named thumbnail. When it finds it, it returns back the URL to the image.

function get_post_thumbnail($post_id) {
  $found = get_children(array('post_type' => 'attachment',
                              'post_mime_type' => 'image',
                              'post_parent' => $post_id));
  if(!$found) {
    return false;
  }
  foreach($found as $p) {
    if(strtolower($p->post_title) == 'thumbnail') {
      return wp_get_attachment_url($p->ID);
    }
  }
  return false;
}

The above function can be used anywhere in your theme you have a post ID.

There's no reason to link the above technique to images alone. Any media, perhaps a voice over or video, could be used as meta data just as easily. I love it when WordPress offers these flexible, yet easy to use features that make both the programmer and end user's life easier.

Emacs tip: a slightly better find-grep command

I finally got around to tweaking the the find-grep command in emacs to remove one of it's biggest annoyances (to me). Mainly, that it searches .svn directories for content. I'd say at least 99.999999% of the time this isn't what I want.

Here's what I added to my .emacs to fix this:

(setq grep-find-command 
  "find . -type f '!' -wholename '*/.svn/*' -print0 | xargs -0 -e grep -nH -e ")

Ahhh, much better.