Looking Back, Looking Forward

Charlie Stross posted an interesting essay today, Reasons To Be Cheerful recapping some of the great things that have happened in the world over the past decade, primarily in the developing world. A great read, and honestly inspiring/heartwarming for the disheartened humanists. It’s easy to get overly cynical about it all. This is a good antidote.

That being said, I don’t think Charlie goes quite far enough. The essay starts framed by the thesis that in the world, things haven’t much improved, and the besides a few specific counterpoints about disease and the general march of technology, it feels like he gives up on really repudiating that thesis… for the developed world. And it’s easy to see why. In terms of general socio-economic trends, it’s hard to be all that positive. Things are downright unsettling heading towards dystopian. However, there’s at least one aspect, the very medium where we are commenting on that is worth, uh, commenting on.

Yes, the interwebbytubes, as Stross puts it, is quite a different place than it was at the beginning of the millennium. We are looking at a 2X adoption growth in developed nations (from plurality to supermajority, if not ubiquity). Worldwide, 2 billion people are now online. Beyond the quantitative changes, the qualitative changes are even more intriguing. In 2000 there was no Web 2.0. Blogging was in its infancy. Most of the things we take for granted online today were not invented yet. Among them: Wikipedia (2001), Facebook (2004), Google Maps (2005), Twitter (2006). I list these in particular because I don’t think there’s a day that goes by where I don’t use these particular services, but I’m sure that others have their own lists. Lest you think that this was a singular period of growth, I’ll throw in that the iPhone (2007) and iPad (2010) have kicked us into another era of hyper-growth that will be just as (if not more) life-changing.

We’re just starting to see what happens when the Internet starts engaging with us in a location/context aware fashion. We’re also starting to see what happens when Internet-style/scale dynamics are applied outside traditional consumer Internet contexts (e.g. Obama Campaign, 2008). In a historical scale, we’re still at the very beginning stages of figuring out what it means to live in a digital, massively inter-networked world, and similarly just starting to get a handle how that will change society (attention, communications and collaboration in particular).

All that’s a really long way of saying… well, there’s a pretty dang bright spot in the developed world too. One that has the potential of being turned into the shovel we need to dig ourselves out. So, here’s looking to the future. Happy New Year.

Wikileaks, Net Neutrality, Architectures of Participation

This post is mostly a placeholder/notes for further thinking I’ve yet to do about a few related threads that seem connected this past week. Before, but particularly since my experience working on the 2008 Obama campaign, I’ve been thinking about the most potentially transformative aspects of the technologies that we deployed: specifically, deploying methods and means for self-directed organization and participation.

In the meantime, the things that some things that have caught my attention.

In regards to the capitulation of Net Neutrality, this thread on building a alternative mesh network. I wonder if it’ll come to that?

On Gitmo and normalization of indefinite detention, davidasposted’s sobering analysis of the situation.

And of course, there is Bruce Sterling’s Wikileaks missive – melodramatic, oversweeping, but truly compelling, and a must read (counterpoint).

Also, Julian Assange’s impressively articulate recent interviews, and more information on Bradley Manning’s continued mistreatment.

Gawker Passwords, etc.

I have work deadlines, so I haven’t been able to been able to write a well constructed post about this, however, a few things:

  • To check if you had a Gawker account (there are 1.25M of them, so you might have one even if you didn’t realize it) I recommend: http://gawkercheck.com/. Note: even if your password wasn’t unhashed, consider it compromised. These passwords are encrypted with DES crypt, which is not adequate to stop attackers. The keyspace is too small. For more info on DES (and probably the best post-mortem so far), see this Forbes blog post.
  • This is as good a time as any to manage your passwords properly. A lot of people (including me) are using 1Password. It’s currently available as part of the MacUpdate December 2010 Software Bundle. LastPass also looks like a good solution and is free ($12/yr for mobile support). PwdHash and KeePass are also options.
  • According to the FAQ, Gawker claims to be sending emails eventually (and some people are doing so as well now). What I did last night, and maybe a good thing to do for your friends if you are an uber-geek is to go through your friends list and grep through the torrent database and them personally know if their account has been compromised, especially if the password has been unhashed.
  • Oh, lastly, if you’re a geek w/ your hash and want to check on whether it’s a reused password or not, you can pretty easily fire up a python shell and see if it matches:
    password = 'your_password'
    hash = 'your_hash'
    salt = hash[0:2]
    import crypt
    crypt.crypt(password, salt)
    

    If you’re not sure though, audit your passwords anyway when you have a spare hour or two. You’ll feel better, trust me.

Learning New Things

Today was an average afternoon – taking way too long to accomplish a seemingly trivial task, but looking up and learning a bunch of new things along the way. It seems there should be a better/easier (almost automatic, transparent) way to track the sources (links/pages), process (things tried) and results (code fragments)….

The basic goal in this case was to automate some execution of some javascript on a page. Because execution of the script caused a page load, it wasn’t a matter of writing the calls into the console. The faster and easier way would have been to write a Greasemonkey or Chrome Extension script (because there were timing issues, the script would have to write a time-based state file on actions), however, I figured I would try to see what kind of options were available with a control-script oriented model, as having that handy would be more generally useful in the future (more and more, straight mechanize is less useful as more JS proliferates).

Before getting started, I had to strip out just the lines that I wanted. I always forget how to do it, but that was a simple vim command lookup.

I looked at Selenium and Selenium RC, which probably would have worked fine (but that I didn’t use because I didn’t want to install extensions and the RC docs weren’t directly linked, but would have probably saved me time in the end).

Instead I decided to try out Watir (cross-platform, cross-browser, and my Ruby is rusty so this was a good excuse). I started out with SafariWatir, however, after a bit of poking, came up with a dead end on executing JavaScript. There’s a scripter object, but even after getting access to it via monkey-patching (did I mention my Ruby-fu sucks?), I was still getting errors and there wasn’t much help In general.

Instead of slogging through a potentially losing battle, I decided to jump ship to FireWatir. FireWatir uses JSSh, which communicates directly via JavaScript to Firefox, so it seemed like it might be a surer thing. My Firefox profiles were corrupted from my last system transfer, so there was a bit of messing with the profile folder until I gave up and started a new, but after that it seemed like I was home free.

Except, that when running js_eval, it turns out the scope that JSSh puts you in, isn’t in the document DOM, but rather the browser’s XUL DOM. For whatever reason, I couldn’t find a reference for even with the direct object type refereces (i.e. getWindows and getBrowser return ChromeWindow objects, which just don’t seem to have docs. Introspection via domDump() or inspect() just returned a huge amount of stuff to go through). Luckily, while searching, one of the results that turned up was a StackOverflow question on firewatir + jQuery which answered the question – ChromeWindow.content gets you into the HTMLDocument DOM. I’m a bit mystified why this isn’t in the firewatir or JSSh docs, as this seems to be one of the most common things that people would want to do, but well, that is the life of the developer…

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

Software Patents

Every so often, I’m glad I sometime click into the comments on /.

The software industry is more affected because it depends much more on innovation than other industries.

In particular, it depends on the incremental innovation, whereas almost all new inventions are typically (and in some cases by logical necessity) are old inventions slightly reconfigured. Patents stop the incremental innovations in its tracks, since an “inventor” of a killer app has all the reasons to sue everyone in sight and none of the reasons to improve on the app. And even if the patent holder does use the monopoly profits to innovate further, it cannot possibly make up for excluding everyone else from the process. Imagine for a moment that a compiler was patented. Only a few biggest players could then afford licenses required to develop commercial software, and free OSes like BSD or GNU/Linux would be illegal. Proponents of software patents must admit that that is the way we should have went: if anything deserves to be called an innovation in software, a compiler certainly does. They also must close their eyes on the fact that the free software community produced and now maintains not one, but two best OSes of today, while competing with an entrenched monopolist. Anyone who believes that software patents are producing any good for the society is either grossly misinformed about the software market or is an enemy of the public (that is, a corporate cock sucker) and a hater of the computer science in general.

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*)

KIN Lessons

There’s been a lot of recent reporting on the complete failure of the KIN (and Microsoft in general). Of these, I think that this comment from a Danger employee posted on Mini-Microsoft both sums things up, and serves as an object lesson for anyone in tech, and is worth reposting in full:

To the person who talked about the unprofessional behavior of the Palo Alto Kin (former Danger team), I need to respond because I was one of them.

You are correct, the remaining Danger team was not professional nor did we show off the amazing stuff we had that made Danger such a great place. But the reason for that was our collective disbelief that we were working in such a screwed up place. Yes, we took long lunches and we sat in conference rooms and went on coffee breaks and the conversations always went something like this…”Can you believe that want us to do this?” Or “Did you hear that IM was cut, YouTube was cut? The App store was cut?” “Can you believe how mismanaged this place is?” “Why is this place to dysfunctional??”

Please understand that we went from being a high functioning, extremely passionate and driven organization to a dysfunctional organization where decisions were made by politics rather than logic.

Consider this, in less than 10 years with 1/10 of the budget Microsoft had for PMX, we created a fully multitasking operating system, a powerful service to support it, 12 different device models, and obsessed and supportive fans of our product. While I will grant that we did not shake up the entire wireless world (ala iPhone) we made a really good product and were rewarded by the incredible support of our userbase and our own feelings of accomplishment. If we had had more time and resources, we would of come out with newer versions, supporting touch screens and revamping our UI. But we ran out of time and were acquired and look at the results. A phone that was a complete and total failure. We all knew (Microsoft employees included) that is was a lackluster device, lacked the features the market wanted and was buggy with performance problems on top of it all.

When we were first acquired, we were not taking long lunches and coffee breaks. We were committed to help this Pink project out and show our stuff. But when our best ideas were knocked down over and over and it began to dawn on us that we were not going to have any real affect on the product, we gave up. We began counting down to the 2 year point so we could get our retention bonuses and get out.

I am sorry you had to witness that amazing group behave so poorly. Trust me, they were (and still are) the best group of people ever assembled to fight the cellular battle. But when the leaders are all incompetent, we just wanted out.

(On another note, every time I read the minimsft comments, I just can’t get over how fucked MSFT’s corporate culture is. There’s just so much wrong on every level, it’d pretty much be impossible to succeed.)

And an interesting follow-up comment from another insider on project particulars:

Microsoft is a large enough company that experience in one part of it may not be applicable to other parts. (Duh). In PMX, there was no backstabbing or people out to get people. There was only poor management, a poorly designed and implemented product, and an insane delivery schedule.

Some random thoughts:

PMX was said to be a risky project. You don’t fire people who fail at risky projects, because if you do, eventually nobody will be willing to take a risk. Nobody will get fired and whatever accountability there is will happen behind closed doors.

PMX was very poorly run. One HR manager involved with the Danger onboarding actually described the failure as a ‘cluster f***’. Danger was lied to about the reason for the purchase and that set the tone of the relationship between ex-Danger people and PMX. It would only get worse as the project continued. The onboarding was typical of the quality of management. The MS-Poll results, some of the worst on record, were accurate, even though they were written off as “influenced by disgruntled Danger people.”

The Verizon deal was made by business development folk before engineering had been consulted. There was no way a phone capable of selling in the marketplace could have been developed using Microsoft software management process in the time frame.

In addition, between inception and delivery, the market place changed dramatically but Microsoft was unable to move agilely enough to compensate.

The phone should never have gone to market. It is too poorly designed, too buggy, too incomplete, and too overpriced. When Microsoft became aware of the data plan pricing that Verizon proposed, the project should have been cancelled, saving a couple hundred million in development and advertising.

It did sell more than 500, but I doubt anyone is going to argue against the Wall Street Journal assessment that it sold fewer than 10,000.

The number ‘2 billion’ is floating around as an estimate of the cost of PMX over its life. That number is too high, but ‘1 billion’ is too low.