Sunday, August 1, 2010

Den Suck

We bought a new bedroom set from IKEA to replace an old multiple-hand-me-down set. This turned out to be a bit of an odyssey.

The assembly of the bed is good in theory: it has a wooden headboard, footboard, and sides that form a box to surround the actual bed, which is supported by some metal infrastructure. There are 2 angle brackets on the length of the side boards and a fairly robust metal beam down the middle that hold the actual weight of the bed.

Unfortunately the angle brackets are each too narrow by probably 5mm, which allows the box spring to drift and basically fall off one side or the other. This drops the box spring and mattress (and occupants, if any) onto some cross members which are designed to keep the box rigid and not to support weight; damage occurs.

The root cause seems to be that this is a European style bed, and Over There they don't use box springs; mattresses sit directly on planks or slats. So they apparently don't quite get box springs, and things like this happen.

Anyway I tried to work around it but ultimately the angle brackets are just too narrow. I didn't feel like going out and buying a bunch of planks to fix IKEA's bad construction, so instead I figured I'd try just taking the basic metal bed frame we used previously. Since it's nothing more than a metal rectangle that the bed sits on and is exactly as wide as the box spring, it should drop right into the new IKEA bed box.

Well, almost. It didn't quite fit, because the mounting brackets for the headboard on the old frame add just a tiny little bit of width, but it's enough to keep it from fitting.

But I pretend to be a Maker, and I smelled a project! So I figured I'd just remove the headboard brackets and then it'd fit. Unfortunately those brackets are riveted to the frame sides.

I tried drilling out the rivets, but my cordless drill didn't have the power and I didn't have a steel-drilling bit anyway. Then I whipped out the Dremel and put on a cutting tool, and cut off the rivet heads on one side, but the rivet material was pretty well alloyed with the frame metal, so I couldn't push the rivets out once I'd cut the head off. I tried just cutting the bracket off, but a Dremel as old as I am vs. steel is slow going, to say the least.

At this point I'd spent probably an hour and a half on all this. It had come down to it. I was sitting on the floor in the middle of the bed box staring at this frame, out of options. I was going to have to admit defeat.

Then I looked at the frame, and suddenly remembered that it was actually in 2 parts. The left and right angle brackets have arms that join together with a simple keyhole-and-pin slide lock. So I just pushed them in slightly to make the frame narrower, dropped it into the bed box, and then dropped in the box spring. This took a grand total of 90 seconds.

So, lesson learned. Again.

Always look for the simple solution before jumping into the hard one.

A Shocking Exposé!

Oh jeez.

Consider this Apple product, selling for $29: http://www.apple.com/battery-charger/

Basically this is a 2x NiMH AA battery charger, with 6 AA batteries included. The batteries by their description sound a lot like (and may well be) rebranded low-self-discharge Sanyo Eneloop batteries. By "a lot like", I mean that the recharge cycle specs is very similar to Eneloop, and while Apple provides no specifics (such as capacity, discharge characteristics, behavior under load), the description sounds a lot like the "pre-charged" marketing message used by Eneloops.

Why, they're practically inviting comparison! Let's investigate.

Sanyo Eneloop 2x charger with 2 Eneloops, $13.18:
http://www.amazon.com/Sanyo-Eneloop-Pre-Charged-Rechargeable-Batteries/dp/B000XVZYXO/ref=sr_1_18?s=electronics&ie=UTF8&qid=1280702524&sr=1-18

4x AA Eneloops, $9.15:
http://www.amazon.com/Sanyo-Eneloop-Pre-Charged-Rechargeable-Batteries/dp/B000IV2YLY/ref=sr_1_7?s=electronics&ie=UTF8&qid=1280702524&sr=1-7

Total: $22.33.
Apple markup: $6.67, a ~23% premium.

For $6.67, you can upgrade to a 4x charger and still come in under Apple by a couple bucks.

Now, Apple's claiming a low standby load, which at least is a potential difference from the competitor. The problem is, their competitors don't publish standby loads (at least that I can find) for their chargers, and they themselves never define the "average" charger they're comparing themselves to. Did they test a good random sampling of chargers? Or did they test a hand-picked set of dubious chargers they picked up at a market in Taiwan or something?

So in other words, it's cute marketing, but it's a 23% markup for a product which has no actual, verifiable advantage over the competitor.  Although it does look cute I suppose, if you're into the whole Apple wall-wart aesthetic.

When Apple does this kind of thing with a Mac, you can at least point to the user experience and make non-specific non-falsifiable claims of enhanced productivity or lower frustration or better build quality or whatever. And that's fine; I don't have a problem if people find that those things make the difference for them in their daily usage. Human factors are very hard to quantify.

But when they do it with a battery form factor that was defined as a commodity in 1947, has been exhaustively characterized, is utterly well-understood, and can be trivially compared apples-to-apples (pun intended) with competitors, I find it kind of laughable and silly.

And honestly, if they apply the "Apple premium" to something as obnoxiously over the top as this, it makes me question whether there really is an Apple premium on anything they sell, or if Apple is just a giant snow-job.

Friday, June 18, 2010

Now I can manage my life from the command line

GoogleCL (http://code.google.com/p/googlecl) is entirely too cool.

sudo apt-get install dcraw graphicsmagick python-gdata
[...]
sudo dpkg -i http://googlecl.googlecode.com/files/googlecl_0.9.5-1_all.deb
[...]
for nef in *.NEF; do
jpg=`echo $nef | sed 's/\.NEF$/\.jpg/'`;
gm convert $nef $jpg;
google picasa post --title="Vegas ATV Trip" $jpg;
rm $jpg;
done

.NEF is Nikon's RAW file format. dcraw is a utility that can convert NEF to standard formats, and graphicsmagick is a utility that can do various manipulations of images, including transcoding.

The script above converts all the NEF files in the current directory to temporary JPEG files, and then uploads them to my Picasa Web Albums account, in the "Vegas ATV Trip" album. That is, it's an extremely simple but effective Picasa uploader.

I think I will be having some fun with this thing. I'm even posting this via GoogleCL.

Sunday, June 6, 2010

On 'On Android Compatibility'

[I'm going to talk about Android a bit in this post. You should know that I'm Android's Open-Source and Compatibility Program Manager, so this is near and dear to my heart. But remember that this is still my personal blog, and thus my personal opinion. I'm not necessarily speaking for Google here. This post describes some of my personal perspectives on the mobile industry.]

On Monday we posted a blog I wrote about Android's approach to compatibility over on the official Android blog.

The results were interesting. Tom Gibara made the great point that in exchange for handling device diversity you get a much larger audience in return. Engadget has presented both sides of this topic, including the good and the bad. Although my personal favorite example of the negative point of view is Harry McCracken's somewhat histrionic (IMO) post.

A Name for the Ailment
The gist of the main criticism is that there are multiple versions of Android available at the same time. What I think has been missed is that I never said this was a non-issue; I just said that calling it "fragmentation" is too vague to be helpful (and then moved on, since Monday's official blog post wasn't about this.) Regardless, I actually liked the word Mr. McCracken used to describe this -- "versionitis" -- because it's a pretty evocative but descriptive term.

So, what about versionitis? It's certainly true that there are several Android versions extant at the moment, but I believe this isn't a big deal. For one thing, the risk of user confusion is extremely overblown; you've really got to be cynical if you think the buying public is somehow too stupid to comprehend the concept of last year's model, as applied to mobiles.

From a developer's point of view it's admittedly a bit trickier, though. You can do without features from later versions and rely on Android's forward compatibility to target the largest possible audience; or you can make a flashy cutting edge app for the latest version and wait for audience size to catch up. Although sometimes you don't even have to choose, because with a little extra work you can make an app that will run on old versions AND take advantage of new features if they are available. Nobody likes extra work, but at least as Tom Gibara pointed out, you're getting something in return.

But all that said, it comes down to choice: consumers and developers have to make some decisions, and the argument is that this all treads dangerously close to a tyranny of choice. Personally, I don't think it's nearly that bad, but of course that's just my opinion, and I respect that some people don't agree. And anyway, in an ideal world we'd like to see all devices running the latest version of Android -- it's not as if we are somehow opposed to the idea.

Wherein We Invoke a Business Cliche
But the main reason why this issue just isn't that big a deal is because we're right in the middle of a sea change that will wash this all away.

Rewind to about 5 years ago. This is recent enough you had feature phones and smartphones mostly as we do today, but long enough ago that it was before the mobile revolution really got underway. Back then as today, it was practically unheard of for a feature phone to ever get a software update. As for smartphones, it wasn't unheard of to get an update, but it was pretty uncommon (at least in the consumer space.)

Why? The reason was that the smartphone platform vendors controlled the software. It was exceedingly difficult for OEMs to differentiate on software because they had little control over the software. It was difficult for them to differentiate on features because they could only ship features supported by the OS they were using. But it was still a fiercely competitive market and they still innovated as hard as they could.

So they innovated on the only dimension they had control over: hardware and industrial design. The inevitable result was that as soon as an OEM released one phone, it was immediately on to the next. The follow-on to a successful device was another device. "Version 2.0" wasn't an upgrade, it was a replacement. This is how we ended up with 16 different RAZR models (if I counted correctly), each with different hardware. It was easier for OEMs to rev hardware than software, because they had little control over the software.

Think about that. Easier to rev hardware than software! This flies in the face of everything we've learned from the personal computer. It's almost like the cell phone world ran counter to the laws of nature, so as soon as someone offered the OEMs the chance to control their own software destiny they jumped at the chance. And that's exactly what Android as an open platform is doing.

And the Point Is...?
So what does this have to do with versionitis? Simply this: it takes time to rebuild a manufacturing process.

When all you do is rev hardware, you get pretty good at it. You optimize around it. You make being good at it a competitive strength. The OEMs are transitioning to a more PC-like world where they control their own software destiny, but to do this they need to update their procedures and tools.

This takes time, and today we're right in the middle of it. Device manufacturers want your brand loyalty. They also know they aren't going to get it unless their users have a good experience, and they know that users are expecting that the new $500 tiny computer they just bought comes with a year or two of support. OEMs know this, they are hardly dumb.

The updates are coming. You can see it already, with devices like the Samsung Moment and HTC Hero (for Sprint) getting 2.1, and commitments to upgrade other models. Section 12 in the Compatibility Definition Document even requires that compatible Android devices be upgradeable, which at least sets the stage. Device manufacturers are getting better and better at doing these updates -- and I mean, it's not like they are going to get slower at it.


That's why it just doesn't make sense to me to worry much about this versionitis thing. It's certainly true that today some people aren't getting the updates they want, but that will change over time. And while it may be poor consolation when your buddy's got a later Android version than you, your current phone isn't just going to stop working. And of course the reality is that to the vast majority of the millions of regular-Joe Android users, this isn't even an issue.

So for some people it's painful today, but really they're just impatient for the future to arrive. We have to take the long view, though -- and as far as I can see, the view is pretty good.

Thursday, April 29, 2010

On Being Open

"Diversity" is more than the absence of racism. Diversity does not mean grudgingly tolerating the equality of those different from you, it means recognizing the real, additive value that disparate perspectives and habits bring to your life, and others' lives. It doesn't mean tolerating differences, it means valuing differences. Tolerance is just the first step on the road to diversity.

Freedom of speech does not mean waiting for the other guy to say something before you shout him down. Free speech means, as the saying goes, disagreeing with what someone says but defending to the death his right to say it. You only really value freedom of speech when you quietly thank your higher power of choice that the other guy has the right to make your blood boil.

So it is with open platforms.

Openness is more than the absence of closed. Openness does not come automatically   just because you deploy an industry standard. Openness means you recognize the real, additive value that disparate products and businesses bring to your platform. It doesn't mean tolerating competition, it means valuing competition. You only really value openness when you quietly thank your higher power of choice that your competitor just took advantage of the opportunity to destroy your business on your own platform. Implementing standards is just the first step on the road to openness.

Steve Jobs, you fail at openness.

Sunday, April 18, 2010

I Make FAIL

I got Issue 22 of Make on Friday, wherein is contained a project for a cat toy that "senses and Twitters felinogenic perturbations". (Heh.) I recently discovered -- while making a cigar box guitar from Issue 21, naturally -- that one of our cats, Sammy, luuuuuurves to play with guitar strings, since they dance all around and hold up well to clawing and nomming, being made of steel and all. As the cat toy project mostly consists of a paper bird on the end of a guitar string, I figured this one was a no-brainer.

It's a pretty straightforward project, although I did encounter one snafu. The core of the project is just a steel molly bolt installed into an enclosure, with a steel guitar string projecting up through the center. When the cat whacks the toy, the guitar string bends and makes contact with the molly bolt, which closes an electrical connection. It turns out to be a bit tricky to get the guitar string, molly bolt, and heat-shrink tubing lined up correctly so that the guitar string is not in contact with the bolt while at rest yet still makes contact easily when whacked. I ended up screwing up the first attempt and had to try again. But, I got it to mostly work on my second try.

Now, I'm no dummy. I know better than to spend hours soldering up a whole project, installing it into an enclosure, and then writing Arduino code for a cat toy, before finding out if the cat actually likes it. (Measure twice, cut once, as it were.)

So instead I took a decapitated USB cable that I have lying around that I use to prototype with a breadboard, and hooked up USB power/ground to the breadboard, and an LED in series with the toy's signal leads. I then plugged it into my laptop, which made for a quick and dirty 5V power source for testing.

The LED lit when I whacked it, so everything seemed installed correctly. I whacked it around a few more times watching the LED light up, until I realized I was playing with a cat toy. *ahem*  I then went to find Sammy.

By now the astute reader knows where this is going, of course. Sammy would have nothing to do with this thing. He could tell I wanted him to play with it (since I kept picking him and putting him back in front of it whenever he started to walk away), so he batted at it half-heartedly a couple times, then looked at me and meowed for dinner.

To confirm, I grabbed another guitar string and held it out for him, and boy howdy did he have a good time with that one. The toy, unfortunately, just doesn't have enough whiplash action to interest him. Since it stands vertically, the string's length has to be short so that it doesn't bend over under its own weight, but Sammy likes his strings to be full-length, I guess.

So, today I made a cat toy that was more entertaining for me than for the cat. My name is Dan, and I'm a Maker.  (Hello, Dan!)

All is not lost though, I have a couple ideas for how I can make a variant of this thing that Sammy will like. I think I will use a dowel for a hard vertical shaft with the guitar string placed horizontally on the top. Pulling on the string will make the dowel lever back and forth, which I can use to trigger a switch. This might actually even be easier and more durable than the vertical version, and has the advantage of not electrically connecting the cat to 5V DC.

When (if?) I get this working, I doubt I'll use it to Tweet, though. Or at least, if I do I intend to at least use it to trigger a webcam that grabs a snapshot or video of the cat at play. In this era of "video or it didn't happen", can I do any less?

Sunday, April 11, 2010

Cable winders

My wife and I have been collecting corks for a while to fill in some of those cork-board things you can buy, where you glue corks into a wooden frame to make a trivet or a corkboard for messages. This weekend we finally had enough corks so I assembled those, but I also had a few corks left over.

Since corks don't compost well, I wanted to put some of them to another use. At the same time I've been having a problem with damaging and losing USB cables for my various Android phones, since I've been carrying them loose in my Timbuk2 bag. I suppose could have done a better job of winding them up carefully, but that's annoying to do, given how often I use them.

So instead I made some cable winders out of some of the corks. It's extremely straightforward, and I won't belabor the point, since I made a YouTube video: http://www.youtube.com/watch?v=8Yf6AaXevyY

I can't decide if this is a clever idea, or something lame that belongs on regretsy.com.