I'm on the plane home from Mobile World Congress. It's been a heck of a couple of weeks. I've gotten some new coworkers, a new boss, announced our new products, showed off the new devices in Barcelona, and spread the word of webOS itself to anyone who will listen. I've got several blogs coming about what we've announced, some fun new demos, app speculation, and updates on my open source projects.

But first.. I rest. I've been traveling for two weeks straight and need some sleep. In the meantime I'd like to share with you photos of something far more important: the revolution in Egypt. You really must read this post from Peter Turnley, an amazing photographer who ventured to Cairo in the midst of the protests to shoot some amazing photos both before and after the president's capitulation. You won't regret it.

NetNewsWireScreenSnapz004.png

I had hoped to have my next tutorial article done by now but, alas, travel and JavaStore deadlines snuck up on me. I'm currently flying to Sweden for the annual OreDev conference.

If you live in northern Europe and have never been to OreDev I highly recommend it. It's not too big (600ish attendees), has some excellent speakers, and covers a broad array of topics. I love speaking at OreDev because I not only teach others about JavaFX but also get to learn about many other technologies that I wouldn't otherwise be exposed to. Last year I learned about JRuby, Silverlight, and Jython.

This year I'm speaking on JavaFX user interfaces and the Java Store, as well as announcing an open source project I've been working on for the past few months.

In the mean time, I'm also starting the NaNoDrawMo drawing challenge. This isn't a competition like the challenges I run on JFXStudio. Instead this is purely personal. Your goal is to draw 50 things in 30 days. Just draw and draw. Practice makes perfect.

And by draw I do indeed mean drawing on paper with pencil or pen; though any form of drawing, analog or digital, is valid.

Why am I discussion drawing, typically considered an 'art' on a design site? Well, I'm not an artist and I never will be. But many of the skills of an artist have great use in design. As I'll cover later, the first step whenever I design a new user interface is to sit down with a piece of paper and draw it. Drawing is fundamentally the ability to take what's in your head and put it on paper. And only once it's on paper for others to see can it start to become design. So drawing is a valuable skill which I wish I had more of. Hence: practice makes perfect.

I'll be posting my drawings on Flickr as the month progresses, as well as more posts on design theory and tech tips, so stay tuned.

- Josh

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.

Update

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!

OSCON

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!

Today I'm doing a three hour hands on tutorial at OSCON on HTML Canvas. All you need is a text editor, Chrome, and basic JavaScript knowledge. By the end of the session you'll know a ton about Canvas and have built your own little video game that can run almost anywhere. The full lecture notes and hands on lessons are here.

Greetings Earthlings!

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)

Monday

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

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

Book signing

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

Thursday I took the day off to spend time with my wife in Portland. Primarily Nordstrom's. We must have priorities.

Friday

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.

I'm speaking at OSCON in Portland next week, and what a busy week it will be. In addition to my personal session on marketing open source projects, I've added some Palm stuff in collaboration with HP. If you can't attend OSCON but will be in Portland I will also be speaking at the Portland Java Users Group. I'll also be working at the HP booth where we will be giving away phones, books, tshirts and some super nice water bottles. Here's the full schedule:

  • Tuesday 6:00PM: Introduction to the Mobile Web
    Portland Java User's Group
    Oracle Building, 8th Floor room 8005
    Pacwest Center,
    1211 SW 5th Avenue
    Portland, Oregon
  • Wednesday: 10:40AM HP's Session: Cloudy with a Chance of Revolution
    This is an overview of where HP is going in the cloud, including a section on webOS and Ares.
  • Wednesday: 3:10PM Swing Hacks book signing I'll be signing copies of Swing Hacks at the Powell's booth.
  • Wednesday: 6:00PM O'Reilly Author Meet and Greet
    O'Reilly booth, #313
  • Friday 10AM Marketing your Open Source Project on a Shoestring Budget
    Learn how to generate interest and build a userbase for your open source project.
    Portland 255

I'm very excited to announce that two of my presentations have been accepted to OSCON this year (thankfully back in Portland again). OSCON is one of my favorite conferences because I get to learn as well as teach. There is such a diverse set of topics that I try to get out of my comfort zone and learn something new every year. (One year it was an intro to Arduino). OSCON will be this July 25th-29th in Portland Oregon. And let me tell you: Portland in July is simply beautiful, with the best microbrews in the country.

The first talk is actually in the new OSCON Java conference, running adjacent to the main OSCON conf. My talk is Building Mobile Apps with Java on Non-Java Platforms using GWT and PhoneGap where you'll learn how to code up mobile apps (both web and installable) using pure Java. Even though Java isn't available on platforms like webOS and iOS, we will use the GWT cross compiler to produce native installable apps for those platforms.  Yes, one codebase and all platforms really is possible.

My other presentation is actually a 3 hour hands-on workshop I will be co-teaching with Dave Balmer called HTML 5 Canvas Deep Dive. Dave and I will give you a comprehensive overview of Canvas, including the fiddly bits like pixel effects and mobile optimization. I'm also happy to say that we will show of the HP TouchPad's kickass Canvas implementation. The folks in engineering have done great work over the past few months filling in missing features and nearly doubling the speed.

During OSCON I'll be tweeting at #oscon. Hit me up for drinks if you want to talk about canvas and the mobile web.

For a 20% off discount for any  OSCON package you can use the code Marinacci at this link.

 

I was in Sweden all of this past week for the OreDev conference. I had a wonderful time last year and made it first on my list to see again. The attendees are friendly and their technologies diverse, making it such a good learning environment. I was especially pleased to see they have added an entire track on User Experience. What follow's is OreDev's take on the future of user experience design, from the visualization technologies coming out of Microsoft Research, to a brief history of touch interfaces, to the latest rapid development technologies for mobile devices.

Interactive Visualizations

First up is Eric Stollnitz from Microsoft Research's Interactive Visual Media Group. This is the group responsible for the zooming PhotoSynth technology. They are continuing to pump out amazing imaging technology, some of which he demoed to us.

Eric showed us the Image Composite Editor which will stitch a multi-gigapixel panorama out of a hundred photos taken with a standard consumer digital camera. You just give it a directory full of images and it does the rest, arranging and blending the photos into a single final image. I especially liked how it would arrange the photos randomly and then move them into place as it does the analysis. This gives you a sense of what the app is doing. It uses realtime feedback as you change parameters to update the generated panorama using lower quality thumbnails. Once you've got settings that you like press the render button and let it run in the background, producing the final (very large) image. Future versions of this app may work with video footage as well.

The first thing he noted about their demos is that almost everything is now done with WPF, which is Microsoft's vector based UI toolkit for writing native Windows apps. It lets developers work at a higher level and produce apps that would be difficult to impossible using the older WinForms toolkit. In the Java world this parallels the relationship of JavaFX and Swing. The panorama stitching app was originally in older technology and they were able to have one intern completely rewrite it in WPF over the summer.

Eric demoed several apps using the DeepZoom technology that has been shown by MS for the past couple of years. It's interesting to see how this technology has evolved. Early demos simply focused on the amazing technical ability of zooming into insanely large images. Now that this is commonplace the focus has shifted to what useful things can be done with the technology, which is really far more exciting. Modern computers so much excess computing power, it's nice to see us doing interesting things with it.

My favorite DeepZoom app is called WorldWide Telescope. It combines beautiful large space images from various telescopes with user created content. You can 'tour' the galaxy with paths from different tour guides. In one example a seven year old kid first showed us his home in Toronto, followed by a tour of his favorite constellations. Another tour took us from earth, through the solar system, to the local galaxy structures, and finally to the edge of the known universe. The blending of multiple images into the same experience were simply amazing.

Tap is the New Click

Next up was Dan Saffer of Kicker Studio. It turns out I've been reading his blog for months. I found it while Googling for touch interfaces on Bing.com.

Dan gave us a brief history of touch technology, an overview of the various options, and finally some design guides for using touch in new interfaces.

One of the most interesting challenges in designing touch interfaces is the fact that fingers are larger than a mouse pointer (significantly) and that your hand can be in the way of the screen. With clever design you can address these shortcomings, but it's not trivial.

One way to solve the size issue is with iceberg and adaptive touch points. A touch point is simply a place on the screen where a user can touch. It's what we'd think of as a button or clickable image in traditional user interfaces. An iceberg touch point is when the touchable area is larger (sometimes a lot larger) than the apparent visual bounds of the thing being touched. This focuses the user's attention in the center of the touch point, but allows for a lot of error.

An adaptive touch point is where the touch bounds adjust based on context. For example, in the iPhone keyboard if you type 't' then 'h', the OS can guess you are likely to type a vowel next (at least in English). The keyboard can adaptively expand the touch size of the vowels to make them easier to hit. This improves the error rate of touch keyboards significantly.

The final example Dan showed us was a visual remote control system his firm developed. It's a set top box for your TV that uses a camera and vision system to let you control the TV with just hand gestures. They developed a simple language of gestures for changing the volume, navigating menus, and turning the TV on and off. It was interesting to see how they reduced a complex task into a small set of simple gestures through very careful research and design. Great stuff.

Quote of the day: The best designs are those that dissolve into behavior.

Making web applications for iPhone

On Thursday I attended a talk by Michael Samarin on developing iPhone web applications without navigating Apple's app store or writing a single line of JavaScript (well, okay, he wrote 3 lines). He did everything with Dashcode, Apple's visual web design tool, and Java servlets in NetBeans.

Dashcode has improved a lot since I last used it. Originally for building dashboard widgets, it has turned into a general purpose web design tool with a drag and drop interface similar to their InterfaceBuilder tool for desktop apps. Most importantly it has tons of Javascript enabled widgets that emulate the native iPhone environment.

Michael built a simple app on stage that could navigate and play a directory of of video clips on his server using a JSON web feed from the servlet. Dashcode lets you bind Javascript UI controls to JSON fields, making a functional app with only about 3 lines of actual code. You can even add simple hardware accelerated 3D flip transitions using CSS. The server side component was a straight Java servlet which parses the directory structure on disk and generates the JSON feed.

Next he used some Applescript called from Java to build a web based remote control for the QuickTime player. It was simple to build and surprisingly responsive. Every bit as good as a native iPhone app without all of the headaches. Michael's company, Futurice, now often recommends web apps to their clients instead of native iPhone apps because development time is far shorter, cheaper, and can be updated instantly without going through Apple's approval process.

The rapid development time really lets his team focus on the user experience. While I still believe in plugin based rich clients for the web, I was very impressed with what's possible in pure JavaScript and CSS on the iPhone. They've got quite smooth stack.

Conclusion

I love OreDev because it exposes me to technology I wouldn't otherwise get to see. Ultimately great design doesn't depend on the technology you use, but how you use it. And if the talks presented here are any indication, the future looks bright for many technologies.

That's the highlights for me. I did my final presentation on JavaFX Friday followed by some fun demos for a local Java group. Both went quite well and is in prep for a new app I'll be launching in a couple of days. Now time for some sleep.