Tuesday, June 30, 2009

Buenos Aires - Day 5 - Heaven, Hell and Tango

Given the luck we've had this trip, we weren't surprised at all when we arrived at the world famous Colon Theater, only to find that it's closed for renovations. D'oh. Yet another tour that Shira has dodged.

One tour we did get to take was of the Palacio Barolo. This building, from the early 1920's, was originally the tallest building in South America. It was constructed around the theme of Dante's Inferno, with symbolism throughout the building representing Heaven, Hell and Purgatory. On top, is a lighthouse, with an incredible 360 degree view of Buenos Aires. This was a must-see sight.

At night, we took in a tango show, and although we feared it was a tourist trap, we felt like we were the only (US) Americans there. The show was like watching a racy version of ice skating, but with the stars on high heels. It wasn't a local dance hall, but it was worth the glitz.

Monday, June 29, 2009

Super Size Me

McDonalds isn't usually considered a treat - but when it's the only Kosher McDonalds outside of Israel, one can make an exception.

Mmmm....the food may be awful for you, but at least it's guilt free (from a religious sense, anyway).

Sunday, June 28, 2009

Buenos Aires - Day 4 - Visiting Uruguay

Just about everything on our side trip to Uruguay went well. The ferry over there was nicer than many plane trips we've had, the city was easy to walk around in, lunch was excellent and we made it back to BA safe and sound. Even the 90% chance of rain prediction turned out to be wrong, and the day actually got nicer as it wore on.

We spent our time in old town Colonia, which was a pretty small place. The museums were actually just small homes that had been filled with interesting artifacts. There wasn't much English to read, so we had to guess as to what we were seeing. One of the museums appeared to be filled with the archeological finds of the local indigenous people - which consisted almost entirely of case, after case, of round stones. Though, one of the museums did surprise us with a impressive collection of dinosaur fossils found in the area.

We're back on home territory - and it's now 7:30pm, which is the absolute earliest anyone in Buenos Aires appears to eat. After that, we hope to have an anniversary trip to the casino to celebrate our good luck at being married for 11 years!

Off to Uruguay

We're off to Uruguay for the day. It's an hour away by fast ferry, which we assumed was going to be an old, crufty boat.

How wrong we were - this whole setup, from terminal to boat has been quite polished.

If all goes as planned we'll be back in BA tonight.

Wish us luck!

PS. Thanks to Shira's blackberry for this post who comes through when my G1 couldn't.
Sent via BlackBerry from T-Mobile

Saturday, June 27, 2009

Buenos Aires - Day 3

We spent today exploring the city by foot. Still having a blast. One observation: we continue to be amazed at how large the language barrier is here.

Consider when I approached the guards at the Falklands Islands war memorial - though young, they didn't speak any English. Or consider that the La Casa Rosada (the Pink House, or Presidential Palace) doesn't offer English language tours, only Spanish. While many of the restaurants have English versions of their menus, most of the wait staff we've had hasn't spoken English. None of this is a bad thing - and I certainly don't expect them to speak English, it's not their language. But still, compared to other places we've traveled it's been a surprise. It just makes it all the more adventurous.

Some highlights from today:

  • Touring La Casa Rosada - We took the Spanish tour, so we really don't know any details about this building other than that it looks pretty. Oh, and they don't heat all of it for some reason. For being an important Government building, I was surprised how lax the security was.
  • Exploring the Frigate President Sarmiento - This was a fun ship to poke around in. They let you descend fairly deep into the belly of the ship, which seems like it would have normally been off limits in the US.
  • Walking around the Ecological Reserve - this was actually an accidental creation. What started as a dumping ground for construction debris turned into a neat place to get away from the city.
  • Stuffed my face with meat from one of the Kosher restaurants in town. I ordered two main dishes (steak and sausage), Shira got a burger, and we split fries and hummos and got two cokes. The total: $20 USD. Try that at a local Kosher restaurant.

Buenos Aires - Day 2

Highlights from our 2nd day of BA trip include:

  • Visiting Recoleta Cemetery: What an amazing place. It's a combination of graveyard/sculpture garden. Never seen anything like it.
  • The Zoo: What a fun zoo. They encourage you to feed quite a number of the animals and even ones that were off limits for feeding, were still getting plenty of food thrown at them. Definitely a fun time.
  • We had dinner at Empire Thai. Empire is run by a former New Jersey native, so this made chatting with him fun. The dishes were quite unique - Shira and I both had meals we'd never seen on a Thai menu before.

There are a couple fun photos below, and then a slide show from the whole day.

Friday, June 26, 2009

Buenos Aires - Day 1

Our first day in Buenos Aires had the typical ups and downs that come with visiting a new country and city. We started our day, by making our way to the presidental office and then, per the Fodor's guide's recommendation, took the subway to Congresso.

The guide rates the subway here the maxiumum 3 stars, as it's supposed to be a good approximation of what riding one of the first subways in the world must have felt like. Perhaps the subway has been upgraded since the author was last there - but this turned out to be pretty much a normal ride on the metro (except you have to manually pull the doors open and closed). I'd have to mark this attraction as vastly overrated.

At congresso, the plan was to take a tour of the main building there. Alas, the tours in English have been canceled, and you're not able to go in and look around on your own. I don't think Shira was particularly disappointed by this.

We then made our way down the main road, from Congresso back to the presidental offices - which turned out to be an excellent walk. There were plenty of interesting shops to dip into, architecture to gawk at, and interesting people to oggle. This was also the first place we encountered Tango, specifically in the form of an adhoc street show. Not having anything to compare it to, it was quite impressive - both a joy to watch and listen to.

At the presidental offices, the plan was to see if a tour was available and at the very least, go into the recommended museum. Of course, there were no tours running that day and the musuem was closed. Oddly, Shira wasn't dissapointed with this one either.

One thing I will say about these Argentines - they do like their protests. Back at the presidential building, the main road was cut off as people prepared to protest who-knows-what. Using my best guess, they were either angry about the transporation system, or perhaps interested in a transformation of some kind. Who knows? We also got to see the Madres de la Plaza de Mayo do their weekly protest - which was surreal.

With some of the city seen, it was time to go play - and so we headed to the casino in town (really, did you think we'd visit a place sans-casino?). The setup was quite remarkable in many ways: they had both auto-shuffling and hand-shuffled tables to choose from (one type on each boat), the table prices went as low as $5 pesos (that's $1.33 a bet) and we were able to find an empty table without any problems, though within a few minutes, it filled up with other people. Most remarkably, nobody, I mean nobody, we played with followed the standard Blackjack strategy. They played by gut - which is a foolish way to play, as the only way to improve your odds to a reasonable level is to played the statistically optimalized strategy. Very strange.

All in all, our first day was actually quite good. It didn't go as planned, but these things rarely do.

Thursday, June 25, 2009

Our Anniversary Trip Begins

Shira and I have officially started our 11 year wedding anniversary vacation. We're spending in Buenos Aires - a place we know almost nothing about. But we plan to learn quickly!

We just landed a couple hours ago, so it's time to go investigate the city. Below are snapshots from the way over.

Wednesday, June 24, 2009

Cool Gmail Feature: Aliases

Last night, Shira told me about this cool feature in Gmail:

your.username+any.alias@gmail.com. For example, messages sent to jane.doe+notes@gmail.com are delivered to jane.doe@gmail.com.

You can set up filters to automatically direct these messages to Trash, apply a label or star, skip the inbox, or forward to another email account.

So, for example, I could have folks send me e-mail to:

and take appropriate action (like sending complaints to the trash, having urgent be stared and labeling suggestions as such and moving them out of my inbox).

This also works for Google Apps and may be an easy way to do tracking of where someone found your e-mail address. For example, I could setup:

Google Apps provides cleaner ways to do this (such as creating new e-mail lists), but the ability to make arbitrary aliases up on the fly may still come in handy.

Tuesday, June 23, 2009

Instant Trivia Contest

Tonight a group of us had hoped to get in on a trivia night at Rock Bottom in Arlington. But, alas, all the seats at the bar area were already reserved, so we were out of luck.

Or were we - we decided to have our own trivia night at our table. I busted out my G1 and was fortunate enough to find www.triviaplaying.com.

The site is drop dead simple - with pages of question/answer pairs. After coming up with some quick rules (you can answer before the question is finished, but you only get one answer) and we were off and running. We covered general trivia, the 80's, the 90's and science topics.

It was tons of fun, and I was impressed how evenly divided the scores were.

I definitely recommend checking out www.triviaplaying.com - the site has something for everyone, and the list of questions are a good length so you can complete a set before people get tired of the topic.

I could see using these questions at parties, ice breakers, during presentations or whenever else you want to engage groups of people.

Kid Friendly Food Visualiations

While typing in the URL of a site, I somehow managed to end up at www.naturesmightybites.org, and I'm impressed. Poking around, I found the what are you eating section to be really clever. See what I mean:

Like I said, I essentially tripped over the site - so I can't really vouch for any of the content on there. But still, it may be a fun way to teach your kids about junk food - or inspiration for visualizing data.

Or maybe it'll just make you hungry. Man, I've got a craving for a doughnut something fearsome now...

Review: Lumix DMC-TZ50 WiFi Capability - Close, But Not Quite There Yet

A few minutes after buying a Lumix TZ5A on Amazon I realized I could get the TZ50S - for even cheaper. And not only that, but the TZ50S had WiFi built in. How on earth could I pass that up? Generously, Amazon allows you to cancel an order without penalty if the seller hasn't shipped the item. So, after a few minutes of order shuffling, I had the TZ5 canceled and a TZ50 on the way.

Because the WiFi model was an after thought, I didn't really have high expectations for it. This would turn out to be a good thing, as you'll see in a few moments. But first, it's worth outlining what the camera actually does in WiFi mode.

What WiFi Mode Gives You

WiFi mode is quite crude - essentially all you can do is:

  • Connect to an access point. It has an emphasis on T-mobile access points, though any secure or open access point technically works.
  • Upload or View albums on Picasa
  • Send an e-mail which contains a URL of the photo and album you've selected to a single e-mail address

The expected workflow, I suppose, is this: upload the files into Picasa, then send yourself an e-mail (perhaps to your phone?). Then, forward that e-mail onto your friends and family.

The Good and The Bad

I found the WiFi access point setup to be quite reasonable, and actually fairly impressive on one level. Also, I don't particularly mind the limitation of having to use Picasa, as I already use it.

And I can forgive them for only allowing you to send the URL of an image to a single e-mail address.

But there are two points where I think they've gone wrong. First, they limit you to 5 hard coded albums. You can upload files to LUMIX ALBUM1, LUMIX ALBUM2, etc. up to LUMIX ALBUM5. How is that a scalable solution? In what world do people say, "for the life of my camera, I'll only need to organize my photos in to 5 albums." Sure, it would be trickier to allow folks to create and rename albums, but it would be vastly more extensible.

You can partially work around this issue by uploading the photos into one of their standard albums and then renaming the album. The camera gets a bit confused, but will, in the end, just recreate an empty album for you. The problem with this is that any links you've sent out to folks no longer work - as they point to the empty album, instead of the renamed one.

The bigger issue though, by far, is the reliability of the device. I'd say, 1 out of 10 times I've been able to simply turn on the camera, choose the WiFi mode and connect. Inevitably, somewhere along the way - be it accessing the waypoint, requesting an IP or just talking to Picasa - the connection drops. I've found that restarting the camera seems to be the best way to get it back on track in a hurry.

There is a firmware upgrade for the device, though I've yet to hear back from Panasonic how I can apply this update, or if I even need to.

But Is It Hackable?

My first thought was, how can I set it up so that I can blog directly from my camera. As crude as this setup is, I think there are a couple of things working for it that make it fairly straightforward to rig up a blogging hack. Two options that come to mind:

The Easy Way: I could simply plug in my blog by mail e-mail address into the camera. Then, when I e-mail a URL of a photo, the message will appear on the blog. The message will look a little goofy, as the text will look like:

You have been invited to view benjisimon's web album on Picasa! To see the images, please click on the following URL link:

<ALBUM>
http://picasaweb.google.com/benjisimon/LUMIXALBUM2?authkey=Gv1sRgCNqUzofdssSCLQ

<PICTURE>
http://picasaweb.google.com/benjisimon/LUMIXALBUM2?authkey=Gv1sRgCNqUzofdssSCLQ#5349927526378895378
- Google Picasa

The big downfall here is that the links aren't permalinks - what's ALBUM2 above, will inevitably get moved out of the way. But still, as a quick and dirty way to get content on the blog, it could work.

The Right Way: From a hacker's perspective, Picasa was actually a smart choice for Panasonic because it has a public API. One could fairly easily combine the Picas Web API and the Blogger API to create a little mobile app that allowed you quick publishing of albums to the your blog. Here's how I'd see it working:

  • You visit a the app on your phone
  • You select one of the standard Albums
  • You provide a title for the album, and perhaps a description
  • You click Go! at which point the Picasa API is used to rename the album to the provided name and the Blogger API is used to post an entry with an embedded slideshow in it

So yeah, the setup is hackable.

Gimmick or Feature

As interesting as WiFi is, it's definitely at gimmick status right now. If they could get the connection functionality to actually work reliably, and make the software a bit more flexible, they may really be on to something.

I can't think of any detractors yet from having WiFi, so given the choice between the TZ5 and the TZ50, I'd still go with the 50. Perhaps Panasonic will get their act together and issue additional firmware updates?

Oh, one feature that's worth mentioning - the camera comes with 1 free year of T-mobile hotspot service. I have yet to activate this, so I'm not sure about the details. But, still, that's over a $100 value in service, and seems like a really generous offer to me.

Some screenshots of the WiFi mode at work...

Sunday, June 21, 2009

The Simons Take Richmond

What a wonderful treat we had - David, Shira and Myself drove down to meet my older Brother and his family in Richmond, VA.

After a quick lunch, we made our way to Maymont Nature Center. I'm not sure what I was expecting, but my expectations were definitely surpassed. The nature center itself had a fun series of exhibits to walk through and see Virginia specific wildlife. Then we made our way over to the kids farm, which not only had cuddly animals like sheep and goats, but also eagles, vultures and black bears.

It was wonderful seeing our niece and nephew. As always, I'm impressed by them and their brilliance. For example, when I suggested that we were looking at "an eagle foot" my niece corrected me and told me they were talons. Or the way that my nephew had the games on my cell phone figured out in about 15 seconds. Geniuses, both of them. Can that be inherited from an uncle?

Below are some snapshots from the day - what good times.

Bear Watch

Checkout this black bear. He seems to be pacing back and forth. All dressed up, and nowhere to go.

Us and The New Camera

Here's our first official Self Portrait shot from the new camera.

So far, we're pleased with the new camera - though, we took some photos in some dark lighting tonight and the lag between pressing the shutter down and getting the snapshot was crazy long. I think we need to fiddle with the settings before we declare it to be a flaw with the camera. But still, it's something we'll have to investigate.

Friday, June 19, 2009

Lumix DMC-TZ50 First Impressions

I'm quite psyched about our newest gadget: the Lumix DMC-TZ50 Digital Camera. I very much love my Canon SD630, but a blemish on the lens has been screwing up my photos lately, so it was time to get a new camera.

At first, I intended to go with the same small form factor as the SD630. But, the TZ5 lured me away. It's got a 28mm to 280mm zoom, a Leica lens, enough modes to let me get creative, a star mode for long exposure shots and a glowing review from CoolTools. It was all too much to pass up.

To further sweeten the deal, the cost of the regular TZ5 model was the same as the TZ50 which has WiFi built in. I'm not sure what I'll be able to do with the WiFi (post to blog right from the camera, hopefully!), but the geek in me couldn't resist.

So far, all I've done is take the camera out of the packaging. I had my expectations set to assume that the camera was going to be large, but it turns out to still be quite compact. It's not SD630 small, but it's hardly bulky.

I can also attest to the fact that the charger seems pretty solid. I've liked how our Canon SD630 charger is small and easy to take along with me (the prongs fold up), and the Lumix's does the same trick. I was also able to buy 2 extra batteries for $10, so I should be all set in the power department.

This weekend I'll start reading the manual, and then maybe I'll even take some photos with the camera. That of course, will be the true test to see if the device lives up to the hype.

Stay tuned, more to come...

Stories in a single snapshot

Adam mentioned that he had some new photos up on flickr. I've embedded a slideshow of them below.

Wow, are they incredible or what? Each photo tells a whole story - I love it.


Created with Admarket's flickrSLiDR.

Thursday, June 18, 2009

Scripting Excel With PLT-Scheme - Goodbye Visual Basic, Hello Scheme

For some time, I've known about MysterX - a Scheme facility that allows you to talk to Windows COM objects. Not being a Windows programmer, I've never really had a strong appreciation for what this would buy me - but from my latest playing, I think it could be huge.

Excel allows you to script nearly every bit of functionality that it offers (examples includes: creating workbooks, adding worksheets, updating cells, changing formatting, etc.). Typically, you do this via Visual Basic (or VBA - Visual Basic for Applications). However, it turns out, VBA is just using a COM interface - which MysterX gives you access to. In other words, by using COM, you should be able to get all the power of Excel (and other Windows apps) with the elegance of Scheme. Like I said, I think it could be huge.

Note - this functionality isn't unique to Scheme - perl, ruby and most other languages offer this too. So even if you're not a Scheme person, you might want to pay attention here and apply what I discuss below to your language of choice.

The Gotchas

MysterX offers a simple API for dealing with COM objects. Effectively you create objects and then get/set properties and call methods on them. From looking at the manual, you can see there's not much to it.

By using various Visual Basic and perl examples I was able to figure out the sequence of calls I wanted to make. Creating an Excel instance was easy enough:

(require mysterx)
(define excel
 (com-get-active-object-from-coclass "Microsoft Office Excel Application"))

So was creating a Workbook:

;; In English: access the Workbooks property on excel
;; and then invoke the Add method
(define book (com-invoke (com-get-property excel "Workbooks") "Add"))

And then I got stuck. I needed to run code such as the following:

  Workbook.Worksheets("Sheet1")

What the heck is Worksheets above? Is it a property or a method? It's described as a property in the docs, but simply accessing:

 (get-com-property workbook "Worksheets")

Didn't work. I knew I wanted to index into this property, but how?

Attempting to treat Worksheets as a method that took in the index didn't work either.

This stumped me for quite some time.

The other big gotcha was understanding the Excel object model. For the life of me, I couldn't find the docs that described all the details. This left me groping around for methods and properties, not quite sure what I could depend on.

The Solutions

The docs, it turned out, were easy to find once I knew where to look. By going into Excel, and then selecting the Developer Tab (which you must enable first), and then clicking on the Visual Basic icon, you'll be brought into the VB editor. You can then click help here, and you'll see the following options:

Click on the Excel Object Model Reference topic and you'll be able to get all the nitty gritty details about the properties and methods for each object.

As for the other issue - that took experimentation and guess work. Turns out, you can do:

;; (1) The docs say there's a property named Sheets on the workbook
(define sheets (com-get-property workbook "Sheets"))
;; (2) The Sheets object has a property named Item that takes in 1 argument
(define sheet (com-get-properties sheets '("Item" "MySheet")))

Apparently, the notion that a property is indexed is implemented in com-get-property. You access it by handing in a list representing the property and arguments you want to index by.

Addtionally, com-get-property allows you to chain calls together so that the following is possible:

VB: 
  Worksheet.Sheets("My Sheet").Range("A3:D19").Value

Scheme:
(com-get-property worksheet "Sheets" 
    '("Item" "My Sheet") '("Range" "A3:D19") "Value")

While not as compact as the VB code, it's reasonably close.

Pleasantly, the return types from the VB code are quite sane. Consider this spreadsheet:

Here are the Scheme values when extracting ranges:

;; Access B3:B9
#(#("foo" "bar" "baz" "zap" "zing" "zoop" "zlog") 
  #(102.0 83.0 76.0 54.0 34.0 10.0 2.0))

;; Access B10 (empty)
#<void>

;; Access C11
361.0

As you can see, not only are string and numeric cells returned as expected. But ranges are converted to vectors of vectors, and empty cells are returned as void?.

A Quick and Dirty API

Using my new found knowledge, I was able to cobble together the following API. It's woefully incomplete, but at least you can get an idea of how you can package up these Excel calls:

#lang scheme
;;
;; Use COM & mysterx to integrate with excel
;;
(require mysterx)

;; Some types - for all I know, a cell can hold more than just a 
;; string, number of empty. But this is what I've seen so far.
(define cell/c (or/c string? number? void?))
(define cells/c (vectorof (vectorof cell/c)))

(provide/contract
 [open (-> path-string? com-object?)]
 [close (-> com-object? boolean? any)]
 [new (-> com-object?)]
 [get-value (-> com-object? string? string? cell/c)]
 [set-value! (-> com-object? string? string? cell/c any)]
 [get-values (-> com-object? string? string? cells/c)]
 [set-values! (-> com-object? string? string? cells/c any)])

;; Try to be smart about getting ahold of excel. If it's running, use
;; that instance. If not, create a new instance.
(define (excel-instance)
  (define class-name "Microsoft Office Excel Application")
  (with-handlers ([exn? (lambda (ex)
                          (cocreate-instance-from-coclass class-name))])
    (com-get-active-object-from-coclass class-name)))

;; call the open method to access an existing workbook.
(define (open path)
  (let* ([excel (excel-instance)]
         [workbooks (com-get-property excel "WorkBooks")])
    (com-invoke workbooks "Open" (if (path? path)
                                     (path->string path) path))))

;; Create a fresh workbook
(define (new)
  (let* ([excel (excel-instance)]
         [workbooks (com-get-property excel "WorkBooks")])
    (com-invoke workbooks "Add")))

;; Close a workbook
(define (close doc save?)
  (com-invoke doc "Save" save?))

;; A private function to access a range. You provide
;; the document, the sheet of interest and the range.
;; Note the range can be any of the following:
;;  A3:B6 - a group of cells
;;  C17   - a single cell
;;  Foo   - a named range that's defined in the document already
;; There may be more options too - the range is just passed to excel to interpet.
(define (get-range doc sheet-name range)
  (com-get-property doc "Sheets" `("Item" ,sheet-name) `("Range" ,range)))

;; There's really no difference between getting and setting
;; one value over multiple values. We have a contract on these to 
;; provide some type checking and structure - but really, we leave Excel
;; in charge of figuring out when we mean 1 cell versus a block of cells.
(define (get-value doc sheet-name range)
  (com-get-property (get-range doc sheet-name range) "Value"))
(define (get-values doc sheet-name range)
  (com-get-property (get-range doc sheet-name range) "Value"))

;; Why Value2 below instead of Value? I have no idea. It works.
(define (set-values! doc sheet-name range value)
  (com-set-property! (get-range doc sheet-name range) "Value2" value))
(define (set-value! doc sheet-name range value)
  (com-set-property! (get-range doc sheet-name range) "Value2" value))

What Next?

I think this approach opens up all sorts of interesting avenues. One area that I'm considering using this approach on is project that would treat Excel as a user interface and would use Scheme to do the computational processing. This gives the user a well known UI to work with, yet allows me to avoid having to implement clunky code in VB.

I can also see some interesting opportunities for automation. I'll have to see if I can dig up the COM object models for other apps - like Word, PowerPoint and Internet Explorer.

I always love it when I get happy surprises from Windows, and I think I'll mark this COM stuff down as one of those.

CruiseControl Hack - Kicking off builds from the command line

I'm really warming up to CruiseControl as a build management system. They've made configuration surprisingly powerful with plugin preconfiguration capability.

The challenge of today was to figure out how to kick off a forced build from the command line. It's an easy thing to do in a web browser, but I wanted to do it via an ssh terminal.

I was surprised that the answer didn't come right up in Google, but sure enough, the answer was out there. Specifically, it was on the CruiseControl Wiki.

To kick off a build, you need to make a request to the JMX service. This turns out to sound harder than it is. All you really need to do is use a tool like curl or wget to invoke just the right URL. In my case, I needed to hit:

 http://locahost:8080/invoke?
   objectname=CruiseControl+Project:name=Foo&
   operation=build&
   template=identity

Note: Foo is the project name defined in config.xml

For the full solution. grab invoke-build.sh and just drop that into a shell script. And you're done.

This makes me wonder what other goodies I can control via JMX...hmmm...

Wednesday, June 17, 2009

A Visit To The Beach, Minus The Sand In The Laptop

Traffic and web cams are nothing new, but whenever I see them, I can't help but think there's got to be some sort of use for this data beyond the obvious. It's almost like satellite data was back before it was overlayed on maps in a smooth fashion - it was interesting to look at, but I certainly didn't see it as the huge potential it was.

Press to refresh the image

In the mean time, I suppose I could just use the scene at the beach as a reminder that somewhere, it's sunny and people are having fun. That could be useful, no?

A Source For High Quality and Free MP3 Content

A while back I noted that Real Player made it really easy to grab free content and store it on your mp3 player. Too easy. Well, they're at it again. The other day I dropped a book on CD from the library into the drive and with two clicks I had an mp3 version on my hard drive:

  1. Click on the CD/DVD button on the left hand side (highlighted in red)
  2. Click on the Save Tracks button the left hand side (highlighted in blue)

Once the tracks were saved, I found them in my c:/Documents and Settings/Ben/My Documents/My Music.

I plugged my G1 into my laptop, mounted the phone as a USB drive and copied the files over. I was then able to listen to the content on the phone. The same routine should work for your phone or mp3 player.

The Catch

The big gotcha in all of this is that the ID3 tags don't seem to always be reliable. Some CDs have complete information associated with each CD (like the author and book name) while others have none. In the 4 books I've burned, I've found multiple mistakes, such as misspelling the author's name.

I don't have a great fix for this. There are plenty of mass ID3 tools out there, but I find them all too confusing to be of any use. My favorite so far has been mp3info, which is a basic command line utility for setting tags. It Just Works.

I'm able to use it to make mass corrections or include in a script. Though, unless you're a unix geek, you'll probably not be impressed.

Worth The Effort

If you've never tried renting books on CD from the library, then you're absolutely missing out. They are free, and provide an easy way to carry a whole bunch of content with you at once. Perhaps most importantly, they provide a way to fill up gray time in an entertaining and educational way.

You've got to give it a try.

Tuesday, June 16, 2009

The A-Town Rap

As you can see, we live an especially rough town. See what I mean?

Thanks to our friend, Ben, for the video!

A Beginners Guide To Cyber Protest Participation

Check out Esko Reinikainen's #iranelection cyberwar guide for beginners to see some guidelines for participating in the protests coming out of the Iran Election.

It's a useful document for this particular incident and may also serve as a sort of checklist for organizing future mass protests.

It truly is an amazing time we live in. I remember back during the first gulf war when CNN brought the war live and in person to our living room (OK, not our living room - we didn't have cable, but to living rooms in general). With twitter, it's even more personal - now you can feel like you're connected with ordinary folks on the ground, in real time. Truly amazing.

Monday, June 15, 2009

Geekiest Home Page Ever

Jamie Zawinski home page has got to win the Geekiest Home Page on the Internet contest. Here's a screenshot of part of it:

That is awesome. Ridiculous, but awesome. I love home embedded in the mess of characters (what appears to be a hexl-mode dump from emacs, or the like), are the actual links to the site. Nice.

The source code even includes the tempting comment:

 <!-- mail me if you find the secret -->
 <!--   (no, you can't have a hint)  -->

Oooh, I'm so tempted to throw out my TODO list for the day and spend time trying to figure out the mystery.

E.Coli, Syphilis, Ebola - Awwww, How Cute

Coming from a family of Biologists that produced an Immunologists and a Doctor, I'm quite certain I would have played with these stuffed animals growing up. They are a collection of Giant Microbes that are in stuffed animal form.

From the common cold, to herpes, to mad cow - they've got an impressively complete selection.

And, check out some samples below - are they not totally cute? Oh, and can you guess who these guys are? (answers below in small print)

In order from left to right: Penicillin, E. Coli, Ebola

Bill Maher - Obama needs to be more like Bush

Check out Bill Maher's shtick below:

What starts off as a goofy rant turns into a fairly sharp criticism of Obama. To paraphrase: Obama's acting like a TV star who's only concern is being popular (5:05). As a result, he's not pushing the agenda that needs to be pushed. What we really need is "more George Bush" in his personality (5:47). Why? George Bush had "horrible ideas" yet he pushed them through in their full measure (6:11).

Bill, your rant got me thinking - and I have to say, I disagree with you on two accounts.

  1. How stuff gets done, may be even more important than what gets done. The whole notion that the party in power should just cram policies through is ridiculous. Why? Because in all too short a period of time, the Democrats will be out of power and the Republicans will be back. That's just the way it works. And that's a good thing in many respects.

    If Obama's legacy, though, is that the President has to take his ideas to an unscripted crowd to respond to questions (like he's been doing with healthcare), or it becomes the norm that people you disagree with are involved in policy creation (say: insurance companies and healthcare legislation), this would be genuinely useful. It'll be helpful because you'll want these exact measures in place in the long run of the country.

    It's the opposite of the filibuster argument that seems to go on every year. The party in power complains about how the minority is destroying democracy by using the filibuster. Then, a few years later, the same people are now the minority and talking about how essential the filibuster is to a functioning democracy.

  2. What about the good ideas on the other side? By ignoring your opposition and getting your programs passed at all costs, you discount the fact that there are smart people on the other side of the isle who want to help. Sure, Newt Gingrich's prediction that American's will end up rationing healthcare is absurd. But, that doesn't mean that all voices from the right are equally out of line.

In short - we need to find a way to make our democracy work better, not turn it into alternating years of one-party-gets-to-run-the-show at a time.

Sunday, June 14, 2009

Anchors Away!

We got a huge treat, as we got to go sailing with a friend today. What a perfect day to be out on the water! Enough wind to keep our sails full, but not so much as to make the ride choppy.

I even tried this whole "relaxation" thing for about 20 minutes (yes, they timed me to see how long I could stay chill for) - no phone, no blogging, no puttering around with the GPS on the boat - just me, a beer and the sun. I suppose it was was OK. Though, I'll take my usual level of high activity, thank you very much.

You know, if a boat didn't cost as much as a house, and I actually had time to enjoy it - I'd seriously consider getting one. This was a most excellent time!

Some photos from my G1:

Some photos from our real camera:

What happens if you mix a pair of beaten up binoculars with our camera:

Friday, June 12, 2009

The 10/20/30 Rule of PowerPoint

Grant republished this handy advice from Guy Kawasaki on his blog and I think it's worthy of repeating:

It’s quite simple: a PowerPoint presentation should have ten slides, last no more than twenty minutes, and contain no font smaller than thirty points.

What an excellent rule of thumb. Sure would have been handy to know about back when I was actually giving PowerPoint presentations. These days, I mostly do real work. But still, it's good to know.

Review: Ireland's Four Courts Restaurant

For years now, we've driven by Ireland's Four Courts restaurant located in the Court House area of Arlington. It's got a distinctive enough facade that I've always been interested in going in, and finally last night, I had the chance to actually try it.

Let me see if I start off with some positive aspects of the night. The service was attentive and fast. The beer, in my case Samuel Adams Boston Lager, was tasty and plentiful. The ambiance was good, with the noise level being low enough that we could all talk comfortably.

So what does that leave? Oh, yeah, the food. Personally, I can't give Four Courts high ranks here. But, I blame this one on myself, not them. I'm not exactly sure what my though process was - but I ended up ordering the tasty sounding veggie quesadillas. I mean really, who in their right mind orders Mexican food at an Irish Pub?

Well, I got what I deserved. While the quesadillas weren't outright bad, they certainly weren't stellar. Everything about them was a little off - the flour tortilla was more pasty dough than tortilla, the salsa was not quite the right consistency, and finally there was the guacamole. The guac had an odd coloring / finish that made it appear almost to be fake. Like I said, it wasn't bad tasting - just off.

Everyone else's meal seemed put together well. Shira got the jerk tuna salad, which I had a bite of and found to be tasty.

What I really have to do is head back to Four Courts and try something that they actually have a chance of specializing in. If only Fish 'n chips could be made in a way that was actually good for you. Perhaps the medicinal effects of Guiness can be used to outweigh the fried-badness of Fish 'n Chips? Sounds like an experiment I'll have to conduct.

Anyone else given Four Courts a try and have a recommendation?

Oh, and kudos to the web team at www.irelandsfourcourts.com - they rank #1 in Google for the search 4 courts. That's impressive.

Thursday, June 11, 2009

Deslumpification Techniques

My friend Michelle, over at Facebook, started a fun little topic of what the best way to get out of a slump in the day. I've got a couple of my favorite suggestions below - but I'm curious, what do you do when your day is just dragging? Drop a comment below to share with the group.

My standard methods for getting out of a slump (in no particular order):

  • Eat - It amazes me how big an effect low blood sugar can have on my life outlook
  • Sleep - I've found a 20 minute power nap can reboot my system into thinking it's gotten real rest
  • Running or a walk - there's just something invaluable about stepping away from the problems of the day and getting some exercise.
  • Blog - There's just a nice sense of accomplishment that I get from blogging, which can help turn around a day
  • Shower - I have no idea why this should have such a big impact on my mental outlook, but it does.

  • Laugh - a Daily Show episode can do wonders to loosen up the day

What techniques do you use?

Thanks Michelle!

Update: Two more good suggestions: (1) Drink plenty of water - dehydration can sneak up on you and zap your day (thanks Michelle for the tip!). (2) Change your environment/climate - perhaps the heat or noise is getting to you?

3 Reasons Why Complete Sentences On Twitter Matter

The other day I chuckled at Senetor Chuck Grassley's updates to Twitter. It wasn't the content that I found funny, but the 13-year old girl'esque way they were written. Consider this gem:

Pres Obama you got nerve while u sightseeing in Paris to tell us"time to deliver" on health care. We still on skedul/even workinWKEND.

Or this one:

Pres Obama while u sightseeing in Paris u said 'time to delivr on healthcare' When you are a "hammer" u think evrything is NAIL I'm no NAIL

Does @ChuckGrassley really have to Tweet in proper English sentences? Of course not. But here are three reasons why he, or anyone who publishes for the web, might want to do just this.

Clarity

Spelling, punctuation, capitalization - it's not just the rules, it's a good idea. As I'm sure Mr Grassley knows, following standard English conventions makes text easier to read. When I see his Tweets, my brain switches from auto-pilot into "oh dear, time to get out the decoder ring" mode.

Bottom line, it makes it harder to understand him, and that defeats the purpose of why he's publishing these messages in the first place.

Controversy

The second problem with writing in such tortured English is that it becomes a discussion in and of itself. Instead of people talking about what he said, they get mired in the controversy of how he said it.

Why do something that has the potential to compete with your words when a bit of practice, and a couple extra seconds at the keypad, can make the whole point moot?

Conciseness

Finally, making use of excessive abbreviations robs you of one of Twitter's greatest features: the 140 character limit requires terse writing.

I can recall helping my wife edit her Grad School essays. Each question had a ridiculously short word count limit - say 200 words. My wife, a wonderfully pithy writer, would author a short first draft. Naturally, the draft would weigh in at around 400 words. For a a few minutes, we'd kvetch how it was just not possible to to get the word count cut in half. But of course, by being creative, we did. And the essays were better off for it.

By writing in complete sentences on Twitter, you'll regularly run into this problem. You'll have to write and rewrite the one line of text till it's what you mean, yet crisp enough to fit the limit.

It's a wonderful exercise, and one I think @ChuckGrassley would get a lot out of. Consider the quote above about being a hammer and nail. What I think Grassley is referring to is the quote:

When all you have is a hammer, everything looks like a nail

But what could that possibly have to do with Obama's 'time to delivr on healthcare' statement?

Perhaps, with a few rewrites of that Tweet (which could happen in a matter of seconds - you're not writing world class poetry, just coherent statements), he'd arrive a statement which not only sounded good (Mr President, I'm no Nail!) but also, upon further inspection, made sense.

But...

Whatever he does, I certainly hope the Senator doesn't stop Tweeting. What an excellent role model for how powerful and simple Twitter can be as a platform. All you need is a cell phone and an opinion, and you're there. He just might want to consider the advantages of a little polishing up of his work.

Wednesday, June 10, 2009

Twitter and the Google Cache - Two Handy Breaking News Tools

By now you've heard that there was a shooting at the US Holocaust Museum just a couple miles from where we live.

With an event like this, I find that Twitter is one of the best places to pick up information about the event. Here's a live feed of the latest chatter:

Though, like any raw news source, you have to be prepared for conflicting data. Like @ddelony who claims the shooter was a right-wing nut job, while @JediMaster_OPS claims the shooter was a left-wing nut job. Another example: @DiggFeeder says that 3 people were shot, while the majority of the tweets say that 2 people were shot.

Still, the ability to catch real time chatter, even from those who claim to be there is quite unique. And while some of the opinions are junk (which is natural knee jerk reaction), there are certainly useful insights here too.

What also comes out, are links to relevant content on the web. For example, http://www.holywesternempire.org/bio.html is apparently the shooter's website. But, you won't be able to visit it because the site's been bombarded with people curious about this wacko. The solution? Google's Cache.

You can get Google to cough up its copy of documents stored on a website by running the following search:

site:holywesternempire.org

You can then click on the word cached and see the specific pages of interest.

Folks on Twitter know this trick, and someone's already published a link to the Shooter's work.

My prayers and thoughts go out to all those involved in this difficult situation. I hope the guard has a speedy recovery, and the shooter gets the justice he has earned.

Tuesday, June 09, 2009

A Storm Is A Brewing

This video tries to capture the spooky moments before what has to be a major thunderstorm hits.

Any minute now we should have a gusher on our hands.

The Lighter Side Of Politics

After my last post, I've really got to lighten up the mood here.

Here's the Colbert Report from his trip to Iraq. Overall, I think it was done really well:

And for a few extra chuckles, check out Chuck Grassley's twitter feed. I'm sure the guy means well, and I give him big time credit for leveraging Twitter as a publishing platform. But, geesh, the guy's go to learn to talk like an adult and not a 13-year old girl. See what I mean:

Plsnt conv. w sotomyr. 1 hr mtg. Look frwd 2 hrg and mre details abt recrd.

I mean, you've got 140 characters - feel free to use them all.

Peeking In On Two Republican Strategies

When I saw the headline The President Is a False Prophet I couldn't help but watch the video. Turns out, it was from the recent Republican Fundraiser Dinner. Along with Voight's colorful speech, I also took in New Gingrich's.

It's interesting to see the two strategies that they employ.

Voight's is relatively short and packed with interesting statements, so give it a watch:

Newt's is longer and tamer compared to Voight's but if you can manage it, still worth a listen.

I think Voight's speech is the Democrats dream speech. He makes points like

  • Trying to redefine Bush as an excellent president who was brought down by the Dems. The Republicans have spent much time and energy distancing themselves from Bush, so to reopen this wound seems like a goldmine for Democrats.
  • Making statements like: "We are gathered here today to gain back our power and become triumphant in the next election" only serve to reinforce the political games side of the process. Rather than entertaining any notions of changing, the emphasis appears to be on re-packing the same product.
  • Statements like: "Everything Obama has recommended has turned out to be disastrous" just serve to excite the base and draw a sharper divide between them and anyone who actually may think Obama is doing some good.

Newt's speech struck me as more nuanced. I was impressed that he managed to lift the only non-controversial line that Voight made in his speech and use it as the overarching theme (the part about beliveing that anything is possible). In general, Gingrich's strategy seems to be to paint a picture of the miserable life that's soon to be under Obama - where we ration and quota all things, from gas to who's allowed to live and die. It's a scary picture, though I'm not sure folks beyond the base are going to buy into it. That and he spent a great deal time arguing for things that I think both he, Obama and all people would agree with (say, the importance of the rule of law) - yet he implied that others were against him on this.

With the exception of one comment about education, the speech was a very much us-versus-them attitude. I guess that's not a surprise, as this was a Republican fundraiser not intended to pull in the interest of independents and Democrats. But still, I think one of Obama's smartest moves was to try to reach out to folks in the search for common ground (You're pro-life, I'm pro choice - OK, let's work together to find a way to increase adoptions and reduce abortions) and for someone like myself that really resonates. I guess Gingrich is confident that he can make inroads without doing this.

It's only a mere 1,246 days till the next election. Shouldn't we be starting the debates soon?

Cramming for the Virignia '09 Democratic Primary Election

I'm woefully unprepared to vote in today's Democratic Primary Election. Prior to this morning all I knew was:

  • There's an election of some kind today
  • My phone had been ringing off the hook with robo calls. We got 7 on our voice mail yesterday, and who knows how many didn't leave voice mail. Now I totally get the Stop Political Robo Calls Movement - man they are a nuisance.
  • I knew of one candidate - Adam Parkhomenko, who was going door-to-door and actually shook my hand and asked for my vote. Got to love small town politics where you can actually meet the candidates.

And that's about it. Like I said, I didn't have much to go on. In my attempt to cram this morning so I could actually make a slightly informed vote I found the follow. First, here are some clips from a local news station that interviewed all the candidates for Governor. The interviews are short and not very informative, but at least there some opportunity to compare apples-to-apples here.

And here are some clips for those running for Lieutenant Governor. Whatever you do, don't vote for Jon I. Bowerbank - he's dropped out of the race.

And now I've got to go sort out the House Of Delegate candidates. Oh, and I should probably fine some time today to actually get to the polls or all my research will be for naught.

I have a feeling that the voter turnout today is going to be embarrassingly low - of course, that just makes my lame attempt at voting that much more important. Gulp.

Monday, June 08, 2009

Anatomy Of A Website Break-In

The article, How I Hacked Hacker News, is a most excellent description of how one goes about breaking into a secure website.

As a person who builds sites like this, it's really interesting to get hacker-eye-view into a challenge like this.

I better study it thoroughly, the guy trying to break into one of my sites might not be as gracious as this one was - letting Hacker News close down the loophole before before he published it.

Sunday, June 07, 2009

A Good Day To Be a Mets Fan

Just got back from the ballpark, watching the Nats vs Mets. Oh, the day started off with such promise, yet by the first inning we were down by 5 and the game was essentially over. As you can see from the photo, the Nats players with the strongest arms were the cheerleaders tossing out t-shirts.

Add to that, the fact that the Kosher food vendors at the park are gone, and you'd think we would have had a crummy time.

But we most certainly didn't. Our seats were great, the sun was shining and we got to watch one team tromp another - that's always a good time.

We also had the pleasant surprise of meeting up with some of Shira's family (I'm thinking 2nd and 3rd cousins?) which was a blast. You can see the artwork the kids drew while we were catching up here. Brilliant, no?

We're now totally wiped and in some serious need of recharging our batteries.

Ballpark art

While at the ballgame we met up some of Shira's family. Check out the excellent work Rebecca and Max created on my G1.

As always, I only had to point them in the vaguest of directions and they figured out the whole drawing thing in no time.