Wednesday, July 23, 2008

Retrieving Your Lost Office Product Key

Someone asked me recently what to do if you have a copy of Office installed on an old, ready-to-be-decommissioned computer and want to move the software to your new box. Problem: you have lost the installation product key.

Interesting question. This has never really been an issue for me at work because we have a volume license (and therefore, all copies use the same key), but I could see how this could be a problem for a home user. So, I did a little research...

Let me start out by saying that if you own an "OEM" copy of Office (one that came with your computer), the license is tied to the hardware - you cannot install it on another machine. But, if you bought a boxed copy of Office, you are entitled to install it on another machine, provided you remove it from the old one.

OK, so we're established that you're allowed to move the license to a new box. Now what? We've lost the product key and won't be able to install it. You have two avenues from this point:

1) Contact MS and ask them for a new product key

2) Use a software package to retrieve the original product key from your old computer

The former case is pretty self-explanatory. For the latter case, you could check out Magical Jelly Bean (yes, it's really called that). MJB is an open-source package that will retrieve your original key for you.

Note: I assume that using such software does not violate any software laws, but I have no idea as to the degree of legality of this program. Just a friendly disclaimer... :)

Anyway, hope you find this info useful.


P.S. Thanks to the other Chris for telling me about MJB.

Monday, July 21, 2008

Link Evaluator Plug-In

I had an email forwarded to me recently pointing out an add-on for Firefox called Link Evaluator. I installed it and was really pleased with it. It allows you to do a quick spot-check of all of the links on any given page to check for broken links. You just navigate to a page, right-click on the body, and select "Evaluate Links." You'll then see every link on the page turn either green (good) or red (broken). That's it. Simple concept, useful tool.

Obviously, this wouldn't optimal for large-scale link checking, but for a few pages here and there, it is a nice addition to the toolbox.


Saturday, July 19, 2008

Google Alerts

I think I may be a little behind the early-adopter curve on this, but I just started using Google Alerts. Alerts basically monitors a given Google query and emails you when there are new pages about that topic. For example, if you want to know as soon as Google indexes a new chili recipe, you could set up an alert for "chili recipe" and you would get an email whenever Google finds a new one. Super easy.

You can even set the frequency with which you receive alerts - daily, weekly, real-time. And, you can choose to receive your emails in HTML or plain-text.

I'm ashamed to admit that I can be a little techno-narcissistic and *blush* tend to Google my own name regularly to see if anyone is referencing my blog or has written anything interesting about me. Google Alerts automates this for me! OK, enough about that...

Anyway, if you're doing research on some topic, this could be a great tool to learn about the latest sources for information on said topic.


Vi Assistant - Hilarious

If you've ever used the good ol' vi text editor in Unix, you will certainly appreciate this:

Thanks to Chris L. for sending.


Thursday, July 17, 2008

Finding all file types in a directory tree

So, this is going to be a pretty nerdy post - please avert your eyes if you're not into getting uber-geeky.

Today, I was working on a web migration plan and I needed to know all of the distinct file extensions that existed in our web directory. To do get the answer to my question, I executed a pretty sweet command that I learned from Vince, Master of the Unixverse.

find /www/my_folder | awk -F. '{ print $NF }' | sort | uniq -c

Here's a quick analysis of this command:

"find /www/my_folder" - lists all of the files, recursively, in /www/my_folder and all of its subdirectories

"awk -F. '{ print $NF }' " - get the file extension from each file (everything after the last dot in each file path)

"sort" - sort all of the resultant extensions alphabetically

"uniq -c" - list each file extension only once and print a count of how many times it occurs

Yes, this is a pretty oblique, archaic post, but you may need it someday!


Proofpoint Spam Filtering

One of the most amazing products I have seen in a long time is the Proofpoint spam filterieng appliance. I've been one of the first to use it before we roll it out to our user base, and I have to say that the result has been amazing. I literally get zero spam now that I am using the appliance to filter my mail.

It's actually a pretty novel concept as far as spam filtering goes. All mail passes through the Proofpoint appliance, which lives upstream of the mail server. The appliance grabs any messages it considers to be spam and passes the rest along to your inbox. Then, at some set interval (e.g. daily), you get a "spam digest," an email message delivered to your inbox listing all of the messages (subject line, sender, etc.) that the appliance caught. Next to each message listed in the digest, there are links which allow you to take an action on that specific message. For example, you can click a link to "release" a message, which will tell Proofpoint to let go of the message and deliver it to your inbox. You can safelist the sender of that message so that sender's messages will never be marked as spam again.

In addition to the digest, you can log into the web interface anytime and see the messages that Proofpoint has caught. From the web UI, you can perform any of the actions you can from the digest.

This model is a really nice way of dealing with spam, but the best part of this product is really its accuracy. I have experienced very few false positives and have been very satisfied with the product overall. I can't wait to roll this out to our users; they are going to love it.


Tuesday, July 15, 2008

Text Editors with FTP Integration

Even though it may be hard to believe in this world of blogs and wikis, sometimes one wants to create one's own web site from *gasp*....hand-written HTML! Yes, it still happens - and for the nerdiest among us, it provides a sense of great joy to be able to forge a web page using nothing but the simplest of tools, a text editor and an FTP client. But, I've discovered a new luxury that I believe provides simplicity, yet retains the coveted nerd cachet, the text editor with built-in FTP capabilities!

So, I remember in the old days (like 4 months ago) when I used to have to open my FTP client, download an HTML page from the server, edit it on my computer, and the re-FTP it back up to the server. In fact, I would usually edit my pages right on the server using "pico" so as to avoid this whole process. That us until, I discovered TextWrangler. TextWrangler is just for Mac, but in the process of helping my wife create the web site for her new dance studio, I came across PSPad for Windows.

UPDATE: I should have pointed out that PSPad does not support SFTP - TextWrangler does. Another text editor for Windows, JEdit, does provide SFTP. Thanks to Warren for bringing this up.

Both applications FTP clients built-in so that you can open files stored on a server (running FTP) just as easily as you would a file that resides on your local machine. For example, you could browse to the server, open an HTML file, edit it, and just click save. It will save back up to the server and you are done!

This technology has not only saved me a bunch of time, but has made working on web pages easier by providing a nice, syntax-colored environment within which to work. So, I would highly recommend installing one of these on your computer if you do any web work (or even write server scripts).


Wednesday, July 9, 2008 - Like TinyURL, but Better

I came across on Lifehacker today and probably would have passed right over it if it weren't for the fact that it helps to solve a current problem we are seeing. It was recently brought to my attention that Spamhaus has started blocking some emails that contain links to the domain because some spammers have setup shop on blogspot and sent out URL's linking to their sites. (Editorial on blocking the blogspot domain: Ridiculous. Here's an idea, let's block the domain because some spam has originated from it.) Anyway, sorry for the tangential rant here.

The point is that we had to figure out a way for someone whose blog resides in the blogspot namespace to be able to send out emails referencing his scholarly blog posts. My first thought was TinyURL. It would provide a good wrapper for him to get his links through. But, then I learned about

It functions exactly like TinyURL does, but it provides stats and tracking for your links. So, if I create a link to one of my pages and send it out to a bunch of people, I can actually see how many people clicked the link! Sweet. I am a major stats junkie, so this is right up my alley.


Searching your command line history (ctrl+r)

Recently, Warren showed me a trick that has saved me a ton of time. I frequently use Unix/Linux/Mac Terminal and there are some commands that I execute frequently - ssh connections to various servers, etc. I usually just hit the up arrow on my keyboard until the command that I want appears. Sometimes this is completely nonsensical because I find myself pressing the up key more times then there are characters in the command I want to execute!

But, Warren recently told me about using the Ctrl+R key combination to search my command history. It does a "reverse search" of the commands you have recently executed. So, for example, let's say you have recently executed the command "ssh" If, at the prompt, you hit ctrl+r and start typing "ssh...," it will auto-complete the rest of the command and you can just hit enter to execute it.

Anyway, if you use the command prompt a lot, I highly recommend this shortcut.


Monday, July 7, 2008

Union Square Green Market

I know this post is a little off topic for this blog, but I have to tell you what a great experience I had at the outdoor farmer's market at Union Square in NY this weekend. I was up in NYC for the holiday weekend to hang out and we visited the farmer's market at Union Square (17th & Broadway) en route to the Chelsea Market (home of the Food Network).

To make a long story short, it was incredible. All of the produce is locally farm grown and beautiful. And, to add to that, it is all very reasonably priced, some of it even cheaper than supermarket fare. I got a huge bunch of leafy, flowing broccoli rabe ($2), a bunch of carrots so fresh they still had dirt on them ($2), baby fennel ($3), etc.

I've been on a pretentious cooking spree all week. I enjoy telling my wife that for dinner we're having "sauteed broccoli rabe over fettuccine finished with a shallot butter." :)

The market also had eggs from real pasture chickens (i.e. old MacDonald's chickens rather than McDonald's chickens), organic milk, cheeses, meats, and seafood (one guy was selling diver scallops the size of coffee saucers for $15/lb!).

Anyway, if you find yourself in NYC anytime soon, I *highly* recommend you check out this market.


Friday, July 4, 2008

Addendum to Choosing Your Seat On a Plane - Southwest Extension

So, I've gotten some positive feedback on me previous post about choosing your seat on a plane, and I would like to present an extension to this theorem - The Southwest Postulate.

For those of you who do not know, Southwest Airlines has a boarding schema different than other airlines. With SW, you are not assigned a specific seat on the plane, only a board class - A through C. For example, if you have an A-class ticket, you are in the first cohort to board the plane and may choose any open seat. B-class boards second and can choose from any of the remaining seats, and so forth.

You can see from this model that our original theorem does not apply. But, never fear; I think there is a solution.

1. It's pretty important that you secure the A-class ticket. This is not required, per se, but will lead to a significant advantage. To the best of my knowledge the classes of ticket are handed out chronologically based on when one checks in for the flight. You can check in as early as 24 hours before the flight. Sitting in front of you computer hitting the refresh button in your browser 24 hours and 5 seconds before your flight is recommended. :) Just kidding, but not really, though - I do it.

2. Once you have secured an A-class ticket and it is your turn to board the plane, I would suggest doing the opposite of the original theorem - select a seat in the middle of an unoccupied aisle! Assuming that the plane is not full, no one will really want to climb over you to the window seat and someone may take the aisle seat because it is convenient.

3. Once the plane is in flight, move over to the window seat, creating the much-sought-after one-seat buffer. Sweet!

I don't think the row you choose matters too much, but wouldn't recommend the very front of the plane; I think there is a high demand for the ability to get off the plane first, so this area might prove to be an exception to our theorem.

Anyway, let me know if you are ever able to put this one into practice!


P.S. Thanks to Richard for helping me to devise this addendum!

Tuesday, July 1, 2008

Windows XP - Beginning of the End

As of yesterday, 6/30/08, you can no longer walk into a store and purchase a fresh copy of Windows XP. There was a lot of speculation that MS would grant XP an last-minute reprieve, but that, unfortunately, was not to be. Although, as a post in Lifehacker shows, you can still get your hands on XP in a couple of ways. While I do think that the much-maligned Vista is not as bad as it is made out to be, I think it's unfortunate that MS is bringing an end to XP.

I just wanted to take this, my 100th post, to take the opportunity to present my homage to XP. I think that XP is one of the finest operating systems ever created. I always had good experiences with it and never had any significant problems using it. In this nerd's humble opinion, it was leaps and bounds better than its predecessor Windows 2000 - and certainly better than it's immediate successor. XP took 2k's 'plug-and-pray' and refined it into a fine plug-and-play setup. I always joke that you can plug your toaster in XP and it will say, "Windows has detected new hardware, a toaster. How would you like your toast?" (Sorry, geek humor.)

Anyway, I won't drone on. If you are in need of a fresh OS install on your Windows box, I would recommend using one of the tips in the Lifehacker post to get your hands on a copy of XP before January, when it will be completely discontinued.

Goodbye, old friend. We hope that Window 7 will be as good as you were!


Monday, June 30, 2008

Seat Guru - Getting the best seat on the plane

OK, I know that I have been obsessing over minute qualitative enhancements to airline travel lately, and I promise to try to think about possibly making this my last post on the topic.

I recently found out about Seat Guru, a site that helps you choose the best seat in any given model of aircraft. All you have to do is select your airline and make/model of plane and you will be presented with a seating chart for that specific aircraft. You can then hover over color-coded seats to find out why or why not said seat is a good choice.

Here's an example. We can see the seats that have limited leg room due to the location of the bulkhead, the seats that cannot fully recline, etc. Now all they need is a way to predict where the crying baby and little kid who kicks your seat will be seated!

This site is really cool. Thanks to Warren for telling me about it!


Saturday, June 28, 2008

Choosing Your Seat on a Plane

Sorry to go with back-to-back plane-related posts, but I figured I would get all of them out of the way today. In my previous post, I spoke about the optimal way to fill an aircraft, a dilemma for the airline industry. Now, I'd like to present a problem more relevant to the individual traveler. Consider this:

- You are traveling alone (let's say on a business trip) in coach, or any other flight class that deals in rows of three seats per aisle side.

- When buying your ticket, you are presented with a choice of any seat you want. We will assume that you are the first person to get to select your seat - that is, you can have your choice of *any* seat in coach.

- You want to maximize the probability of ending up with an empty seat next to you. We'll assume the flight is near, but not at, capacity.

Which seat do you choose?

I won't present a conclusion here (because I don't have a great one), but will go over some factors that I use in choosing a seat.

Let's say N = the average number of travelers in a party. I will assume that, during times with the greatest number of business travelers, N = 1 -- people traveling alone. I would guess that on weekends and trips to more recreational destinations, N > 1. Just for simplicity's sake, let's assume N = 1 or 3\N (pronounced "3 divides N"; it basically means you can divide N by 3 and not have a remainder - 3, 6, 9, etc.). N > 0, of course.

In the cases where 3/N, the row cancels out, so we can throw out those cases, leaving us with N=1.

OK, I think it's safe to say that the middle seat in any given row is a losing proposition. You have twice the chance of ending up with a person sitting next to you, on either or both sides. Of course, I guess you could have the greatest payout, as well - having the entire row to yourself - but that seems unlikely. So, we'll consider the only logical choices to be window or aisle. Now, which one, and which row?

I think that the front rows have the highest probability of filling up. People like being the first to exit the plane. That is nice and all, but not the object of our game. So, since people have an incentive to choose a seat toward the front of the plane, we will go with the counter-option, the back of the plane.

I'm not sure about this, but I think that some people may choose the seats in the very back of the plan in order to be close to the bathroom, especially for long flights. So, I don't think we should choose the very last rows. So, if R = the number of rows on the plane and r = our row choice, I think we should go with something like:

(R - 3) <= r <= (R-6)

Finally, as for which seat to choose, aisle or window, I don't think it matters. If you choose, the window, someone will probably choose the corresponding aisle seat for your row (and vice versa), making the middle seat a very unappealing option for another player to select.

So, I guess this assumes that all players of the game will avoid choosing a seat adjacent to another player, if possible. We will assume, no, hope, that no one chooses an adjacent seat on purpose with the motive of being the incessant talker!

I used this algorithm myself recently and it worked. On a plane that was ~95% full, I ended up with an empty seat between me and the guy sitting in the window seat (Sweet!). I had seat 29C out of, I think, 35 rows.

So, to summarize, I would guess the answer to this problem is selecting a window or aisle seat where (R - 3) <= r <= (R-6).

Of course, there are other "quality-of-flight" factors that mess up a perfectly good plan, like this:

- the crying baby factor
- the little kid kicking the back of your seat factor
- the aforementioned incessant talker factor

We've made a lot of assumptions here, so if you have a more abstracted theorem, I would certainly be interested in hearing it!


P.S. Yes, I am a major nerd.

Airplane Boarding Problem

Inconvenience is the impetus for innovation. Despite being unnecessarily alliterative, I believe the preceding sentence to be true most of the time. One of the most inconvenient situations, I think, is the process of boarding a plane. Therefore, it's no wonder that significant research has gone into developing the optimal algorithm for boarding an aircraft.

Recently, on a trip back home from Seattle, I spent some time thinking about this when I noticed that I had a "zone number" printed on my ticket. The airline was boarding the aircraft serially, by zone. I was sitting in an aisle seat toward the back of the plane and had zone 5 (out of 7). This seemed to make sense, given that I had heard to optimal way to fill an aircraft is by filling all of the window seats first, then the middle, and finally the aisles. The concept here is that by getting people out of the aisle and into their seats quickly, you can board the plane faster - makes sense. The old process of filling the plane from the back forward was inefficient to say the least.

I recently read an article about a nuclear physicist that has patented his optimization algorithm for boarding planes. Here is an excerpt from the article:

"Then he ran various boarding options on his computer using the algorithm and found that one option was easily the best. This requires that each passenger is given a specific queuing position; that they board window seats first; and that they do so with an empty row between themselves and the next passenger. Thus passengers would board, if entering at the back of a 40-row aircraft, by filling up seat 40A, then 38A, then 36A and so on to the front; then they fill 39F, 37F, 35F, to the front; then 39A; 37A, 35A to the front; and so on, filling first window seats, then middle seats and finally aisle seats. If boarding from the front, they would begin at 1A, then move to 3A. The point is that people loading luggage do not block progress."

This appears to be an extension of the algorithm I described earlier.

Now, all of this makes sense in theory, yes? Well, in a vacuum, this would be incomparably faster than any process that we could implement in practice.

So, let's go ahead and add some corporate business logic to the mix. Consider the boarding process that U.S. Airways uses, the Reverse Pyramid. The algorithm is described in a Wired article here. Sounds pretty good, right? Now, let's take a look at the corporate implementation of the process:

  • Pre-board call - Customers needing assistance and families traveling with children
  • Zone1 – Dividend Miles Chairman, Platinum and Gold members, Star Alliance Gold™ members and all passengers in Zone 1
  • Zone 2 – Dividend Miles Silver members, US Airways Signature® Visa and World MasterCard® holders and United Premier® members and all passengers in Zone 2
  • Zones 3-7 – all other passengers following reverse pyramid system
Why does this have to contain all of these exceptions for certain classes of fliers and those who have the company's credit card? Don't answer that question - it is rhetorical. While, granted, there are probably a relatively small number of people on most flights that have these varying levels of status and credit cards, it seems like it could be enough to dilute the efficacy of the optimization algorithm the airline uses.

I should say that I have nothing against U.S. Air. I know that all airlines do stuff like this, but I wish they wouldn't let corporate partnerships and the like mess up a good efficiency algorithm.

Anyway, I always enjoy the application of mathematics and logic to solve everyday problems, so I thought I would post this.


Friday, June 27, 2008

Adding Facebook Birthdays to Your Calendar

One of my favorite features about Facebook is that people can specify their birthdays and Facebook will notify me when a friend's birthday is approaching. The problem is that I rarely ever log into Facebook, so I usually miss out on these notifications. Up until now, I have been attempting to enter friends' birthdays into Microsoft Entourage - it has a nice, pop-up birthday reminder. Recently, I learned about FBCal, a Facebook application that generates an iCal stream containing all of your friends' birthdays. You can then subscribe to that iCal stream from your calendar application of choice (unless, your calendar application of choice happens to be Meeting Maker, which doesn't support iCal!).

So, basically, you install the plug in, it gives you the URL to the stream it generates, and you subscribe to that stream in a calendar application. After that, you will see all of your friends' birthdays in your calendar application.

I was able to get this working with my Google Calendar and it has been a really nice addition for me. I did, however, have to wait several hours after I subscribed to the feed for the birthdays to appear. If you attempt to use this program, please note that results may not be instantaneous. So far, I have been unsuccessful in getting it to work with the Lightning calendar plug-in for Thunderbird. I could really use it to work with the latter, because I live in Thunderbird all day.

All in all, I really like the concept of the application. It feels like it could be a little smoother, but maybe that will happen in future releases.


Wednesday, June 25, 2008

Port 587 for SMTP

Every year, one of my good friends, Al, spends the summer at Frost Valley, a camp in the Catskills. Al is, generally, a very connected guy (technologically-speaking, that is; not in the organized crime sense). As a result, Al usually has issues with the firewall at the camp filtering IP traffic for services that he uses - SMTP, FTP, etc. Today, while trying to help troubleshoot an SMTP-filtering problem, I became aware of the fact that port 587 is an alternate port for SMTP, in additon to the stanard port 25. I found this very interesting because I had never heard this before.

I found an article in PC Magazine that states the following:

"But there is another SMTP submission port, port 587, which almost all mail server supports. In fact, according to the relevant standard, port 587 is the preferred port for mail submission. But even if the mail server software supports it, it may or may not be turned on. You need to check with the administrator or hosting service. Not all large hosting services support port 587."

It then goes on to talk about how to configure your mail client to point to port 587 for SMTP, rather than port 25. Hmm....

Maybe my knowledge of mail servers is a bit provincial, having always worked in academic IT departments, but I'm not aware of any mail servers that I have used that accept mail on 587. A quick attempt to telnet to 587 on one of our boxes yeilded no results.

If you've had any success using port 587, I would love to hear about it in the comments!


I wrote this at the airport on Sunday night, but never got a chance to post it:

As I sit here at the airport, bored out of my mind, I figure I could weave together a quick blog post to pass the time. I've recently started using a new peronal finance manager, I heard about it a while ago, but was a little wary because it connects to your banks accounts to calculate your remaing balance and update your records. I got over it and decided to try it out.

Traditionally, I would use Excel to track my budget, but I decided to try an upgrade. Mint is actually pretty cool. It downloads all of the transactions from your account (it supports a bunch of banks) and auto-categorizes them - the tedious process I used to do manually. It can then create charts and graphs showing your cash flow and where your money goes.

You can even set up budget lines for various expenditures (e.g. $x for dining out) and it can alert you when you come close to blowing your budget.

If you are as obsessive about your finances as I am, mint might be worth a look. If you're not, you should be. :)


P.S. I wrote this whole post on my treo, so please excuse typos.

Saturday, June 21, 2008

Adobe Air

I recently became aware of the existence of Adobe Air, an application platform created by Adobe to allows certain web-based apps to run as installed applications. Interesting. So, for example, once you install Air, you can download an Air-version of Pandora. Then, you can listen to Pandora from a dedicated application, instead of opening up a web browser. Advantage? Maybe that it keeps playing even if you have to restart your browser? Maybe? Grasping at straws? Maybe.

Anyway, I find this technology interesting from more of a philosophical standpoint than from a utilitarian perspective. I think it's very interesting that the preference for client-based vs. web-based software seems to be a pendulum. First, everything was client-based, then we wanted everything to be browser-based so as to reduce system dependencies, now (no doubt thanks to iTunes), the idea of having installed clients is gaining ground again - and, hence, Adobe Air.

I'm currently using the Pandora Air application and it seems to work pretty well. I will keep playing around with Air and post again if I notice anything worth calling out. In the meantime, if you want to see a listing of Air apps, you can get a good listing here. There really are a ton of apps for such a new technology. Maybe you will find something you like there.

Any thoughts on this topic welcome, as always.


Friday, June 20, 2008

Text Message Spam

So, being the old guy that I am, I don't really use SMS messaging much (read: at all) - I stick to email. Every now and again, some youngster will send me a text message. I will read it, and reply via email, if at all. The other day*, I got a text message, and after I opened it, I see that it is Spam!

What?! It's not bad enough that I get inundated in email Spam - and spend a fair portion of my life helping to reduce email spam for others? Now I have to get SMS Spam, which could be the most vile form of Spam there is?

Well, luckily for me, that single SMS Spam message was an isolated incident (so far), but if you find that you get a lot of it, you can actually set SMS Spam filtering rules (of various degrees) when you log into your carrier's (e.g. Verizon's) web site. David Pogue of the New York Times has a great piece on this. You can either block all incoming messages from the Internet (as opposed to messages from other phones), where most Spam originates, or you can use rules similar to tranditional filtering rules (filter by sender, message content, etc.).

Anyway, I truly hope you never have to worry about filtering SMS Spam, but if you do, I hope you find this useful.


*Note: When I use the phrase "the other day" it could be in reference to any day between yesterday and 5 years ago.

Thursday, June 19, 2008

In-line PDF viewer for Mac Firefox

I'm really excited about today's post because I want to tell you about an add-on that I believe is immensely useful to anyone who uses Firefox on a Mac. To me, one of the most annoying things about FF on Mac is that, when you click a link to a PDF, it prompts you with the Open/Save dialog, and then, after you click Open, proceeds to open the PDF in Preview - really an obnoxious way to handle PDF's.

Now, thanks to a new FF add-on, firefox-mac-pdf, you can view PDF's in your browser, the way that they were meant to be viewed when they are accessed through the web! There's not much more explanation necessary; just install it, restart FF, and try it out. You will love - guaranteed!

I spend way too much time checking out menus at local restaurants (usually agonizing over making a decision over where I want to eat on a given weekend) and many restaurants post their menus in PDF form (not the best medium, I don't think, but whatever). Before I installed this add-on, I would end up with a temp folder full of cached PDF's and spend double the amount of time necessary to open the menus. No more. Thanks to this add-on, I can conduct my research more efficiently. :)


Wednesday, June 18, 2008

Have you patched your coffee machine lately?

I saw this article referenced from Slashdot this morning about an Internet-enabled coffee machine that contains security vulnerabilities. Basically, a remote "attacker" could break into your coffee machine, and:

1) change the strength of your coffee - I would classify this vulnerability as "Critical." I cannot afford to have my daily caffeine fix watered down!

2) change the amount of water per cup, thus spilling water all over the place

3) make a mess of the internal settings, causing the need for the machine to be repaired

4) gain access to its version of Windows XP as a user - the coffee machine runs XP? Apparently, there is no way to patch the embedded OS.

You know, I thought it was hilarious when I first saw the USB George Foreman Grill, but this takes superfluously blending technology and appliances to a whole new level. Why would I never need my coffee machine to be on the 'net?


Tuesday, June 17, 2008

PHP Command Line Interface

If I may slightly increase the nerdiness quotient of this post (relative to my standard posts), I'd like to tell you about a concept that I have been giving some thought to lately. Anyone who has worked with servers (and maybe even desktop power users) is familiar with the concept of the scheduled task - basically, a script that runs regularly on some set schedule (e.g. nightly @ 2am). The conventional wisdom of scheduled tasks dictates that Windows users write in batch files (or, I guess, PowerShell, these days), and Linux/UNIX users script in bash or Perl. This is all well and good, but did you know that PHP can also be executed from the command line - it's not just a web-based language.

This is not a new addition to PHP; the PHP Command Line Interface (CLI) has been around for years, but, from what I can tell, seems to be underutilized. One tremendous benefit of using the PHP CLI is that you can reuse the libraries that you write on web versions of applications. So, for example, if you are writing a script that will run on a scheduled basis, but also want it be callable on-demand from a web app, you do not need to resort to system calls or rewriting the app - you can use the same code!

Plus, many web developers are familiar with PHP. So, you could enlist the help of some of your best web programmers to help you develop system utilities.

Anyway, sorry to deviate from my theme of "technologies that make your life easier," but just thought this might be useful to someone. :)


Monday, June 16, 2008

Weave for Firefox

One of the problems that has always plagued users of multiple computers is the fragmentation of settings and data. Over the years, solutions have come along to bring a sense of synchrony to distributed desktop computing - IMAP email, server-hosted IM buddy lists, Remote Desktop, etc. One area where there is still a disconnect is browser settings - your bookmarks, preferences, your browsing history. I, personally, rely heavily on my browsing history to store the URL's of websites that I need. So, when I'm on my home computer, and it doesn't know the sites I was using on work computer earlier that day, it slows me down considerably. But, it looks like Mozilla Labs has come up with a solution: Weave.

Weave is a technology that synchronizes several aspects of Firefox, including bookmarks, history, and prefernces, across all of your computers. This is a cross-platform solution that seems like it would be very useful to anyone who uses Firefox on multiple computers. The software is still in a very early build (version .1!), so it's possible that there are still bugs to be worked out.

I haven't tried it out yet myself, but I plan to shortly. This is a great concept, and I hope that development continues on the project. If you happen to try out Weave, let me know what you think !

Thanks to my friend Chris Leary for telling me about Weave!


Sunday, June 15, 2008

New York Food & Wine Festival

Just a quick note to any other culinary arts enthusiasts (I refuse to use the term "foodies") that tickets to the New York Food & Wine Festival go on sale tomorrow. It looks like it will be a lot of fun. I will be there to see my favorite chef of all time. :)

Anyway, let me know if you will be in NYC that weekend. Maybe we can catch up for a drink or braised lamb loin or something.


Panoramio and Google Maps

Every now and again, a technology or website comes along that is so enthralling that I will spend hours using it - usually at the expense of other things I should be doing. The latest of said time drains is the integration between Panoramio and Google Maps. Panoramio allows you upload pictures you have taken and tag them with the location where they were taken. Those images then appear in Google Maps searches.

I discovered this when I used Google Maps to see if they had done a "street view" of my old neighborhood in Philadelphia yet (they haven't) and I saw thumbnail images embedded on the map, showing familiar landscapes. I instinctively started dragging the map around to show other neighborhoods and was astounded to see images from those places embedded in the map.

*commence time drain*

- I looked up my favorite weekend getaway spots - images!

- I looked up the neighborhood where I work - images!

- I looked up the place where I grew up and my grandparents' block in the Bronx - images!


* back to reality *

I think this is a fantastic technology. It's user-driven (viral, if you will) so it doesn't rely on any one group to try to add images of everyplace. It's a true paragon of Web 2.0.

I only hope that more images are added so that I can spend more time on the site!


Friday, June 13, 2008


For me, one of the most frustrating things about using Windows is the lack of simple utilities that come standard with just about any Linux/UNIX distribution. One utility that I have been missing lately is the good ol' "diff" command. In essence, diff answers the question, "Are these two [or more] files the same, and, if not, what's the difference between them?" If you spend anytime working in a shell environment, it's very likely that you've come to rely on diff.

So, I started thinking, "there is a WinGrep (which I've posted about before), so I wonder if there is a program called 'WinDiff.'" Well, a quick Google search shows that there is! I haven't gotten to try out WinDiff yet, but I will certainly install it on my XP box and check it out. WinGrep is a nice app, minus the fact that it's only available in GUI form, and I suspect that WinDiff will be a similar experience.

WinDiff is a Microsoft utility app that comes along with a larger resource kit of tools. You can find the individual app here:


Thursday, June 12, 2008

The Moby Equation

One of the most hilarious things I've seen in a while is an article in The Washington Post by Bill Wyman where the author attempts to quantify "the degree to which artists besmirch their reputations when they lend their music to hawk products or companies." Anyone who knows me will tell you how much I enjoy attempting to quantify ridiculous, subjective topics using Mathematics; this article is right up my alley. I won't expound any further on why this article is hilarious. Here is a link to the article:

and here is a graphic of the equation and the definitions for each variable:

Thanks so much to Mike Hennessey for showing me this article.


Using a Windows Keyboard with Your Mac

So, for my daily driver computer, I use a Macbook Pro, but I keep a Windows XP desktop on my desk at work. I seldom use the XP box, except for times when I need to test things in IE, etc. Lately, I've been canibalizing accessories from the XP box for use with my Mac while I'm at work. The prime example of this is the wireless keyboard and mouse. Sometimes, it's nice to be able to type on a full keyboard and right-click on your Mac without having to do any funky gestures.

When I first plugged in the wireless receiver for the keyboard and mouse into my Mac, it recognized the new peripheral and I was off and running. Shortly after starting to use my new keyboard, I realized that I didn't have a Command (Apple) key! For someone who values keyboard shortcuts as much as I do, this is a catastrophe. But, after clicking through the system preferences a little bit, I found a workaround. It's a little ugly, but it works:

- Click on the Apple menu
- Click System Preferences
- Click "Keyboard and Mouse"
- Click the "Modifyer Keys" button toward the bottom
- Change the Caps Lock key to be "Command"
- Click OK

While your Mac is configured like this, the Caps Lock key on the Windows Keyboard will function as the Command key. So, for example, Caps Lock+Q would quit an application. Also, the caps lock key will no longer be in a toggle mode, you can use it just like control or command - it is only enabled while the key is depressed.

NOTE: I just used substituted caps lock for command because I *never* use caps lock. In fact, it usually just annoys me when I hit it by accident and type a whole sentence in caps before I realize what I did. You could also substitute substitute the ctrl key for the command key, if you wanted.

Here's the catch, this setting applies to both keyboards: your external Windows keyboard *and the built-in laptop keyboard.* That is, in this model, your laptop's caps lock button will become Command as well - a plus for me, given that I no longer accidentally hit caps lock.

Anyway, this was a long post to tell you how to do something simple and not-so-elegant. Hope someone finds it useful. :)


Monday, June 9, 2008

A quick anecdote

This morning, I was reading Lifehacker, like I always do, and I came across this story about hiding an MP3 inside a JPG. The JPG image still works and is viewable, and can be made into a functioning MP3 merely by changing the file extension to (you guessed it) ".mp3." The article references a scenario where one could upload such an "encrypted" music file to Flickr as an image file and share said music with one's friends - legality: dubious. This is cool and all, but it made me think of an interesting project I once did.

*begin recollective dream sequence*

The year is 2005, and I am a young, ambitious, yet-to-be-jaded graduate student. For one of my classes (Computer Architecture), we were given a project where we were asked to embed a secret text message inside a bitmap image without altering the visual appearance of the image. We were also to write a complementary program to extract the hidden message from the bitmap image. We did it - embedded and extracted farily long text messages in an image file without changing the image's visual appearance.

*end recollective dream sequence*

The text hidden in the image was virtually undetectable and could be encoded millions of ways to obscure it even further. I think this is an interesting lesson that data of all types (text in the case, music in the former) could be hidden anywhere, in many types of files. Think about it...



There are somethings that you have to be a major nerd to appreciate. One of them is my new favorite toy, Goosh. Goosh is a new web app that allows you access many of Google's features (search, maps, images, etc.) through a UNIX-like command line interface. If you're the type of person who would rather "shell in" than open up a GUI, you will appreciate this speedy web app. If the previous sentence appears to have been written in some strange hybird of English and technobabble - a) it was, and b) you might not appreciate this app that much.

Does Goosh offer any major advanatage over just navigating to the Google web pages and searching the traditional way? Probably not - other than the automatic geek-cred you will pick up by using it. It is pretty quick, though, and I would be interested to see how it runs on my Treo. It's written in AJAX, so I'm not sure how much the Blazer web browser will like it.

Anyway, it's quick to load and fun to play with, so I recommend giving it a shot.


Saturday, June 7, 2008


One of the coolest little apps that I've seen in a while is Senuti. It's an app for OSX that allows you to transfer files from your iPod to your Mac. Normally, you can either perform a full sync with your iPod or send files, unidirectionally, to the iPod (in "manage my own ipod" mode). But, the feature that is conspicuously missing is the ability to easily move songs from the iPod onto your computer.

Now you can manage your own iPod with Senuti and move files whichever way you see fit.

BTW, I mentioned this in a previous post, but I have been using the Amazon MP3 Downloads service over iTunes lately. It is slightly less convenient because there is no integration with the iTunes player, but the fact that it is DRM-free is well worth the extra clicks to buy from there.


Disposable Credit Card Numbers from Paypal

I am usually extremely conservative with financial products, but this article that I read on Lifehacker today really caught my interest. Apparently, they have a new service where you can generate a one-time-use credit card number to use on sites where you might not feel comfortable using your permanent card number. The payment comes from your Paypal account. All of this is facilitated by a browser plug-in (IE or FF2).

I kind of like the idea behind this. I generally don't buy much online, except for big vendors, like Amazon. Something like this might make me more comfortable buying from a more diverse set of vendors. Of course, one would still have the basic concerns with unknown merchants (when will the item arrive, will it arrive as advertised, etc.), but the biggest gamble, that of whether your personal financial information is adequately secured, would be obviated.

Anyway, I haven't tried this technology, so cannot vouch for its quality; just wanted to point it out because I thought it was interesting.


Friday, June 6, 2008

Firefox 3

If you haven't already started using (read: beta testing) Firefox 3, I highly recommend that you check it out. Apparently there are lots of changes from Firefox 2, but here are the ones that have made a major difference for me (enough of a difference that I even suffered through the early betas [*shudder*]):

1) the new URL bar - remember in old days when you used to start typing a URL sequentially and the URL bar would auto-complete it for you? Yeah, well that was nice back in 2007, but FF3 has created the new generation of auto-complete. You can start typing *any words* (or parts of words) from a URL that you have already visited and the prescient FF3 will figure out what you mean. Here's an example:

Let's say you've recently visited my post on Epicurious and can't remember the URL:

You know that it had "blog" and "epicurious" in the URL. So, you type "blog epicurious" into the URL bar and FF3 shows you the correct URL. Awesome!

2) It's fast. Not explanation necessary.

FF3 is currently in RC2, so most of the major bugs should be worked out. If you don't feel like using anything but the "stable build," the formal release of FF3 should be pretty soon. You will love it.



I know that a lot of you are familiar with, a site whose links are ubiquitous just about anytime you Google for a recipe (yes, I just used "Google" as a verb). I just thought that I would tell you a little bit about how I use the site, in case it's useful to you.

Generally, I am vehemently opposed to creating anymore new accounts for myself on web sites - I have too many userids and passwords as it is - but I recently made an exception when I learned that you could keep a digital recipe box at Epicurious. That is, if you come across a recipe that is a keeper, you can simply hit "Save to Recipe Box" and it will be there, in your digital recipe box, along with your other favorite recipes, the next time you log in. I assume you could also accomplish this same task by pasting the links into, but this seems way quicker to me.

Another thing I do, being almost as obsessed with cooking as I am with playing the drums, is to subscribe to Epicurious' RSS recipe feeds in my Google Reader. Then, in the course of browseing my blogs, when I see a recipe that piques my interest, I can follow the link and add it to my recipe box. This is a nice way of broadening your cooking skills - the feed may recommend dishes that you wouldn't have otherwise thought of.

After you've amassed a solid collection of recipes, you can go for major points for style by exporting your recipe box to create your very own cookbook using Tastebook. If you haven't heard of Tastebook, check out my original post on the topic - it's basically a web site that lets your turn digital recipes (your own or others') into a hardcopy cookbook.

BTW, if you're interested, here are the RSS feeds I subscribe to:


Mexico Vacation

In case anyone still reads my blog after me being delinquent in posting for so long, here are pics from my recent vacation: