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.



Vacation and travel is over and I'm happy to say things are moving again. I'm feeling refreshed and I have a lot to share with you in 2012; starting with the new book I'm writing for O'Reilly! Read on, MacDuff.

The Book

I've been working on a new book for O'Reilly, tentatively titled Building Mobile Apps in Java. I mentioned it briefly on Twitter but haven't gone into the details before. It will show you how to use GWT and PhoneGap to build mobile apps. With these two open source technologies you can code in Java but target pretty much any mobile platform such as iOS, Android, and webOS.

The book will cover the technical aspects of using GWT & PhoneGap. It will also dive into how to design for mobile. Navigation and performance varies greatly across devices, so it's an important topic. Oh, and the last chapter will show you how to make a mobile platform game with real physics. Tons of fun.

Building Mobile Apps in Java will be an eBook about 60 pages long, available every where O'Reilly publishes their ebooks. Look for it in February or early March.

Open Source and Speaking

For 2012 I want to spend some time doing more actual design work. I'm planning a new hand built wordpress theme for my blog, including proper phone and tablet support. I also have a few art side projects that you'll get to see later in the year.

And speaking of design, I have new significant releases of Amino and Leonardo Sketch coming. If you are in the Portland area come to the January PDX-UX meeting. I will be presenting how to do wire framing with Leonardo Sketch. I'll give a brief overview of Leo and show off some of the great export and collaboration features.

I will also be doing a 5 minute Ignite talk in Portland on February 9th about the future of ebooks and what a Hogwarts Textbook would look like.


Finally, I plan to post both more and less on this blog. I used to do short posts on small topics or collections of links. I found social networks better for that thing so I'll do that on Twitter and Google Plus from now on. From now on I want to use the blog for more long form content such as my well read HTML Canvas Deep dive. Look for more long essays on canvas, app stores, and technology trends this year.

2012 is finally here!




It would be an understatement to say that the last year has been busy. With having a baby, launching and then 'unlaunching' the HP TouchPad, lots of conferences, and pushing out several open source project releases it's just been one heck of a crazy time. Throughout it all I've tried to continue blogging, though not as consistently as I would like. I thought it would be interesting to review the blog stats for the year and see what was actually the most popular posts rather than what I thought they were. The results may surprise you. They certainly surprised me.


Traffic has grown for Josh On Design in general. At the beginning of 2011 I was averaging around 20-30 hits per day. For December the daily average is around 180. So that's quite a significant jump. However it doesn't account for the nearly 50k hits of the entire year. A good portion of that came in two spikes at the end of September and the middle of October. See the anomaly in this chart:


Those two spikes represent when I was linked by heavily trafficked news sites: Reddit and YCombinator's Hacker News. These links are attributed to one piece of content: the notes and exercises from my HTML 5 Canvas Deep Dive workshop that I presented at OSCON in July. In fact, the canvas article accounts for nearly half of all hits I've gotten for the entire year. So, lesson number one: quality deep technical content is greatly appreciated.

The #2 hit is the main page of my blog, which doesn't really tell us anything. #3 is my post about refactoring Amino with 1700 hits. Note that even though this is #3 it's still only 3.69% of the total for the year. What this tells me is that my blog has a very long tail. Only the canvas deep dive is significantly more popular that the rest of the site.

#4 four is a post about my App Bundler project which lets you easily build native Java exes for a variety of platforms. #5 and #6 are more posts about Amino.. This surprises me because Amino doesn't seem to be used very much in practice and the mailing list traffic is minimal, yet posts about it seem to be popular. Perhaps it's a big hit with my Twitter followers.

With 898 hits Typography 101 is the seventh most popular post. This is the first one that doesn't surprise me. I figure reference material will generally pick up a lot of hits over time as people find it through Google. The two articles Future of Desktops and Design of the Workstation OS and Why 2014 won't be like 1984 are rant essays about the industry. I'm not surprised that they were in the top ten since controversial topics seem to always get hits. Finally UI Design Assets and Tools rounds out the top ten with 676 hits for the year.

Overall I'm happy with the blog traffic. Considering I haven't had much time to work on it, especially since Jesse was born, I think it's doing pretty well. I expect traffic to rise significantly early next year when my O'Reilly eBook is published (which reminds me that I've got more editing to do).

I'm officially on vacation today and will be offline for the next three weeks. I've got much needed baby time awaiting. I'll see you in 2012!








I am not entirely sure what to say.  It has taken me two hours to write the following few paragraphs.

Though I never worked at Apple nor had a chance to meet him, I owe my career to Steve Jobs. At the tender age of 8 I learned to program on an Apple IIe and have been hooked ever since. I've used Mac OS X since the first public beta on my tangerine iBook. I used a string of iPods and iPhones before joining Palm to compete with Apple. Steve's products changed desktop computing, music, movies, cellphones, and almost everything else in our modern world, and I thank him as a happy user of those products.

However, I think most of all I thank him for making the world understand the value of design and usability It's not just an add on. It's the most important part of a product. I've spent my professional career helping developers build better software thanks to his vision and singular focus. Not only would I not have this career without him, but my entire field (developer evangelism) likely wouldn't even exist.

So thank you Steve. Thank you for teaching us that our job is to make the world better for everyone.


Jesse is one week old today. An amazing week it has been.

In general I don't post personal things to this blog. A few years ago I consciously decided to keep personal communication on Facebook and restrict my professional online life to this blog and Twitter. That's why I'll ignore FaceBook friend requests from people I don't regularly know in real life and limit search/info/photo access to friends of friends.  However, I'm making an exception today for one simple reason: having a child is life changing, both personal and professional.

I'm currently on vacation for two weeks to spend time with my new son, and it's true.  My life is changing. I know it sounds cliche, but we have cliches for a reason. That a child would change my life is something I always knew, but didn't understand until now. As I Tweeted a few days ago: now that I've spent hours up all night coaxing a fussy baby to sleep, I finally feel like a father. Life will never be the same again.

That doesn't mean I won't be the GUI nerd I've always been; I'll just focus on different things. For obvious reasons my interest has focused on ebooks and games, especially apps targeted at young children.  I've been involved in the development of the TouchPad for close to a year, and I know the potential of tablet technology to revolutionize how we teach, train, and entertain children.  We have so many great apps prepping for launch, I really couldn't be happier.  I think you'll be happy too.

That's all for today's lazy Sunday post. Time to wake Jesse up for lunch and clean the house (it's amazing how messy a house can get with a baby around).

Welcome to the world Jesse. We've got great stuff to show you.

Picture of Jesse


Another month has gone by with no update to Leonardo, or a real release of Amino. It's interesting how life changes. When I started this projects last summer I had no idea Jen and I would be having a baby in a month, nor did I truly have any notion how much my life would change. Everyone always says having children will change your life, but you never really understand it until you do it yourself, and our journey has just begun.

So, the upshot of all this rambling is that kids take time, and when you have to distribute a finite resource between multiple buckets, something has to get less. Sadly this time the short straw goes to my open source projects. It doesn't mean I won't work on them anymore, just at a slower pace. However, in order to feel at peace with myself I need to leave them in a state where they can still progress without my large time commitment. That's what this post is about.

I've spent the last year working on two main open source projects called Leonardo and Amino. Quick recap: Amino is a scene graph library for Java and JavaScript. Leonardo is a vector drawing program built on top of Amino. I want to get them both to a state where they are stable, useful, and can live on their own. Hopefully more of my job will be driving the community and integrating patches rather than directly coding everything. Every project reaches a point where it should stop being driven by a singular vision, and instead be driven by needs of actual users (the good projects anyway). Now is the that time. Time to focus on gaining adoption, growing a community, and making these projects rock-freaking-solid.

Concrete Plans


Amino basically works. Shapes are animated and drawn on screen, input events are properly transformed, and it's got pixel effects on both the Java and JavaScript sides. Speed, efficiency and features driven by actual use.

Amino finally has it's own website at and I've set up auto-builds for both the Java and JavaScript versions. They also have a redesigned API doc template that you can see here. Last steps before a 1.0 release: bug fixes for Mobile Safari and FireFox, more demos, and a tutorial for integrating with Swing apps. (Oh, and if someone has a nice spring easing function, that would be swell). Target: next weekend.


It's basically done. It lets you draw vector art of shapes, images, and paths; and also create attractive presentations (which is just multiple pages of vector art). Now comes polish and adoption and export features. I suspect the value will really be in the export features so I need to know from you guys: what do you want?

In concrete terms I have a bunch of old bugs to fix and will finish the redesigned fill picker (colors, swatches, gradients, patterns, etc.) I also need your help updating the translations. Once that's done I'll clean up the website and cut a 1.0 release. Target: end of April.

Next Steps

In short, a lot of work for the next few weeks, but with luck (and hopefully some great feedback from you) , both Amino and Leonardo will be just fine.


It's been a while since I've written anything, especially anything other than the topics of Amino and Leonardo. While I rarely talk about my personal life on this site, I feel I should let you all know what's been going on, and how the next few months look.

Of Death and Life

The last couple of months have been a bit rough. My wife had two deaths in her family only five days apart. We've spent most of the last two months with family and traveling to California. At the same time Jen and I are experiencing the joys of having our first child. Our son, Jesse Paul, is due May 27th. The name 'Jesse' is from the biblical father of David, which means "Gift from God". 'Paul' is from my uncle who passed away last year. Uncle Paul taught me to program as a child and had a huge influence on me and my career, and so is very special to me.


Now that we are home, with no more travel in sight for my wife at least, life should return to normal. There's more travel for me, however. In a week I'll fly down to Sunnyvale to spend a week with my team at Palm HQ and prepare for our big event on February 9th. This is going to be huge. I can't wait for you to see what we've got in store. After the event I'll be home for a day and then fly to Barcelona to talk about our new products at Mobile World Congress. If you are going to be at MWC, give me a shout for some drinks.

After MWC I'll have some time at home before doing a series of smaller events (which I'll talk about later), and then be home for Jesse's birth.


I haven't done as much work on my side projects as I wanted, and things will slow down even more once Jesse is born, but I'm still making progress. Here's a rough roadmap:

Leonardo, the open source drawing program. I've been slowly polishing the UI and adding features. Object effects are high on the list (dropshadow, blur, emboss, etc.) as are a full set of gradients and texture fills. I'm hoping for another release by the end of February which will also include more path features like transforms, rotation, and converting shapes to paths. The big UI overhaul and sharing features will have to wait for later.

Amino 1.0: a full UI toolkit. I've continued to fill in missing features and controls, including the new Table and Tree/TreeTable views. I've got a few more bugs and memory leaks to fix before I'll call Amino 1.0 final and finished, but I think it's close.

Amino 2.0. I've started working on Amino 2.0 in a branch. Amino 2 is an almost complete rewrite, including a new cross platform stack that will support Java2D, JOGL with shaders, and potentially HTML canvas. It will be much more modular; strictly separating a super fast 2.5d graphics API, a flexible scenegraph, and then the current Amino GUI widgets and CSS on top. If you've seen this screenshot of playing a high def video through a realtime pixel shader, then you've seen the potential of this approach. The new design will make Amino more flexible and easier to evolve. I don't have a timetable for when it will be done, but I plan to open the repo for contributions very soon. For developers the APIs won't change much, but the under the hood changes will be huge.

So, in short, Amino and Leonardo have a strong future, just a bit slower than originally planned. I also have great new things coming with webOS and I can't wait to teach you how to use some of the cool new stuff. So bear with me. The future looks both bright and busy


When I started this blog I had hoped to post once or twice a week. If you're one of my few remaining readers you know that this hasn't happened. My new position at Palm has kept me so busy that I haven't had time to work on the big long educational posts like Typography 101. I've also been debating if I should have any Palm or JavaScript specific content, or just keep this as a pure design blog.

So... I've come to a resolution: it's my blog and it represents me; all of the facets of my professional life. I'm going to just blog away on all topics, keep the posting flow higher, and not put off things until they are perfect. They never will be. I'll deal.

So.. look for a lot more posting from now on. I'll be sure to tag everything appropriately so you can easily filter out Palm, Java, trip reports, or anything else you desire. Thank you, gentle readers.


After 5 amazing years at Sun I have decided not to move on to Oracle. Instead I will be joining Palm as a developer advocate for the WebOS. The WebOS is an open platform with an exciting future on a variety of Palm devices, which I'll talk about in great detail soon. For now though, I want to talk about Sun, why I'm leaving, and the future of Java & JavaFX.

I joined Sun in 2005 to work on the Windows L&F for the Swing team. Since then I've been on several different teams, always working with some incredible engineers. First the Swing team, then the NetBeans team to work on the GUI builder, then the JavaFX team to work on the designer, samples & docs, and general development. Finally I've spent the last year working on the desktop client for the Java Store, written in JavaFX.

I didn't start working with Swing at Sun, though. I've actually been doing Java GUI stuff since before there even was a Swing toolkit. In 1995 I learned Java at the recommendation of my favorite TA, Ian Smith. He was convinced that Java was the future of OO languages, not C++. Shortly after I began writing AWT graphics hacks, creating the world's first (to my knowledge) Java ray tracer in 1996. I then spent my last year at Georgia Tech working for Scott Hudson on an experimental GUI toolkit called SubArctic. (the demos should still work, actually). That work led to my one year internship at Xerox PARC where I got to work with Studio RED and met Marc Weiser (who foresaw of today's smartphone and embedded computing revolution). I even got to have dinner with Alan Kay when he was at Disney. (FYI: Alan Kay is the man who invented everything in the 1970s, including the iPad).

After PARC I worked in a few startups doing interface architecture and view engines until the dot-com bust. As required by law, all programmers in Atlanta must work at least one of the following: Home Depot, CNN, Cox, Verizon, Coke. I worked for Home Depot & Verizon, then joined Docucorp; doing various client & server side UIs for each. Finally, while at Docucorp, I started blogging on and wrote Swing Hacks with Chris Adamson. It was Swing Hacks which eventually led to the Sun position, and to where I am today.

So, from 1995 until the present I've spent my professional career working on Java GUIs of some sort. Now that it's the year 2010 (freakshow!) I've decided to start working with something completely different: HTML, JavaScript, and CSS on the WebOS. The Oracle transition seems like a good time to make the change.

Don't think that I'm leaving Java and JavaFX behind. I'm proud of the work we have done, from making UIs easier to code, to reinventing JavaDocs. JavaFX is a great technology with a bright future now that it will have Oracle's financial and marketing support. Now I'll just be involved with them from the other side, as a user and application programmer. I still plan to work on Leonardo, my wireframing tool in the Java Store. I've also got another release of MaiTai ready to ship when JavaFX 1.3 & Prism are out. The JavaStore is going to be a big part of desktop computing, and I look forward to buying lots of great apps through it.

Finally I want to thank my incredible colleagues at Sun. Rich, Jasper, and Amy: you've done a great job designing a GUI toolkit for the 21st century. Jeff, Jeet & Nandini. I've greatly enjoyed working in your teams. And most of all, I feel incredibly fortunate to have worked with the inventor of Java (and the Java Store), James Gosling. I still have your signed dollar on the wall of my office.

When I was in college there were five companies I dreamed about working for. Sun was one of those companies. All my wishes for a bright Java future.