Palm Developer Day and OSCON
A big part of my new job at Palm is education, in the form of tutorials, blogs, and of course speaking at conferences. Two new speaking engagements have recently come up. Palm Developer Day and OSCON. Read on for details.
Palm Developer Day
This month I'll be doing the day long Introduction to WebOS session. In this session I'll take you from zero to 60 in about five hours, giving you everything you need to know to make great apps for the webOS.
This Developer Day is now sold out,(we've expanded. see below) but we are planning to do it again later this year after we work out the kinks. We also plan to video record the sessions and put them on the web. Stay tuned for more details.
I thought we were sold out for the Palm Dev Day, I've just heard that we have expanded the capacity and reopened registration. Space is going fast, so sign up now!
Yes, I'll be at O'Reilly's Open Source Convention again this summer. In addition to attending (a scant 2 hours from my house this time!) I'll also be speaking on Marketing your Open Source Project on a Shoestring Budget. I'll discuss different ways you can get the word out without breaking your budget, and throw in a few case studies.
If you've never been to OSCON before and live in the Pacific NorthWest I highly recommend attending. It's a great opportunity to get out of your particular technology bubble and experience what the rest of the tech world has to offer. I went two years ago and learned about Jython, Arduino, Trac, an extreme unit testing; all worlds away from my usual Java / JavaFX background.
The conference is July 19th-23rd, and I'll be speaking Friday morning. If you make it here be sure to let me know so I can buy you a beer. (Oh yeah, Portland has some of the best microbrews in the country).
A splendid time is guaranteed for all!
Fri Apr 09 2010
webOS, the OS built from the web
There's been a ton of talk lately about several mobile operating systems and their problems, such as language restrictions, fragmentation, and anti-competitive practices. It's never a good idea to talk bad about your competition, so I'll take this opportunity to simply say a few things about the webOS (the OS that powers Palm's Pre and Pixi phones) that you might not know.
As always, I am writing this as Josh the blogger. These are my opinions alone and do not reflect the opinions of Palm Inc.
- webOS devices are part of the web, not tethered to a desktop computer. You install apps through the web. You your data is backed up to the web. OS updates come through the web. Your address book is a merged view of your contacts living in the web. You never have to sync to a desktop computer. I know some Pixi users who have never once plugged their phones into a computer, because their phone is already a part of the web.
- The webOS treats it's users like grown ups: they can install any apps they want. What if the app duplicates a built in app? Fine. What if the app isn't in the on device catalog? Fine: you can install apps from the web or beta feeds without any restrictions and do the marketing on your own. What if the app hasn't been reviewed, came from my cool programmer friend, and might hose my device? Well, if you enter the developer code into your phone then you've accepted the risk and can install any app you want. There's a whole community of people making cool but unauthorized apps. They are called the Homebrew community, and Palm encourages them. You're an adult. You can make the decision of what to install on your phone.
- The webOS lets you use any language you want to develop apps.
- The webOS doesn't have fragmentation.
All webOS devices run the same OS, regardless of form factor. They are all updated over the air, for free, in all countries and carriers. This means that 99% of webOS devices have the current version of the OS within a few weeks. There is no fragmentation of the operating system across devices or form factors. This lets developers focus on making great apps, not waste time supporting 18 versions of the OS.
At Palm we care greatly about the end customer experience. We are also developers, so we care greatly about the developer experience. And most importantly, we don't see the two at odds. Happy developers create great apps that create happy customers. It's a win, win. That's why we are doing everything we can to make happy developers. We don't always do everything perfectly, but when something is broken we do our best to fix it and be transparent. It's how the web works and it's how the webOS works.
So, as a developer, I hope you'll think about the benefits and freedoms of the webOS, and consider it for your next mobile application.
Palm Dev Days Recovery
I'm writing this from a hotel room in SunnyVale, recovering from the tremendous event we put on for our dedicated developers at Palm's first ever webOS developer event last Friday and Saturday. The turnout was great. Over 100 developers paid their own money to drive, fly, and chopper in to Palm HQ. I taught an intro to webOS session for the entire first day, then answered questions and attended sessions the second. Topping it all with dinner at a local brew pub was a splendid idea.
My great thanks to my fellow Developer Relations Team and the many dedicated engineers who came to present, answer questions, and socialize with our developers. I know it meant a lot to the attendees to have such a personal connection with Palm. Extra special thanks to our CEO, John Rubenstein who personally addressed the developers at the end of the first day.
All in all, a great success. Slides and photos are forthcoming. Now time to sleep for a few days until next week when I'll be speaking on HTML 5 at the Web 2.0 conference.
Tue Apr 27 2010
OSCON and Mobile Portland Trip Report
Today's the first day I haven't been traveling, so I can finally catch my breath and write down some notes. It's been a helluva week. Last week I drove to Portland for OSCON to give several presentations and be involved in general geekery (if you follow me on Twitter, that's why you saw so many posts tagged with #oscon)
Due to a cat emergency (Nori is fine now) I arrived mid-afternoon, missing the tutorial sessions for the day. I spent the rest of the day working on slides and met with some of my new HP co-workers. I have to say the HP guys have been great to work with. They are very enthusiastic about what we can build with webOS.
Tuesday and PJUG
The morning was spent in the Erlang three hour technical session. I love OSCON because I can learn about things completely out of my element. Knowing nothing about Erlang before I can now build a basic multi-threaded program in it. It's got some very interesting concepts. It feels like a mix between Lisp and Prolog. Functional and match based.
Tuesday evening I gave a presentation to the Portland Java User's Group. For the first half of the talk I went over long term trends towards mobile devices, tablets, etc. and the shift away from PCs as the primary computing interface. Then I dove into how the mobile web solves the N-device problem with some technical tips and UI guidelines for mobile devices (use stylesheets, have large click areas, pare functionality down). For the last part I covered Palm's take, covering Ares, our mobile browser, our app ecosystem, and when it's appropriate to do one over the other. (And how webservices are the answer for everything :). I'll have slides for this talk up soon.
Afterwards we went downstairs where the Oracle dev outreach rep bought us all beer, then headed out for some Voodoo Doughnuts. ButterFinger doughnut for the win!
Wednesday morning we showed up to the expo floor early to get everything set up. I brought a bunch of Palm T-Shirts, a box of webOS books, about 80 aluminum water bottles, and 10 phones. The booth was very well attended and Ares was a big hit. I definitely need to get more of these nice water bottles, at least for the pacific northwest. We have so many bikers and hikers here, people use these things constantly.
Wednesday morning HP had a session covering all of the ways HP is involved in open source. I did a 12 minute segment covering webOS architecture, app development options, our catalog, and a 5 minute Ares demo. (yes, only 12 minutes for all of it!) At the end we gave away a couple of phones to people who asked good questions. (This is a lesson to attendees. Always stay till the end!)
OSCON is run by O'Reilly. Since I wrote Swing Hacks for them five years ago they asked me to do a book signing at the Powell's booth. As I expected no one wanted me to sign a five year old book on an even older technology, but I did have a nice time chatting with the guys at Powell's (an excellent local Portland bookseller with one store dedicated to technical books).
Thursday I took the day off to spend time with my wife in Portland. Primarily Nordstrom's. We must have priorities.
Friday morning I did my personal session on Marketing Your Open Source Project on a Shoestring Budget Attendance is generally lower on the last day, so I wasn't surprised to see only about 25 people there. I wish O'Reilly had put me into a smaller room though, as it was built for about 250 and felt very empty. The talk was very well received by the audience, though. Several came up to me later telling me how much they liked it. Definitely something to repeat in the future. I'll have the slides up soon.
Next I attended "Repent Repent, the 2038 crisis is almost upon us" a tongue in cheek talk about the Y2038 problem where unix dates will roll over to 1901. Finally I saw the humorous keynote on The World's Worst Inventions. Describing it can't do it justice. Just go watch it.
Friday night my dinner guests bailed on me (or rather, hard crashed after 8 days of conference, poor guys) so Jen and I went out for some excellent Portland Sushi. I tweeted about it and someone showed up to join us. Go Twitter! Saturday morning we packed up, had a breakfast at a local cafe (Milo's Cafe, *highly* recommended. huevos rancheros & crab cakes were awesome!), then drove home.
Monday: Mobile Portland
The rest of Saturday and Sunday I was pretty much a zombie, but Monday afternoon I drove back up to Portland for yet another event. Jason Grigsby, who has worked on some high profile mobile apps, is the leader of MobilePortland.com, a local mobile developers group. A week ago their July meeting speaker plans fell through so he asked me if I'd talk to them about webOS while I was in town for OSCON (not realizing I live only 2 hours away).
So Monday I drove up to Portland and gave a 1 hour presentation that leaked into about 2 hours followed by Thai food afterwards with some of the crew. I gave them an overview of webOS, the development options, then spent quite a time in Ares showing how easy it is to build for. During a lengthy Q&A session they asked some really good questions and we got to dive into how the developer experience is very important for us. I also met some HP developers from Vancouver, two reporters, and a writer for PreCentral. It's amazing how many mobile related people live in Portland.
UStream recording of my session here
Whew. I think it's time for some coffee or a nap.
Tue Jul 27 2010
Boom. It's Action Time
The TouchPad is on it's way to stores, the catalog is full of apps, and Jesse finally went to sleep. It is done.
Well, not really done per se. This is a marathon and we've only made our first dip in the water. It's a seven course meal that begins with the first mile. It's both a floor wax and a dessert topping. And was it over when the Germans bombed Pearl Harbor? Hell no! And it ain't over now!
I'm serious, though, when I say that 10 years from now 90% of people will use a tablet computer as their main computing device. And a big chunk of those will be running webOS. This is just getting started.
I'd like to really congratulate both the Developer Relations team that I'm on and the larger webOS organization. I am so proud to be a part of this group. Shipping a product like this has been a dream of mine for a very long time. To make something quality and tangible. To improve the computing user experience for the regular user and help developers build new and amazing things. Things no one has ever seen before.
Tomorrow is the realization of that dream for me. Tomorrow I will walk into Best Buy and see people using a product that I helped bring into existence. It will have some great apps in the catalog that I helped usher to market. I'm especially proud of our educational titles like BrainPop (app) and the first official tablet app for the Kahn Academy (app).
Now of course I know how the sausage is made. I know the features that didn't make it in. The bugs that were fixed right after the deadline. The chaos behind the curtain. It's just the nature of software. You're never done. But a great guy once said: "Real artists ship". And I heard his underdog products ended up doing pretty well.
And another great guy I know just said: "THIS is our iMac, and this is where it starts, not finishes. And while we have a lot of work left to do, getting here means we’ve accomplished a hell of a lot, too."
And if that doesn't work for you then here, have some tasty pudding!
Go Huge Palm!
For my gracious younger readers, a brief history lesson from one of the classics of cinema Was it over when the Germans bombed Pearl Harbor by thefastlane2hell
Fri Jul 01 2011
webOS Canvas Improvements for the HP TouchPad
Hot on the heels of my Canvas talk at OSCON (which went very well. Much thanks to everyone who attended), I've put up a post on the developer blog about the great new Canvas stuff in webOS 3.0. Most importantly, speed has been doubled for certain drawing operations! I'm very proud of the graphics team here at Palm.
You can read the full description of the changes here.
Fri Aug 05 2011
Java + SDL + Avian + webOS = Magically Delicious
Mmmwaa haa haa. It lives! I've gotten Java to run on webOS natively with a new set of Java SDL bindings. That means it just *might* time to start a new project. Read on for how it works and how you could help.
For a while I've been following an open source project called Avian. It's a very lightweight and highly portable JVM that can run almost anywhere. Recently I tried a new build and was able to get the ARM port running on webOS! This is good news because Avian can run pretty much any Java code if you supply it with the right runtime (it can optionally work with the OpenJDK libs).
Now, of course getting a command line app it run is not very interesting. Really we want to talk to the screen to make some real graphical applications. So that brings us to part two: SDL.
If you've been doing desktop programming for a while you've probably heard of SDL, the Simple DirectMedia Library. It's a fairly low level graphics and audio API that runs pretty much everywhere, including on webOS. But, of course, like many low level APIs it's built in C. So if I want to use Java I need to some wrapper to call it. The existing wrappers out there are very old and didn't work well on Mac, so it was time to build my own.
Over the weekend I learned how to use Swig, a JNI wrapper generator and successfully ran my new SDL wrappers on Mac, Linux, and webOS. Here's a quick screenshot:
it's not much but it proves that everything is working.
So what's the next step? Honestly... I don't know. I created this specifically to let me code Java on webOS, but the SDL bindings would probably be useful for cross platform desktop applications as well. We could port Amino to it, or do some funky multitouch stuff. It would certainly be great for people creating games. I need your advice.
What would you like to do with this library? What higher level APIs would you like? If you have any ideas of what you'd do with this lib, or would like to contribute to the project (help on Windows compilation would be greatly appreciated), then please message me on twitter: @joshmarinacci.
Wed Aug 31 2011
Hidden Treasure: AppBundler
When working on big projects I often create little projects to support the larger effort. Sometimes these little projects turn into something great on their own. It's time for me to tell you about one of them: AppBundler. AppBundler is a small tool which packages up Java (client side) apps with a minimum of fuss. From a single app description it can generate Mac OSX .app bundles, Windows .EXE files, JNLPs (Java Web Start), double clickable jars; and as of yesterday evening: webOS apps! I start the project to support Leonardo Sketch but I think it's time for AppBundler to stand on it's own. Packaging Java apps has historically been an exercise in creative swearing. The JVM provides no packaging mechanism other than double clickable jars, which are limited and feel nothing like native apps. Mac and Windows have their own executable formats that involve native code, and Sun has never provided tools to support them. Java Web Start was supposed to solve this, but it never took off the way the creators hoped and has it's own idiosyncrasies. Long term we will have more a more environments with Java available but with different native package systems. Add in native libs, file extension registration, and other metadata; and now you've got a real problem. After hacking Ant files for years to deal with the issue I decided it was finally time to encode my build scripts and Java lore into a new tool that will solve the issue once and for all. Thus AppBundler was born.
How it works
You create a simple XML descriptor file for your application. It lists the jars that make up your app along with some metadata like the App name and main class. It can optionally include icons, file extensions, and links to native libraries.
<?xml version="1.0" encoding="UTF-8"?> <app name="Amino Particles"> <jar name="Amino2.jar"/> <jar name="amino_sdl.jar"/> <jar name="examples.jar" main-class="com.joshondesign.amino.examples.Particles"/> <property name="com.joshondesign.amino.impl" value="sdl"/> <native name="sdl"/> </app>
Then you run AppBundler on this file from the command line along with a list of directories where the jars can be found. In most apps you have a single directory with all of your jars, plus the app jar itself, so you usually only need to list two directories. You also specify which output format you want or --all for all of them. Here's what it looks like called from an ant script (command line would be the same).
<java classpath="lib/AppBundler.jar;lib/XMLLib.jar" classname="com.joshondesign.appbundler.Bundler" fork="true"> <arg value="--file=myapp.xml"/> <arg value="--target=mac"/> <arg value="--outdir=dist/"/> <arg value="--jardir=lib/"/> <arg value="--jardir=build/jars/"/> </java>
AppBundler will then generate the executable for each output format.
What it does
For Mac it will create a .APP
bundle containing your jars, then include a copy of the JavaApplicationStub and generate the correct Info.plist files (Mac specific metadata files), and finally zip up the bundle. For Windows it uses JSmooth to generate a .EXE
file with an icon and class path. For Java WebStart it will generate the JNLP file and copy over the jars. For double click jar files it will actually squish all of your jars together into a single jar with the right META-INF files. And all of the above works with native libraries like JOGL too. For each target it will set the correct library paths and do tricky things like decompress native libs into temp directories. Registering for file extensions and requesting JREs mostly works.
What about webOS?
All of the platforms except webOS ship with a JVM or one can be auto-installed on demand (the Windows EXEs do this). There is no such option for webOS, however. webOS has a high level HTML 5 based SDK and a low level C based PDK. To run Java on webOS you'd have to provide your own JVM and class libraries, so that's exactly what I've done. The full OpenJDK would be too big to run on a lightweight tablet, and a port would take a team of people months to do. Instead I cross compiled the amazing open source JVM Avian to ARM. Avian was meant to be embedded and already has an ARM port, so compiling it was a snap. Avian can use the full OpenJDK runtime, but it also comes with it's own minimal classpath.jar that provides the bare minimum needed to run Java code. Using the smaller runtime meant we wouldn't have a GUI like Swing, but using Swing would require months of AWT porting anyway, which I wasn't interested in doing. Instead I created a new set of Java bindings to SDL (Simple DirectMedia Layer
), a low level graphics API available on pretty much every platform. Then I created a port of Amino
(my 2D scene graph library) to run on top of SDL. It sounds complicated (and it was, actually), but the scripts hide the complexity. The end result is a set of tools to let you write graphical apps with Java on webOS. Amino already has ports to Java2D and HTML 5 Canvas (and OpenGL is in the works), so you can easily create cross platform graphics apps. And now with AppBundler you can easily package them as well. Interestingly, Avian runs on desktops nicely, so putting Java apps into the Mac App Store might now be possible. There's already some enterprising developers trying to get Avian working on iOS.
How you can help.
While functional, I consider AppBundler to be in an alpha state. There's lots of things that need work. In particular it needs Linux support (generate rpms or debs?) and a real Ant task instead of the Java exec commands you see above. I would also like to have it be included in Maven and any other useful repo. And as a final request (as long as I have you here), I need some servers to run builds tests on. I have already have Hudson running on a Linux server. I'd love it if someone could run a Hudson slave for me on their Windows or Mac server. And of course we need lots of testing and bug fixes. If you are interested please join the mailing list.
Client Java Freedom
AppBundler is another facet of my efforts to let help Java provide a good user experience everywhere. Apps should always feel native, and that includes the installation and start experience. I've used AppBundler to provide native installs of Leonardo Sketch
on every desktop platform. I hope AppBundler will help you do the same. Enjoy! -Josh
Fri Sep 23 2011
HP to Open Source webOS
Today the other shoe dropped. Fortunately it was a soft slipper, not the steel toed boot to the head I had feared. HP is open sourcing webOS.
What does this mean? Well, I honestly don't know yet. There is a huge amount of planning to be done, but it could be the start of something great. We will have to see. It will be a busy Christmas, that's for sure.
In the meantime I'm working on a few other projects that I hope to share with you soon. Stay tuned. Thanks!
Fri Dec 09 2011
End of an Era
The past two years have been a hell of a fun ride, but alas it must come to an end. It is with sadness but no regret that I must announce Friday will be my last day at HP / Palm. This was a very difficult decision to make. I have enjoyed my time here and after seeing the webOS roadmap I'm very excited for it's future, but it is time for me to do something else.
I am extremely proud of what the webOS Developer Relations team was able to accomplish. We kept the community together through several big platform changes and managed to launch the TouchPad with more native tablet apps than Android had after six months. Even after the webOS hardware was canceled we still managed to grow the app catalog to more than a thousand apps. Recent numbers indicate that our USA Today app has twice the number of downloads as all Android tablets put together. I'm proud of what we built with fewer resources than our gigantic competitors.
Sadly, webOS is a failure as a retail product, at least in it's current incarnation. There are many reasons for it's failure ranging from poor marketing to the ravings of a lunatic. Perhaps one day I will write more on the topic, but for now I will let the past be past. webOS has a new future as Open webOS, but one that I must cheer from the sidelines. It is time for me to make some changes in my own life.
I have spent the last seven years championing underdog platforms. Starting with desktop Java and Swing, then NetBeans, the JavaFX platform, and the JavaStore. Finally I spent the last two years doing my best to make webOS a success. I'm proud of the work I've done and the platforms I've helped, but quite frankly I'm damn tired. It's a lot of fun to champion something you are passionate about, but also exhausting. And since Jesse arrived I no longer want to be a platform evangelist; traveling to conferences and staying up late for weeks to ship a product. My life is simply different now.
So March 12th I will be taking a research position at Nokia. I will get to play with cool future stuff and stay involved with the industry, but at a much slower pace. I simply need a break for a few years. This doesn't mean I will disappear. Rather I plan to increase my blogging, but on a wide range of topics in more long form essays.
I do plan to stay involved with webOS. Now that I'm no longer an HP employee I can actually sell my own apps in the app catalog. I will also keep working with Enyo and the Open webOS builds; and making sure Amino and Leo support them. I love my TouchPad and will continue to use it until they pry it from my cold dead hands.
I want to mention my incredible fellow Developer Relations crew members, some of who were laid off today. And my eternal gratitude to the amazing webOS community. You made all of our hard work worth it.
Wed Feb 29 2012
HTML Canvas : an Interactive Travelogue
As you know, I've been doing a lot of ebook prototyping lately. Ever since the iBooks 2 announcement I've had this idea stuck in my head that we can make rich interactive ebooks using nothing but web technology. That lead to the toolkit I've been working on, now open sourced on github. As the first thing written with that toolkit I'm proud to announce my first interactive book: HTML Canvas, a Travelogue.
The book is an interactive guide to learning Canvas. It is not a comprehensive reference guide since there are plenty of those. It gives you an overview of the technology with deep dives into a few parts to let you explore what the technology can do. It does this through some hands on tutorial chapters where you build charts and a simple video game. It also has interactive code snippets that let you tweak variables to see how they react in real time. The entire book is written in HTML with the ebook toolkit. For the chapter navigation I used the new Enyo 2.0 beta with the Onyx theme. Animation is done with Amino, and for app packaging I've used PhoneGap.
Canvas is a technology that is still in flux, so I think an app based book is a perfect way of learning it. As the technology improves and changes I can continue to update the book with new examples and reference material. I like to call this concept an everbook. When you buy such a book you aren't just buying the static text itself. You are buying all future editions of that book, and can give feedback to the author to help shape the material. If the reader wants a deeper explanation of a particular topic or finds a bug in an example, then he can simply email the author with the request. The book is updated for free and everyone wins.
I will be releasing it for all of the tablet platforms over time, starting with webOS first and the iPad next. The retail price will be 4.99$, but as a thank you to the webOS community I am releasing it for a permanent price of 99 cents. And as of right now it is live in the TouchPad App Catalog and available for purchase. I love you guys and this is the best way I can think of giving back: developing tools and apps to keep webOS great. Please check it out and give me feedback. All bugs will get top priority.
Mon Mar 12 2012
webOS on The Verge
I'm not sure I'll ever be ready to tell everything about my time at Palm. Certainly not now. Perhaps in a novel or an 8bit video game, one day. I don't know. I really enjoyed my time there and made wonderful friends. It was also two straight years of frustration. For now I suggest you read The Verge's excellent in-depth article on the 31 months from Palm's 2009 CES debut to the end of the platform (and possible rebirth?). After you read it come back to compare notes. Below are some inaccuracies or clarifications based on my own recollection of events. Think of it as directors commentary if the director was forced to sit in the back and watch through a 3 inch screen.
A note to the reader. Before you continue there are three things you must keep in mind:
- I am now an employee at Nokia. The comments below reflect entirely my own opinion, not of Nokia or my team. Also note that I am not working in the Windows Phone division (or any product division for that matter) and have no insight into product plans.
- The comments below reflect entirely my own opinion. This is based on my recollection of events and personal speculation. Others have different recollections. These are mine.
- I wrote the following comments while reading The Verge's article. The thoughts are spontaneous, passionate, off the cuff, and unedited. Please adjust your expectations accordingly.
Prima (2008). I never got a chance to see Prima. I wish I did. Sounds ugly. I was able to get my hands on a Foleo, though. Insert another epic yarn about a brilliant but doomed product. I do know that Prima was Java based, and closer to JavaME than JavaSE. It had major performance issues because it was built on some wonky embedded JVM they got from a small company (I don't know who) rather than a proper JITed VM like HotSpot and JavaSE Embedded (though that wasn't a shipping product from Sun at the time these decisions were being made).
Prima's JVM at CES 2009. Yes, it was still there running some system services. Those lasted until around the time of WebOS 2.0, towards the end of 2010 as I recall. There were always references to it in the open source code dumps which is why people kept asking me if webOS supported Java. It never did in any way that a developer could actually use. That JVM also sucked up way too much memory, making a lot of system services dog slow.
CES 2009 This is the event which sold me on Palm. When I met Ben and Dion in Sweden to discuss working for Palm later that year this was the event I watched and analyzed to see if I truly wanted to work for Palm. The polish and practice was really amazing. If you haven't seen it you should watch it. It even made up for the truly horrible TV ads Palm later aired.
The de-Mercerization to create Blowfish: I don't know the details of exactly how Blowfish was built. Engineering was very closed off to us (Developer Relations). It was like pulling teeth to get information about them. I learned a whole lot by searching JIRA bugs and watching commit logs, however. Blowfish turned into a classic Fred Brooks "Second System Effect" death march. The release stretched on and on. Things which worked previously were broken and never fixed. Testing started to fall by the way side. Quality declined and the release kept slipping. In the end we missed an entire product cycle. This probably doomed us more than anything else.
2010 This when I joined. The Droid campaign had already screwed Palm (or Palm let itself be screwed by placing so much fait in a a carrier). Verizon promised to support the Pre Plus but it turns out that support didn't extend to the actual employees in the retail store. In the US, at least, a phone lives or dies by the retail staff in the carrier stores. Nothing else matters. Not price. Not features. Not apps. If the retail staff doesn't like you... you die.
Anyway. I'd been at Palm for only a few months when the HP deal was announced. I still feel it was the best decision. The smart phone game of the early 2000s changed forever after the iPhone. It was now a rich man's game. Palm was against companies literally 10 times it's size. To create a viable smart phone platform today you have to be prepared to spend about a billion dollars a year. Palm was simply too small. HP had the size and the cash, and a desire to not just be a Windows OEM forever. It was by far the best option. (All other options would simply have liquidated us). But the best laid plans of mice and men…
Leo: Well…. We will never really know what happened inside Mr. Apotheker's mind when he decided to cancel all webOS hardware. Did he not have the stomach for a billion dollar a year run rate? Did he never really want to be in the consumer business? Was his talk of "doubling down" a lie all along? We will never know. It was clear then and now that he never believed in the webOS vision. Perhaps if Hurd had not left history would have gone differently. At the very least the TouchPad would have had the chance to develop into the strong product it could have been. We were, for a brief time, the #2 tablet in the US.
Greg Simon: It really hit me hard when Greg Simon left. He was the only one who was getting my graphics bugs fixed! We had no hard specs for what our Canvas and CSS graphics output should be so I made it my personal mission to write tests for every missing feature of the spec and then push to have them implemented. For a long time Greg was the only guy who could help me. He's the one who implemented CSS gradients for me.
TouchPad hardware: One thing I don't see mentioned is that the hardware design for the touchpad came from HP. It was designed before the acquisition and originally ran Android. That's why you'll occasionally hear rumors of a touchpad the shipped with Android on it. That's also why the specs were a bit anemic when it shipped over a year later.
So ultimately the question is why did the TouchPad fail in the market place? The software was definitely buggy, but we made pretty rapid improvements in the update releases. The iPhone was buggy when it launched but got better very quickly. The hardware specs were considered anemic, but really it should have been flying with a dual core 1.2ghz proc. The immature software held it back. My only real complaint about the hardware was the weight and the lack of a camera. The 7" Opal / TouchPad Go would have solved the camera issue but it was still too heavy. The other big issue was the price. It should have gone out the door at 399 or lower, even if we would have lost money for a while. We didn't have a comparable product to the iPad, so we shouldn't have priced it as such.
So why did it fail in the market place? Actually, I question that assertion. Clearly we weren't selling as well as the iPad but based on anecdotal evidence we were selling more than any Android tablet. One Best Buy employee told me the iPad sold about 10 units a day a his store while the TouchPad sold two a day. The other tablets (Android and BlackBerry) were lucky to sell one a week each. While Samsung may have shipped millions of tablets they later admitted that most of them were never actually sold to end customers. We were the #2 tablet even before the fire sale. A weak #2, but still #2. Not bad for a 1.0 product. If we continued working on the software, pushing out consistent updates, and shipped the Opal then we would have gone into the Christmas season with a strong momentum.
I will say this for both Apple, Google, and Microsoft. They go in big and they don't give up. They take the long view; steadily improving their products over months and years. Spending heavily on advertising then giving a product only six weeks in the market is *not* long term thinking. If HP was only going for a quick buck then webOS would never have survived, whether or not Leo was at the helm. This is a game for the rich and patient man.
So then why was the TouchPad canceled? As I said, we will never know. Perhaps the sales projections weren't realistic. But we do know that the *way* it was killed was designed to be irreversible. The press release announcing cancelation took everyone by surprise, including our partners. AT&T refused to carry the Pre 3 just before it was scheduled to go on sale. The Opal was canceled just days before it would have gone into production for a release in late September. Once you scupper a supply chain that way it takes at least a year to rebuild. The damage was irreversible. Even if Leo had been fired a week later and Meg reversed the decision, it still was too late. And it was that supply chain which cost most of the two billion dollar write down HP had to take later. I sometimes wonder if it would have been cheaper to build the TouchPad Go anyway and still sell it for 99$ like the TouchPad. In any case, the decision was made and it was immediately final.
Of note: when Meg Whitman was asked in an all-hands meeting how the board could have voted for such a decision, she said the board was "informed" of the plan, not consulted. No vote was required or taken.
Post cancelation stasis: my biggest memory of that period is when we were scheduled to go on a three stop tour of Asia (Australia, Singapore, and Bejing) to excite developers about products that now would never ship. In the end we made the trip because Richard Kerris (head of devrel) felt it was important to meet our developers on their own terms and be honest with them. It was both an interesting and awkward experience. I'm glad we did it.
Meg Whitman. During my final months at HP, Meg was refreshingly honest. She took her time to make the decision, but honestly we had plenty of time after the hardware cancellation. A few months either way would make no difference, and she had bigger fish to fry (like the PC division). In the end I think she made the best decisions possible under the circumstances. I wish her and the rest of HP well. I do not envy the work ahead of her.
Sam Greenblat & Martin Risau: I ramped down my travel after my son was born so I only came into the office twice after the cancelation. I only met each briefly. They both seemed smart and competent but had different visions of what Open webOS would be. It doesn't surprise me that there were conflicts.
- There was other hardware in the works beyond the TouchPad Go. I saw prototypes of many products including a transforming tablet / netbook combo with an ingenious sliding hinge and super thin keyboard. I really hope someone makes it one day.
- On "competing for #3" Yes it would have cost us billions of dollars over a bunch of years, but I think we would have been #2, not #3. It has been nearly a year since the TouchPad launched and Android tablets are still failures. I think there is a lesson in here for us: without a carrier and contract pushing them, Android devices don't sell themselves.
- WebKit: Using WebKit for the GUI was pure genius. Forking Webkit so you couldn't take advantage of community improvements was pure stupidity.
Oh. and the Palm V is still the best PalmOS device ever. It was the perfect size to fit in a shirt pocket, had a beautiful and unique shape, and was made of good metal materials. And the battery would last forever. It was an iPod Touch ten years early.
I am still very proud of what we created, especially my teammates in Developer Relations. The TouchPad launched essentially on schedule and had a solid over the air update. We opened the catalog with 10k webOS apps and 600 specifically for the TouchPad. That put us ahead of the number of Android Tablet apps at the same time, even though we shipped 6 months later. We continued to increase the number of apps in the catalog even after the hardware was canceled. We ran fun developer contests and promotions. Our developer community was always been passionate and appreciative, even in the times when we weren't allowed to say much. I'm glad we were able to open source Enyo in a way that lets those developers take their apps to other platforms.
Post Post Mortem
It has been nearly a year since the webOS hardware was canceled. A year that has afforded me some perspective. I left HP not because I didn't enjoy my time there. My reasons were more personal. After seven years of being a technical evangelist for Java, JavaFX, the JavaStore, and then webOS; I was simply tired. Tired of putting emotion and energy into platforms. Tired of the travel and speaking engagements. Tired of the constant product deadlines. Combined with having a (now) one year old child I realized I needed a break.
My current position requires little travel, has a flexible schedule, and lets me work on interesting things not tied to any particular platform. Best of all a specifically *can't* talk about what I'm working on. Perhaps one day I will return to platform evangelism. I still enjoy it. But for now I'm in a nice peaceful place.
Thank you for taking the time to read my tiny part of this epic tale. One day it will truly be the stuff of valley legend.
Wed Jun 06 2012