Blackberry hit for $450M

If you read my blog, you know that I think most of our country’s problems ultimately come down to lawyers. This last month, RIM (makers of the Blackberry Wireless Email devices) lost a major patent infringement case to NTP, settling the case for $450M. Thats just ridiculous, when you consider that the NTP guys innovate nothing, and is just a group of lawyers. They bought the patent with the pure intent of extorting money legally from innovative companies like RIM through our broken software patent laws.

Well, at least RIM is in Canada and NTP is here in the US. It’s always good to stick it to the Canadians.

Accessibility Nightmare

Ever had your shift key stuck? Get your machine into a state where no matter what you do, the shift key is effectively pressed and now you can’t access non-shifted keys? Wonder how anyone can ship such horrible software?

The answer is bugs in a system of windows called “accessibility”. You can access it from the control panel if you are curious, but nobody ever does, because its only used by about 3 people worldwide. But legally, it has to exist, because some do-gooder politician thought it was a good idea.

I just had the awful experience where my shift key got stuck. It just wouldn’t unstick – no lower case, no unshifted keys would work. And it was just a software bug. The only way out was once again, to reboot my machine. Going to the Accessibility Area in the control panel, allegedly Accessibility was not on. But this all occurred after I accidentally pressed the shift-key for about 8 seconds, and then the accessibility crap kicked in.

Hoping I had an explanation? I don’t. Its just buggy buggy buggy.

So here is a question for you- how does software that renders half of your keyboard useless help handicapped people? Does it? I’d love to hear from ANYONE that uses the accessibility features and couldn’t use their machine without the feature. What would happen if we didn’t have the law? Would machines really be harder to use?

I’m betting this is a case where a law was passed with good intent, but no realistic way to solve the problem. Software writers don’t use or need the accessibility features, so they spend as little time as possible to meet the “minimum” requirements. Handicapped people are left with machines that have ‘accessibility’, but don’t really work anyway, and they need to augment their machines with special-purpose software that really does the job right anyway. In the end, we’re left with yet-another-law, broken software, and a whole lot of wasted time.

I’m shopping at Best Buy now

According to this article, Best Buy is phasing out use of mail-in rebates! This is fantastic news. I always get ripped off by those, and I don’t use them anymore unless I’m absolutely stuck.

I wonder how they’ll do this? A lot of the rebates come from the makers of the products that they sell. Hopefully they’ll be able to throw their weight into eliminating this scam.

Nobody knows the exact statistics behind rebates, but its estimated that somewhere between 50 and 90% of mail-in rebates are never successfully claimed either due to never having been sent in, or due to technicalities in the submission process being abused by the manufacturer to avoid paying the money.

See also:
theofficeweblog
Slashdot discussion on this announcement
StopMailInRebates.com
Political Animal on Rebates
Rebate Runaround

Good Software is not just about algorithms

If you weren’t familiar with software development and you saw one of Google’s billboards or their “aptitude test”, you might think great sofware is all about writing great, complex algorithms. But good software is about much more than that – its ultimately about solving problems and saving people time. If you write great algorithms but can’t hide them behind a user interface that mere mortals can understand, then you don’t have great software.

Google’s core product is their search engine. This happens to be a piece of software that has a very complicated algorithmic component, but a very simple user interface. Because of that, it is an ideal problem for PhDs to work on. These PhDs are smart. They can apply tremendous engineering vigor to the algorithms they work on. But, when it comes to making software “easy to use”, your PhD degree probably won’t help you much. Making software easy is about understanding your customer and being able to relate to real people’s problems. Its not about teaching the customer how your algorithm works. Its about allowing the user to use the computer naturally, and then applying your algorithm transparently underneath.

And in some of Google’s products, this lack of understanding really shows. For example, their AdWords product is downright abysmal to use. Any business person trying to understand the nuances and complexities of this techno-driven software will recognize that this is software built by geeks for geeks, with little understanding of their target customer.

My case in point today is their adwords campaign daily budget. To the end user, this should be a simple thing. “After I’ve spent $50, stop displaying my ads today”. Simple, right? Not with adwords. Long before you ever reach your $50 limit (in fact, you may have spent only $0.05 of that limit!) you’ll start getting warnings about your ads being “on hold” or “in trial” and your daily limit potentially being “wrong”. It will ask that you please reset it to the “recommended value”, but the recommended value may be $17,000!! After having played with it long enough, I think I understand why these exist. But, if it were good software, I wouldn’t have to. This is a clear case where the user is getting exposed to the wierd stuff going on to make the algorithm work.

Another example is their “status” of an ad. As the user, I know of two statuses – enabled and disabled. I can even think that google might put a new status like “stopped” (due to underperformance or failure to comply with advertising guidelines). But Google gives statuses like “in trial” and “on hold”, and provides no explanation or statistics to support why its been auto-classified into these unexpected statuses. As the end user, you are left to read through scanty documentation and try to understand what the engine is doing at a low level. Within seconds of creating a few of my keywords, google moved them into the “In trial” status. I guess In-trial means I wrote a “low quality” ad. But the ad looks perfectly fine to me. What is low quality about it? I’ve still never figured out how an ad that was never run went into “in trial” status.

Another problem for google is the way you pick your prices. Unlike Overture, Google requires that you pick a price for your keywords first, and then click submit, Google analyzes them, and then finally notifies you what position your ad will be displayed in (and also estimates how many clicks you will get each day for the keyword). This setup is okay, but it forces the user into a trial-and-error retry loop, constantly trying one value, then going “back” and trying another. Wouldn’t you rather have an interface that allowed you to get this done with one setting? I’d like to just see a list- to be the #1 ad, you need to spend 10cents, to be the number 2 ad, you need to spend 8 cents, etc etc. I can definitely see how an algorithmic-thinker may have thought this was actually a good interface, despite its obvious flaws.

To their credit, Google has made significant improvements over the past couple of years to the user interface. Originally, it was just as complicated and obtuse, yet didn’t contain any help! Now, at least it has help, and tries to tell you why their product isn’t working. Now the only problem is that the application is so complicated that reading the help doesn’t even help. Or maybe I’m just too dense.

So, for the time being, I think Google will remain great at solving highly techie problems. The search engine works well, because it needs so little user interface. Likewise, GMail will fare well, because its an application used more heavily by engineers than any other profession (the engineers don’t have to relate to customers- just their own understanding of their own email usage goes a long way). But Google is going to have a hard time transitioning into main-stream email or business applications. These applications require a much better understanding of how to simplify problems for end users. And this is one thing that Google has not demonstrated an ability to do yet.

The point of this blog entry is not to bash Google. There are thousands of whacky interfaces out there. The point is that great software has to have an element of understanding your customer’s needs, and also understanding how to hide algorithmic complexity from end users. Algorithms are fun for us software folks to talk about, but it really sucks when they are exposed to the end user.

Part Time Company Incubation

Even though I’m mostly an amateur, a lot of colleagues that are considering starting companies ask me for help and advice. I try to do the best I can, and I try to refer them to the professionals rather than count on me too much!

But one thing which comes up a lot is that someone is working on XYZ Widget idea, and they are working on it in their spare time. I’ve even done this myself. They’ll have some great idea that they are very excited about, but they just don’t have the confidence or security or timing to be able to quit their real jobs.

In my limited experience, I’ve never seen this work. It doesn’t work for me personally (I’ve tried!). Maybe you can find a few ideas that are interesting and explore them some, but if you really want to develop those ideas into something real, you have to do it full time. Competition changes quickly. If you aren’t working 100% on fostering your idea, then your competition will pass you by.

Recently, one colleague was very excited about a new startup idea. He and a couple of partners were getting really serious. He was going to quit his job, and in the meantime, take some simple job (like a car salesman or something) just to cover the expenses. He was already planning on taking about $250K in loans to start the business and expected it would be about 6 months before he could start seeing the company produce revenue. The plan was good – except for the part time job part. If you are taking loans or getting investments already, why not take an extra $3K per month (or whatever is appropriate) so that you can pay your mortgage during the incubation period? Overall, this would represent less than $20K, and yet it would reduce stress, free him to concentrate only on the company, and also be more stable. He agreed, and is making good progress on that route now.

Whenever I hear of a company that has part-time management, its a major red flag. It tells everyone (customers, partners, investors) that the leadership of the company isn’t 100% confident that the idea will succeed. And a lot of time, it just comes down to putting it in your head that you will succeed. Keeping your old job as a crutch just never works.

Some others agree this is a bad idea:
http://www.exploit-tech.com/inventors/incubation.asp#7

Anyway, if you are going for it – really go for it. Take an extra $20-$50K in loans to do it right. You may lose in the end, but you were already taking that risk anyway. I think this really is a case of nothing ventured nothing gained.

But I’m no expert!

Google Toolbar AutoLinks

Today Walt Mossberg weighed in on Google’s Autolink feature. He agrees it is a bad idea. (See my earlier post)

Overall, I think the feature is just bad. It opens the door to other utilities modifying content, such that the end user can no longer determine whether he is seeing the original publisher’s information or not. Further, with so many content providers needing to fund their content through online advertising, it can easily break the model for everyone.

Google claims they want to “help users”. We all agree that end-user benefits are worth fighting for. But, if we undermine the needs of the publishers such that they can no longer provide content, then have we helped end users? Obviously not.

Possible solution:

There is already an ability for content publishers to instruct Google’s robot to not index a page. This is done by the publisher adding a tag in their content which looks like:

We could do the same for toolbars with a new meta tag.

This way, for pages which are generic web pages, Google and others can markup the text and provide “end user benefit”. But for pages that are from a publisher that needs to avoid markup, the publisher can use this tag.

An alternative would be to make it opt-in instead of opt-out, but I suspect that toolbar writers would agree that this is a non starter, because there is so much content out there that wouldn’t be updated for allowing markup.

Conclusion
Overall, I’m not really a big fan of this comprimise either. When we view a web page, its nice to know where the content comes from. Having markup/autolink being done from all sorts of tools is going to muddy the waters. It also makes it so that two people viewing the same page may not see the same content!

Lets just continue to banish all products that try to do this. The end user benefit is minimal.

Search engine loyalty

This article makes a very good point. Users aren’t very loyal to a particular search engine.

I think its good overall. Consumers are getting enough choice that they can go elsewhere. This presents tremendous opportunities for other companies and startups to build things that can be very influential – despite the encumbents owning the market today.

I wonder what the market will look like in 2 years?

mt-blacklist installed

You may have read my earlier posts when I turned off comments on my blog. The reason for doing so was because I was only getting spammed, and it was just taking too much time for me to try to clean up. So, bye-bye comments.

Well, to help lift the spirits of the crushed spammers, I’ve turned comments and trackbacks on again. This time, with MT-blacklist protection!

I’m still running an ancient version of movable type. Not because I’m cheap, but because I spend too much time on system administration, and I just don’t want to take the time to upgrade.

MT-blacklist was pretty easy to install. Copy 5 scripts into your movable-type installation, and you are ready to go. I then accessed the blacklist script page, downloaded their rules for obliterating comment spam, and viola, I was up and running. I actually had a few errors on my first try to run it, but it was only due to incompatibilities to changes I had made myself to the movable type sources. I reverted those changes and all works great. You ask it to find the spam in your blog, and it does (so far with 100% accuracy!), and then it deletes them all for you and fixes up your blog.

So, if you’ve got movable type 2.6, get this mt-blacklist!

3 easy steps for effortless documentation of C#

If you write C#, and you haven’t yet turned on the documentation features, you really should. Prior to C#, every team I ever worked on said, “yes, yes, we should do a better job at documentation.” But this task always fell too low on the priority list. Some developers did it, most did not, and all of the documentation fell out of date.

C# helps you write it yourself in 3 easy steps.

  1. Make it a COMPILER ERROR if a method doesn’t have documentation.
    You really need to turn this on. Its very easy to keep your documentation up to date as you write the code. The quick compiler error reminds you, and you never miss a function anymore. If you wait, you’ll never do it, because retrofitting N methods takes too long!! Do this early. To do this in visual studio, right-click on the Project, go to Configuration Properties -> Build -> Treat Warnings As Errors. Set it to true.

  2. Enable generation of the XML documentation file as you build
    This step takes no work! Just right-click on your project and select Configuration Properties -> Build -> XML Documentation File. Set it to “docs.xml” (or whatever works for you).

  3. Use NDoc
    NDoc is a very easy to use, free utility which converts your code markup into actual documentation that looks just like MSDN. See the NDoc user guide documentation for an example, or their developer docs. Just download, install, and point it at your project and “docs.xml” file, and it will generate the docs in about 10 seconds.

Thats it.

If you’ve been programming for any length of time, you probably have some skepticism about the practicality of documentation in large software projects. But check out these 3 easy steps – I guarantee you’ll be impressed!