Aug 21

Facebook webOS; Playing to Win

Mobile, Palm, webOS 2 Comments »

I have been taking in the news and constant amazement as the “HP webOS” situation changes in front of my eyes. A month ago we had folks from HP saying that we are staying the course and great devices are coming soon, and now we have utter chaos. I don’t know what HP’s plan was, but man…. surely it wasn’t to be executed as badly as this.

I feel so bad for the webOS userbase, developer base, and employee base. They have been left in the lurch again. Shocking, really.

It has made me look back at my own career and think about the good times and the bad. As I reflect on my experiences, I definitely see a trend. I have felt the most frustrated when I know that we didn’t “play to win” and were too conservative. My successes have come from projects and products that had a strong vision and we went all out for it. The funny thing there is, even if the outcome wasn’t a home run, great things came out of it.

I don’t think that either Palm or HP were anywhere near aggressive enough, and I can look back at early meetings that Ben and I had with folks where big ideas were shot down for being too risky. Many of the folks at the top wanted to be another Apple, and you can’t fight that war. Android has been so successful through a) hard work by engineers and b) a disruptive and very different business model. Java is yesterdays technology though, and if we saw webOS at Google I think that Android would have been even more than it is today. The interaction model is vastly superior. This doesn’t mean that the user experience is superior. I can’t say that is the case because webOS hasn’t performed well enough. It has been too slow and buggy, and it pains me to say that. webOS 2.0 was a case of second system syndrome to the extreme, and if we had instead had folks sitting in a darn profiler, we would have ended up at a much better spot.

I think that the only real hope for webOS is not for an HTC to come along and make some hardware for it. It needs an owner that cares and will push the hell out of it. The only owner that I really see is Facebook of all people. They very much have a culture of playing to win, they are making large bets on the Web. They need to do so, as the last thing they want is for an iOS/Android duopoly surrounding them.

They could take webOS and do some very interesting things with it. Imagine an open source webOS that could run on top of Android (hint: I may have seen this before). This way, your system can be installed by the Android user base, and Android apps can even run on it. They may not run perfectly, but who cares…. you get access to that application base and you can kill the “number of apps” arguments.

Why stop there? You can run webOS a la iCloud, but even more so. The entire experience is in the cloud, and the synergy concept can now truly go where ever you want, even onto iOS and Android. The core WebKit platform could join the PhoneGap project. Now the Web gets a massive boost. Instead of waiting for the Web features to trickle into the Android and iOS WebKit implementations, we could rally behind a WebKit (or Gecko if they work with Moz!) platform that you can target on any platform. Chrome Frame for Mobile. We need it to compete.

There are some great engineers who (very kindly imo) stuck it out for love of the platform and their teams. However, many great ones have left too. So, whoever comes in needs to rebuild the team.

It is hard for HP to come in and recruit talent, especially now, but Facebook? If they step up to the plate with a killer vision and stock options to boot…. wow. I can see the team now. It is amazing. It has many WebKit engineers (which are much much needed). If I was a college for computer science I would be spending as much time with the WebKit code as possible :)

It would be a crazy big bet for Facebook, but they have the funds and cojones to pull it off. As great as the Web is, it needs a lot of help on mobile devices. iOS is fantastic and has a great mix of a high level language in Objective-C with a fast low level runtime (especially with ARC). The Web is a very forward looking solution. We need a lot of engineers to keep accelerating it, but that is happening. The JavaScript runtimes are on an amazing streak. We are getting better and better graphics and low level APIs made available.

Man, I would love to see someone really give it a shot, and go for broke. HP’s fire sale will get some users in the field, so someone can swoop in and take advantage of it.

Facebook actually has a fair few engineers and execs from Palm over there, and what about Amazon? They have made a big bet on Android, and are going gangbusters on being the company that makes money off of Android. However, if they went webOS on top of Android? Oh, and Jon Rubenstein is on the board of Amazon (which always seemed a bit weird to me!) Maybe Amazon and HP could at least be good partners.

Oct 22

Setting our own Direction; Ben and I to move on from Palm

Palm, Tech, webOS 14 Comments »

set direction

When we joined Palm, we were excited to join the intersection of mobile and Web. It has been fascinating to see how that seam has grown over a very short period of time. The device landscape has exploded and developers have amazing new hardware to target. webOS embodies the spirit of joining Web and mobile and we have enjoyed growing the developer community but with its new home at HP we thought it was time for us to move on and allow their resources to take things to the next level. As Ben mentions on his own reflection, it is bittersweet to leave, and I really want to thank Palm, HP, and the webOS community that have embraced us and the platform. I also want to give a massive thanks to: a) the amazing engineers who developed webOS, b) the developer relations team that care so much about our developers, and of course c) the developers who created great experiences on webOS. I wish everyone the best, and as we mention on our post on the Palm Developer Blog, we look forward to continued involvement with the community in our new role as consultants.

What’s next? I have enjoyed time at large companies and small, and there are pros and cons to both environments, but it is time for me to swing back to “small”. I wrote about how the culture of joining companies after an interview is akin to marriage after the first date, so I am not looking to dance down the aisle just yet, no matter how pretty the bride is ;).

Instead, I am incredibly excited to start a new venture with my long time co-hort, and best mate, Ben Galbraith. We have learned a lot about the trials and tribulations of being a developer for the mobile Web, and have some ideas on how we can help people create compelling experiences using HTML5 and related technologies in a highly productive manner. We care passionately about developer community, and are interested in helping companies understand and do the right thing by developers. Finally, we are makers, and have some ideas of great products to build. We look forward, as is our DNA, to share the journey and experience as we strive to build great software.

Industry cross roads

Scott Rosenberg posted on the Web parenthesis and questions whether the Open Web is closing. We are so lucky to be in a position where a massive global platform is Open. If you look at our history with mainframes, PCs, and gaming consoles, they have all be closed proprietary systems. As developers we have been beholden to the vendors. When we are both aligned, things can work out, but as soon as the company has a change in strategy and we misalign, developers are often left by the wayside. This mirrors the world of dictatorships. If you could guarantee your dictator is fully aligned with you there is a good chance that the system will be far more efficient than a democracy. History has taught us though that 99.9% of the time this isn’t the case. The Open Web gives us an escape valve. It has its own problems and complexities (just as democracy), but that is all critically worth it.

Being “open” isn’t enough, and we need to have a platform that works for developers. We need to be able to make money. We need to be able to create amazing experiences for our users. The Web has a huge new challenge vis a vie the “app economies” out there, but it behooves us to all push the Web forward and make it work for us.

The Web has the opportunity to be THE unifying platform that can give us the best opportunities.

It is going to be an exciting and important few years. Now is the time to endeavor to help set some direction in the industry. I hope we can have an impact in our own small way.

Aug 31

Node is our turtle shell; Node.js now powers services on webOS

JavaScript, Mobile, Open Source, Palm, Tech, webOS with tags: 3 Comments »

ryannode

At our last Palm Developer Day, Ben and I discussed future APIs for webOS including “JavaScript services” as a way to write code that runs on the other side of the device service bus using JavaScript.

If you think about it, node delivers a services platform for the cloud, so is there a way that we could work together? We got together with Ryan Dahl of Node to try this out, and it turns out that node works fantastically well on a mobile device! Major kudos should go to the V8 team for creating a great VM and to Ryan for writing efficient code that scaled down from the cloud to the device.

Today we announce that node is part of webOS 2.0:

The popular Node.js runtime environment is built into webOS 2.0, which means that you can now develop not just webOS apps but also services in JavaScript. The active Node ecosystem is on hand to provide community support and a rapidly growing library of modules that you can use in your webOS services.

Besides powering the new Synergy APIs, JavaScript services strengthen webOS’s support for background processing and add new capabilities—like low-level networking, file system access, and binary data processing—to the web technology stack.

I am really excited about this move for us. The node community is top class. I get to see this time and time again, most recently over the weekend and this week as I judge the node knockout. There is magic in the air with Node. It feels like the Rails days. I remember being so happy to jump to Rails and get away from the heavy world of Enterprise Java. It was a breath of fresh air to not have to argue with folks about every piece of the stack. “What about JSF with HiveMind and Commons-Logging and ….” Argh! Too. Much. Choice. And, a logging abstraction above Log4J was hilarious :)

Node is low level, yet simple. It is more like Sinatra than Rails. The event-based opinions keep you in good stead, and with cloud solutions such as Heroku and no.de you have great deployment stories, unlike Rails back in the day.

If you check out the modules that are growing daily, and the fun real-time hacks from the knockout you will get a good feel for node.

It feels great to have webOS as the first mobile device that embeds node. With db8 we offer a JSON store than can sync to the cloud (e.g. sync with CouchDB). This stack is starting to look pretty great.

May 15

Palm Developer Day: Walking through the announcements in our keynote

Palm, Tech, webOS 2 Comments »

Ben and I gave a keynote at the Palm Developer Day where we set up the event, and also shared some of the technology that we are working on for developers. There are a lot of fun APIs, such as:

  • Accelerated CSS transforms and animations
  • JavaScript Services: You have always been able to publish messages to the Palm service bus (e.g. launch an application) but how about being able to subscribe and run code on the flip side? You will be able to do just that with JavaScript Services. You will get access to a slew of libraries in that world (your own process too!):
    • Background asynchronous services
    • File I/O
    • Binary JavaScript types
    • Low-level network I/O
    • “Medium-level” HTTP via CURL
    • Fast XML streaming parser
  • db8: what if you had access to a fantastic performant native JSON store? That is where db8 comes in, our new open source JSON datastore that includes:
    • Native JSON storage with query mechanism
    • Built-in primitives for easy cloud syncing (Easily query changed / deleted data, Designed to sync with CouchDB in the cloud)
    • Fine-grained access control for apps
    • Mobile-optimized and fast (especially for updates)
    • Pluggable back-end
  • Audio / Video Recording
  • Media Indexer Access
  • Secure Key Manager + Crypto Libs
  • Bluetooth SPP
  • Bonjour / Zeroconf

We just had fun doing a podcast on this and more. Join us as we go through the tech, and we also hope you enjoy the sales pitch at the 41 minute mark (not what you may think ;)

Mar 09

palm-run: a walk through of building a new webOS application

Palm, Tech, webOS 2 Comments »

As developers, we often build scripts and tools to sharpen our workflow. One of the simple scripts that I am refining is palm-run, my swiss-army knive of a tool that deals with packaging, installing, launching, and tailing logs as I develop my application.

I put together a walk through of palm-run in the context of creating a new webOS application from scratch. In the screencast below I cover:

  • Generating your webOS application structure
  • Implementing a one-scene application
  • Packaging the application and running it in the emulator
  • Running an IPK directly, no packaging here mate-y
  • Setting up your application for development and production uses (more below)
  • Using the Palm Inspector to take a peak at the structure of your app as it runs

(I recommend going full screen on this bad boy to help read the deets.)

Development vs. Production

I wanted to go into a bit of detail on this one. When you build an app you want to have different builds for development and production. In development, you want debugging turned on with verbose output. In production, you want to exclude all but the necessary files.

The latest version of palm-run lets you tell it that you fancy production mode via -P.

You can enhance your webOS application to do more in this world by doing the following:

  • Create a config directory at the app root
  • Create framework config files for the two use cases. Here are two common versions:

    Development

    {
        "logLevel": 99,
        "debuggingEnabled": true,
        "timingEnabled": false,
        "logEvents": false
    }

    Production

    {
        "logLevel": 0,
        "debuggingEnabled": false,
        "timingEnabled": false,
        "logEvents": false
    }
  • Create exclude files for the two use cases (excludes_development.txt and excludes_production.txt)

Now you are set. To see a shell app that uses this, check out palmrun-configtest. If you build the app you will see that there isn’t console output if you palm-run with the -P option.

What else would you want a high level program like this to do for you?

Dec 17

Project Ares: An awesome mobile web IDE built on the web

Ajax, Palm, Tech, webOS with tags: No Comments »

I am so excited for the Ares team at Palm today as we launch Project Ares a web based IDE for the mobile web.

The full experience packs a lot into the browser: visual designer, code editor, visual debugger, log viewer, source code integration, drag and drop file upload, built-in app preview, and the ability to run your app directly in the emulator or even the device!

I talked more about the details on Ajaxian and the Ares site has more.

I am so jazzed to see this out there. At Mozilla we saw the Ares team building this great product that uses Bespin right now for the code editor, some of the server side, source control and debugger (the first sighting of Bespin debugger!)

The team has worked incredibly hard since then to build what you see now in public beta form.

This also shows how awesome the web platform it is. Because webOS builds on the web we are able to have features like the “preview” feature that shows you how your app will look without even having to go to the emulator or device.

The performance of the app says a lot too. It is incredibly responsive for me, especially since there are a lot of features packed in there. The layout system is really well thought out too and is a dream when you compare to CSS fun. I can’t wait to see what the community has to say about Ares, and I want to hear features that they would like. After using this, I want to be able to build all kinds of web apps from it ;)

I also want to say thanks to my Bespin team mates and community as well as the new friends I have made at Palm. Matt, Scott, Steve, Frankie…. you guys are awesome and it is amazing to see what you have done in short order!

Nov 04

Having your webOS application wake up for background tasks even without an open window

Palm, webOS 1 Comment »

When you think of a Web application, you think of going to an HTML page that then loads scripts and resources to display functionality. Applications in general do not always fit that model. If you launch an “application” like Growl on the Mac, a window doesn’t launch. It merrily kicks off a service in the background.

The same is possible in the world of webOS and browser extension systems. One of the user experiences that I enjoy on webOS is the notification system. Non-modal, and any application can tie into it. There are various levels of notifications:

  • Banners: Thin bottom line one liner that appears quickly
  • Icons: Notifications are grouped together in time
  • Dashboards: Larger areas. A DOM window so you can put controls in there. For example, the media dashboard lets you play, pause, etc.
  • Popups: Even richer larger actionable areas

More on these notifications in another post. If you have an application that wants to tie into the notification system you can do so even if a window isn’t open.

I wanted to find out how to do this, and luckily Mitch Allen has a simple example of this in his RSS News application that he builds in his book on Palm webOS.

I hope to offer a simpler API specialized for this, but it is quite trivial to do thanks to the Power service. The timeout service is located via palm://com.palm.power/timeout and there are various properties that you can pass in to do the real work when you are woken up. What application should be opened? What task should be run when opened? That is all tied in via the application manager service (e.g. see the palm://com.palm.applicationManager/open service below).

The wakeup code in the news application is defined in the setWakeup method in the main application assistant (NOTE: assistants help with the controller part of MVC in Mojo):

// setWakeup - called to setup the wakeup alarm for background feed updates
//   if preferences are not set for a manual update (value of "00:00:00")
AppAssistant.prototype.setWakeup = function() {    
    if (News.feedUpdateInterval !== "00:00:00") {
        this.wakeupRequest = new Mojo.Service.Request("palm://com.palm.power/timeout", {
            method: "set",
            parameters: {
                "key": "com.palm.app.news.update",
                "in": News.feedUpdateInterval,
                "wakeup": News.feedUpdateBackgroundEnable,
                "uri": "palm://com.palm.applicationManager/open",
                "params": {
                    "id": "com.palm.app.news",
                    "params": {"action": "feedUpdate"}
                }
            },
            onSuccess: function(response) {
                Mojo.Log.info("Alarm Set Success", response.returnValue);
                News.wakeupTaskId = Object.toJSON(response.taskId);
            },
            onFailure: function(response) {
                Mojo.Log.info("Alarm Set Failure",
                    response.returnValue, response.errorText);
            }
        });
        Mojo.Log.info("Set Update Timeout");
    }
};

Mojo applications have a certain lifecycle and your application will get callbacks for setting up, shutting down, activation (when you come back to a scene), deactivation, etc.

Thus, you will see that setWakeup is called in the main AppAssistant.prototype.setup and when the application is launched AppAssistant.prototype.handleLaunch.

Anyway, suffice to say, having a lot of fun digging into webOS.

Oct 06

An intense couple of weeks; Palm Developer Program announced

Palm, Tech 17 Comments »

launchingprogramwithben

The first couple of weeks at Palm have been a whirlwind. We wanted to get a developer program out there, and it happened in short order! Add to that the fact that I had the fortune to see a beautiful new son come into this world. Phew. I need to get my breath back.

Ben and I were incredibly excited to be able to come out with a program that gives a glimpse of our vision. In a kick-off event at the Mighty club, we got to share the vision, along with the details. For the nuts and bolts read here, but for some thoughts on the vision and key elements, read on:

We told the story of why we are so excited about Palm and the mobile Web as a-whole right now. It feels like there is a real convergence happening between: the fact that the mobile device hardware has become the hitchhikers guide to the galaxy, or so it feels; and knowing that browser runtimes have finally become application runtimes. There is a lot of room for both of these technologies to grow, but we have reached a good place already. What’s now happening is that we’re bumping up against the browser sandbox like crazy and we’re all trying to expand out what’s possible on the web. We’re doing this because for all its warts, many of us see in the web the potential to be The Platform that we can use across all of these emerging devices to bring sanity to application development. Imagine a world where you can develop Web applications that you can deploy to a plethora of devices and form factors. We have a real opportunity to make this world a reality, and it will take the entire Web community to make this happen.

What about the program itself?

We announced tonight that we’ve decided to free developers to release and market their applications via the web. When you decide to release your app, it is assigned a URL that you can distribute any way you like. With that URL, the user can install the application on the device. With this mechanism, you skip any review process and get a direct conduit to your users.

But for those who want the catalog experience, we’re investing heavily in the creation of a fantastic application marketplace–one that we carefully manage and organize, and where we review each application. There’s so much innovation that can happen here in terms of providing promotional opportunities for your applications and in making them discoverable, and we’re thrilled to be playing in this space.

We going to charge $50 for each app you submit to this catalog, recognizing its value as a distribution channel and as a friction point to control the flow of apps into it.

We actually want the web to win for distribution. We want to see people innovate in marketing their applications themselves and solving the app discovery problem.

To facilitate that discovery, we’re making raw feeds of all the applications available to help you create your own catalogs of applications. We can’t wait to see what people come up with here, and we’re confident the result will strengthen the app ecosystem.

Open source developer program

Almost every line of code I have written for the last 4 years or so has been open source. The Web itself stands on the shoulders of open source (Mozilla, WebKit, Apache, Dojo, jQuery, etc) and it only felt right that we should have a program for open source developers and projects. If your webOS application is released under open source, the $99 program fee is waived.

This is just the beginning. We are hopeful that a vibrant open source community will grow around the mobile Web and Palm. I would love to see tools and services that help make this happen.

The feedback that we have already gotten has been fantastic. We have gotten great ideas on what we should be doing with the platform itself as well as the program. Not that a vision is set, it is time to build on today’s actions by continuously making good decisions for the community. When Palm brought Ben and I into the fold, they indirectly brought in the Web community that we love to be a part of.

Ok, I have gotten little sleep due to a lovely new baby, and a fantastic new opportunity at work. Now it is time to close the laptop, rest up, and work with you to create some kick arse Web apps for devices.

I want to thank the hard work of my new colleagues at Palm who made this happen in short order, and also the great crowd of Web hackers who came together to help make tonight such a fun event. I can’t wait for the next one, and to keep talking.

What do you want to see from us next? Also, if you are excited about the mobile Web and what we are doing, our group is hiring fast and we would love to have passionate advocates who love the technology as well as working with all kinds of developers!

Sep 25

Web platform + Mobile future = A new adventure; Joining Palm with Ben

Palm, Tech 42 Comments »

palmpixi

I remember watching the Palm Pre coming out party at CES with Ben and thinking “wow”. Palm had bet big. They had bet on the Web platform being the base for their new amazing hardware device, and becoming their platform going forward. Given the lead time required to create a device, I was impressed by their forward thinking. It was at this time that Ben and I were exploring how far we could push the Web as an application platform by creating Bespin with the Mozilla Labs team.

Fast forward to today, and I find myself taking on a new challenge with Palm. I will be joining Ben, my best friend, partner in crime, and fellow Ajaxian, as we take a new role as Director’s of the Palm Developer Relations team. We will have the responsibility of the developer experience with Palm. We will be trying to create a rich connective tissue between the company and the Web developer community that we love.

This feels like a pivotal time for the Web. We have a convergence of:

  • The personal Web (some are calling this the you-centric Web)
  • Mobile is truly here. With smart phones that are full computing powerhouses, we are seeing amazing experiences thanks to hardware and software working together
  • The Web browser has become a rich platform and powerful runtime

It also feels like we have only just begun. Browsers aren’t just getting a touch faster, they are getting exponential performance improvements. With HTML5, we are getting new richer APIs that cater for developers trying to create applications versus pages.

I have only really dabbled in the mobile world up until now. I have always been excited about consumer electronics, but never really got into the developer environments. I remember looking at the testing setups at companies such as Google, and realizing the pain in getting applications working across a huge slew of different proprietary API and capability. There is a massive opportunity with Palm webOS to give Web developers the ability to deploy outside of the browser, and onto the device.

I have long been frustrated with the status quo with certain platforms, and as I thought about what makes me happy as a developer, it is freedom, choice, and information flow. I feel passionately about bringing these values to mobile, and carry my Web DNA with me. When Palm came to Ben and I, we were curious to see how much they understood what it really meant to have a “webOS”. The management team impressed us, and persuaded us that they understand how important the principles of the Web are, as well as the crucial role of developers. By giving us the honor of this responsibility, they signal their intent.

Speaking of the Open Web, that brings me to Mozilla. It is a unique opportunity to work for a mission based organization such as Mozilla. They gave us the chance to work on projects that we care deeply about such as Bespin. Bespin has already grown beyond our dreams. It feels like we get daily emails from developers talking about how they are using Bespin in their own projects. Embedding it here, hacking on it there. You gotta love open source. I want to make it clear that Bespin will continue to go from strength to strength, and I can’t wait to see it revolutionize the way that we build applications. There is a fantastic community around the project, and the Mozilla Developer Tools Lab will continue the charge. It has been hard to move on, but the fact that Mozilla is a community gives us a unique opportunity to continue to work with the Bespin project. You can’t say that about too many companies out there.

So, I want to thank the Mozilla community and look forward to continuing to work for the Open Web with you. The crew in both Labs and the entire company is phenomenal. I can’t wait to see the great things that will continue to come out of the project.

Now is the time to knuckle down to create the most amazing developer experience in a mobile environment for you. I look forward to set an example with Ben on treating developers humanely, with trust and transparency. I won’t just use the word “open”, I will define what it means to us.

I hope to see you on the flip side, and look forward to continuing to participate in the Web community with you!