Category Archives: Technology

Google Penguin Attacks My Hyperlink

I believe in hypertext. When Tim Berners-Lee proposed the concept and helped bring it to life, we all became a part of the world wide web. The concept is simple and beautiful. I can reference anything and link directly to something with meaning and additional context to my original work. For many years I have blogged off and on and one of my favorite features has been to leverage the “hypertext reference” feature. Now, thanks to Google, I have been asked to remove this link from a company working on behalf of another company that is being penalized by Google for my reference to a page on their site.
Now, first let me say that VirtualPBX has never paid me to include the link either directly or through another company. They’ve never asked me to include the link. They don’t even know who I am. I simply found their page explaining how call forwarding works, thought it was a nice little reference that provided more context to my blog post, and was happy to send a curious potential customer their way for their efforts in creating the page in the first place.
Unfortunately, “due [to] the Google Penguin update these links are negatively impacting both of our sites by creating an unnatural link.”
Here’s the email I received from a representative at

I have been contracted to help with the optimization of the site In light of recent Google updates the site’s link profile needs to be cleaned up, so we would like to request that you please remove the links to our site located here:
Due do the Google Penguin update these links are negatively impacting both of our sites by creating an unnatural link. Please know that your site’s integrity and business practices are not in question, it is just that the existence of the link itself causes Google to establish a relationship between our sites that looks unnatural.
If you have any questions about the request above, please contact at Virtual PBX. He can be reached at .
Thank you for your consideration,

I think this is a real shame. I get that there is a significant amount of SEO spam out there, but the fact that I received this email, given my intent in my blog post… well, shame on Google. This sure feels evil and controlling and against the culture, purpose and value of the Internet.

I got a Droid…Why I miss my iPhone

I recently purchased a Motorola Droid X Android smartphone from Verizon Wireless after having been an iPhone owner for a little over two years. I made the switch for a few reasons, the two primary being a.) AT&T’s network sucks and b.) upgrading to iOS 4.0 on my iPhone 3G rendered it useless due to performance issues. Before I go into my reasons, I’ll openly admit that I’m an Apple addict and have been since I was in middle school. I love almost all things Apple and dreamed of the day the iPhone would be built. In the beginning I had many complaints, but over time either adjusted to its deficiencies or Apple resolved them with new capabilities. That said, I began my journey with an android phone with as much openness I could and to be honest was a little excited to make the switch and see what it was all about.

Android User Experience is Clumsy

One of the immediate challenges with the Android ecosystem of hardware vendors is that they are all making modifications to the user interface and in some cases almost entirely changing the experience. This is unfortunate as it means the evolution of improving the operating system and user experience will be disjointed and slowed as each group will do their own thing thus dividing the total potential resources that could be focused on making it better.

Keyboard Accuracy

The first major issue I had with my phone was typing. The keyboard and touchscreen that comes with the Droid X responded poorly to my input. I find the auto-correction to be much less accurate than what I became accustom to with the iPhone and found my ability to type simple emails and text messages tedious and slow. I have been really disappointed by this as it seems we had made large strides in the phone world with tiny thumb keyboards becoming increasingly accurate and predicting what we intended to type and automatically correcting any fat finger mistakes we may make without us taking pause or correcting words ourselves. I have learned to be slower on keys such as the “space bar” and reach further out to hit the letter more directly, but I shouldn’t have to make these adjustments. Regardless, I still can’t type as fast as I could on an iPhone.

Smaller Nits

  • Browser double tap and zoom – When you double tap on a content area within a web page from the browser, the zoom often crops the text in a such a way that you have to scroll left and right and misses the mark. The Safari browser elegantly determines the content area you’re trying to focus in on and accurately zooms in without trying to reformat it.
  • Notification count on app – The notifications window is a neat idea to be able to see everything and not have everything distract you with a pop-up as it does on the iPhone, but the implementation misses two critical features. The first is that I need to be able to see the notification and choose to not make it go away. For example, if I accidently touch the item it clears that notification, even if I haven’t read the SMS. Second, nothing on the application icon itself tells me that there is something needing my attention.
  • SMS app still alerts me when I’m in it? That’s just silly.
  • How did we go backward in basic PDA Functions? – The calendar application is missing the description field so if I click into an entry to know what the agenda is prior to walking into the meeting, I don’t’ have access. (Calendar missing description Task managed in Microsoft Outlook are not sync’d.
  • Flick scrolling selection wheels –I’m sure this is one of those items that is simply missed as Apple has the patent, but it’s really annoying that I can’t just flick the hours forward or backward in the clock application to change my alarm. This simple slot machine type interface is so much easier than pushing a “+” or “-“ button.
  • Passcode unlock – Why do I have to click the check mark?
  • Using the physical key to get into application menu’s feels wrong (Droid X specific)
  • Favorites in Phone (Contacts) can’t be sorted?
  • Whoa battery life – Everyone gives the iPhone a hard time for not having “multi-tasking”, but other than listening to Pandora (now possible with iOS 4.0 API’s) I’d challenge anyone to show me that they can get in and out of things faster on a Droid. All I seem to get is applications that stay open and drain my batter. Yes, I realize I can get the Kill Apps app, but this should be more elegantly handled by the operating system (hear Fryo solves).
  • iTunes integration – My life is in iTunes and iPhoto. Not being able to connect to these easily is very annoying (I blame you apple). So, I will eventually switch my photo album to Adobe’s Lightroom, which gives much better control of where the photos are kept as well as more capability, but I still haven’t figured out what to do with my music.
  • Lack of apps – The first night I sat back on my couch with both my iPhone and new Droid X, the first thing I did was referenced my iPhone and opened the Android Marketplace to add all my apps…most were not there.
  • Android Marketplace needs sub-categories

What I like

  • The browser doesn’t refresh constantly when I return to it or hit the back button.
  • Snooze is great on calendar notifications, but I should be able to set the snooze time
  • Calendar widget is great at a glance
  • Calendar allows me to decline a meeting later that I already accepted and send a note with it (iPhone just sent the decline without allowing me to add a message)

Overall it feels like an immature operating system that is being pushed out haphazardly and has had very little attention to the customer experience. That said, it’s young and has a lot of supporters so probably by the time this gets posted to my blog, much of my complaints will be solved. More importantly it’s an open platform that can be expanded on much more than the iPhone so I expect great things. Oh, and it’s nice to be able to watch

GraceMed – An Automated Medical Diagnosis System


Cars can be plugged in at the mechanics for electronic diagnosis, customer issues logged in enterprise support systems receive immediate potential solutions to their issue prior to a customer service representative looking at it, and computers send error reports when an application crashes. In industries across the world automated diagnostics becomes more and more prevalent leveraging continually advancing algorithms that become increasingly intelligent in identifying solutions to known problems. Yet in the health care industry Doctors have out dated and limited access to potential solutions and details from a patient’s case are seldom fully available to be investigated holistically.
There has been significant research on automated diagnosis, but limited practical application and integration of systems. The idea, well represented in Magnus Stensmo’s Ph.D thesis, Adaptive Automated Diagnosis, clearly paints the picture of how powerful and needed such an approach is.

Bias in today’s computer assisted diagnosis

“Enter symptom, disease type, test name or code” requests one physician diagnosis database. As with any human search that begins with keywords chosen by the user, bias inherently influences the results. If a Doctor has an assumed diagnosis, they will immediately begin searching for further evidence that their assumption can be validated. And if it isn’t, then they will have missed other potential diagnoses. Additionally, if the Doctor begins searching by symptoms, while these may be accurate, the order or weight given to any one symptom will give a bias toward related diagnosis when in fact, there may be a symptom not given any credit and thus not included in the search. Regardless of whether you consider today’s databases or the older process of researching in books, the results are always influenced by the bias of the researchers’ initial assumptions.

An Automated Medical Diagnosis System

What is needed instead is an approach that minimizes human bias and considers all relevant and irrelevant data in determining a diagnosis. Computer software does this well. With an automated medical diagnosis system, Doctors could be presented with multiple potential diagnoses based on all of the patient’s current and past details. Such a system could be designed for automated medical diagnosis that is based on probability, utility and decision theory (Read Adaptive Automated Diagnosis). Essentially, the computer software could be fed human observations of symptoms, test results, and any machine data collected such as blood pressure, heart rate, oxygen levels, etc. The software would then compare these observations with a database of potential diseases and external agents (e.g. , viruses, bacteria) to determine the most probable diagnosis.
These results would then be presented back to the doctor along with a probability rating indicating which ones are likely most relevant or accurate. Each diagnosis could also then be presented with additional direction to the doctor to further explore for additional symptoms and/or order an additional test. These additional observations and/or test results would again then be fed into the system where it could reevaluate the probable diagnoses canceling out some while raising the probability of others.
In addition to immediate interactions with the software, Intensive Care Unit’s machine observation data (e.g., oxygen levels, heart monitors) could be constantly fed into the system to allow the software to be looking for patterns that match other known diagnosis that would never be able to be caught by a human as it would take too much time to evaluate the data. Nurse’s notes could also be used in a similar manner.
The most challenging data for the automated medical diagnosis software to interrupt would be results of imaging systems. However, current advances in face recognition technology can and have been applied to reviewing images such as x-rays. This is important as “image interpretation is an error prone task. The number of lawsuits filed against medical imaging professionals that are related to the miss of a diagnosis is close to 70% (Berlin, 1995). The most common errors are perceptual errors that lead to diagnoses misses, representing about 60% of the cases (Renfrew et al., 1992).” – Application on Reinforcement Learning for Diagnosis Based on Medical Image . With a software solution, images could be reviewed against known patterns and then presented to a Doctor for a final review. Similarly, following a codification process, a standard could be defined to notate what one sees in an image that would be relevant to a medical diagnosis, which could then be understood by the software.
The database of potential diagnoses should be an online service that all medical institutions interact with in a real-time basis. This would allow for two key additional benefits. The first would be to connect Doctors in real time with their peers at other facilities with patients experiencing a similar condition. This would allow for immediate collaboration that could lead to a faster treatment. And second, by having the system online, you ensure that every doctor has access to the latest scientific diagnoses.
The system should then be designed to become increasingly more intelligent with time from increased information about each disease and ailment as well as feedback as to the accuracy of its results. Specifically, after each diagnosis, the Doctor would be responsible for submitting feedback as to whether or not the chosen diagnosis and subsequent treatment successfully resolved the patient’s problem. These responses could then go through an automated peer review with the results updating the probability factors to each disease and associated symptoms, test results, etc. Additionally, the software would record the other data learned from each patient in consideration of relevance to future cases. Results could be rated in accuracy based on how they are determined. For example, the results obtained from a biopsy or autopsy may be weighted as being more accurate than simply an observation from the Doctor that the patient recovers.

Available today

Today there are a number of point-of-care (POC) testing solutions, (also called near patient or bedside testing), but no large scale application of an automated medical diagnosis system. Today’s applications are for very focused blood tests and are far from providing the capabilities described above. Some examples:


The machine data required for the software has been developed such that it could be fed into such a system. There are many systems available today that would likely only require some standards to be developed for the resulting data. Some examples:


Software engineers everywhere can read this idea and will instantly recognize that today’s technology supports this solution. However, the greatest obstacles would be to gain public support for the requirements of fully electronic medical records and Doctors learning to work together. Progress is being made on changing the culture on both of these topics; unfortunately we have a long ways to go.
This article is dedicated to Grace Allen, a beloved mother, grandmother, great-grandmother, friend, cousin, partner and overall amazing woman. Had this system been in existence today, we would have had some more wonderful years with her.


Computer Keyboard Drum Pad

Waiting for Windows to boot provides plenty of time for random contemplation. During a recent reboot, while stuck in small airplane seat, my hands began tapping away at the keyboard to mimic drum beats I’ve tapped out on many inanimate objects over the years (played the drums in high school). Lightly tapping the keys and hitting them hard produced different sounds that entertained me just enough for the boot. But while tapping away it dawned on me that the current Garage Band type keyboard setups for musical instruments are too limited when it comes to actually “playing” music on a QWERTY. Why can’t it use all the keys and associate groupings to one single drum head or key of an instrument? Why should I have to hit a single key to produce a single note?
A few years ago Palm released the updated Treo. The biggest part of its early fanfare was the keyboard. Their engineering led them to develop a smart keyboard that would know what key you meant to hit, even though you likely fat fingered a few keys because one key ultimately would be selected first in the I/O burst and thus could be assumed to be the intended key, allowing the smartphone to ignore the rest until the next major keystroke. Well, why not use the same approach to musical instruments on QWERTY’s? I’d like it if the bass drum was the combination of the space key, N, M, “,”, “.”, alt and some other funny windows menu key (HP Compaq 6910p). The snare drum could then be the lower left section containing keys such as the Z,X,C,S,D lot.
This could make for some fun jam sessions in the home office. You could also write the software to assume if you did hit more than one key, you were hitting harder.
I’m not sure what the computer gets for info from a keyboard, but if the I/O data is there, this would be a great enhancement to Garage Band. I also look forward to the iPhone application that allows you to tap out your music.

Remove Attachments from Microsoft Outlook

Many enterprise IT shops these days are significantly limiting mailbox sizes for their employees. It seems rather odd given the cost of storage, but none the less something many of us deal with. It means we’re constantly killing time each day cleaning up attachments and archiving mail. I shared my displeasure with a colleague of mine, James K. and he quickly created a Microsoft Outlook macro to automatically remove attachments. This feature should be a part of Outlook, but in the mean time, it saves me from opening each email individually to remove attachments (Outlook has no bulk processing feature for this).
Below is the macro that you can add to your own Outlook application:
Sub RemoveAttachments()
Dim selectedMailItem As Outlook.MailItem
Dim currentAttachment As Outlook.Attachment
Dim i As Integer
For Each selectedMailItem In ThisOutlookSession.ActiveExplorer.Selection
‘Remove attachments until there are none left
While selectedMailItem.Attachments.Count > 0
selectedMailItem.Attachments.Remove (1)
End Sub
Updated 9/24/07: Remove Attachments from Appointments
Sub RemoveAppointmentAttachments()
Dim selectedAppointmentItem As Outlook.AppointmentItem
Dim currentAttachment As Outlook.Attachment
Dim i As Integer
For Each selectedAppointmentItem In ThisOutlookSession.ActiveExplorer.Selection
‘Remove attachments until there are none left
While selectedAppointmentItem.Attachments.Count > 0
selectedAppointmentItem.Attachments.Remove (1)
End Sub

Bulk Attachment Removal in Microsoft Outlook

This is just a short entry, but I keep meaning to write it. As I write this, I’m in the middle of removing attachments from emails in my sent folder in Microsoft Outlook. This is a huge pain. I have to open each one, right click on each attachment, and then select remove, close it, save it…
It should be as simple as me highlighting a number of emails all at once, then clicking something to remove all attachments. Done. Then I could manage my mailbox size better.

In Store Buyer Identification and Personalization via Mobile Phone Location

Openwave today announced their Contextual Merchandising Solution to Help Operators Monetize Off-Net Traffic. This system “enables the delivery of personalized content and advertising that is recommended to subscribers based on their user context and profile… [by] promot[ing] …complementary content and services based on a current usage patterns.” Every where around me I find companies getting better at helping me identify products that I would be most interested in. It began most obviously with Amazon, but has quickly evolved and many other online retailers take advantage of this capability such as Netflix (one of my personal favorites). However, I think the real opportunity is in taking the technology beyond the basic CRM data insights garnered from usage patterns and connecting it with insights from ones personal network and their “window shopping” patterns.
Let me start by explaining my thinking on personal network recommendations. In this context the system would be able to not only understand the individual’s buyer patterns, but also those of their friends. Through input from the user, the system would gain intelligence on which friend the individual user most aligns with on a given product category. The power of the personal network for purchase decisions is one that we should be able to bring to the mobile experience. An example would be someone shopping for a new digital camera and making note of their favorite one when out shopping, maybe even communicating they bought it. Then, when another friend is out shopping for a digital camera (or online) the system could let them know what ones their friends liked and purchased. Another example is picking out a hotel in a city you haven’t ever visited before. Wouldn’t it be nice to know if one of your friends stayed somewhere in that city and loved it?!
The second key input I think that would add valuable feedback to the user, would be to leverage their “window shopping” buying patterns. Imagine the insights that could be extracted from the foot path of a customer. How long do they pause in one area, where do they start, where do they abandon the store, what did they miss? To leverage this information you would use location based services to identify their foot path and then overlay it with a store map. You could also figure out where they went next (might be your competitor). With this information you could then redesign the layout of your store. Or, even more valuable to you and the customer, you could communicate directly to them when they’ve missed something you know they’d like as they walk out the door. Now, there are all kinds of considerations around privacy and the “creepiness” factor in this, but remember this, when American Express first launched computer telephony integration (CTI) with their interactive voice response (IVR) system to be able to answer the phone and say, “Hello Mr. Archer, how can we help you today?” people freaked! Today, caller ID is commonplace and expected (so frustrating when you enter your account info and the customer service rep asks for it again).
High end retailers (think “Nordstrom’s experience”) and big-box stores could dramatically increase in store sales if they leveraged such a capability. It could be a key differentiator…until everyone does it.

Comcast Cable Box Onscreen Guide Menu

I believe I have gotten spoiled by the database. I use databases so often in my every day life that I just expect to be able to slice and dice data any way I want it. Sort it and filter it however, and most importantly only look at what I want to look at. Imagine for a moment if all Citysearch could do is show you every restaurant in their database all at once and had no idea to minimize the list by cuisine or neighborhood. Imagine if your cell phone only had one menu layer and everything was listed. Your life would be all about scrolling. Thankfully, we don’t have to deal with that…except for on my Comcast cable set-top box guide. Argh!
Here’s a thought. I’d like to see Comcast roll out a new on-screen guide that would allow me to set a preference to only show channels that I am subscribed to. I’m to the point where I feel like I’m chasing a moving target. Every time I sit down to watch something I choose a channel that says, “Subscription required…” I’m pretty sure my setup even changes what channels I have access to on a monthly basis to just keep me guessing. It’s very annoying and I usually give up. (Thank god for Netflix) In addition to this filter, I’d also like to see the ability to customize my menu. For example, does everyone have their local network’s FCC call letters memorized? Can’t they just put NBC on the menu?
Just a thought. Hey Comcast, give me a holler if you want to sit down and draft up some new requirements. 🙂

MPEG-2 Import to iMovie when MPEG2 Muxed

Traditionally, when working with a Mac, things just work. You plug things into it, and it talks to these things (see Apple ad video). Having purchased a Mac Mini a year ago, I have been slowly getting back into video editing and making movies. My first experience was digitizing my high school video yearbook to create a DVD. Recently I started a new project of putting together a video for a group of friends that took a trip together. We had used a brand new Sony DCR-SR60 camera and thought it would be very easy to later edit as this camera records the video directly to an internal hard drive. Unfortunately, it records the files as MPEG-2, which are heavily compressed, not importable by iMovie, not playable with sound by QuickTime and just all around difficult to work with.
After 15 hours of searching the web I came to the simple conclusion: Don’t get one of these types of cameras if you care about quality.
My goal in spending this time online trying to solve the riddle of getting my footage into iMovie was to find the best way with the least degradation to video and audio quality. What I found was that there really is not a good way. Here’s how I recommend doing it after my research. Please, if anyone credible has another idea, I’ll repost. 🙂
Step 1: Go buy the MPEG-2 player ($20 from Apple) so that QuickTime can even play this file. You’ll want it later to work with another application.
Step 2: Install MPEG Streamclip, a fantastic application with functionality that should be included in QuickTime Pro. This application allows you to demux the file, which strips the audio out of the MPEG-2 file and creates two separate files that you can import and convert to another format later.
Step 3: Open the MPEG-2 file (most likely saved as .MPG) in MPEG Streamclip and from the File menu choose “Demux to M2V and AIFF…”. It will then ask you where you want to save the two files. Make sure they go into the same folder as this will be important later when importing into iMovie. Note: My files used AC3 for audio, but unfortunately iMovie doesn’t support this either, so I had to convert the audio to AIFF
Step 4: Create a new project in iMovie with the default setting of having it be a DV based project (other options are MPEG and H.264, but neither of these turned out with high quality when I tested them)
Step 5: Drag or import the newly created MV2 file into iMovie. iMovie will convert the MV2 file to a DV file in the project and include the appropriate sound file. You’ll now have the clip in the project!
The above solution covers the following problems:

  • “File could not be imported because QuickTime could not parse it. -2048”
  • MPEG2 can’t be imported into iMovie
  • Codecs: MPEG2 Muxed
  • Type: MPEG program stream
    Bit Rate: 9.20 Mbps
    Video Tracks: 224 MPEG-2, 720 ◊ 480, 16:9, 29.97 fps, 9.10 Mbps, upper field first
    Audio Tracks: 128 AC3 2/0, 48 kHz, 256 kbps

Networking Two Routers

About a year ago I moved in with a friend of mine. Both he and I are serious geeks that pride ourselves on trying to be more aware of the latest technology trends and cool consumer electronics. It’s rare that we have a computer or technology problem that we cannot figure out how to resolve on our own. Of course, sometimes this involves countless hours on message boards and geek forums looking for the answer to some obscure problem we run into with our latest purchase. One that had stumped us (mostly due to laziness) was getting our home networking setup to support all the computers we have in the various rooms of a very old house with dense plaster walls. The challenge was getting the wi-fi to reach the back room where my computers were as we couldn’t easily run cat-5 all the way back. After literally purchasing every available wi-fi router at Best Buy, I settled with the Linksys WRT54GX2 as it seemed to have the best signal strength and speed. However, in order to get even this high power puppy to reach the back room, we had to move it into my roommate’s bedroom to be as close as possible to the back of the apartment. This created the challenge. In order to do this, we had to connect it to another Linksys router. In doing this we then created two separate networks, which made it so that we could play LAN games with each other nor share our iTunes libraries with each others computers that are connect to the two rooms entertainment system. As someone who long ago studied networking and was fairly skilled in this category, there were just too many settings for me to want to attack the problem. Then more recently I wanted to explore the gaming and torrent file sharing possibilities with my computer that was connected to the wi-fi router. After some initial monkeying with the setup, another friend of mine stumbled upon the “NAT Mode” feature in the wi-fi router. The small description on the routers administration site said, “NAT Mode: If the router is hosting your Internet connection, select Enable mode. If another router exists on your network, select Disable.” Awesome! This was it! Well, as you might imagine it wasn’t as simple as just selecting “Disable”. Initially we gave up, but I was now of the belief that I could setup this wi-fi router to just act as an access point allowing me to operate with one network. Today, I got back online and started doing some more research on it. I didn’t find the answer well documented, but found enough info and sequencing feedback to figure it out and now have my wi-fi router acting as an access point thus allowing all my computers to get an IP address from the original router and be able to talk to each other. Given the limited info I found, I figured I’d write up my story here in case there are others that need to setup the same. So, here’s the detailed step-by-step direction on how to configure your Linksys wi-fi router to act as an access point only.
Configuring Linksys Wi-fi Router to be an Access Point

  1. Go to the wi-fi routers administration site ( (user is blank and password is admin)
  2. Under the “Setup” menu select “Advanced Routing” and choose “Disable” in the drop-down box to the right of “NAT MODE”. Then click “Save Settings”.
  3. Under the “Setup” menu select “Basic Setup” and enter a static IP address outside your source router’s IP range in the field “Local IP Address:”. (Note: Your source router is the one connected to your cable or DSL modem. To determine the IP Address range go to its admin site and look at the range under “Setup – Basic Setup”. Choose an address that is outside the range, but follows the first 3 sets of numbers e.g., 192.168.15.x – Write down the static IP you choose.)
  4. Select the “Disable” radio button for “DHCP Server:”, then click “Save Settings”. The router will now reboot and you will need to change the physical cables connection.
  5. Move the cable that comes from the source router to any of the Ethernet ports (It’s likely connected to the port labeled “Internet”.)
  6. Unplug the wi-fi router to reboot it so that it now passes through the other router
  7. Cycle your network connection on your computer that is connected to the wi-fi router. You should be given an IP address now within the range of the source router (e.g., my source router has the IP of 192.168.15.x). Test this new connection by going to any website.
  8. Change the SSID on your wi-fi router by going back into the routers administration site. To access this, you’ll have to enter the static IP you gave it in step 3 above. Go to the “Wireless” menu and under “Basic Wireless Settings” enter a new “Wireless Network Name (SSID):” that you will recognize when connecting (otherwise if someone else in your neighborhood has a Linksys router you won’t know which one to connect to). Click “Save Settings”
  9. Connect your computer to the new wi-fi SSID
  10. Go back into the wi-fi routers admin and navigate to “Wireless – Wireless Security” to turn on security so that only authorized users can access your network (optional)

Let me know if you get lost in my steps above.