Archive for the ‘Technology’ Category

The CFL Lie

You know the story, compact Fluorescent lamps (CFLs) cost more up front, but consume less electricity. They allegedly last far longer than regular bulbs, so over the lifetime of the bulb, you save money.

CFL

Well, two more CFLs just went bad in our living room. Based on my (non-scientific) observations, these things burn out as fast as — or faster than — old school incandescent bulbs. Thus, no cost savings.

Bring on LEDs…

I’ll continue using CFLs for the near future just to reduce consumption of coal generated power, but LED bulbs cannot get here soon enough. Unless, of course, low-quality LEDs end up failing as fast as CFLs.

I think the real problem here is cheap manufacturing reality versus theoretical lifespan. A well-made CFL or LED should last a lot longer than an incandescent bulb. But without any regulation or easy way for a consumer to know which products actually live up to the exaggerated claims, your mileage will vary significantly.

Just Say No

I really enjoyed reading Ask 37signals: Installable software?, in particular I enjoyed reading the comments.

(I think) many of the commenters just don’t get it. I’m talking about the people who said things like…”yeah, but what if you supported feature X? My company really wants that feature! Or what about features Y, Z, and Q? Then you could get a whole bunch of new customers!”

Learn to Say No

I recall reading an article about Google’s constant internal battle to keep crap OFF the home page. Every department wants “just one more link…”. The problem is, catering to this sort of request — trying to please everybody — results in slop that delights nobody.

I think 37Signals is right. Their software is not right for everyone, but if it were, it wouldn’t be great for anyone.

No More Crash, Boom!

Last week, I wrote about “too many open files” exceptions we saw in our build agents shortly following large Subversion checkouts with the wonderful SVNKit library. At the time, I could not confirm if it was my code or SVNKit causing the issue.

After patching all of my code as described in the earlier post, I checked the SVNKit 1.1.x branch, and discovered they had applied the exact same fix to their own code just a few weeks ago.

Awesome Service

I contacted the people at SVNKit and heard back after a day. They let me know that the 1.1.x branch is continuously tested and is considered stable enough for use, so I went ahead and installed in.

I am happy to report our problem is now gone, the number of open files is consistently low. Before this fix, numbers would shoot up in to the hundreds, and would eventually cause the dreaded “Too many open files” exception.

+1 for SVNKit!

Technology Foothold 101

I do a lot of new technology investigation and I can tell you that first impressions matter.
Far too often, my first few hours with a product consist of:

Rock Climber
  1. Trying to figure out what to download
  2. Searching for simple examples
  3. Fighting CLASSPATH and JAR file hell
  4. Dealing with obscure “Name not found” types of exceptions

If my first day with a new product is miserable, I’ll probably move on to your competition.

Foothold 101

Here are some tips to make your product easier to approach and learn:

  1. Ease the JAR file pain.
    • Reduce the number of JARs, if possible. Apache ActiveMQ lets you choose between a single big JAR or many small JARs. Having that single JAR is a blessing during early development.
    • Clearly list the requirements for each JAR. If your product ships with 30 JARs, provide a documentation page that tells us which ones we need, and why.
  2. Provide 5-minute tutorials with simple example code. Many projects on The Codehaus have these 5-minute tutorials, and they are a fantastic idea. You can always follow up with more in-depth documentation, but the quick-start Hello World is — and always will be — essential.
  3. Beware overly technical documentation. It is highly likely that new users are not experts in arcane P2P networking terminology. The JXTA project documentation is a really good example of what not to do. I struggled with this for an entire day and just gave up in utter frustration and rage, unable to get much of anything to work.
  4. Your web site needs to be clean and easy to navigate. I am generally lost and confused when I try to navigate java.net projects like SwingLabs. Hell, their own search engine just crashed when I tried searching for “swingx”. I found it (and SwingLabs) through Google.
  5. Make sure your damn demos work.
  6. If your project requires me to compile, then let me type a single command to make it happen. I don’t care if it is Maven or Ant, just make it work. I’m here to learn about your API, not to diagnose a sloppy build.
  7. Framework and API developers should spend a huge amount of effort providing useful error messages. There’s nothing worse than firing up a new product and seeing messages like:
    • Logging is not configured. To see output edit some magical XML file.
    • Name not bound. (Uh…where did you look?)
    • Batch update failed. (gee, I don’t suppose you could tell me a table or column name?)
  8. Provide obvious downloads. If a particular release consists of three ZIP file choices, explain what those choices mean. Which do I want, and why? I generally just download all of them, because I’m afraid I’ll miss something. Check out the download counts for Guice. Notice that pretty much everybody who downloads guice-1.0-src.zip also downloads guice-1.0.zip. I’m not alone! Maybe all but the biggest projects should offer a single ZIP to download?
  9. Make sure your ZIP file extracts to a subdirectory. Don’t you hate it when you unzip some new toy, only to find it just dumped everything into the current directory?
  10. Provide an IDE-friendly ZIP or JAR containing all source code. This way I get proper JavaDoc tooltips and can easily navigate to source. Few things are more annoying that projects that ship with 15 separate parallel source trees, requiring me to spend precious time configuring a complex project.
  11. Screencasts are a great way to get people started.
  12. Concise documentation is often better than verbose documentation. Up-to-date documentation is priceless.

Credit

For the record, I stole the term “Foothold” from Mike.

100 MPG, 100 MPH: I Want One

Check out this prototype “car”:

Carver

You gotta watch the videos.

Google Maps Marker Editing

Back on Oct 18, I described how to submit map corrections to NAVTEQ. I suppose I’ll have to wait several more months to know if my “bug report” actually works its way through the system.

In the meantime, Google came up with their own solution. You can now edit map markers directly in Google Maps:

Google Map Editing

You just click Edit, and then drag the marker. This is way easier than the NAVTEQ system, with instant results.

While this is a great enhancement, I hope it isn’t just a Google Maps annotation. I hope they have a way to feed these edits back into the root data, so ultimately all mapping services start to see the corrections after some period of time.

Atom Valid on WordPress 2.3

I just upgraded to WordPress 2.3, the whole process took a matter of minutes. According to the W3C Feed Validation Service, my Atom 1.0 feed is now valid. Woohoo!

Apostrophes Finally Work

Valid Atom means characters like & and < will render properly in an increasing number of tools. Thanks to clearly defined text constructs, the meaning of such characters is not ambiguous.

WordPress is but one link in the chain of syndication tools. Using Atom helps ensure sites like JavaBlogs, DZone, and others can consume and syndicate content accurately. As I wrote in early September, I explicitly customized my WordPress installation to disable RSS. I simply do not trust RSS because every person writing an RSS tool might interpret entities differently.

Apostrophe Rant

Now that WordPress Atom feeds appear to handle apostrophes a bit better, what can we do about Greengrocers’ apostrophes? It must be embarrassing to work at companies where the official company name makes this stupid mistake. (Answer: the plural of CD is CDs, not CD’s)

Now I fully expect my faithful readers to point out all of the grammatical and spelling errors in this blog. That should teach me to mock apostrophe abuse.

Here is How You Fix Maps

Gregory Kick left a great comment on my recent entry How Do I Submit a Bug Report for Bad Maps?. Sure enough, NAVTEQ Map Reporter lets you submit updates.

This is the root of the bad data for my house:

NAVTEQ

Their system is really cool. You zoom in on the address in question, then you simply double-click to add a new marker at the correct location. You can then provide all sorts of data explaining your update, such as a bad or missing street name, an incorrect location, or various other problems.

I uploaded this picture as “supporting data”:

This is My House

You can also leave your email address to be notified of progress on the update. They claim they provide updated feeds to the various mapping services up to four times per year.

How Do I Submit a Bug Report for Bad Maps?

I am in awe of the technology behind today’s mapping applications like Google Maps, Google Earth, and Live Search Maps. At the same time, however, these services painfully echo incorrect coordinates and I feel like I have no way to “correct” the problem.

Here is how Live Search Maps shows my address:

Live Search Maps

And here is Google Maps showing the same address:

Google Maps

Both Wrong

The problem is, both are equally wrong. In fact, as long as I have lived at this house, every single mapping service incorrectly shows my house 1 block away from where it actually is.

The data is also stale, at least 3 1/2 years old, if not older. We need drone planes flying 24×7, constantly updating the images. (although I’m not sure who is going to pay for that)

Bad Seed Data

From what I see, some database — somewhere — has incorrect coordinates for my street address. This seed data is then exported, shared, sold, and resold to all of the mapping companies, that dutifully regurgitate the bogus information. (Sounds an awful lot like news/blogs/etc…)

Let Me Fix It!

It would be great if these services had a way for me to send in “bug reports”, or at least offer some kind of community-based updating system where people could submit data fixes.

  • Who is the owner of the flawed “seed” data?
  • Is there a way for me to contact these people and submit a correction?
  • How long will that take to bubble up through the system, so people finally get accurate directions to my house?