On the TSA

I’ve flown a fair amount over the past few years, through many airports in the US and abroad.  The International Terminal at SFO was one of the first places I regularly fly through (Virgin America’s HQ/hub) that had “Advanced Imaging Technology” aka the porno-scanner installed.  Still, with the ability to choose your line (and looking on with some morbid fascination that people didn’t realize what they were exposing and being exposed to), I was able to for the most part, avoid this particular security theater for quite a while.  It wasn’t until this spring that I was finally confronted with having to opt out – which I did.

Like many others (and a couple friends it turned out), I experienced first hand TSA’s efforts to berate and attempt to humiliate me, which seemed like SOP to cow myself and others into not opting-out.  This, btw, included repeating the lie that this wasn’t an abrogation of the 4th amendment (which apparently some people fought about a while back and started some country or something), and that I had no right to fly. As pointed out in a recent thread, this is patently not the case either in law (“A citizen of the United States has a public right of transit through the navigable airspace”) or in case law (Kent v. Dulles (1958) – “The right to travel is a part of the ‘liberty’ of which a citizen cannot be deprived without due process of law under the Fifth Amendment”). This was pre “enhanced pat-down” aka groping of the genitals (FYI, the San Mateo DA has promised to prosecute inappropriate pat-downs as sexual assault). In any case after an exchange with @TSABlogTeam that about my treatment, I filed an official complaint online, which obviously had no effect whatsoever.

It’s somewhat of a relief to see this finally get some mainstream attention, and for people to really start thinking about what a decade of the TSA and it’s accompanying security theater really means.  In my view, even leaving out the basic civil rights issues, on the issue of basic competence and effectiveness, there has been a serious lack of overall seriousness in actual security – professionalism and training of agents is severely lacking and uneven, and the (completely arbitrary, ever-changing, secret, and again, unevenly applied) rules are mostly hare-brained and don’t pass basic common-sense sniff tests (much less any formal analysis of effectiveness, or real security/threat modeling).

At this point, a decade in, the TSA is a complete failure.  It has no credibility, even as security theater. If it were up to me, the only way that the TSA would be allowed to continue is that, as suggested on this recent GovLoop thread, that a serious government or independent panel were to publish cost/benefit and full risk analysis studies of their procedures.  Beyond that, public accountability in the form of published results for regular pen-testing/other basic quality assurance procedures to make sure that guidelines were being followed and that citizens are treated, well, as citizens would be another requirement.  The TSA as it stands, both as an institution and as an organization betrays the principles and basic laws that the US was founded on, paid for in blood by our predecessors.

That being said, my hopes are dim for any real reform to happen.  It’s probably best summed up in this comment from that same GovLoop thread. (This comment is what finally got me to sit down and write down some of my thoughts on the matter):

6. We are not talking inconvenience. We are talking abrogation of fundamental 4th amendment rights and the reduction of our society to a thinly vieled police state. The most shameful aspect of the entire situation is that we allow TSA and other law enforcement agencies to slowly and steadliy chip away at our freedoms because we are too scared or compliant to resist. I fly about 2-4 times a year, usually for vacations and will continue to do so. I have and will continue to stand in the machine and allow TSA work their will because I am more interested in getting on with my trip than in standing up for my rights. I am ashamed of this fact and bitterly resent TSA for forcing me to realize that in at least one sense, I am a moral coward. I strongly suspect that a large part of the backlash currently directed at TSA comes from people who share my views, share my moral cowardice, are equally ashamed of it and are looking for ways to resist without ending up on a no fly list.

In all likelyhood TSA will “win” this fight. Our rights will degrade a little more each year and few if any of us will ever offer any meaningful resistance. It is a sad commentary on our nation and our culture that we have allowed and will continue to allow law enforcement (not just TSA) do erode our basic values and do more harm to our nation than any terrorist could hope to accomplish in their wildest dreams.

For the first time in years, I don’t have any flight plans lined up.  It’s a good opportunity for me to think long and hard about what the correct moral stand is.

The iPad While Travelling

I’m actually about to head out on another extended trip (3 weeks in Taiwan, 2 weeks in Japan), but I thought I’d take a few minutes to write up how the iPad was on my first long trip (to Australia, Fiji) while it’s still somewhat fresh.

It was definitely convenient on the long flights to and from Sydney (about 14 hours each way) and I barely broke out my laptop on both those flights – while the 16GB is fine for most uses, when you’re putting on HD movies that are 4-8GB in size… well, there was definitely some laptop swapping (definitely cursing iTunes and wishing the iPad had some way to read external storage directly). As an aside, I highly recommend MKVtools, which will do intelligent container shifting for many devices. For the iPad, you usually won’t need to re-encode the x264 video track, just the audio (usually AC3 or DTS) into AAC.  It’s a one-click operation for the iPad, and is much faster than transcoding (taking about 10 minutes instead of 10 hours for a movie). It’s free to use one-by-one, but totally worth the $5 to unlock queueing of encodes.

I flew economy on VAustralia, which while not exactly cramped, was certainly more comfortable with the iPad than a laptop open.  In economy, the seats also had USB power, which was also convenient, although if you’re fully charged up, actually unnecessary.

I ended up carrying my iPad just about everywhere, as I picked up a free data SIM (see my previous mobile data writeup) and had a perfectly sized bag. (only $20, and with just the right amount of extra pockets, super recommended.) The nice thing is that unlike my trusty Chrome bag when loaded with my Macbook, there wasn’t really a moment where I felt dragged down, even going up and down Sydney’s biggest hills. (I know, right? Who knew? Sydney is super hilly!)

While I had my laptop nearby most of the time, I decided to head to Fiji with just my iPad to see how well that would work out.  While that wasn’t too bad, it was mostly due to my being mostly disconnected (there was very little wifi and I barely got mobile data working at about $2/MB with a Vodafone Fiji SIM). I found that there were a couple times where I wanted USB charging and transfers, mostly for my camera, but also when I rented a car and it had an SD slot in the stereo. (!)  The iPad did, however work with the prepaid internet access at the airport despite the system’s warning that browser popups needed to be supported.

It was an interesting experiment, but even not doing any work, it seems that the iPad isn’t quite there yet as the only thing you carry traveling.  Not if you plan on taking photos or want to move any files around.

So that’s it for my iPad report.  The Toshiba AC100 is out in Japan, Taiwan, and in Europe, so that’ll probably be the next report (maybe, unless Apple releases a dead sexy 11″ Macbook Air, or I’m magically swayed by the Vaio X; I’ve written at length, however, about why I’m particularly interested in smartbooks, even over other ultraportable options).

Mobile Data While Traveling

Over the next few months, I’ll be heading to a few different countries. Fred Wilson wrote a post the other day about his experience roaming with his family in Europe.  In my experience, having an unlocked world phone (quad-band GSM is easy, appropriate 3G unfortunately, not as much) and picking up local prepaid SIM cards seems to be the best strategy. (I care a lot less about number porting than having data access. If you’re more interested in the former, hop on over to Wilson’s blog and take a look at the comments there.)

For those interested in the details of the different 3G bands, in the US, AT&T is on band II (1900MHz) and band V (850MHz) and T-Mobile is AWS band IV (1700MHz/2100MHz).  Other popular bands include band VIII (900MHz) in parts of Europe, Asia, and across Australia and Band I (2100MHz) in Japan, and across Europe and everywhere else. Most 3G phones are dual or tri-band (a Nexus One for example comes in two flavors, one supporting 3G on band I (2100), IV (1700), and VIII (900) and another supporting I (2100), II (1900), and V (850)).  Nokia’s N8 was the first penta-band phone supporting bands all the aforementioned bands, making it a perfect world phone – well, except that it runs Symbian.  The iPhone 4 is also a penta-band phone; instead of band IV (used by a few carriers the US and Canada) it supports band VI (used by DoCoMo in Japan). The iPhone 4 has apparently been successfully unlocked, but the unlock hasn’t been released quite yet.  The best news updates for unlocks are probably directly from the dev-team blog.

OK, now onto some research (various useful links, some good for multiple countries referenced inline):

  • Argentina
    • I’ll just mention this since I didn’t ever get around to finishing up my Buenos Aires writeup, but I did do a fair bit of writing about my mobile phone experience there. The Prepaid Wireless Internet Access wiki page corroborates my experience – Movistar’s datos special at ARS$9 for 2 days/1GB access is pretty reasonable. At current exchange rates, that comes out to $1.15/day. PrePaidGSM is a good place to find rates.
  • Australia
    • Quite civilized with lots of options. Virgin Mobile has a great deal: 30 AUD ($25 US) gets you 28 days of 1.02GB/data and “$150” in credits (calls are 90c/min (167min of talk time), 25c/txt (600 texts)). Virgin Mobile is an MVNO on Optus 3G, which runs at 900MHz/2100MHz HSPA.  Optus offers super-cheap calling but no data. 3 offers a pretty great deal on an iPad microsim – if I’m reading it right, it’s 15 AUD ($13 US) for 1.7GB of data. Telstra has options as well, but is more expensive overall. The most useful comparison site I found for Australia was: http://prepaidplans.com.au/
    • Update: In Australia, I went with Virgin Mobile (picked up the SIM at a convenience store for $2 AUD and after some bumpiness setting up online (apparently their activation servers were having problems that day)) and it’s been great in Sydney. Will update w/ how it does in Cairns. Picked up a 3 microsim for my iPad at a 3 mobile shop – it comes w/ 200MB/30 days for free which I’ve yet to use up. You’ll need your passport number to activate the 3 SIM online. It seems to work ok except occasionally I seem to need to go in/out of airport mode to get it to start transferring data. I’ll be heading to Fiji for a couple days – a quick search online shows that only Vodafone roams there – I might just go sans-connectivity there.
    • Update 2: In Cairns, 3 was a bust – only roaming, so no cellular data on the iPad. Virgin Mobile (Optus) was a bit spotty. 3G worked fine in the Airport, downtown Esplanade, and (what!) by the reef, but only worked sometimes from my hotel (11th floor, just north of the Esplanade across from the Volleyball courts / skate park). I found myself breaking down and hanging out at the Macca’s (that’s Australian for McDonalds) one night, which had free wifi (although my 3G there was strong, and much faster – 1Mb+ down). There were a lot of Japanese backpackers hanging out there.
  • Fiji
    • I picked up a Vodafone FJ SIM (Vodafone and Digicell are your two choices). There’s no good data plans, you’re charged by the KB (something about $5/MB), although you can get m.facebook.com for free. Even with the proper APN setup and whatnot, was still more difficult than expected to get reliable mobile data.  Internet access is available for about $1/hr or so at Internet cafes and hostels. Once you’re headed off the main island, all bets are off for service.
  • France
  • Germany
    • Tchibo offers a montly rate of €9.95/30 days, throttled to 64 KBit/s after exceeding 500MB, or  €19.95/30 days, throttled to 64 KBit/s after exceeding 5000MB.
  • Japan
    • There are conflicting reports about prepaid SIMs. You can rent one, but the data rates look pretty ugly (charging by the packet!!!). Here’s a post with some more information on using a SoftBank SIM w/ an unlocked iPhone. There’s also a company renting Android phones/iPhones for $85/wk. Weak sauce, Japan. Weak sauce.
    • Update: While in Taiwan, I’ve done some additional research. The Softbank SIM rental comes out to $1.20/day, which doesn’t seem bad, however, mobile data is charged at an extortionate rate of $31/MB. The iPhone SIM has a $426 charge cap for the month of data (gee, thanks). The regular data SIM… seems to not to have a cap at all. A company called Pupuru rents data cards (mobile broadband) for about $120 for 11-20 days. This is about the best I can find (unless you get a used b-mobile card – it’s a decent deal, but sells as $480 for 150 hours of usage). JCR corp now has iPhone4 rentals ($160 for 2 weeks). A SIM card rental is $235 for 2 weeks. (special note: most of these you need to reserve days/weeks in advance) Hey Japan! Get with the program. Your mobile data pricing sucks.
    • Update 2: The JCR rental ended up costing about the same with all the fees added in, but was still worthwhile. I’d definitely recommend it. I also went and picked up the b-mobile U300 microsim @ Bic Camera. No one knew what I was talking about, but I got it (about $150) and it worked great, if somewhat slowly after a brief trouble with setup. Having data on the iPad was a real lifesaver quite a few times (booking hotels, etc), so if you have a budget, I’d also recommend it.
  • Taiwan
    • This Singaporean forum thread was useful in getting started.  It looks like you can pick up data SIMs from any of the major phone companies at the airport for about 400 TWD ($12.46 US) for unlimited data for 5 or 7 days.
    • Update: Getting set up was easy breezy. Just turn right after exiting customs at the airport to get to the mobile kiosks. I bought a Dageda (Taiwan Mobile) 3G SIM (they also offer a MicroSIM) which provides voice and data. Data cost is 350 TWD/5 days (~$2.20/day) for unmetered 3G. I also bought a Chunghwa 3G MicroSIM. Their voice/data SIMs for prepaid only have expensive metered usage, but the data-only SIM was a good deal: 850 TWD (~$27) for one month, unmetered 3G.  Speed tests gave me a reliable 1-2MBps download speeds.
  • UK
    • I’ve had a decent experience with T-Mobile UK (have picked up SIMs at Carphone Warehouse). They used to have a day rate, but it appears to be even cheaper now. Unlimited internet for the month for 5 pounds. (Double take on that, but looking at 3’s rates, which comes with 150MB free per top-off, and maybe those rates are just what happens when there’s decent competition.)

Perhaps of interest may be to comparing these rates to the US.  If you’re interested in prepaid mobile data, there’s Virgin Mobile’s Broadband2Go, which is data only $40/mo for unlimited data 1GB or $60/mo for 5GB (Virgin is a Sprint MVNO (and subidiary now), so it doesn’t have SIMs), Simple Mobile (T-Mobile MVNO) that has a $60/mo plan w/ unlimited voice, text, and data (“unlimited” data apparently = 1GB), and AT&T offers 100MB for $20 as an addon option for their GoPhone SIM. T-Mobile has no contract data-only plans as well, their best being $40/mo for 5GB, but it’s a bit unclear if signing up is more involved than regular prepaid solutions. Still, overall, it seems pretty grim.

I’d love to hear experiences people have had w/ prepaid 3G data in other countries. My next three countries are Australia, Taiwan and Japan.

You’ve Either Shipped or You Haven’t

scraplab — You’ve Either Shipped or You Haven’t (via waxy)

You’ve either shipped, or you haven’t. You’ve either poured weeks, months or even years of your life into bringing a product or a service into the world, or you haven’t.

But whatever you do next, you’ve shipped. You’ve joined the club.

And the next time someone produces an antenna with a weak spot, or a sticky accelerator, you’re more likely to feel their pain, listen to their words and trust their actions than the braying media who have never shipped anything in their lives.

Performance Comparison of Image Libraries

For the past couple years, I’ve been using the Python CoreGraphics bindings to do some of my image manipulation. While a bit more complex than I would have liked for setup (dealing w/ context rotations and other scaling math was a bit of the pain), it otherwise worked great (and more importantly, right out of the box) on Leopard. Unfortunately, with Snow Leopard, the CoreGraphics library was unceremoniously (as far as I know, without any sort of announcement or acknowledgement) deprecated. It’d only work in 32-bit mode and more troubling, certain Context calls that used to take floats now required CGFloats. Not so much of a problem… besides the fact that even after much research and poking, I found no way to instantiate a CGFloat (there’s an undocumented CGFloatArray call, but that just gives you uninitialized CGFloats w/o a good way to assign them).

As has been the trend, I’ve been isolating/switching more and more of my code from anything that touches Apple libraries. I’ve come to the conclusion that they just don’t give a shit about breaking your code (much less care about fixing or even responding what they’ve broken). It’s incredibly off-putting. In this case, it’s unfortunate, as the CoreGraphics code performs much better than both PIL and ImageMagick (I would have tested GraphicsMagick as well, but it doesn’t support the chaining features I needed for my particular resizing/layout operations).

CoreGraphics Python w/ kCGInterpolationHigh
real     0m1.885s
user     0m1.456s
sys      0m0.400s

PIL w/ Bilinear Filter Resize
real     0m3.380s
user     0m2.981s
sys      0m0.365s

32-bit Static ImageMagick
real     0m7.125s
user     0m9.730s
sys      0m0.652s

32-bit Static ImageMagick w/ Box Filter Resize
real     0m4.237s
user     0m4.438s
sys      0m0.636s

64-bit Shared ImageMagick
real     0m6.080s
user     0m8.495s
sys      0m0.366s

64-bit Shared ImageMagick w/ Box Filter Resize
real     0m3.268s
user     0m3.599s
sys      0m0.331s

A few things worth noting:

  • I try to use the system Python. After all the problems w/ 10.5->10.6 though, I am reconsidering.
  • PIL seemed to easy_install well (w/ a binary egg no less) on my 10.6 – I’ll have to test on a clean system to make sure I hadn’t made my life easier w/ MacPorts or something, but this is a huge improvement over the problems surrounding installing PIL on 10.5, which was what actually drove me to use the CoreGraphics Python library in the first place. UPDATE: on a clean 10.6 install, it compiles, but doesn’t have JPEG or FreeType support. waah wahhh
  • ImageMagick defaults to Lanczos filtering by default, which is quite slow. Testing out various filters, Box filtering was about twice as fast and for my test images had neglible-to-nonexistent image quality differences even under the loupe. Definitely worth poking around a bit if you’re trying to get better performance.
  • The 64-bit shared lib version of ImageMagick is fair bit faster than the 32-bit static version. Until I’m all on 64-bit hardware, is a bit of a moot point to do further testing though. I’m assuming the extra sys time is due to the staticness and the remainder is due to 64-bitness.
  • Given roughly equivalent performance between PIL and ImageMagick, I’ll be going with ImageMagick for the additional flexibility/features it provides.
  • Although it doesn’t work for this particular set of operations, I wanted to mention that Marc Lyniage’s CoreImageTool is just a wicked, wicked piece of software. It of course has all the CoreImage caveats though, especially if you have to deal with Intel’s crappy GPUs (*fist shaking*)

Evo: Initial Thoughts

I’ve spent about a week living with the HTC EVO 4G, so I figured I’d write down my initial impressions. First of all, on the whole, I’m pretty happy with the phone although there are some rough edges. The physical device is pretty solid and it’s quite capable. It’s definitely good enough (and in some cases, best of class) for day to day use. I’m also having a lot of fun poking around with it, although in some cases I find that I’m able to push things too far.

Second, before proceeding, I’ll also mention that the iPhone 4 looks great. The industrial design and overall capabilities are impressive and I believe that overall, it edges out the EVO. While I’m less enamored w/ iOS these days, iOS 4 both adds some much needed capabilities (fast task switching, backgrounding for specific services) and maintains a huge lead over the competition in terms of polish and “just workingness.” That being said, I’ve been digging Android a lot more these days. It’s amazing how far it’s come in a year. It’s definitely crossed the “actually usable” bar and it’s strengths are really coming into play. Most notably: a great security model and APIs with full access to the system allowing developers to create a much larger variety of interesting and unique apps, and its web-native paradigm (syncing to the cloud instead of the being forced to plug into a USB port and a desktop application).

Now, onto some observations. First a look at the hardware/form factor:

  • The phone feels super solid. It’s got a good heft to it, but spread over a larger area, it’s not too bad.
  • The size of the device is, of course, big, but because it’s relatively thin, it feels pretty good in my hands, so no real complaints there.
  • There’s only 2 physical buttons: a power button on the top, and volume rocker. Both have good actuation and and very little play. I’ve noticed that when turning on the device initially, the power button is a bit fussy, but for waking up, it’s fine (well, the location could be a bit better, finger feel-wise, I have to hunt a bit even after a week). Because the buttons don’t give, I am running an app called No Lock that both gets rid of the lock screen and allows me to use the volume buttons to wake the phone.
  • There’s a charging LED on the left side of the top speaker, but it doesn’t seem to be used for notifications (?). Rather, an LED lights up the bottom row of capacitive screens, which is pretty neat.
  • The camera is pretty good in decent lighting. I may be convinced to carry around a macro lens
  • The capacitive button row on the are sometimes overly sensitive – I seem to accidentally trigger something fairly often. I don’t know if this is related to my specific phone
  • While the build quality overall feels good (no creaks, etc), I’ve noticed (as have some others) that there’s some backlight bleed at the bottom – which in my unit is actually accompanied by some flex on the bottom corners of my unit. They’re actually very slightly elevated (not flush) with the edge and seem like they’re “popping out”, for lack of a better described. I may be annoyed enough to check if this is normal and if not, exchange it soon.
  • Update: an additional caveat is that apparently, like the Incredible, the EVO touchscreen is improperly grounded. This means if you are only touching the screen (say putting it on a table or dock w/o a USB cable), it doesn’t respond to input. (I just tested it and it appears to be the case. Boo-urns.)

Some standout points:

  • Battery life is so-so. About 10-12 hours with regular usage (shorter when using lots of GMaps nav, but not as bad as Sprint Navigation on the Palm, which just chewed through battery). Idle drain is about 4-6%/hr. I think it can be better (others have reported much better life), so I’m currently monitoring with JuicePlotter and SystemPanel although what I’d really like is to be able to export stats (linked w/ say the detailed battery/app use stats built into Android). I have JuiceDefender and Tasker installed, but have yet to set those up. So far, I’ve been able to be near a plug, but when I’m traveling/out and about, I tend to need 15-16hrs on a charge. There are some replacement batteries that claim 1750/1800 mAh, but those claims may be suspect. Instead, I picked up 2 generic batteries + charger for $11.49 shipped (from HK). Hopefully they aren’t too weak (still, that’s just an insane price).
  • Google Maps is really good. Beyond the features, traffic and transit overlays, transit, biking, and walking routing, and of course navigation, It all navigates super smoothly, with lots of great touches (the 3D angle changes as you zoom in and out, for example). Constantly impressed using this (which I’ve been using in LA pretty much every day this week for real time traffic). If you use maps a lot, this is the gold standard.
  • The voice keyboard is surprisingly useful in LA.
  • Because the Android API/security model is more flexible, there are much more interesting apps. From things like call and SMS schedulers/bouncers, call graphs and analysis tools, to apps that replace default functionality, there’s just a lot of really cool stuff that integrates into the phone much more organically. Even with regular apps, thanks to intents, they extend the system functionality much more organically. I’m very impressed. Of course, w/ 2.1, app space is still limited. The EVO only has 400MB of space, and it seems to start freaking out if you start getting down to the low memory warning (40MB)

OK, and now onto general experience, etc:

  • Initial setup (well, after getting the phone, after getting through Sprint’s overloaded activation system) was completely painless. My Palm Pre and Apple address book were already synced to Google’s address book, which populated on setup. Facebook, Twitter, and (an HTC addition) Flickr logins were similarly trouble free. One other note: my Sprint rep did the initial activation without taking off the factory plastic. I totally approve – the customer should get the privilege of laying first fingerprints (or screen protector) on.
  • ZOMG there’s a metric crapload of bloatware on the phone (Sprint “Zones” and lots of other Sprint apps are set to load on boot). I’d also put most of the HTC Sense widgets/components in this category, although I will make an exception for their Flickr sharing add-on. It’s seriously slick. That being said, it doesn’t keep me from looking forward to installing a clean 2.2 ROM ASAP.
  • It also pushed me to get a task killer. After trying out a half dozen of them, I ended up with TaskPanel. It has a fairly clean design, lets you set up an ignore and auto-kill list and has a “kill all” widget, and can be set to auto-kill on phone sleep. I also installed Startup Manager and have been removing things as I’ve been bored (it’s slow and there may be something better, but it seems to work. The latter requires root to work.
  • Rooting the phone was just about the first thing I did when I got it. It’s a somewhat involved process, although relatively straightforward (alternatively, there’s a dead simple way for running root apps, but it doesn’t let you boot into recovery).
  • Root also allows wireless tethering (use the latest build). This works perfectly for me on my Mac (it currently only provides sharing in ad-hoc mode, which is problematic for some devices/computers), but is also being actively made better. For example, infrastructure mode should be coming soon.
  • Overall, the phone is pretty responsive, although much less smooth than the iPhone (apparently the EVO is worse in this regard). The default zoom animation also much too slow.
  • The overall combination of using long-presses as a convention for menus and apps often makes functionality hidden and requires hunting, but once you get used to it, it becomes just a very low-level annoyance.
  • The notification windowshade seems easier to drag, although I do admit to being a bit spoiled by being able to bring down options from the top right. Most of that functionality is replaced by the default Power Bar widget. The global notification focus stealing problems I had w/ 1.5 seem to have been fixed (at least I haven’t noticed problems while typing emails, etc. yet), but the test case I use (searching for an app while in the Market and waiting for a previously downloading app to finish installing) does still trigger this problem (causes the search box you’re typing in and everything you’ve typed to disappear). This may be localized to a single app, or single app notifications, but definitely happens.
  • I dig the multiple desktops (and the expose-style viewing), although having to long-press the Home key to switch to recently used apps is much less satisfying than Palm’s cards (I would rather have an expose-style view for running apps).
  • I replaced the Sense Launcher almost immediately, first with ADW.Launcher, and then with LauncherPro – both of these are much cleaner than the Sense Launcher. ADW has better (page-based) dock, and LauncherPro lets you have 5 rows on the desktop. They also both let you easily uninstall apps from desktop (hold icon over the trash can for a second), which is awesome. The dock is still fairly ridiculous, as it’s alphabetical, making it much more difficult than it needs to be to find apps you’ve just installed. What I’d really like is a way to re-order icons by recency or to have a recent bar or something. At least it remembers your scroll position now.
  • While I’m on the complaining about Sense train, the call answering screen is also strangely unresponsive. While I have missed any calls, it is very disconcerting, as it doesn’t update immediately when you’ve pressed “Answer Call” so you can’t see if it’s detected your pickup or not. Not very happy with that.
  • Also, being able to do your own customization means that most of the horrible Sense applications can be replaced. The keyboard I’ve replaced with Swype (the only negative being that it doesn’t have a “voice” button – Google’s system-wide voice recognition system really is magical), and there are plenty of other choices. Also, I’m using Handcent as my SMS app – it’s great, and if you follow the link, you’ll see the screenshot for what the quick response popup looks like.
  • There are many options for most categories, I’ve been downloading “all” of the apps in certain categories and then culling. I had a max of about 270 apps installed, which Android just didn’t like. Trying to “manage” the apps from the system settings took forever, I was hitting the aforementioned app storage limits, and both ADW and LauncherPro started going into conniptions and frequently force closing. After some culling, I’m currently at 237 apps, and things seem to be OK. I’ll probably be only retaining one or two apps in each “category,” but worth mentioning that Android is quite happy to let you shoot yourself in the foot.
  • To help manage those apps, I’m using AppBrain, which, while not perfect, at least makes installation a little less painful by allowing you to queue up items. Still, I’m basically just ignoring updates until 2.2 (auto-updating, update all) – it’s just too painful in the 2.1 Market. Also, I’m using Smart Shortcuts instead of folders on my desktop – it’s not as slick as iOS 4’s system of auto-naming, but it gives a fairly easy single interface for organizing apps. I’m not entirely happy with it as again, it sorts alphabetically, so as you add apps you lose positional muscle memory of app locations, and it’s popup animation is about 100% too slow.
  • DoubleTwist is a pretty decent music player (no widget currently), but I’m most impressed by the streaming options. Here’s what my music desktop looks like currently. And of course, it’s so nice to have Shazam again.
  • While I’m mentioning apps, I wanted to also mention twicca – after going through the top Twitter app contenders and spending some time with it, I have to say that (if you use a single account) it’s probably the best Twitter app I’ve used on any mobile platform. I’m very happy with it and also impressed by some of the unique features, like being able to assign actions to hard buttons (I’ve set volume up/down to jump to the top and bottom for me).

OK, in the interest of actually publishing this and getting some real work done today, I’ll stop here. I’m sure that after a couple months of usage, I’ll have some more to say. Hopefully by then, I’ll be on an AOSP 2.2 ROM. I’ll see if I can easily export an App List as well, and will probably create an EVO page to aggregate all this.

In conclusion, if you’re on Sprint and looking to upgrade, the EVO is a no-brainer. It’s far and away the best handset Sprint offers. I’ve been very happy with Sprint the past year, and their pricing, even with the $10 EVO fee remains competitive. That being said, there’s basically almost equivalently spec’d Android phones coming to all of the carriers in the next month or two (although I’m not a fan of Samsung handsets, and on GSM carriers you’re only option may be the Galaxy S). I’m actually a bit sad that Motorola is only on Verizon, as the Droid X actually looks better to me in just about every way, but them are the breaks. And of course, there’s the iPhone 4.

If AT&T works for you (that’s a big caveat in my experience if you’re in SF, NY, and to a lesser degree, LA), the iPhone I think still give you the most complete and seamless experience, and if I were making recommendations (again, with the caveat of the network), I’d continue to recommend the iPhone. On the other hand, if you’re willing to deal with a slightly rougher UX for some unique capabilities (or if you’re on a network that doesn’t have an iPhone), the Android is a perfectly serviceable competitor at this point. Some of the apps aren’t as good, but some of them are better (voice input, maps).

If you’re a geek on the fence, I would say that the choice is much more obvious. Forget jailbreaking. Apple doesn’t want you on their platform, and honestly, Android is a just lot more fun. (Palm does want you on their platform, but unfortunately just isn’t keeping up.) From all the system-twiddly apps and plugins you can get, to really compelling programmable environments like ASE, Tasker, and Locale, to all the customizations that can be done, and the vibrant modding/dev community, Android is a geek wonderland. It’s the equivalent of the hot-rod (with constant free engine upgrades) that is also now a pretty good daily driver.

Palm Pre Post-Mortem

Yesterday morning I went and picked up an HTC EVO 4G (post forthcoming). Like I did for my Iliad (inspired by Bunny’s exit reviews), here’s my (probably) last post on my Palm Pre (see earlier ones). This will be a bit long and rambly, and will be as much about the webOS platform as the device. You’ve been warned. 🙂

My Palm Pre

As you can see from the photo, physically, my Palm Pre hasn’t fared so well. I’m not gentlest owner – gadgets are meant to be used is my philosophy, but the Pre has fared much worse than my past few phones. Not only was plastic screen was a huge step back from the glass screened iPhones in terms of picking up random nicks and scratches, but in general, build quality left a a lot to be desired. Like all early Pres, mine suffered from light leakage (especially as it got warm) and a wobbly/not so nice feeling slider mechanism (the Palm Pre Plus is much better in that regard). In terms of wear and tear, the center button’s frosting/paint peeled off very early on. Hairline cracks developed at the corners seemingly of their own accord, and after flimsy USB/charger door finally snapped off, a huge crack started (continues?) growing on the side. Basically, it the hardware itself felt like it was on its last legs and over the past few months, really made me antsy about getting a new phone.

Last year, after giving up on AT&T and then spending a few weeks comparing an iPhone, Google Ion, and a Palm Pre, I went with the Palm Pre as my main phone. At the time, the Ion (HTC Sapphire) was running Cupcake, and for a variety reasons (no 3.5mm headjack, focus stealing bugs, and general UI wonkiness and incessant lag/chugging), really turned me off (I can still remember my disbelief how bad orientation changes were). In comparison, the Palm, while being the least mature, was obviously a better user experience.

Overall, I’ve continued to be a fan of Palm’s webOS, and it’s been a bit sad to see the lack of traction they’ve had in the market, especially considering how much of it they “do right.” That being said, it’s not exactly surprising. Besides some pretty huge strategic marketing and distribution missteps early on, there were/are a lot of technical/real reasons that it hasn’t been that successful.

First though, what Palm does right. I went to the Palm Developer Day for a variety of reasons: as a Pre owner/webOS developer (w/ interest in what was going on w/ the platform APIs, also a bone to pick w/ the state of their HTML5 support), a former developer event organizer (running Hack Days and such), and a long-time Palm fan (I had a USR Pilot! and I wanted to check out PalmHQ before they went out of business (or as it turns out, were acquired)). And… it turned out to be an awesome event. Just super-well done on every level.

I believe that what Ben, Dion, et al are doing w/ the Palm Developer community are spot on, and the APIs they’re rolling out are pretty exciting. As a web developer, the vision for webOS is pretty compelling, and the technology stack is pretty sweet. (The last talk of the day on the “secret” history of webOS by Rob Tsuk, was also pretty great, especially for anyone that’s poked around in the guts of webOS).

And of course, there have been plenty of people poking into the guts of webOS. One pleasant surprise, is that webOS has the cleanest/easiest to work with Linux I’ve seen on any phone (yes, it beats out OpenMoko). The second pleasant surprise is that Palm has been downright benevolent, nay, welcoming of the tinkering and hacking community (see also: WebOS Internals). There’s no “rooting” or “jailbreaking” and system modifications don’t require flashing ROMs, but rather with simple patches. In fact, since almost the beginning, there has been ipkg-based package management apps available (the current state of the art, Preware, makes all this downright civilized).

Because most of webOS is JavaScript based (basically, a WebKit/V8 instance sitting on top of Linux w/ a D-Bus service bus and some Java processes (being phased out)), there are many patches available that directly modify the system UI and included apps. I currently have almost two dozen patches, including those that change how the launcher is laid out, how the date and battery usage are displayed, text counting in the SMS app, how apps can be deleted, what the power button does. Just about any aspect of the system can be modified. (Heck, one guy, Jason Robitaille, has written tons of useful patches that have just made things so much more pleasant this past year. Thanks Jason!) The flip side, however is that the number of people that have installed these mods is almost certainly <1% of the installed base. Which isn't to say that there aren't things about the webOS that aren't inherently great. Both the notification system, and the "card" view for multitasking, are the best implementations of any mobile OS I've used. The UI is by and largely very well thought out. Unknown_2010-05-06_201514.png govnah_2010-05-06_202230.png govnah_2010-05-06_201502.png

However, even with all these pluses, there are issues that both have kept me from being very active in evangelism, and also leading to my recent switch. The rest of this post is critique. Since this is already too long, I’ll be moving to bullet points:

  • While Palm has a competitive platform, their hardware and overall rate of innovation is inadequate. At a friend’s suggestion, I loaded a CyanogenMod version of Donut on my Ion while on my Buenos Aires trip the end of last year. This was leaps and bounds better than Cupcake, and 2.1 and 2.2 are better still. What Android lacks in UI polish is made up for in performance, capabilities, and in sheer velocity, both of software and in the breakneck pace of newer and better hardware releases. Apple has been able to successfully fend off this relentless drumbeat thanks to its huge lead/install base and total UX superiority, however Palm obviously doesn’t have the former, and is hampered in the latter. Even still, come next week, Apple will have a next-generation hardware refresh that will bring it inline w/ current expectations (WVGA+ screen, HD capabilities), while Palm … just doesn’t.
  • webOS suffers doubly from not having any new hardware in sight because webOS is less optimized than Mobile OS X and Android, being both laggier and often running out of (and leaking) memory. It took probably half a year or so to get webOS to a good level. Even now, basic animations (CSS transforms) have yet to be GPU-enabled. And even after using an overclocked kernel (which clocks the OMAP3430 from 550MHz to 800MHz), my Pre suffers from enough intermittent performance issues (lag) to make me wish for something better (I actually like the keyboard and form-factor of the Pixi more than the Pre, but it’s even more under-powered)
  • Now admittedly, the worst of the issues has to do with the browser… all the WebView instances are actually shared, so when one runs out of memory, all of them end up getting kicked in the head (blanking out and reloading). Where this really hurts me is that webOS’s Google Maps app is really a WebView, not a “native” app. Beyond being grossly less featured than the Android or iPhone versions, it also inevitably loses state at the worst possible times while I’m navigating. I travel *a lot* and this has been one of the banes of my existence.
  • Speaking of the web browser, one of the other painful truths is that (ironically), webOS’s HTML5 support is worse than iPhone 3 and Android 2’s browsers. webOS is just using an ancient build of WebKit and it doesn’t have support for W3C Geolocation (good luck trying to use the NextMuni site), touch events, session storage, or web workers. ARGHULURHRHRHHH
  • There are a few other annoyances, like 2 minute boot-up times (I got an extended battery early on, which turned my Pre into a boat, but also meant that I almost never ran out of batteries unless I forgot to charge it, but I ended up rebooting a fair amount due to memory errors or other glitches – like with the radio or GPS), not being able to load things on boot (say launching the Govnah, or Brightness Unlinked, two must have homebrew apps) or not being able to upload to Flickr from the camera/gallery app (unfortunately, this couldn’t be implemented through the standard sharing framework because it required implementing account stuff through the palm bus, which won’t be available for developers until later this fall)
  • On the topic of APIs/software – having a recording API (again, coming by the fall) will open up whole classes of apps (voice recorders, Shazam/Sound Hound), but even with the APIs coming, there are still basic gaps (like a proper permissioning system, or stats/usage recording)…
  • I get it, it takes time to build – as a developer (and if I were primarily a mobile developer) this also makes it an exciting opportunity. With HP’s backing, presumably, webOS will continue to grow. However, as an end-user, it’s clear where the momentum is, and the apps/capabilities really speak for themselves. And I guess, more than any complaints about webOS specifically, it’s that it just that it just doesn’t fare well against the competition. I’m still avoiding the iPhone (mostly AT&T, a little bit customizability, a little bit principle), but even against Android… in terms of apps (now actually useful desktop widgets, offline news readers, wireless scanners, call analysis programs, SMS autoreply/scheduling, geofencing actions, Last.fm, Pandor, Slacker, Rdio, and Spotify, Shazam, and a host of navigation apps (including compasses, OSM offline maps, and Google Maps)) and hardware (touch focus camera, front-facing camera, microSD storage, etc, etc) there’s just no contest.
  • Competition is a good thing and I’ll be keeping tabs of what happens in the webOS world, but for now, I’m hopping on the Android train.

Hot Damn

Moving to a new server – 2.75TB of usable storage (quad core, 8GB RAM) and less expensive than my current one (an old Athlon64 X2 w/ 2G RAM I’ve had for.. 26 months). I stuck w/ NetDepot, who I’ve been super happy with for hosting.

Linux nd11544 2.6.31-16-server #53-Ubuntu SMP Tue Dec 8 05:08:02 UTC 2009 x86_64

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/

  System information as of Tue Dec 29 16:03:03 CST 2009

  System load:    0.0                Memory usage: 0%   Processes:       121
  Usage of /home: 0.0% of 784.65GB   Swap usage:   0%   Users logged in: 1

  Graph this data and manage this system at https://landscape.canonical.com/

Songs from the 2000s

While I got started with my first MP3s in the early/mid 90s and started expanding my tastes during college, it wasn’t until my post-rave days in the early 2000’s that I would self qualify as truly “music obsessive”.

Part of that change probably had to do with exposure from the tastes new coworkers and friends after I graduated. And, while I have fond memories of Amoeba and KCRW, a lot of it probably also had to do with my music collection finally crossing the virtual/physical threshold and fully embracing MP3s as my “record collection.” Shortly after, I went all in on the cloud, storing all my music on my server.

While I hadn’t gone to many concerts growing up, in my post-college life I more than made up for it. I became a regular at the Derby, Spaceland, the Troubadour, the Henry Fonda, the El Rey, heck, even the Glass House out in Pomona (and anywhere else playing music). Multiple shows a week were not uncommon, sometimes with friends, but more often than not by myself – heading in early and catching all the opening acts just in case they were any good (not often, but the ocassional payoffs seemed to make it worthwhile). After Upcoming got rolling, my show-going time dropped significantly (something something irony about seeing all the events but being too busy), and after moving up to the Bay area (and starting to travel frequently) this trend has worsened (only slightly offset by an increase in festival going, and by finally succumbing to SXSW Music: The Best Thing Ever).

Still, my music consumption has continued unabated. It continues to fascinate how much my musical tastes/experience has been shaped/facilitated by changes in the new media landscape (where attention, not distribution is the limiting factor). And while it’s been enormously interesting/satisfying watching the future of music coming (Topspin, Spotify, etc.) in an abstract way, it’s also been great looking at how it’s impacted own personal musical journey.

All of this ramble is to give a bit of preface and context for what I’ve put together. A couple weeks ago, I got it in my mind to try to make my own “decade” list – not something authoritative, just something to map my musical (and of course in turn, my actual) decade. Rather than a short list of albums, I’d pick out songs. This was at first rather discouraging, but with some encouragement, I redoubled my efforts and over the past few days I’ve plowed through my collection and culled almost 1200 tracks (and over 500 artists) from this decade. I then wrote some code to process those lists and dynamically generate a playlist that I’m calling “Songs from the 2000s.”

Each time the player is loaded, 40 songs, 4 from each decade are randomly picked (in year order, of course) from the aforementioned set of songs. An artist will only be called once. Rather than try (or rather, pretending) to be comprehensive, what I’m hoping give is a taste of my musical journey.

Here’s to the next decade.

Late Night Update

This past year hasn’t been quite the return to form I’d hoped to have for my blogging. Still, there’s nothing like a near-data loss experience (well, I had good backups, but a drive on my server had gotten royally screwed – I have some Evernote scratchings, but I’ll spare people the details of fighting apt-get/dpkg when your libc6 version breaks perl and then eventually, your entire system) to get one a bit nostalgic, and kicking the tires again. Being laid up in bed with a nasty cold all weekend and staring at a mile-long TODO list probably doesn’t hurt either.

In any case, after I get some stuff done before Christmas, I’ll probably be spending some of the last days of the decade thinking doing some reflection (also, while I first started migrating .plan updates to the web in ’97, and the direct predecessor to my current blog in ’99, my 10-year blogging on rf.net is actually coming up in a few months

(Amazingly, it wasn’t until earlier this year when my old USC links (and email account!) finally got broken. 10 years ain’t a bad run.)