Personal Computing’s Dim Future

Nastrodamus time. Not really. Anything I’m about to write should be pretty obvious to anyone. BTW, this is another post that many of my friends will deem “really technical” and not read, so BE PREPARED.

First off, I got a Xoom. I’ve had it since a couple of days after launch and I really like it. A couple of days after launch!? Yea, I wanted to buy it from a certain retailer where I had some credit, but they didn’t get theirs on time and took so long to get them that I ended up going elsewhere.

For a bit of background, I’ve owned and returned nearly every capacitive-screened Android tablet that was available during the christmas season. I bought a Galaxy Tab and returned it because it was buggy. I bought the Panasonic and Nook Color and returned them because they were too slow to justify the cost.

I’ve since re-purchased a Nook Color and put Honeycomb on it and it’s still slow, but it makes an excellent kitchen/recipe accessory that you don’t really care about. If it gets destroyed from a mishap, who cares? It’s easy to read and has really good battery life.

The Xoom is very fast, has amazing battery life and is much less buggy than I expected it to be. Before you jump all over me expecting it to be buggy, let’s have a look at some of the places Motorola failed (fairly epic-ly for the first one) with this device:

  1. Hey in a couple of weeks, send it back to us and we’ll upgrade the modem while you’re without your device for a week
  2. The fucking charger is designed to break.
  3. The microSD card is disabled because Honeycomb doesn’t have support for it yet. Oops lol.
  4. The packaging

That’s a fairly short list. I’ll give some more detail on those in a second, but first notice that I didn’t say the price. The lolwebs were brimming with bitches bitching about the price. I’ll start by saying that I think I’m a bad judge of the value of this device. So grain of salt and all of that, but I think this device is worth the money if you assume that the equivalently sized iPad is worth the money they ask for it. This device does so much more than an iPad or iPad2, but I’ll get to that later too. Back to the fail list.

My early adopter dollars are funding a dim future — a future where we buy computing devices from wireless providers that charge by the megabyte and only allow you to use the device in ways they’ve approved. Said another way: it sucks that this device is, in its first incarnation anyway, sold by a cell-network provider. I’m assuming the WiFi, version didn’t come out on the same day in order to gouge the early-adopters as much as possible. I know I wouldn’t have purchased a cell-networked Xoom were a WiFi version available.

This brings me to the first and worst failure of this launch. I can’t believe anyone at Moto/Verizon thought that no one would mind the hassle-factor of sending this device off for a week to get a new modem on it. As much as I hate Apple, that’s who the competition is and this sort of move just makes their ditto-heads go apeshit — and rightly so. I wonder what big-wig decided the launch date would happen no matter what the cost. It’s bad PR and I’m sure it’s costing them a ton of money.

The ridiculous charger is the lamest thing I’ve seen in quite a while. The brick-end feels really flimsy and the charger end looks like a needle. It’s so obviously designed to break. I hate it.

The microSD card is a jar. So Honeycomb marks the move from usb-storage to MTP which is a very good thing. I’m as surprised as anyone that I wrote that previous sentence.

I’d previously lauded Android for having simple usb-storage access to the microSD card. Unfortunately, the downside of such a simple approach is that you can’t store applications on the removable media without some difficult problems. Android is Linux, so it uses the Linux (and thus UNIX) process model. Processes have working directories. If that working directory is on a device that’s no longer there, your widget (or whatever) crashes.

Also when using usb-storage, you want your usb-storage filesystem to be widely compatible with a variety of operating systems. This, by some bizarre twist of fate ends up translating to some variant of Microsoft’s FAT. Since the application storage wants to live on a Linux-native (ext3/4) filesystem, you end up with a limited amount of space in which to store your applications. To get around that limitation, by hook or by crook you could use a so-called “apps2sd” feature to move your app into the FAT side of things, but you’d suffer a performance penalty in addition to the working-directory problem I mentioned above. By using MTP which is more like an API than a filesystem, you can have a very similar experience while circumventing the problems.

I don’t have much to say about the packaging, but it was atrocious. It was similar to  Verizon-branded boxes that the Galaxy Tab I had for 24 hours came in. I’ve purchased $12 alarm clocks with better packaging. While completely subjective and ephemeral, it made me feel like I was paying a lot for something that was poorly made. I don’t even need to point out that this is another place where the competition excels.

So now the good stuff. It’s much less buggy than I’d expect a first-gen device with a brand new OS on it to be. Samsung has no excuse at all for how buggy the GT is. Almost everything about Honeycomb is a vast improvement over previous versions of Android. I really liked the previous versions of Android, too, so bonus! Adding widgets/launchers to desktops is vastly improved. I’m surprised that I like the soft buttons as I expected not to. The task switcher is great and is one of the many things that makes this device feel more like a computing platform and less like a giant phone. The Galaxy Tab felt like a giant phone.

I like the Xoom’s Youtube app more than I like the Youtube website. I’m sure you’ve read elsewhere about the Gmail and calendar apps making use of the larger visual space. They do. Not a huge win for me, but I’m sure most people like it. The music app is new and all iTunes-y. It’s whiz-bang, but doesn’t really help me get to my music more quickly. I’m sure I’m the only one who sees it that way though.

Holy shit I fucking hate iTunes.

While that’s worded so strongly for comedic effect, it also isn’t. I mean it is, but it isn’t, if you know what I mean. It is. Buuutttt it isn’t.

Speaking of hating iTunes, while I’m sure time will prove me wrong and Motorola will do something stupid, one of the huge wins for this device is that it’s a computer unto itself. While vendors may chose to do something stupid (Samsung, kies-light? really?) Android devices don’t need another computer to do OS or application updates. This makes the Xoom an excellent appliance for non-savvy users like my mother, for example. She could easily just live on this device and never touch her scary computer ever again.

I’ve gone on and on about how much iTunes sucks in other posts, but here’s a more recent story. A co-worker has an iPhone that he can’t update because Apple no longer releases iTunes for his laptop’s architecture. So his less-than-two-years old phone can’t install app updates nor new apps that require the latest version of iOS because his other computer –that he purchased from the same vendor– is too old. Why do people put up with that? Further, why do they get so zealous about how great and easy it is? I don’t get it.

Hey, speaking of how great the stuff I like is and how everything else sucks: Honeycomb should have shipped with multi-user support. If it really is “just for tablets” it’d be great if my girlfriend and I didn’t have to purchase separate tablets just so we can each check our Gmail or whatever.

Have I mentioned that it’s really fast and plays 1080p videos as smooth as silk? If only there was an EVE Online client for it.

So yea, dim future. I’m sure there are people who would argue that lowering the barrier to entry is all that matters, but I’m not one of them. I like hacker culture. I like the idea that people own the things they buy. This world where network providers (over)charge you by the device and by the megabyte at the same time is bad enough without the centralized single-source application market concept making it way worse. As much as I love technology, as much as I’m an early adopter, the future really scares me.

While I’m at it, the SDK for Honeycomb came out way way too late. Google needs to decide if Android is really open source or if that’s just for a joke. You know, for a joke.

This whole giving it to Moto first and not releasing until days before the Xoom launch was pretty bullshit. If I wanted some closed-source closed-community OS on my mobile devices, I’d …. well no, I wouldn’t, but that’s not the point!


GNU Screen quick tips

I use GNU Screen [henceforth: “screen”] every single day in a variety of contexts. I’m by no means an expert, but I’ve met a few people who aren’t as familiar with some of screen’s more oblique features, so I’ll give you a walk-through of my setup. If you’re new to screen, this isn’t likely the best place to start. Also, this isn’t a replacement for the man page. I barely know anything, so read the friendly manual and learn even more.

If you already know screen, I’m going to discuss setting up an “outer” screen with an alternate command key as well as using screen’s copy mode to capture text. If you already know how to do that you’ll find nothing new here.

First we’ll start with a very small script I wrote called outer. I run this script on my desktop and it creates a screen whose command key is F12. I do this so that when I connect to remote machines (where the command key is still the default of ^a) I’m able to think less because I don’t have to escape remote command keys.

Here’s a scenario that might shed some light on my explanation. Without overriding the command key, you start screen on your desktop and ssh to a remote host where you start screen. Now if you want to interact with the remote screen session, you have to “escape” your commands to it so that the desktop’s screen doesn’t interpret them. If you type ^a-c your desktop screen is going to create a new window. If you want that new window on the remote host, you have to type ^a-a-c, which can get annoying quickly. With outer, your desktop’s command key is F12, so it doesn’t care at all about your remote ^a’s.

For some gravy, outer also sets up F11 as “windowlist -m” which is a list of your windows in use-order. Since I’ve met a few people who don’t know about windowlist, if you hit command-key-” is a list of your windows in numerical order (windowlist -b). Further gravy, outer also always grabs the current version of your .screenrc before it starts screen.

My shell environment automatically names my screen windows to the hostname when instantiating a shell, so my “windowlist -m” might look like this:

Num Name                         Flags

  0 mutt                             $
  1 puppet                           $
 10 henry                            $
 15 machinex                         $
  8 machiney                         $
  2 jables                           $
 13 machinez                         $
  3 kage                             $
  6 storooni                         $
  4 lee                              $
  7 dude                             $
  9 walter                           $
  5 donnie                           $
 11 maude                            $

You can navigate the windowlist with j/k/arrowkeys and enter.

Screen’s copy mode can be used for capturing its scrollback contents to a file. To enter copy mode, hit command-key-Esc. If you’re familiar with vi/vim, you’re now in something akin to vi/vim’s command mode. Movement keys in this mode are very similar to vi/vim, but not exactly; so read the man page. Once you’re in copy mode, move your cursor to a given point in the scrollback buffer and then hit the space bar. By hitting the spacebar, you’ve dropped a marker at the cursor location. Move again to select text. Once you’ve selected the text you want, hit >. Hitting > will save the selection to a file whose name is the value of “bufferfile”. The default is /tmp/screen-exchange. Yea I know: horrible name. I guess that’s why it’s configurable.

You can also use copy mode to paste into your screen session. The details of that I’ll leave as an exercise to the reader.

I frequently connect to hardware consoles via telnet/ssh, where selecting text from a terminal emulator with a mouse often adds unwanted spaces or new lines. Copy mode is invaluable for preserving the formatting of the consoles’ text.


Advancing in the Bash Shell small update

I updated Advancing in the Bash Shell a bit. A new link at the bottom, some very small wording corrections and a syntax highlighter plugin to make the examples a bit easier (I hope!) to read.


Nexus One

I used to be the guy who hated cell phones. I never ever wanted to own one. I used to actually get annoyed when people would send me SMS messages. Of course, I had a RAZR so the idea of typing something out using T9 just seemed so not worth it. Now I can’t shut the hell up about my Nexus One.

The Sprint Hero didn’t last. I returned it. At the time Sense UI was really buggy, but I’d have been content to wait for an update if only Sprint had any service anywhere in Athens. None at work, none at home, so back it went. I’d purchased the phone through a local reseller. The sales guy really went out of his way. He lent me his phone so that I could check the service levels at the places I’d be. Sadly I only checked voice, not data. When I returned the phone, I unfortunately got a big guilt-trip from the guy. He seemed to expect that I’d stick with the phone even though it didn’t work anywhere. I also got a lovely 80 dollar bill for a phone I had for 9 days.

I was sad to have to pull out the old iPhone again, so I rooted it. The most interesting thing that allowed me to do was theme it a bit. The themes looked a lot better, but made the phone slow and buggier. The two alternate app stores I tried were slow and buggy and as difficult to browse as the App Store.

I ordered a Nexus One the hour they came out. I subsidized it through T-Mobile. It arrived and it was great. Sadly, T-Mobile didn’t have any service at my home or work either. In contrast to Sprint, and really just in general, T-Mobile was great to deal with. When I called to ask if there was any way to increase their coverage, the guy I spoke with on the phone genuinely seemed like he wanted to help (I have a great bullshit detector and it wasn’t going off.) When I called to return the phone, they were equally as nice. Later, when faced with another 80 dollar bill, I called and they reduced it to zero as I’d only used the phone (from their perspective) for 2 minutes. Man, I wish I could be their customer. As disappointed as I was that I couldn’t keep the phone, it was the best corporate experience I’d had in a very long time. Kudos, T-Mobile.

I loved the N1 so much that I was tempted to put my at&t SIM card in there and just live with EDGE (crappier “2G” network speed.) Ultimately I figured there was no point in having a mobile computer if the data connection sucked. So I went back to the iPhone again. I’d kept my at&t account active through all of these experiments as I was on contract anyway.

I ordered my at&t N1 the hour they were released. Slipped the SIM out of my iPhone and haven’t looked back. I even sold the iPhone to a co-worker. Sucker. (Or maybe not!)

In my previous Android post, I complained a lot about buginess. Thankfully that was all SenseUI (a fancied up “skin” for Android.) My N1 has been rock solid. The battery life on the T-Mobile branded N1 was pretty terrible, but I’m guessing that was entirely related to it never having a good signal. The battery life on my N1 is phenomenal. I can go 2 days with lots of use and only get to 30%.

I bought some apps while I had the T-Mobile N1. When I got the at&t version, I signed in and not only did all of my contacts show up, all of the apps I’d purchased showed up too. Contrast this to the 4 times that the iPhone deleted my data (the 4 times I upgraded the firmware.) Sure, I could get my apps back on the iPhone for free, but I had to remember what they were and install them one-at-a-time by hand. Android 2.x also (optionally) syncs pictures I take on the phone up to Picasa magically in the background.

The other huge wins over the iPhone continue to be huge wins. My data comes to me, I don’t go to it. Multi-tasking is awesome. Not having to use any special software to access the data on my phone is still great. Widgets are completely kickass. Making ringtones/alerts/alarms on the phone still rules. Being able to set up specific notifications per SMS sender is a god-send for someone with my job. Having stats on what exactly is using your battery is very handy. Completely kickass turn-by-turn voice-enabled navigation for free isn’t bad either.

The non-wins are basically the same. Both the Android Market and the App Store continue to be terrible. Searching is especially terrible given that it’s a Google product. It (Android Market) doesn’t even do sub-word searches. It’s 2010!!! WTF?! It’s only wins over App Store are that you can keep “shopping” after you tell it to install something, you don’t need a iTunes-only-create-able account, and a new one I learned since last time: If you buy an app and you uninstall it within 3 (or 4?) days, you get a refund. That just rules. The real huge win is that you can install apps from places other than the Android Market. But don’t let that get in the way of your celebrating Apple raising the chocolate ration from 40g to 35g per week!

I hear a common complaint from iPhone users that Android’s UI is “clunky.” I find it anything but. For example, the Notification Area is vastly superior to the modal dialogs of the iPhone. I get monitoring alerts from work on my phone. I had the same setup on my iPhone. Once, during a particularly bad day I got a bazillion SMS messages while leaving a voice mail. I couldn’t hang up the phone until I said “OK!” to all of these messages. It was the most annoying thing ever. On Android, I get one indicator in the Notification Area. I still get multiple audio and visual(trackball color) alerts, but the rest of the phone is still usable through them.

Here’s some general screenshots in case you’re curious. As I mentioned in my previous Android post, Android has virtual desktops. Those screenshots are 3 of the 7 on my phone. I’ve turned off the text that’s normally under the icons.


Putting the F back in Art

I’m really bad at expressing myself, especially in regard to things about which I’m passionate. In the past I’ve tried to explain my approach to and appreciation of art and I’ve done a really awful job of it. It’s just one of those things that one understands very well, but finds difficult to express to others.

There’s a pie-chart that shows the ratios of the various components one might appreciate when evaluating art and mine is probably weighted more towards the analytical and away from the emotional. While technique and talent/skill weigh more for me, there is no art without emotion.

I also think that the various pieces of the pie-chart vary in their subjectivity. Which is to say that I think that given a large enough sample, “experts” would likely agree on certain things. (Yikes this is getting more complex than I wanted it to be already. The whole experts thing is a whole other post.) Said yet another way, I want the art itself to be emotional, not so much my evaluation of it. Which is not to say “devoid of emotion” but like I said earlier, emphasizing the analytical.

I’m still not saying this right. I should leave this part out. What I’m really saying is that I know people who like or dislike a film/song based entirely on how it makes them feel or how they felt already when they were exposed to it. I ain’t that.

In the past I’ve said (and been criticized for saying) that one of the largest criteria for my liking a given song or film or whatever is “how much ‘art’ is in it.” Yuck. Awful. Those who criticized me were correct to do so.

In my life I’ve know a lot of people who really liked art of all kinds. I’ve known some amazing visual artists and musicians. Some were classically trained, others just had a feel for it. I’ve also known people who found great joy in creative outlet, but whose creative expressions were just awful. They could be awful in any number of ways; just pick one from the pie chart. Finding joy in a creative outlet isn’t the same as creating art, it’s masturbation or at best therapy. (And I say that in the least pejorative way possible…. there’s nothing wrong with masturbation!)

Creating art is about synthesizing the world into a form that teaches one about oneself. (!)

I also say things like “I hate plot.” When my erstwhile friend Tod said that to me seventeen years ago, I probably stared at him the way people stare at me when I say it, but it’s completely true. There’s little that’s more boring to me than films whose entire life-blood is their plot, or worse: the plot twist. I guessed the plot twist in The Sixth Sense as soon as he was shot and found the rest of the film grueling. I guessed the plot twist in The Others from watching the commercial. This doesn’t make me cool nor is it something I intend to do.

Ok, you knew it was coming: Deadwood is great because, while there is a plot there’s not much of a plot. The bad guy is going to destroy the world and we have to stop him! Yawn. In Deadwood, there’s no overarching seasonal bad-guy/serial killer/cylon/terminator waiting for a season finale climax battle scene. There are no unexplained mystery islands or evil preachers. (Have I mentioned in the last 5 minutes that Carnivale was the worst show evAr?) Deadwood just has a group of well designed characters acting and re-acting like people do in their lives. Of course there are the ebbs and flow of plot within Deadwood. If you’re a tried and true plot-watcher, you may even love the plot. It builds to a season finale like any other show, but if you’re not a plot watcher, there’s a very rich tapestry for you to enjoy. I can watch Deadwood over and over because it’s so rich. There are so many small things to notice specifically because it wasn’t written in service of the plot, but instead in service of the characters.

There’s a very strange juxtaposition that happens with film and television regarding the comedy and drama genres. There are a lot of television comedies that have no plot, yet very few film comedies can say the same. Most television and film drama is very plot heavy. However, there are a good number of film dramas that have no plot yet nearly no television dramas likewise. The huge problem with 99% of problematic film comedies is that they establish some stupid plot on which to hang jokes that they then have to resolve in the third act. All of this plot resolution apparently requires so much effort that there are no time for jokes.

This is why The Big Lebowski is such a classic comedy. There’s almost no plot at all and what little plot there is, you certainly don’t care about. He’s not saving the town, he’s not rescuing the girl from the rich land baron who wants to buy uncle touchy’s magic puzzle basement which just ain’t for sale, dammit! He just fumbles around and shit mostly fixes itself. Imagine how awful that film would be if he actually had to save her.

So why do TV sitcoms and the some movie dramas realize you don’t want a plot, but the movie comedies and the TV dramas don’t?


The blood it won’t wash off

So my Apple adventure ended yesterday. Five long months. I purchased a Sprint/HTC Hero yesterday. So far, there’s good and bad.

The Bad

It’s pretty buggy. Like the iPhone, the Hero has “virtual desktops” (to use a parlance I’m comfortable with, that’s not what they call them) but on the Hero each of the 7 desktops can be running what’s called a “widget” which is a smaller version of a given app. There’s a clock widget, a music playing widget, a browser bookmarks widget, twitter widget, etc. They’re good for info “at a glance” or whatever. You can also place application launchers on these desktops.

The configuration of these desktops, at least on the Hero, is called a “scene.” The phone ships with some scenes that are pre-populated and you can save scenes that you customize. Three or four times since I got the phone yesterday, my scene has completely disappeared leaving nothing on any of the desktops. Even one of the provided scenes (the HTC one) has lost its mojo and loads empty desktops when you load it. Not the end of the world, but pretty annoying.

Several times when doing text entry (mostly in the Marketplace) the text field I was editing would disappear as would the (not great) keyboard and I’d be back at the previous window with no obvious catalyst for this change.

The UI isn’t very responsive. It reminds me of our completely horrible DirecTV HD DVR, which will often take a long time to respond and when it does, it’s queued up every button you’ve pressed and does something you didn’t want because you thought it hadn’t seen your input. Same deal here. I find the “Phone” app really frustrating in that regard. I’ll try to hit the “make the dialer go away” icon and instead will click “Call” right next to it. What follows is a cycle of “OH CRAP END CALL…. END CALL…. END CALL… END CALL!!” only to have the phone see that as: end call, call, end call, call.

I’d read that the preview units were pretty sluggish and many of the video reviews demonstrated this by swiping around the desktops. I’d also read that the European version of the phone had some firmware update(s?) that addressed those issues. Those updates came out a while ago, so I figured that the US version of the phone likely had them. My phone has the most recent official firmware and I’m not ready to go unofficial anytime soon. It’s easy to blame sluggish performance on the problem I described above (queuing of events.)

Not that my iPhone (3G) had great performance, mind you. I finally got used to the fact that pulling the phone out of sleepyland and going into the SMS app would take 5 seconds of white-screen waiting.

The Hero supports Micro SD(hc) and the cards (as you’d expect) can be swapped with the phone up. You need to tell the phone to unmount the card, which I’m fine with. But, the Settings app is pretty clunky and it takes a while to find your way around to the menus you need for various tasks (this one included.) It also took me a while to figure out how to mount the SD card on a computer when the phone is connected via USB. You get a “notification” but the text wasn’t clear and I also didn’t know that clicking on notifications did cool stuff. Still beats the pants off the iPhone’s only supported method of connection: iTunes. Fucking iTunes. *spit*

I received the phone with about a 35% charge. I took it back to work and plugged it in via USB while fiddling with it thinking I’d be charging the phone. I didn’t gain much if any ground and later I found out why. Once I took it home and plugged it into my Lenovo a short while after messing with apps and so forth I got a message on the phone that said something like “The voltage from the power source is too low for current consumption. Please consider using the wall charger.” Wow! I was using more power than I was providing via USB. That was pretty surprising to me.

A friend has a G1 and he told me that he turns off WIFI and GPS in lieu of charging twice a day. I’d heard that the G1 didn’t have a great battery situation and that the Hero was better. I let the phone charge to 99% last night (wouldn’t go to 100) and I’ll leave everything turned on to see how the battery life is. I unplugged it 2hrs ago and it’s already at 87%, so I’m not hopeful.

On the iPhone, you’re protected from acci-dialing by the fact that there’s only one button (mac users aren’t too bright) and if the phone is asleep/locked and you press that button, you’re presented with a “swipe right to unlock” UI. The iPhone also has the option of a more complex “password” to keep unwanteds off your precious precious.

The Hero doesn’t seem to be able to lock without a more complex password. You can press the “hang up” button and the display will turn off. You can then press the Menu button and swipe down to get back to the phone’s UI. The sad part is that you can accomplish this same task by pressing Menu twice. If you carry your phone in your pocket like I do, that’s no good. I don’t want a more complex password because I like it that other people can get into my phone easily with a long explanation of how to enter a password. The guy at Sprint suggested that I could make my password be just like the iPhone non-password (just a swipe from left to right.) I don’t like that either because the user is presented with a password screen, not a screen that says “swipe left to right to use this damned phone!”

It’s entirely possible that the phone supports a non-password protected button-lock that I haven’t yet discovered in my less than 24hrs of owning the device.

When you first set up the device, it presents you with a bunch of social apps that it knows about (twitter, facespace, etc) among them is Gmail. I set up my Gmail during the initial setup and then when the phone was set up, I clicked the Email app and was presented with a choice of imap/pop or exchange. ??? Turns out there’s a separate Gmail app, but that wasn’t obvious.

Sadly, the Gmail app can only handle one Gmail account. I have an @gmail account, but I also use Google apps for my domains. Some of us also use Google Apps at work to avoid Exchange, and I can’t get to that either. Kind of a drag.

My work uses that atrocity Exchange and I wasn’t ever able to get my calendar to sync to it. It just said something like “Failed to create the account. Try again later.” Ah, later. Later is good. Maybe it was a Microsoft error.

Sprint bundled an NFL and a Nascar app that I can’t seem to delete. I hate having to see those icons.

The Good

Everyone else on the entire planet knew this, but I didn’t. When I bought an iPhone, I thought that I’d never ever pay for an app, but I was still curious about the applications. I went to install a free app, and was presented with a password dialog. What password? WTF are you talking about? Well I probably wrote all of this in my iPhone post, but here’s a quick recap: You need iTunes to use your fucking iPhone. You need it to set up a credit-card backed account that you can’t set up any other way… even if you only want to install free apps. When you do install an app, the AppStore app quits and you’re ejected to the apps menu so that you can watch your download progress.

In the Hero’s Marketplace app, you install free apps with no account. I’ve yet to purchase an app, so I don’t know how that works yet. What’s more, the Marketplace will tell you what “stuff” the app you’re installing has access to, saying that a given app will use the GPS or the network or hooks into how you make calls or SMS messages or whatever. It’s a nice touch. Further, when you click the install button, the phone tells you that your app is being downloaded in the background and you’re free to keep on shopping or do whatever you like. You know, what you’d expect in 2009.

Everyone knows that Apple is the king of multimedia. Everyone knows this, but it’s complete BS. I’ve made a few code-swarm/gource videos at work and my Mac-using co-workers always have trouble playing them. The guys using Linux never do.

I don’t know if you’ve ever tried to make a ringtone for the iPhone, but I feel sorry for you if you have. It’s a 652 step process that involves changing the extensions on files to “trick” fucking iTunes into letting you do something they’d much rather charge you for.

On the Hero, I can go to any music file on the device and with 3 clicks have it be the main phone ringtone. A couple more clicks and it’s a specific contact’s ring tone. It can also “crop” a song for a ringtone right on the device. I haven’t done that yet, but it’s there.

A reviewer I saw talking about the phone commented that it was much more “data oriented.” I have to agree. The Notifications area is spectacular. When I get a new email @gmail, the phone knows a few seconds later. When someone mentions me on Twitter, it lets me know. New IM’s, same deal. On the iPhone I’d have to launch each of those apps to know if there’s new data to be found for them. Short paragraph, but a big deal.

The phone synced my contacts from Google without me doing anything special. iPhone can do the same thing (although via iTunes! *SPIT*) Generally, the contacts handling on Hero is much nicer than the iPhone. The People app has an incremental search at the top. You can associate pictures from your photo albums to a contact. If you’re a Facebooker, you can see that person’s events. You can see a call history for a given contact and even email them and see emails from them.

This isn’t really the phone per se, but with Android, the users decide what’s a good app for the marketplace, not some evil corporation. There are also multiple marketplaces if that’s your thing. Maybe it means nothing to you, but having someone else decide what I can and can’t run on a device I own really bothered me.

A common dig at Android is that the Apple AppStore has way more apps. How many Fart Generators and Mr T Soundboards do you need? I’ve yet to not find an app I wanted. Many of the apps I paid for on the iPhone are free or have free equivalents that are just as nice on Android. I think I’ve read that 90% of the Android Market is free.

I can replace my battery if it wears out.

I can have unlimited storage via MicroSDHC cards. I don’t need a horrible application to put/get data on/from my phone.

My phone plays a wide variety of audio formats, including Ogg/Vorbis.

The display is brighter and the camera seems better (especially with low light) than my iPhone 3G. I recorded a test video and it looked pretty decent.

The Same

Both the AppStore and the Marketplace are HORRIBLE. Even with search they’re horrible. Why is it so hard?

When someone would rattle off the number of apps available for the iPhone, I’d always respond with “Yea, and you can see maybe 50 of them!”

For one thing the categories are way too broad. For another search results should show you how many results in each category so that you can make use of the categorization while searching.

On Hero, I searched for ‘better keyboard’ and had to wade through pages and pages of themes for the app before I got to the app itself. Exact matches should always float to the top.

Anyway. I have 30 days to decide if I want to keep this phone. It’s a bit of a gamble to keep it, as I’d guess that no updates will be released in that time. We’ll see what happens.


Aw hell, I lost my train of thought here.

In no order.

I’m a colossal sell-out. I own an iPhone. Trust me that no amount of hassle you might send my way will be greater than the amount of hassle I send my own way about it. I love having a real browser and some fun games all in my phone. I don’t love the massively inconsistent UI (well I sorta do because it gives me FUEL for my FIRE!) the crashiness, the slowness, the lack of multi-tasking and the leakiness. But most of all I don’t love that I was stupid enough to buy right before the next gen hardware comes out with stuff you might expect a phone this old to have.

The App Store is a bad joke. It’s impossible to browse in any meaningful way. It asks you for a password, but doesn’t explain *what* password it’s asking you for. I’m sure mac-droids “just know” but I didn’t. You have to have a credit-card-backed account to download free apps. You can’t make that account via a web page and you must install the second worst software on the planet, iTunes (MS Word, you’re still king!) to create the account. Why would they let you create it on your phone with a web browser when they can infect your PC too? For me this meant finding a windows install to put iTunes on. Thank god iTunes installs quicktime! I love that quicktime!

Anyway, blah blah blah. I feel like a failure and a sell-out. Apple you still suck.

Why not the G1? Apple holds the multi-touch patent! Thanks! Also inertia. I’ve been an at&t customer for a long time and I’m shockingly lazy. T-Mobile didn’t really help themselves though. I spent 45 minutes in their store waiting to talk to one of their customer service monkeys. They thought it was a better use of their time to help people who came in after me and whose questions largely revolved around nickel & dime stuff like pre-paid phones. Maybe that’s where they make their real money? Anyway, I tried to use it and it seemed clunky, but it also wasn’t on a network, so it was hard to gauge. The whole experience played on my spectacular laziness though, so I ended up sticking with what I had provider-wise.

Switched back to Debian for about 10 minutes at work. Couldn’t make the fonts look anything but horrible, so I switched back to Ubuntu which made me sad. Still can’t get a font that looks this good. Maybe it’s my white-on-black requirement like Happy suggested?

Steve Yegge has announced that he’s going to quit blogging. More sadness. I hope it’s a joke or that he changes his mind. He’s easily my favorite blogger by a very very large margin.

I bought a Flip Ultra HD 8G and think it’s pretty cool! It’s an HD video camera that’s about the size of a pack of cigarettes and costs about 200 bucks. Pretty fun. Their website sucks so they don’t get a link, but you know how to use a search engine.

Hey speaking of, has Google lost its edge or what? Seems like the last two months most of my searches have spam at the top. I’m getting way more spam in my inbox in my slower-than-ever google apps account too. What gives, Google?

After months of struggling with the very-crashy and 90s-web-design of MediaTomb, I found PS3MediaServer and it’s impressive. My favorite feature so far is the ability to rip DVD ISOs and play them on my PS3 over wireless with little quality loss. It’s the very first Java app that I’ve ever had a positive experience with.

I’m really really digging writing stuff in Ruby. I’ve finally started to get object-oriented programming and while I don’t see it as a panacea, it does make some things way easier.

While I love writing stuff in Ruby, I don’t yet love running stuff that’s Ruby. When you want to run a Ruby web app, and to a lesser extent when you’re writing Ruby, it seems like the documentation is written assuming you already know how to do it. This isn’t an uncommon problem with documentation. When writing documentation it’s difficult to think of the things you might not know, but Ruby (and Git) documentation seems especially bad about this. Maybe it’s just that those are the two things I’ve been trying to learn lately.

As if you’re still reading. Ha!



I make blogging too hard. I always think I have to be writing something important and that’s just untrue. So here’s a small collection of thoughts since I last blogged.

Yaketystats 2.1 is out. I feel like we’re floundering exposure-wise. I really think we have the best product out there, but no one seems to care. We’ve talked about writing an article for a Linux mag and doing an OSCON presentation, so maybe that’ll help.

Firefox in Ubuntu has been driving me crazy for the last several months. My work machine is an 4CPU 8G atom-smasher and FF is still crazy slow. Like you’d laugh and ask “how is that possible?” slow. I don’t have many extensions, and it seems like my box should be able to handle tons of extensions, but I regularly find myself waiting several seconds for a new tab to be usable and I’m always waiting for text boxes to catch up to my typing. It sucks.

I’m also really frustrated with Ubuntu in general. Coming from Debian where in-place upgrades are the norm, it’s really weird and sad to read that reinstalling come upgrade time is the norm in Ubuntu culture. Sure you can upgrade in place, but it’s fraught with peril and things often don’t work right. For instance, I finally got my laptop wireless working in 8.04, but it didn’t survive the upgrade to 8.10 and I can’t make it work at all now, so I’m living in Vista. Don’t get me started on Vista.

There are a lot of cultural things about Ubuntu that just rub me the wrong way. I guess I’m getting old. As much as they do to make it all work together and feel cohesive, to me it feels very tenuous and fragile. If NetworkManager (for example) doesn’t work for you, well sorry, you’re just fucked because that’s the Ubuntu way to do it and you’ll be swimming upstream the rest of your Ubuntu-life if you try to do it another way. PulseAudio is another example of this.

BTW, when did “for example” cease to mean anything? It’s like banner-ad blindness; people don’t even hear it anymore and immediately start arguing the details of your example ignoring the point you were trying to make by using the example. It’s one thing to say “Well, I see the point you’re trying to make, but I don’t think your example supports your point and here’s why,” but that’s not what I’m talking about. I’m talking about “Oh, since you brought up X, let’s argue about that now and I’ll completely ignore any point you were trying to make when you brought X up.”

I started twittering but I don’t expect it to last. Having not grown up with Twitter, it seems like they make finding your friends overly difficult. Searching by invite/email address? Really?

I recently bought a Greg Bailey Custom guitar. The guitar used as his horrid background image, in fact. It plays and sounds great. It’s the second aluminum instrument I own and is very very different than my Travis Bean. Maybe I’ll put some experiments with my new ElectroHarmonix Hog on youtube sometime. The Hog is an extremely fun device.

I wish I could find an acoustic that’s as nice as my Travis Bean. I’ve got a $2k Taylor. After a few years it’s not holding up very well and my initial annoyances with it are only magnified now. I got really lucky in that I have a friend who owned a Bean enabling me to find out how fantastic they are. I lack friends with kickass acoustic guitars (vintage or otherwise) so it’s hard to even know what’s out there and what I’d like. Acoustic guitar shops are usually far too uptight for me. It’s almost as if you’re supposed to buy the guitars w/o playing them.

I’m reading Steve Pinker’s The Blank Slate and enjoying it very much. It’s one of those books that really makes you examine yourself and your dogma. In some ways, though, it’s a bit of a motivation killer. I have enough problems with motivation/feeling like part of the machine/etc without feeling like my identity isn’t even cohesive. :)

I guess that’s as good a thought as any to leave on. UNTIL NEXT TIME!


YaketyStats Released!

A lot like real excrement, it’s a lot harder to give shit away than it is to make it!

It’s hard to believe just how much work we put into being ready to give this software away. You see, when you write something for yourself –and remember that YaketyStats has been in use for 3 years or more in one form or another by my work– you can make all kinds of assumptions about the environment and you don’t have to document anything because if you have a question, you just ask a co-worker.

However when you give it away, first you have to yank out all of those assumptions. That takes a very long time because it’s a hard thing to think about. Confirmation bias ain’t just about new information, bubsie. While you’re tearing out assumptions, you’re making new bugs. You’re fixing old bugs that didn’t really matter to you, but would probably matter to others. Your bug fixes make new bugs. You start to have confidence issues about anyone wanting your crappy code anyway.

You have to make a website, and like all of the rest of this, it’s way harder than you’d think. You can go with the siloed antiques you know (Mediawiki and Bugzilla) or you can try something new on a platform you’re uneasy with (Jira/Redmine) and then there’s all of the time you spend vacillating in between. Don’t forget the time it takes to set it all up and tear it all down, to learn about the new platforms… you get the idea.

Once you pick your website stack, it’s time to document your every little thing about your project. You get to document how to install it, how to use it, why it does all the crazy crap that makes sense to your environment and possibly no one else’s. You word it, you re-word it. You wonder if you’re still making assumptions. You are making assumptions. You re-write it again. You re-organize it. The new organization is better, but you need to re-write some if it to fit the new organization.

Oh, and the whole time you’re doing all of this you’re wondering to yourself if you’re throwing a party which no one will attend.

Then the release date you thought for sure you’d make comes and goes and you make a ton of last minute changes. You drop your “announcements only” WordPress install in favor of using the semi-crappy News feature of Redmine. You re-organize all of the documentation again. Then you try to write a “press release” and ZOMG BBQ lemme tell ya — writing press releases is something that I am in no way equipped to do. So then you enlist the help of others. These others are much more tuned to writing this sort of copy, but they don’t really know your software or why it’s cool and different. You’re grateful in any case. This is the best that the blind leading the people who don’t know where we’re going can come up with:

Athens, GA (Oct. 14, 2008)

We’re happy to announce the WORLD-WIDE release of YaketyStats, a new tool for gathering and graphing statistics about your UNIX/Linux systems.

It has an intuitive, AJAX-powered web interface for graphing data. Graphs are built on the fly, can contain stats from multiple systems and include “Google Maps”-like dragging.

YaketyStats is easy to install, maintain, and extend and is free Open Source software licensed under the GPLv2. YaketyStats supports Firefox and is built on Perl, PHP, and RRDtool.

If you’re tired of having to micro-manage your existing stats system or you don’t have one, you should check out the YaketyStats website and demo video at

I’ll pretend it’s tomorrow and publish this now.


Type less, smile more

How many times a week do you type /etc/init.d/blah start and then you realize you’re on HP-UX and it’s /sbin/init.d/blah Forget it.

# Turn on extended globbing and programmable completion
shopt -s extglob progcomp

export MYOS=$(uname -s)

if [[ "${MYOS}" = "Linux" || "${MYOS}" = "SunOS" ]] ; then
export INITDIR;

function RCCT () {.
    if [[ -z "${2}" ]] ; then.
        ls $INITDIR; 
    elif [[ "${1}" = "Start" ]] ; then
        cd / && $INITDIR/${2} start ; cd -;
    elif [[ "${1}" = "Restart" ]] ; then
        cd / && $INITDIR/${2} restart ; cd -;
    elif [[ "${1}" = "Stop" ]] ; then
        cd / && $INITDIR/${2} stop ; cd -;
    elif [[ "${1}" = "Reload" ]] ; then
        cd / && $INITDIR/${2} reload ; cd -;
        echo "Something bad happened.";

function _myservices() {
    local cur
    COMPREPLY=( $( builtin echo $INITDIR/!(*.rpmsave|*.rpmorig|*.dpkg-old|*~|functions)) )  
    COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($INITDIR)/}' -- $cur) )

function Start () { RCCT ${FUNCNAME} ${*} ; };
function Restart () { RCCT ${FUNCNAME} ${*} ; };
function Reload () { RCCT ${FUNCNAME} ${*} ; };
function Stop () { RCCT ${FUNCNAME} ${*} ; };
complete -F _myservices Start Restart Reload Stop

You might be thinking that RCCT is pretty ugly and it is, but it’s complete-able, so it all shakes out. It also starts and stops services with / as the working directory which is a good idea if you’re dealing with Solaris or HP-UX.