Developer Meetup with Phil McKinney

1 BY Roy Sutton

Last Wednesday night I had the great fortune to attend the New York City webOS Developers Meetup featuring Phil McKinney. Longtime webOS developers will remember Phil from his role as CTO of HP. Phil is currently promoting his book, Beyond the Obvious, and has just taken over as CEO of Cable Labs. The meeting was held at the 92nd street YMHA and was hosted by Ben Stern and Jonathan Ezor, both also long-time webOS fans.

Phil’s new book focuses on innovation. Phil spent about half the night discussing his book and the lessons on promoting innovation. There were many interesting ideas and I recommend you take a look at this book if you are at all involved in providing a product or service.

The rest of the night involved questions about HP and webOS. We learned about the role that Phil played during HP’s acquisition of Palm. He said that he carries his TouchPad with him everywhere he goes. He also said that he believes that Open webOS has a lot to offer. We couldn’t agree more!

After Phil’s talk I got a chance to hand out some Enyo t-shirts and talk a bit about our plans for Open webOS, Enyo and the webOS Community Edition. It’s always great to meet with developers. Perhaps we’ll show up at your webOS developer meetup?

Photo credits: Ben Stern

Enyo Hackathon and a New Blog!

1 BY Fred Patton

The big news of the day is the new Enyo blog, hosted at blog.enyojs.com. Today, you’ll find news about Enyo 2.0b2, which includes the first set of UI widgets. Read the blog for details.

Have you signed up yet for the March 4th Enyo Virtual Hackathon? There will be live physical presences in NYC (hosted at Pivotal Labs’ NYC headquarters), Dallas, Indianapolis, San Diego, and Oklahoma City, but you can also participate virtually from anywhere! Should be a great time. Big thanks to the NYC webOS Developer/Enthusiast Meetup group for putting it together. Awesome job, guys!

webOS CONNECT coming to Paris and Berlin

1 BY devrel

Building on the excitement and good times we had at webOS CONNECT London, the fun continues with a pair of upcoming webOS CONNECT events in Paris and Berlin, slated for May.

Whether you’re an experienced webOS developer or someone that just wants to learn and see what all the webOS buzz is about, these events are the perfect opportunity to:

- Meet Richard Kerris, VP of webOS Developer Relations and others on the webOS team
- Learn from best practices of other webOS developers
- Network with the webOS community over some good food and fun

With the webOS 3.0 SDK out in Early Access and all-new webOS devices coming, there’s so much to talk about and we want to bring everyone together to share in all of it and have a good time.

Register now and plan on bringing a friend or two. We’ll see you there!

Good times at webOS CONNECT, London

1 BY devrel

Last week was a quite a week for webOS developers. We made the webOS 3.0 SDK available in our Early Access program, giving developers a head start on creating apps for TouchPad’s summer launch (get to it!).  We also launched a new and improved HP webOS Developer Center, providing developers with an even better resource for all their webOS efforts. To share the news, we went across the pond and joined an extensive roster of speakers at the webOS CONNECT community event in London.

webOS Connect image Read more

Meet the Team: Lisa Brewster

4 BY devrel

“Meet the Team” is a new series to help you get to know your webOS Developer Relations team. It’s a friendly and fun behind-the-scenes look at the people whose main mission is to serve and champion webOS developers everywhere.

This week, we chat with someone many of you are probably familiar with – someone you might know as @adora if you’re on the Twitters… Without further ado, meet Lisa Brewster.

Q: First off, what’s your title? And what does that really mean?

I’m an App Review Manager on the Developer Relations team. I manage our app review process and support developers through the submission and publication of their apps. App review is such a critical step for developers and my goal is to use it as a touch point to add value and not just act like a gatekeeper.  I keep an open line of communication with developers through all stages of the development process, which results in fewer surprises come submission time.  And since I’m one of the first people to see these apps, it puts me in a great position to start generating buzz for them as soon as they launch.  You could say I’m at the intersection of HP, developers, and users.

Read more

Making the Transition to webOS 2.0 and Beyond

33 BY devrel

Even with all the exciting news from this week, a lot of questions have been floating around about our plans and how they affect you and our customers. As such, we recognize that we need to do a better job communicating developments in a more timely, detailed and thoughtful way.

For now, we want to address the webOS 2.0 update in particular and what resources we’ll provide to make this transition easier for everyone.

webOS 2.0 Availability

First off, the decision not to release webOS 2.0 for the Pre and Pixi was incredibly tough, knowing that we couldn’t deliver the latest and greatest to people that supported webOS from the very beginning. But, it was a decision that had to be made and we hope our plans for the next generation of webOS will provide the best platform for everyone moving forward. Here are some additional thoughts for your reference.

Supporting the transition to webOS 2.0 and beyond

With the exciting announcement of HP’s all-new Veer, Pre 3 and game-changing TouchPad, we want to give you the resources you need to develop apps for webOS 2.0 and beyond:

  • Extending our free Pre 2 program for qualified developers: Contact us at devmarketing@palm.com – we want to help you test your app on the latest devices.
  • Redoubling our resources to support developers: We are actively expanding resources to help you develop for webOS, from how we handle email support via pdc@palm.com to a dedicated team that’s better equipped to help you every step of the way.
  • New incentives and promotions: We’ll share more details about how we intend to reward your efforts and support of webOS.

It’s a start. We want to provide the resources you need and deserve every step of the way, whatever it takes. There’s a lot of buzz around the new webOS devices and the future of the platform, which offer a great opportunity for your apps now and in the future. HP is going to provide the strongest support and promotion webOS has ever had – and it all starts with you. Stay tuned!

How to add line breaks to your app description in the catalog

2 BY enda

Have you been frustrated trying to put line breaks into you app description but just ended up with a single paragraph?

Well if it makes you feel any better you are not alone. Some very savvy developers in the forums tackled the issue determined to find a solution and did!

The problem is that html engine is not escaping by default and so the line breaks are being seen as white spaces and ignored. As discovered by forum member “siburny” the problem code is

if (val.indexOf('<') !== -1 || val.indexOf('&') !== -1) {
var renderingDiv = document._renderingDiv;
renderingDiv.innerText = val;
var escapedValue = renderingDiv.innerHTML;
val = escapedValue;
}

So the solution is to have an ampersand somewhere in your description. Having the “&” causes the template processor to run extra processing on your text, which includes converting the line breaks into <br> tags.

A simple and clever way to do this would be to replace “and” with an ampersand, for example Comments & feedback welcome.

As a side note, you only need to do this for devices on 1.4.5 and lower. The issue has been fixed for the 2.0 catalog.

webOS Code Snippets

0 BY devrel

The awesome webos101 crew have a code snippets area that you should know about. What kind of cases will you see up there?

UI Appearance

There are a lot of tweaks at your disposal via CSS styling. Whether it be a simple #palm-app-menu style to change the app menu, using the dark theme (“theme”:”dark” in appinfo.json) or changing the look of your submenus:

// menu grouping at bottom of scene
this.cmdMenuModel = { label: $L('Menu Demo'),
    items: [
      { label: $L('Resources'), icon: "increase", submenu:'resources-menu'},{},{},{},
]};

this.resourcesMenuModel = { label: $L('Resources'), items: [
    {icon: "reminder",  secondaryIcon: "reminder", label: $L('Set Reminder'),
     command: "doCalendar"},
    {label: $L('Armortization Table'),secondaryIcon:'table', command: "amortButtonPress"},
    {label: $L('Increase Amount'),  secondaryIcon: "increase", command: "incrButtonPress"},
    {label: $L('Email'), secondaryIcon: "send", command:'email' }
]}

this.controller.setupWidget(Mojo.Menu.commandMenu,  {spacerHeight: 0, menuClass: 'no-fade'},
                            this.cmdMenuModel);
this.controller.setupWidget('resources-menu', undefined, this.resourcesMenuModel);

… you are covered.

Behavior

What little things do you find yourself doing? In this section we see things like using the clipboard:

this.controller.stageController.setClipboard('hello webos', true);

or launching the app catalog:

new Mojo.Service.Request('palm://com.palm.applicationManager', {
   method: "open",
   parameters: {
     target: 'http://developer.palm.com/appredirect/?packageid=your.app.id'
   }
});

to sensing that the user is holding a digit on the gesture area:

// You can also use just 'document' as the target is you have a single stage application.
// Otherwise you must set it to the correct stage's document as shown here
// You can also get the StageController like this:
//   Mojo.Controller.getAppController().getStageController('NameOfStage');
Mojo.Event.listen(this.controller.stageController.document, 'keydown',
                  MyFunction.bindAsEventListener(this));

function myFunction (event) {
  // You can also check the keyCode instead. Ex: event.keyCode === Mojo.Char.metaKey
  if (event.metaKey === true) {
    // Do stuff when the meta key (gesture area) is tapped or held
  }
}

There is much much more. And the best thing? It is a Wiki, so go add your good stuff!

Thanks to everyone that contributed. Our contribution?

Our Facebook application lets you update status via a launch param:

this.controller.serviceRequest("palm://com.palm.applicationManager", {
    method:      'launch',
    parameters:  {
        id: 'com.palm.app.facebook',
        params: { status: "Check this out: " + this.storyFeed.stories[this.storyIndex].title +
                                 " - " + this.storyFeed.stories[this.storyIndex].url }
    }
});

CustomWare on their new webOS Salesforce.com app

0 BY devrel

Editor’s note: When we saw the salesforce.com application written by CustomWare, we wrote to them and asked if they would write up their experience. The article below is written by them (and not Palm). If you would like to talk about your webOS development experience, please let us know!

I have been asked to complete a guest post on the experiences and technologies used to create the first webOS Salesforce.com app.

CustomWare made the decision to build a new webOS app that aligns with our mantra of Integration and Collaboration. There was a need for a Salesforce.com presence within webOS, and so CustomWare decided to develop a proof of concept around this necessity.

The proof of concept began with an initial prototype. This involved investigating the Salesforce.com Ajax APIs, and whether there was a need to create a Visualforce page that would interact with the app, as a number of existing mobile components inside Salesforce are developed in this manner. Fortunately, there was an existing library we could take advantage of, and this did job of communicating with Salesforce. After some basic scene creation we had a webOS app querying and displaying Salesforce data.

This proved that the integration between the two parties was possible, so the prototype then became the basis for the real app. However, we saw a requirement for something functional, this is when we started looking at what could be done with the data we were extracting from Salesforce.com. At the same time, we needed to consider what needed to be improved in our prototype, including an improved interface, improved use of native webOS widgets and controls, better error handling and data persistence.

The team had a brain-storming session on the functional points behind the app, and assessed what the aim of the app was and what we were trying to achieve here. While it wasn’t our intention to create a fully fledged Salesforce utility straight off the bat, we were aiming for something practical inside the scope of the mobile world. This meant asking ourselves, ‘Do we really want just another interface to Salesforce? What would you use your CRM data for in the context of mobile (on the run, perhaps without immediate access to your computer)?’ It was decided that we should take advantage of the services offered by Mojo, and allow users to perform tasks like emailing a lead, or show the location of an account if you are on your way to a meeting.

In terms of feature set, there were a number of examples of Salesforce apps on other mobile platforms, but given webOS’ homogeneous nature with the web, it was in our interest to utilise the capabilities of the web. Two of the major web tools we utilized were Google Maps and Google Charts. At first it was considered that we could integrate a complete Google Maps feature inside the app, however this came back to our notion of functionality and practicality, and there was no need for an interactive map when the Maps application is loaded onto a webOS device out of the box. This lead us to the use of Google Static Maps which meant we could easily feed an address into the maps API, and have a map displayed along with the account information, users can then tap the map to launch the Maps app. We also looked at implementing a dashboard interface upon login, this lead us to query Salesforce and retrieve aggregate data about Opportunities and Leads and feed this data into the Google Chart Tools for professional looking graphs. We then hooked up event handlers to the appropriate data in each category. For example, a tap of an email would launch the email app with the address populated, or a tap of a phone number would launch the phone app populated. These tasks aligned with our intention of a functional app. We also made the decision to strip back the amount of data displayed to the user on our first release, as there potentially could be an endless number of custom fields and information available to the user. The amount of data available will be increased with future releases, and as we receive more feedback on the necessity of certain information.

This is our first release, so we haven’t implemented all of the great features that we have in our heads. An obvious next step is editing abilities (especially since the webOS user has a nice keyboard!), but we also aim to include Synergy integration with Salesforce contacts, conference call capabilities, support for custom fields and many more items on the road map.

We learned a few things along the way, some of which may help if you are new to webOS:

  • Always develop a prototype or mockup. This is important because mobile widgets and general user intuition needs to be tested. What works great on your website, might not always been functional on a mobile app.
  • Try to use existing JavaScript libraries where you can. There are a lot of great web and open source resources out there for developers to use.
  • Take advantage of the symbiotic nature between webOS and the web. Anything that is possible on the web is most likely possible on webOS.
  • Try and automate tests and tasks where you can. We have an Ant task that does a lot of work for us, including minifying our JavaScript and calling out to the Palm SDK for packaging, and deployment.

I’d like to thank the Palm Developer Relations team for giving me the opportunity to share my experiences with you. If you have any comments or feedback regarding CustomWare’s development processes, the integration and collaboration work we do, or feedback for the Connector for Salesforce.com, please jump over to the CustomWare website or our GetSatisfaction community.

I’ll leave you with the screencast we created for the connector, so you can get a walk through without even installing the application:

Until next time,

Dominic Lovell

Event wrap-up: San Francisco PDK Party

1 BY Lisa Brewster

Palm’s fearless Developer Relations leaders Ben Galbraith and Dion Almaer hosted a little shindig Wednesday night along with Appcelerator CEO Jeff Haynie. (Appcelerator is the creator of Titanium, a cross-platform development environment that uses JavaScript to write native code for multiple devices—can you guess why we like them so much?) The DevRel team met lots of developers who wanted to know more about porting to webOS, did some tutorials, gave away prizes, and generally partied ourselves silly.

We were also excited to celebrate the announcement of Palm’s new Hot Apps program, dedicated exclusively to PDK applications, and resident PDK expert Ben Combee was on the scene to talk about just how easy it is to port OpenGL iPhone applications to webOS. I hate to rub it in and say you had to be there to get the full impact, but you can at least get an overview of what all he covered from the slides he posted. (And just for the record, full PDK documentation is here).

Even though we we made Ben work, the night certainly wasn’t all business. Over 350 developers made their way over to see us at 111 Minna, DJ Mike Relm was spinning mad beats all night long in his requisite suit and orange shoes, and Palm engineers across the board were out to chat up developers and get the drink tickets flowing like manna from heaven.

But the highlight of the evening was probably the ridiculous number of devices Kevin Hague and I managed to give away in a random drawing (and by random, I mean we kept asking each other to pick a number). I don’t even have a final count of how many we gave away, but I got several text messages describing the scene as “craziness.” Congratulations to all the winners, and click here if you need instructions on how to use your new device for development without activating it.

Mega thanks to everyone who came out, and maybe we’ll see you guys again next year! ;)