• 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.