Wednesday, November 21, 2007

Help With .htaccess files

When it comes to configuring Apache, my idea of what's tricky to do is a little unusual. I tend to have no problems setting up complex rewrite rules, yet if you were to ask me to lock down a directory with a username and password, I'd be sent scrambling to Google. I can never remember the right sequence of directives to make Apace require authentication.

But there's hope - I've found the .htaccess password generator. You put in the users you want to have, their passwords and a detail or two about your web server setup and it spits out exactly the files you need.

Here's a glimpse of the UI:

It's a thing of beauty, and will save me from trying to make sense of the official Apache docs.

Tuesday, November 20, 2007

Away Message Of The Day

George wins the away message of the day with:

Buried. Ping only if you have a shovel

Nice. Now, do you think it would have annoyed him if I had messaged him to tell him I liked his away message?

The Evolution Of A Brand

In this case, the brand is none other than our own i2x. Our shipment of new business cards came in yesterday. Check out our new look compared to our older one:

The new cards have a few other minor improvements, such as ditching the @gmail.com e-mail address and the .blogspot.com domain name (which was a great bootstrapping hack, IMHO).

My title has remained the same: Technical Guy.

I've got to drop one in the mail to my Mom, as that's what I've found business cards are most useful for: posting on her fridge.

Monday, November 19, 2007

Don't Fight The Back Button

Since, well, forever, people have been annoyed about how the back button and web apps work - or usually don't - together. This has caused no end of pain and suffering in web app creation, and reliable back button handling is one of the reasons I so prefer SISCweb to develop in. How many times have we had to open up an app in new window, just to hide the back button?

And then along comes Google, who does something unexpected - they actually make the back button part of the controls of Gmail.

Your web browser is now a great way to navigate Gmail. Instead of having to find the right links on the page to move from inbox to messages to other Gmail views, you can use the browser navigation buttons (back and forward) to jump back and forth between emails. You can also open your browser history and click on specific emails that you've read to go right back to them. This allows you to quickly access certain emails without having to re-read your inbox. Browser history is something that often doesn't work well on complex web apps like Gmail, but we've gone to great lengths to make it work right.

I love that last sentence.

The thing is, after years of knowing how much havoc the back button can cause to a stateful web app, I can't bring myself to use it. It just feels wrong.

Nice move Google, turning a classic weakness into a strength.

Learn more Gmail tips here.

Chuck For Huck

I laughed way too hard at the list of Chuck Norris Facts I published a while ago. Today, I had a new (and dare I say, scary?) reason to laugh. Chuck Norris has Endorsed Mike Huckabee,and best of all, they've made a commercial to prove it:

At least Mike Huckabee has a sense of humor...

Gardening as Civil Disobedience

I love how the web works. Here's a sequence of steps I took to find a random (to me, anyway) and interesting article A Homegrown Rebellion.

  1. Was checking out the home page of digg.com
  2. Noticed Fun with Google's Calculator and checked out the link
  3. Was browsing the comments and saw a reference to most classic of philosophical questions: Can Jesus microwave a burrito so hot that even he could not eat it?
  4. I was curious if that was a Simpsons reference, so I dropped temperature of a burrito that Jesus could not eat into Google
  5. A few hits down the page I noticed www.eatingliberally.org. I suppose the name was intriguing enough to me that I clicked on it.
  6. A few articles down I caught an interesting article, which I decided to blog about

Whew, what a trip. Keep in mind this happened over a few days on Sidekick's tiny screen.

Regardless of how you get there, I think you'll find A Homegrown Rebellion an interesting article. It's highlighting a movement that's suggesting folks turn their lawns into gardens.

This so appeals to me because I'm such a pragmatist. At least if I was growing food in my front lawn all my pain and suffering to get something to grow might actually be useful (and tasty).

It's either grow a garden, or lay down cement. Though, there must be some option in between.

Sunday, November 18, 2007

Manually Mounting A Thumb Drive In Linux

I wanted to access the contents of my Sidekick from a laptop running Damn Small Linux. I plugged in the appropriate USB cable to both the phone and the computer, and waited. Nothing happened. I had been spoiled by Windows, as I was waiting for a beep or something signifying that the device was detected (Perhaps I was also waiting for a paper clip to come out and do a little dance to entertain me while I waited for said device to be detected).

Apparently, I was out of practice. While, Linux can no doubt auto recognize and mount a thumb drive, a stripped down Linux box wasn't going to do that. Instead, I was going to have to do things the old fashion way.

The first step: search Google. I found two handy articles,here and here that told me everything I needed to know.

First, I ran the command lsusb and was greeted with:

   # lsusb
   Bus 001 Device 001: ID 0000:0000  
   Bus 001 Device 003: ID 0da0:1001 Danger Research 

Considering the Sidekick is made by Danger, this was a very good sign.

I then mounted this drive by doing:

   mkdir /mnt/thumb
   mount /dev/sda /mnt/thumb/

The surprising thing - this just totally worked. I could see the thumb drive just like any other directory on disk.

Victorious!

I so crushed this latest batch of nuts with this handy, dandy new nut-cracker.

That'll teach my food to fight back.

--Ben

Update: I got a Rated-G picture of the new nut cracker. Here's a question: the nut cracker comes with two meta probe thingies. What they heck are they used for? I feel like Stallone in Demolition Man, with the three seashells.

Saturday, November 17, 2007

Idea: Saturday Night Bot

Here's what I need: an AIM bot like the AOLYellowPages, but one that knows about local events. Specifically, one I can ask the question: it's 9:30pm on a Saturday night, what activity should I do?

It could report on any activity that would be going on in my local area. Because it's an AIM bot, I could have a conversation with it, and dig deeper into topics.

I could have a conversation like so:

 Me  >> Yo
 Bot >> Hey, here are some things you can do tonight: movies (1), 
              concerts (2), fun places to hang (3), more (4)

 Me  >> 3
 Bot >> You could: check out DC memorials at night (1), hit the just opened    
              Club Foo (2), Play a game of pool at Carpool (3), or something else (4)

 Me  >> 1
 Bot >> Check out the Einstein memorial. It's a hidden gem in the city. Cool?
 ...

Of course, I have no idea where I'd get the local data - but that's just a minor implementation detail. Heck, as long as I'm wishing for advice bots, I might as well wish for a MarriageAdviceBot. Of course, that one would be trivial to implement, regardless of what you typed into it, you'd get: Face it, you're wrong. Apologize and buy something at Jared for her today, you yutz..

Friday, November 16, 2007

Perfect Fall Day

On my drive to get Shira at the airport I couldn't help but notice it was the perfect fall day - a crisp 46 degress, bright sunshine, picture perfect clouds and an amazingly colorful display of foliage.

Guess there is something to the whole "who wants to live in a place that's always 82 degrees, you'd miss the changing of the seasons" philosophy.

Remind me I said that during winter.

--Ben

OLPC Overview

Not often that I link to Al Jazeera TV, but this time I can't resist. Here's a video of Nicholas Negroponte talking about the One Laptop Per Child (OLPC) project. In it, Mr. Negroponte anwswers some of the classic tough questions - like, why the heck give kids laptops when they don't have food, shelter or electricity? (hint: it's not really about the laptop).

How can you not love a project that's both saving the world and has cool hardware involved?

OLPC Warning Signs and Suggestions

Yesterday, I checked OLPC News and realized a bit too late there was a local meetup in Washington, DC. D'oh, this would have been a chance to play with this remarkable laptop.

You'd think the latest news on the OLPC would be good, as you can actually buy one of them for the next 10 days. But alas, things aren't going so smoothly. As could probably be predicted, the ordering process was crushed by demand, the customer service is lacking and pretty much everyone but the OLPC has a better idea for distributing the laptops. Oh, and there's a serious competitor on the scene, too.

The last thing the OLPC group needs is yet another person chiming with his opinion, but well, whatever. Here goes...here's what I would do if I were in their shoes:

First, way over communicate. Without information, people will fill the void with their fears and concerns. If the shipment isn't going to arrive by Christmas, tell people. If you hired the wrong people to be telesales reps, admit that to. Just keep the information flowing. Don't forget,the laptop exists, and there's evidence that it can succeed. If you're having distribution woes, let's hear about it.

Next, get as many laptops as you can in the hands of geeks. The fact is, the OLPC laptop has features that you'd find on a $1500 Panasonic Toughbook. It has features, like its dual mode screen, which you can't find on any widely available laptop. There needs to be a loud and clear message being spread: this is a unique laptop that's well worth the wait. Sure, there may look like there are competitors out there, but don't be fooled - we've played with it, we have the evidence. Geeks can and would love to spread exactly the message (providing its true, of course).

Bottom line: let's see an OLPC blog from the inside, airing all the dirty laundry, and let's see 500 laptops delivered to folks who will do their homework on the machine, and then spread the word. Oh, and for gosh, take the 10,000 laptop unit order from Vietnam.

Update: Thinking about his some more, I think I should add: when I say geeks above, I don't just me gadget geeks (though, some of them too). I'm talking about anyone who's devoted to digging deeper into their field - math teacher geeks, library geeks, home schooling geeks, mobile geeks, etc. Again, I'm suggesting you get the device into the hands of a variety of folks who can evalute and potentially sing its praises.

Thursday, November 15, 2007

Random Thoughts Of The Day

A few random thoughts I had today...

  • When I joined Innovectra I needed to upgrade my wardrobe from .com startup t-shirts and shorts to professional starched shirts and dress pants. This morning I realized that I need to upgrade my wardrobe again, but this time to be optimized for the web based entrepreneur. This is all to say, I really need to buy some more sweat pants.
  • I knew When Harry Met Sally was an inspiring movie - but even I was surprised to see that it could inspire a country music song.
  • What kind of language offers a built in function to convert newlines to BR's? PHP, of course. That seems a bit excessive to me, but as I'm doing more and more PHP these days I'm finding that's the norm. In general, if you want to do something relatively common, PHP probably has a convenient way to do it. Compare file_get_contents(path) with the gobs of code you need to accomplish the same thing in Java.
  • Whoever claimed that PHP was more readable than say Scheme, needs to have their head examined. Now, tell me, which one is easier to parse?
    (if (unset? model)
        `(span ,make)
        `(a (@ (href ,(build-url make model)) (style ,link-style)) ,make))
    
    <?php if(empty($model)) { ?>
      <span><?php echo $make ?></span>
    <?php } else { ?>
      <a href='<?php echo build_url($make, $model); ?>' 
         style='<?php echo $link_style ?><?php echo $make ?></a>
    <?php } >
    
    And PHP is even harder to read after it's been picked over by a few different programmers. Seriously, it makes perl look easy to follow.
  • ShowMyPC was a godsend this this morning while working with a customer. It's hands down the best desktop sharing app I've seen. And the fact that it's free and doesn't require a login or registration just makes it all the more impressive.
  • Sometimes a song can teach history better than history books. I'm not sure the lyrics alone can do it justice. While listening to the song, I just had to Google the event mentioned to learn more.

Wednesday, November 14, 2007

Add-On Of The Day: Bookmark Keys

Today I discovered Bookmark Keys, and it was love at first key stroke. The plugin is pretty basic - it hardwires you bookmark toolbar to the keys Alt-1 ... Alt-9.

I'm using it to take frequently referenced/edited pages on my wiki, and make them a keystroke away.

Why this isn't built into Firefox is beyond me. But, I guess that's what add-ons are all about.

Speaking of bookmarks, Steve Rubel published a comprehensive list of bookmarklets. If you aren't using bookmarklets, you're really missing out. They are little chunks of functionality that gets treated as a bookmark. Let's say your looking at a page and would like to write a twitter post about. Rather than opening up twitter, you click the TwitThis bookmarklet, and you're work is done.

Ironically, my most frequently used, and oldest bookmarklet isn't mentioned. It's TinyUrl. You click their bookmarklet, and the page your looking at is turned into a tiny url.

His list is still a most excellent place to start to become a bookmarklet master.

10 Minutes To A More Secure Server

The great thing about Rimuhosting's servers (besides their fanatical support) is that you have complete root access. The tricky part about their servers is that you can complete root access. They give you ample rope, to as they say, shoot yourself in the foot with.

I finally got around tonight to spending a few minutes making sure my server wasn't embarrassingly (and dangerously) wide open. Here's what I did...

  • Upgraded the OS and tools. Rimuhosting couldn't make this any easier if they tried. I ran:
           sudo apt-get update
           sudo apt-get upgrade
    
    (I mention Rimuhosting because these commands are pulling from their repository - so I assume they have at least some hand in this magic)
  • I ran an nmap to see what ports were open. Luckily, all I had to deal with were http, smtp and sshd.
  • http was the easiest - I need that open, so I just left it as is.
  • smtp was a bit trickier. I edited /etc/postfix/main.cf and set: inet_interfaces = localhost. Now my local box can send mail, but the mail server is closed to the outside world. (Real mail is handled for me by Google Apps).
  • sshd was where I got a bit fancier. From my logs, I can tell that there's an endless supply of bots trying to break into my server (what a nasty place the net can be!). I could setup ssh to only listen for some IP addresses. But that means that I won't be able to access my server from random places like internet cafes (remember, we are thinking nomadic). Instead, I changed a few settings in /etc/ssh/sshd_config. They are:
              UsePAM no
              PasswordAuthentication no
              PermitRootLogin no
    
    The permit root login is especially nice, because now all those bots who are trying to break into the root account are guaranteed to fail. I also turned off password authentication. To log in, I'm forcing myself to use ssh keys. Not only is this more secure, but my guess is that most bots don't even attempt to break in using an ssh key (an extremely tall order). Again, the whole horde of them should be locked out. Ideally, I'd also like to setup S/Key - but that will have to wait for another day.

That's pretty much it for now. I would hardly call my setup hacker proof - but I do believe that the easy exploits have been taken off the table. Besides pulling the plug, what else could I do to secure my box?

Thinking Nomadic

This morning I had to drop David off at the airport at 8am - the worst time to have make a trip on any DC roads. As I was leaving this morning, it hit me - why do I need to fight traffic both ways?

So here I am, at Panera, a few miles from the airport. My plan is to plug in here with my laptop, work for some time till rush hour has safely passed and then head home.

I know this is an obvious plan for some, but I'm still getting used to this new found freedom. Which is just too cool!

--Ben

Tuesday, November 13, 2007

Picky Wiki, Oh How Tricky

I knew that one essential piece of infrastructure I wanted to get in place for i2x was an internal wiki. Wikis, for me, are a combination whiteboard, scratchpad, document repository and all around general purpose tool. I've used wikis for everything from keeping track of account info for clients to hosting project specifications.

One of the nicest things about wikis is that they are easy to re-organize. As the needs of i2x are becoming clearer, I can change and update where stuff lives on the wiki and how it's organized.

The big question for today was what variant of wiki to install and commit to using? There are a multitude of options.

In the past, I've used UseModWiki and Pbwiki. Though I was curious if Trac, TWiki or MediaWiki would be better options.

MediaWiki is famous for hosting wikipedia.org, so that certainly speaks volumes about the project. And TWiki has a really impressive set of features, such as the ability to create interactive forms. And Trac is know for tight its integration with Subversion, which means that your source code, document, and bug repository all have wiki capabilities.

I spent way too long evaluating all these options today, and more.

At the end of the day, though, I decided to stick with the UseModWiki. My reasons?

  • The wiki is drop dead simple, and that's what I need. I want the equivalent of a whiteboard to work with, not a sophisticated drawing program. UseMod offers versioning, handy wiki syntax and no frills to get in the way.
  • Installation is nice and simple. I like that I can understand exactly what's going on with every aspect of the wiki.
  • The source is being maintained - the last release was on 9/12/2007. That may not seem impressive, but quite a few wikis I looked at today had development stop years ago on them.
  • The source is hackable. In the past, I've hacked the UseMod wiki to support embedding bug links (bug:928 automagically turns into a hotlink to bug report 928), calendar references (cal:1/3/07 links to that date) and other changes. The big o'l perl file isn't easy to follow, but I know I can change it if I see a feature I need.
  • I love the old school feel to the Wiki - using RealWikiLinks, and a more or less plain text feel to it. We've got evidence that this sort of simplicity works and works well.

I also looked into using PBWiki - a terrific online service which allows you to create your own wiki in a hurry (less time than it takes to create a peanut butter sandwich, as they say). In the end, I decided I wanted the flexibility of being able to control every aspect of the wiki and that I didn't want to contend with ads or space limitations.

If you don't use a wiki, you should definitely give PBWiki a try. Give yourself a few days with the tool and you'll think of dozens of uses for it.

For those who do use wikis, what variant is your preference?

Update: I should also mention a few more advantages to UseMod that I've found with playing around with it tonight:

  • It's possible to bookmark the edit page URL, which has the format: http://wiki.yourdomain.com/wiki.cgi?action=edit&id=ScratchPad. If you add this bookmark to your toolbar, you suddenly have one click editing for that page.

  • There's a patch to support pressing control+s to save your page and one to insure that a loaded page automatically gets focus on the text area. Combine this with the previous advantage, and you can now click a button to edit page, start typing, and hit control+s to save. Bottom line: edits can be really fast.
  • The wiki is totally usable, both from a viewing and editing perspective, on my Sidekick 3. In general, the HTML is so simple, it would probably work well on any mobile device with an HTML browser.

As I play with things a bit more tonight, I'm getting the sense that I made the right decision to go with UseMod.

Review: Evan Almighty

I just finished watching Evan Almighty and I have to say - I really enjoyed it. Just like Bruce Almighty, it delivered an impressive religious and upbeat message in a way that outright preaching simply can't get across. In fact, they are among my favorite philosophical movies because of the balance they strike between humor and PMA.

I was also impressed how they varied this movie from the original. They could have basically repeated the same story with a different set of characters, but they didn't take the bait. The movie was better off because of it.

I give the movie a 9/10 because of its message, and the reminder that there's more than one way to deliver that kind of message.

Painless Google Sitemaps

It's a best practice to create and submit a Google Sitemap for any site you publish on the web. But I always forget the format, and you know there has to be a better way than creating one by hand.

There is - xml-sitemaps.com does exactly The Right Thing. On their home page you plug in your URL, hit submit, and a few moments later you'll be asked which format you want to download your sitemap in.

No signup process, no need to add a link to their website from yours, just easy sitemap generation.

After I downloaded the sitemap file from them, I uploaded sitemap.xml to the server and told Google about it. Couldn't have been any easier.

OK Google, I've done my part - no go ahead and slurp the site into your all knowing index...

Leveraging The iGoogle Start Page

Over these last few days, I've really started to leverage my iGoogle start page. In the past, I had more or less a standard page with news, quotes and of course Dilbert. Fun, but hardly what I'd call useful. In fact, considering how often I'm opening Google to do work, it's probably more of a distraction to have all that content than a help.

I've just started to realize that I can actually turn my Google start page into a control panel, where I can get a birds eye view of my life. Specifically, I'm playing around with:

  • Embedding Gmail for a quick view of my inbox
  • Making use of Slim RSS to track forums where i2x jobs are posted
  • Making use of Slim RSS to display the upcoming events from specific Google calendars (using the very cool private RSS feed ability)
  • Showing a simple world clock so I can keep track of meeting times with folks in other timezones
  • Embedding Google Calendar so I can get a quick view of my upcoming agenda
  • And of course, I still have Dilbert on the page. Hey, a little distraction is good at times.

What are you favorite widgets on your start page? Did I miss any especially good ones?

Monday, November 12, 2007

First Day Of Work Photo

I think it's appropriate to continue my tradition of grabbing a snapshot of myself heading out to my first day of work. Unlike last time, a tie wasn't necessary.

I considered working in boxer shorts, but let's face it, the internet isn't ready for a snapshot of me in boxers - PJs will have to do.

What a fun first day it's been - no orientation, no paperwork, no new names to memorize, just code to write and customers to talk to.

--Ben

An I2X News Feed - Keeping Up With Ideas2Executables

Curious about what's up with my new full time job and adventure, Ideas2Executables? You can now track all the goings on here.

Yes, it's a Twitter feed, and yes, I had a fairly bad experience last time I attempted to make Twitter a part of my life. But this time it's different - I promise. I'm going to be using it as a sort of headline publication service. It will be more of a Just launched XXX, check it out than a Just ate lunch. Going back to work feed.

Twitter provides a few key advantages over other publication options: (1) the updates are fast to read, so following along is easy. (2) the 140 character limit forces me to be brief and only put the key information online. (3) Publishing a twitter stream is easy, which means that I can plaster my news wherever I want to (on our website, on the blog, in this article, etc.). And finally (4), if folks do want to follow along via IM, SMS, RSS or any other format, they can.

This is officially my PR stream - so, keep an eye on it for the whole scoop on i2x.

Here's a snapshot of the latest feed:

Sunday, November 11, 2007

David Comes To Town

.... and the first thing we do is find Kosher meat. It's what us Simons
do.

Glad to have you Dave, Even if my cholesteral will go up 10 points.

--Ben

A Football Mensch

I'm listening to Bill Belichick's biography. Bill, for folks like myself who haven't heard the name before was (is?) is an NFL coach. His story has been a fun one, and I'm growing more and more impressed with football as I listen to the book.

One story really caught my ear. The narrator was talking about one of Bill's teams that he coached and mentioned one of his players: Harry Carson (http://en.wikipedia.org/wiki/Harry_Carson)

Apparently, one week Harry was so disappointed with his performance, he tried to *give back* his salary for that week. He claimed he hadn't earned it.

Wow, integrity in pro sports. I'm impressed.

I'll probably have more comments on football as I really start to appreciate it. I can tell you one thing - it's way more nuanced than I ever imagined. Unlike baseball, soccer, tennis and a host of other sports which are single threaded, football appears to be a massively parallel system. Perhaps that's why it's always looked like chaos to me. I'm beginning to appreciate, that at the very least, it's controlled chaos.

--Ben

Update: Thanks to my brother David for the quick information - not only is Bill Belichick still a coach, but he's the coach that was involved in the latest spying controversy. What a coincidence.

A Google Spreadsheet Running Journal

Now that my schedule is a bit more flexible, I'm hoping I can be more regular about my running. To help me do this, and give me a chance to dabble with my new found spreadsheet skills, I've created a Google Spreadsheet based Running Journal.

Some features I got to practice with while creating the spreadsheet include:

  • More fun with vlookup and countif - I'm becoming a pro at these
  • Date math combined with countif. This allows me to count only my miles for the given week or month
  • Embedding a URL in a cell, which provides 1 button access to it
  • Making use of if(isblank(...),...,...) so I can pre-copy formulas ahead of time and not have them give errors
  • The ability to publish the spreadsheet on an arbitrary web page

If nothing else, this spreadsheet can hopefully serve as a more real example of what you can do with Google Spreadsheets.

Here's what it looks like:

When I have more data in the spreadsheet, I think I'll try playing with graphs.

Farewell Photos

What a day last Friday was, with me leaving Innovectra and all. As you'll see from the photos, it was a really emotional day.

We had our traditional go-away lunch:

The team even presented me a signed mug (they even went through the effort of markering out the PNC Bank logo that was on the freebie mug they used):

Here's a parting shot of me giving a whiteboard a hug. Sure, I'll miss the team - but boy, will I miss all those whiteboards. Sometimes, up to 3 in an office...ahhh, good times.

Then I left the building. I knew the team would be going through a difficult time, what with the leadership deficit I left them with. I just hoped they would find a way to cope with this loss.

Then Beamer sent me some photos from after I left...

I do believe that is was my team, literally jumping for joy that they won't have to deal with my code reviews. Maybe me leaving wasn't all bad for them.

Yeah, yeah, yeah, they're going to do great. I never had a doubt.

Hope For CSS Hell

Earlier tonight I was working a CSS based HTML layout. The layout was really trivial, something along the lines of:

Header
Body

I had various combinations of absolute and static positioning. Firefox had no problems rendering what I was looking for, however, IE was causing the body area to overlap the header. It was a mess.

I Googled for internet explorer absolute positioning margin-top and happened to stumble upon this very handy page. It outlines a variety of issues, workarounds and tests for CSS. Sure enough, I had run into the old IE/Win: Margin collapsing and hasLayout issue (I know, it's obvious, isn't it).

The solution turned out to be incredibly simple: re-order the HTML, so that the body div tags appeared before the header div tags. I would so never have figured that out without this push.

The smart thing to do would be to take some time and study up on the issues mentioned on that page rather than waiting for the next big gotcha.

Saturday, November 10, 2007

Success Is In The Cards

Considering our current I2X business cards are missing our company logo and have the wrong e-mail and web address, we thought it was time to bite the bullet and get a new set.

Previously, we used VistaPrint with good results, and so we returned to them again. We purchased free business cards, which actually ended up costing us $10.00 - $5.00 for shipping and $5.00 for using our company logo.

VistaPrint specializes in self service creation of business cards, stationary, and pretty much anything else they can stick your logo on. Having implemented a self service creative system before, I can tell you, it isn't easy. Finding a balance between customization and idiotproofness is tricky. VistaPrint has done it well. We were able to pick a sane template and then tweak the cards from there.

There's almost too much customization, actually, as I think you can end up with pretty nasty looking output. But that's always the challenge.

VistaPrint is also a marketers paradise. Like GoDaddy, every step of the buying process is fraught with additional upsells. VistaPrint is fairly clever about it though. For example, not only do they want to upsell you on buying mailing labels, but they take the input from the business cards and repurpose it for the labels. The result is that you logo and name is plastered on everything they want to sell you. Most marketers I know would be hyperventilating with glee if they had that kind of capability.

Even with the hard selling of additional items, I still think VistaPrint is a winner. They get the job done and do it cheaply.

Here's a business card tip: remember, sometimes the best thing you can do is to leave your business cards at home.

Friday, November 09, 2007

Turning in my badge and gun

OK, maybe not badge and gun - but in my profession, my laptop and keycard are basically the same thing. Tools of the trade and my ticket in.

Hard to believe this is really happening.

--Ben

Damn Small Linux and Wireless Network Card Config

I wanted to free my Instant Linux Setup from using Ethernet cables, and go wireless. The laptop I was using was old enough that it didn't have wireless built in, yet I found an old SMC card from back in the day (will the gifts of Amazing Media never cease?). I crammed the SMC card in the PCMCIA slot and I heard that joyous monotone beep that means that the laptop detected it. That was a good start. But then what

After poking around, I learned I needed to use the iwconfig utility to set up the card. I finally reduced the steps to get the network up to:

  iwconfig essid ssid-I-had-set-on-my-router
  iwconfig key s:text-key-I-had-set-on-my-router
  pump

If this were a real Linux system, I'd probably have to store these values somewhere. But because I'm using Damn Small Linux on CD, I think I'll just re-enter these commands every time.

It's a crude solution, but it's working.

Thursday, November 08, 2007

Mid Air Stalking

Shira's plane will be landing in 38 minutes and is currently traveling at 435KTS. Her altitude, if you were curious, is 35,000 feet. She has just about 192 miles to go.

I know all this because I'm tracking her flight on flightaware.com. I've known that these live tracking sites have existed for quite some time, but I never seem to remember to use them. Not this time, I've got it up and am refreshing the page regularly.

I'm not going to be late to picking her up tonight!*

No discussion of picking up / dropping off women at airports is complete without the classic quote from Harry to Sally:

Harry Burns: You take someone to the airport, its clearly the beginning of the relationship. That's why I have never taken anyone to the airport at the beginning of a relationship.
Sally Albright: Why?
Harry Burns: Because eventually things move on and you don't take someone to the airport and I never wanted anyone to say to me, How come you never take me to the airport anymore?
Sally Albright: Its amazing. You look like a normal person but actually you are the angel of death.

*How much you want to bet I'm late getting her because of the time spent writing this blog post?

Final Team Activity

We re-organized Jade's office today (yes, this is a reacurring theme). It's probably the last team activity I'll have (minus the goodbye lunch), and it was fun.

The team performed flawlessly. I'm starting to think we need to start an Office Makeover show. We'd rock.

Starting Monday, if I want furniture moved I won't have a team of folks to call on. How sad.

--Ben

More Toys For Geeks

A quick look at the Fly Fusion Pen Computer and it appears to be a chunky input device for kids. And it is. It just also happens to be so much more.

The Fly Pen Computer is based, in part, on the same technology behind the Nokia Digital Pen. It makes use of special paper and a tiny built in camera, to allow it to record and process all the strokes a person makes. Unlike the Nokia Pen, it has more to offer than simply recording pen strokes. It's actually a real honest to goodness computer, packed into pen form.

And what makes it a computer? It has input capabilities, via the pen, output capabilities with audio and most importantly processing capability - doing on the fly text to speech, translation to Spanish, calculations and music generation. If I thought rethinking the UI was impressive, this is rethinking the entire concept of a computer.

Perhaps one of the Fly's most impressive abilities is that users can draw out user interfaces and then interact with them:

But if you’re in the middle of working on an assignment and wanted to access one of the pen’s functions you actually don’t need to flip back to the inside cover to tap on the controls printed there. What’s really cool is that you can actually draw the FLY Compass controls that correspond to the function you want on whatever page you’re using.
...
Here I’ve drawn the FLY Compass menu for the MP3 player and once it’s done you can access a set of audible instructions that tell you how to draw buttons for Play, Stop, Pause, Prev and Next. Once they’re all drawn you can simply tap on them like real buttons and control the MP3 playback on the pen.
-From Andrew Liszewski in depth review

That's just too cool.

The device isn't all that expensive, at around $80 .

Naturally, I'm curious if the device could be repurposed into one that adults would find useful. What a team this would make, a LeapFrog pen and a neon green kids laptop. But the technology seems to cool not to wonder what the adult version would do.

Could you manage your calendar and todo list with it? What about some sort of paper based spreadsheet? Or how about being able to convert UML diagrams from paper right to code? At the very least it should have a Scheme or Forth intepreter built into it.

Oh, the possibilities are endless. Kids today, they certainly have the best toys.

Want more toys for geeks? Check out my thoughts on the One Laptop Per Child laptop.

Wednesday, November 07, 2007

One Laptop Per Mobile Geek

The One Laptop Per Child project is heating up, as production of the device has started, and in just a few days you'll be able to buy one. People have started to wonder, who, besides children in developing countries, should buy the laptop, and have even suggested that perhaps it might be an ideal device for seniors..

I've been wondering myself, if the device could be repurposed as a mobile laptop for geeks. As I've mentioned before, the hardware is really innovative, being: lightweight, drop-proof, water resistant, having outstanding battery life, supporting an e-book reading mode, having a built in tablet and having better WiFi than most real laptops (see a video showing this all, here). Throw in the fact that the device is cheap, and it seems like an ideal tool to be tossed into a bag and traveled with.

Before the laptop can be declared the ultimate geek machine, I think a bit of work needs to be done. First off, can the hardware be used by adults? Sure, it's optimized for kids, but can adults make do with the screen and keyboard? I'm used to typing fairy long blog posts on my Sidekick 3 - so clearly, where there's a will, there's a way..

Next, what software can reasonably run on the device? At this point I wouldn't concern myself with how useful it is to run the software, just catalog what does and doesn't work. Ideally, there'd be a procedure for wiping off all the kids software on the device and replacing them with more robust tools.

Finally, I'd love to see a series of howtos written that that suggest practical ways to use the laptop in a mobile context. Titles like How to run the perfect brainstorming session using the OLPC laptop, or How to Get Things Done on the road using the OLPC laptop would be ideal. This would insure that all these purchased laptops don't just collect dust as the once-must-have-gadget.

I have a feeling that plenty of kids and parents are going to be disappointed with the OLPC laptop, as it will hardly compare to their PlayStation 2 or Dell Desktop. But geeks, well, us geeks will appreciate any device that can squeeze out 6 hours of battery life from, even if it is neon green with little WiFi ears.

Instant Linux

I had an old laptop lying around that I was curious if it could be turned into a useful piece of hardware. I was pretty sure the drive was shot on it, so I thought I'd try booting off a Live Linux CD.

For years now, I've been a fan of tools like tomsrtbt which fit an entire Linux system on a 3 1/2" floppy disk. You pop in the disk, turn on your computer, and *poof* - your computer is turned into a Linux box. This is true if you're hard drive has Linux on it, or in the case of the laptop I'm trying to revive, you have no hard drive at all.

With bootable CDs and DVDs, these Live Linux Distributions have grown to be much more powerful, as you can fit more and more on such a system. Although it wasn't until two nights ago that I got an idea for just how far things have come.

So you want to try this Linux thing, but don't want to bother wiping your Windows setup? Or you've got an old computer or two lying around, and you'd love to put them to work? My suggestion: create an Instant Linux System.

How To Setup An Instant Linux System

  1. Visit this list of Live CD distributions
  2. Download the appropriate .iso file from one of the sites
  3. Burn the ISO image to a CD
  4. Pop in the CD and reboot your computer
  5. Sit back and watch the Linuxness scroll by on your screen

For me, the hardest part of the process was waiting for the .iso image to download.

I played with two distributions two nights ago. First, I tried SLAX. Wow, what an amazing system is is - it seamlessly booted into a rich desktop environment. Everything about getting the system up and running was painless and couldn't have looked more professional.

I also played around with Damn Small Linux which, while not as polished as SLAX, was tiny (48 Meg) so it was easy to download. It also provided Firefox, so I could access all my Google tools.

These Linux CDs are really remarkable. If you want to breathe new life into old hardware, or experiment with Linux, there's no easier way to get started than popping in one of these disks and booting up.

As an educational tool, these distributions are unmatched. With a book on Linux, your current Windows box and one of these CDs, you can quickly and painlessly setup an environment where you can becomes Unix master. No worrying about drive partitioning or harming your existing system - just boot and go.

Update: To burn the ISO image that you download to a CD you'll need a program that can handle this task. Windows XP can't do this by default, but ISO Recorder, a freeware program will do the trick nicely. See the instructions on how to do this here.

While at work today, my computer at home downloaded Kanotix, yet another live Linux Distribution. Using ISO Recorder, I burned the image to a CD, and in just a few minutes I had yet another Linux On A Disk I could play with.

Tuesday, November 06, 2007

Surprise Family and Food Fun

Today I had a most excellent surprise - my Bro and his family made a spontaneous trip to Washington, D.C. to visit the sites. Unfortunately, I didn't get to go museum and zoo hoping with them, but I did get to enjoy one heck of a dinner with them. We ate at Kosher Bite in Baltimore, which is a kind of serve-any-kind-of-kosher-food-you-can-imagine kind of place. I ate way too much, but boy was it good.

It was such a pleasure seeing my niece and nephew. My niece is an absolute genius, and has plenty to interject about pretty much any topic (her description of jet lag was spot on!). My nephew surprised me with his ability to use, I kid you not, sarcasm. What a treat it was hanging with them.

Work Lasts

Who knew signing/authorizing a vacation form could be a sentimental activity? It is when it's the last one I'll do forever (for Innovectra, anyway).

I'm tempted to authorize vacations for the entire month of December. But that may be overstepping my bounds just a tad.

I'm really going to miss this place.

--Ben

Monday, November 05, 2007

Saying Farewell to Innovectra

What a day at work! At a company-wide all-hands meeting, I had the opportunity to make a surprising announcement. This will be my last week at Innovectra. Surprised? So were my co-workers!

For the last few years, Innovectra has been a wonderful place to work. The dev team has been world class, the staff in general has been great, the technical challenges have been fun and I've learned lots. With that said, I have decided that it is time to take on a new challenge. The first step of which means leaving Innovectra.

While I hope they are sorry to see me go, I'm sure this will give people a fresh person to blame when things break over the next few weeks. I know the team will continue to go on and do great things and I hope they believe me when I say sincerely, it's not them, it's me.

Thanks, Innovectra, it's been a great ride.

Here's a trip down memory lane, a photo from my first day of work.

Bitten By FireBug

Over the last few weeks I noticed that Firefox was running slower and slower. It seemed that every time I visited Gmail, the CPU would spike to 100% and stay there for way too long. I found myself restarting the browser more and more often.

It got bad. How bad? So bad, I found that IE was a faster browser to use than Firefox and nearly switched to it. Yeah, that bad.

The it hit me last night - I should do something about it. Surely I'm not the only person in the world who's noticed Firefox is crawling these days. I did a Google search or two and found nothing. Then I actually spent a few minutes thinking about my problem (I know, a crazy idea).

After about 30 seconds it hit me, Firebug!. I had installed and turned on Firebug for all pages. The result was that every page I browsed had debugging turned on. This debugging is handy, but is naturally going to slow down sites. This is especially true for JavaScript heavy sites, like Gmail.

A quick right mouse click on the green checkmark in the bottom right hand corner of my browser, and selecting Disable Firebug is all it took to get reclaim my browsing speed.

Now if I could just wash off this emotional stain IE left on me, I'd be all set.

Sunday, November 04, 2007

Birthday Benefits

Today we had a chance to celebrate Justin turning a year older. He got to enjoy all the key benefits of turning older, including: hanging out with friends, being married to a wonderful woman, and getting to eat a massive brownie sundae thingy. Too bad his teams lost in football today, or it might have been the perfect day.

I'm just glad I could be there to help with the brownie sundae. That's what friends are for, ya know.

Another Sign Winter Is Here

Another sign: the ice skating rink is up at Pentagon Row and people are enjoying the pseudo winter weather.

But don't get too carried away - I just finished a run wearing shorts and a t-shirt. It's not that chilly yet.

Shira and I are off to spend too much money at Costco. No matter how few items we purchase, the bill is outrageous. Wish us luck...

--Ben

Saturday, November 03, 2007

The nut that fought back

Gives new meaning to "a tough nut to crack."

Damn you hazel nut, you won this battle. But tomorrow I'll get a new, more powerful nut cracker, and will win the war!

--Ben

Friday, November 02, 2007

Recover A Source Tree From Java Classes

Say you need to make changes to an ancient Java application you can't find the source for. You can typically decompile a .class file to a .java file really easily by using the incredibly awesome Jad Decompiler.

If you have a whole tree full of .class files you can convert them all to .java files with the handy commands:

 cd ~/directory-that-has-start-of-class-tree
 mkdir src
 find -name '*.class'  -exec jad -s .java -r -d src {} \;

And you're done and quite possibly a hero for getting back the MIA .java files.

The Team Building Umbrella

Here's a fun team exercise...

1. Get a too-fancy-for-its-own-good umbrella from Harvard business school

2. Break it so it doesn't close

3. After multiple folks have tried, unleash your development team on the problem

4. Have them "fix it." Sure, you end up with a still broken umbrella. But now it's folded and the team is less stressed because we got to take it out on the umbrella.

--Ben

5 Google Spreadsheet Surprises

OK, I'm on a spreadsheet kick. Along with trying my hand at getting fancy with Excel, I've been playing more with Google Spreadsheets. After poking around their docs I have to say I'm really impressed with the job Google did. Here are 5 surprises I had while playing around with Google Spreadsheets.

1. Real formulas are available. I figured sum() and count() functions would work, but so do a wide variety of others. Vlookup, countif(), and many others are also available.

2. You can lookup live data from the web using Google functions. What to know the longitude of Arlington, VA? Enter the formula =GoogleLookup("Arlington, VA", "Longitude"). How about the stock price of Red Hat Corp? Enter =GoogleFinance("RHT","price"). You can also use functions to pull in external data. Your options include ImportXML(...) to slurp in XML, importData(...) to import .csv or .txt files and importFeed(...) to pull in an RSS feed. They also offer importHTML(...) which I find particularly clever:

=ImportHtml(URL, "list" | "table", index). This imports the data in a particular table or list from an HTML page. The arguments to the function are as follows:
  • URL - the url of the HTML page
  • either "list" or "table" to indicate what type of structure to pull in from the webpage. If it's "list," the function looks for the contents of <UL>, <OL>, or <DL> tags; if it's "table," it just looks for <TABLE> tags.
  • index - the 1-based index of the table or the list on the source web page. The indices are maintained separately so there might be both a list #1 and a table #1.
Example: =ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India", "table",4). This function returns demographic information for the population of India.

3. You can use an API to programmatically review and update your spreadsheets. From the Google docs on the Spreadsheet API:

The Google Spreadsheets Data API allows client applications to view and update Spreadsheets content in the form of Google Data API ("GData") feeds. Your client application can request a list of a user's spreadsheets, edit or delete content in an existing Spreadsheets worksheet, and query the content in an existing Spreadsheets worksheet.

Here are some of the things you can do with the Spreadsheets Data API:
  • Use a spreadsheet as a database and access data for another application via the Spreadsheets Data API.
  • Use an external graphing library with the Spreadsheets Data API to add nice looking graphs to your site.
  • Implement auto-filtering and other spreadsheet functionality in an application you build for your users.

It's not immediately obvious to me why my spreadsheet would need API access - but still - how cool is that?

4. You can collaborate in real-time on a spreadsheet. Google Spreadsheets not only allows you to publish documents for others to view and edit, but it also gracefully allows for simultaneously editing. Check out the conversation I had with myself:

Notice, not only is there a chat window to discuss the spreadsheet, but there's also a cell that's highlighted in green. That's where the other user's cursor is currently. This way, everyone can literally and figuratively be on the same page.

Combine this chat ability with versioning, and your spreadsheet because a useful on the fly collaboration tool.

5. You can access your Google Spreadsheets with your mobile device. By visiting http://docs.google.com/m on your cell phone, you'll gain access to all your documents, including spreadsheets. Here's what I see on both the desktop and mobile version of the same sheet:

Learn more here and here. Live data on the go, how cool is that?

I'm starting to get convinced that Google Spreadsheet isn't just a lame replacement for Excel - it's a powerful tool in its own right. With a bit of imagination, you can do some remarkable things.

Wednesday, October 31, 2007

Scarier Day At Work Than Usual

I love Halloween at work - I get to marvel just how creative my coworkers are. I didn't, as usual, dress up, because, as usual, I didn't give myself enough time to put a costume together.

I'm adding a note to myself in Google Calendar, 6 months from now I'm going to research and prepare a costume to have ready to go for the Halloween.

Congrats to Chris, from the dev team, on winning funniest costume for his Bad Santa outfit.

--Ben

Update: My photo of Megan, as a Zombie, just isn't doing her costume justice. She definitely earned the award of scariest costume. The whole blood stains around her mouth - just too spooky.

Tuesday, October 30, 2007

Remote MySQL Tips

Last night I wanted to dump all the data from a MySQL table, edit it in Excel and then reload it back into the table. MySQL provides tools like mysqldump and syntax like SELECT ... INTO OUTFILE ... - however, they assume you have local access to the filesystem. Unfortunately, I didn't have this kind of access.

After a bit of poking around, I came up with the following commands to bulk extract and load remotely.

Remote Table Dump

--
-- Run from a shell (cygwin works) prompt
--
echo 'select <col1>, <col2>, ... from <table>' | \
  mysql  -h<remotehost> -u<user> -p<password> \
  <database> > outfile.txt

Note: This command is run from a shell command prompt, not from inside the database. In this case, outfile.txt will contain a tab separated file with the results of the query that was echo'ed into the mysql command.

Remote Table Restore

--
-- Run at a MySQL command prompt, assuming you're in the right database
--
LOAD DATA LOCAL INFILE 'outfile.txt'  
   INTO TABLE <table> (<col1>,<col2>,...);

This command is not nearly as sexy as the previous one. LOAD DATA is a SQL command MySQL offers. The tricky part is that you need to include the LOCAL keyword.

Did I mention that Postgres handles all this in a much cleaner and more consistent way?

Digital Bookmarks

I just had to return two books to the library I didn't get to finished. I'm leaving myself a few notes about them here so I can decide if I want to go back and pick them up.

------------------------------------------

Title: Too Lazy To Work, To Nervous To Steal

Author: John Clausen

What it's about: How to make enough money as a freelance writer so you can live the good life (as a freelance writer)

Why I picked it up: My interest in small business and the fact that the act of writing is similar to the act of programming. To be honest though, I the clever title probably was as much a reason as any.

Main lesson: Reuse, reuse, reuse. Find ways to take the same writing and republish it in as many contexts as possible (changing it to be relevant, of course). Also, be a generalist - write lots of different types of content to cast the widest net possible.

Worth reading? Sure, why not. Programmers like myself will probably find a lesson or two to take away. Writers, YMMV. I doubt this is the best book on the topic out there.

Rating: 7/10

------------------------------------------

Title: Debugging

Author: David Agans

What it's about: This is a book that attempts to teach the art of software and hardware debugging. It's programming language and environment agnostic. It's trying to teach the fundamentals of debugging.

Why I picked it up: I'm a programmer, debugging is what I do. I'm always up for learning new tricks.

Main lesson: Debugging isn't just a skill that takes years to master through trial and error. There are concrete rules a beginner can follow today to be better at debugging.

Worth reading? Great for beginners and anyone who hasn't had a lot of practice in debugging software. Even if you aren't a programmer, the lessons are invaluable. If you've been programming for years, there's probably less here for you.

Rating: 7/10

--Ben

Morning Linux Challange

What is this, Monday? I come and find that one of our dev wiki is down. I poke around and learn that the box is pingable but not sshable. Something is hosed.

I wander back to the machine room, where Phil and I find the physical hardware. The machine was running, but there was no video and the keyboard wasn't working. I hit the old reset button and watched the machine reboot. Just as it was showing me the prompt to log in, the screen went dark and the keyboard stopped responding. Crap.

Our first move was to swap out the keyboard, and reboot. That would have been too easy, and of course didn't fix the problem.

Here's what we did to actually debug the problem:

  • Boot into single user mode by following the instructions here
  • Once at a shell prompt, I changed into the startup scripts directory by doing: /etc/rc.d/rc3.d
  • We then listed every file that should be started in that directory by using command: ls S*
  • One at a time, we started up each service on the box by doing: ./S13portmap start.
  • As soon as we ran ./S56gpm start the console went dark the keyboard stopped responding. Aha - found it!
  • We ran: rm S56gpm and rebooted. Problem solved!

Apparently, a recent update of the Linux OS apparently installed a version of GPM which is incompatible with something. Either way, we don't use the console on this box, so ditching GPM was an easy decision.

Whew, back in business. OK Linux, what do you have for me next?!

Monday, October 29, 2007

You Did What?!?!

Gavin Purcell pointed me to this remarkable site: WeAreOnlyHuman.com. The goal: collect up stories from people who have messed up and are willing to share their stories with the world.

The site is all about publishing your experiences to help people avoid the same pitfalls you've had. Some examples: taking out stitches myself, sending my wife another woman's number (d'oh!) and trusting Apple Technical Support.

Plenty to learn here. It's sort of a tipbin for your screwups.

Read it for the advice. Or just read it to appreciate that your day wasn't that bad.

Now that's a screensaver!

Forget race cars, scenic shots and chicks in bikinis - this is a *real* screensaver. It's the GNU Emacs Reference card in all its glory.

My guess is that now the cleaning people will get to learn emacs, and once they do, take over our jobs. Yeah, emacs is that powerful.

--Ben

Update: It's worth mentioning that this was Beamer's screen at the office. Way to go Beamer!

Sunday, October 28, 2007

Paper Folding, Math Hacks and Yummy Geography

We had a great lunch with the boys. Some of the activities that kept us
busy included...

- Nibbling on toast until it was shaped like a US State (can you
identify: 2 Commonweath's of Virginia, 1 Rhode Island and a shoe?).

- Attempting to beat Briteny Gallivan's paper folding record [1]. We
got stumped at 8 folds.

- Spencer taught us a nifty hack for multiplying any set of two digit
numbers.

- I got trounced in the connect-the-dots-to-make-squares game (by a 9
year old, no less). At least I held my own in tic-tac-toe.

A fun time was had by all.

[1] - http://www.pomonahistorical.org/12times.htm


--Ben