Archive for the ‘platform’ Category

MojiPage Supports Yahoo Mobile Widgets

Thursday, February 28th, 2008

In January, Yahoo announced the first preview of their mobile widget platform. Being in the mobile widget space, we were naturally excited about Yahoo’s entry into the space as it validates our vision and proves that the market is sizable. We dove in and learned more about the platform.

Essentially, you can create two types of thingies — snippets and widgets. Snippets are a simplified and less flexible version of a widget, and can appear on the Yahoo! mobile home page or Yahoo! Go home widget. Widgets, on the other hand, are richer applications with more control over the user interface layout and may span multiple screens.

Snippets and widgets are written in Blueprint — a declarative markup language based on XForms. Since Blueprint is declarative, much of the logic resides on the developer’s web server, which has the ability to dynamically serve Blueprint files to be rendered and interpreted by Yahoo servers or the Yahoo Go mobile app.

This is a different architecture from our own MWA, but each has its own merits. From the end users’ perspective, though, there is absolutely no difference. Anything that can be written using Blueprint (with server-side scripting) can be achieved using MWA, and vice versa. We think that Yahoo has done a great job in designing an elegant widget platform. In fact, we like it so much that we have developed a prototype to support Yahoo mobile widgets on MojiPage! We did say that MojiPage is a widget platform, didn’t we?

So if you’re developing a widget for the Yahoo widget platform, we invite you to submit your snippets and widgets onto our sandbox.

To submit your widget:

  1. Visit the sandbox URL: http://sb.mojipage.com/
  2. Click on “Add Widgets” on the top menu
  3. Scroll down half way down the page and click on the link under “Widgets Anywhere”
  4. Enter the URL to your zip archive (application bundle containing your config.xml and other metadata). We currently do not support application bundle upload yet.
  5. The MojiPage server will fetch the archive and install the snippet/widget, then make it available on the “Add Widgets” screen. Make sure you specify a less common description in the config.xml file to help you easily identify it.

As this is an early preview, some blueprint tags may not be supported. However, we have tested it against the sample Twitter widget provided by Yahoo.

Should you run into any issue, feel free to leave a comment below.

Have fun hacking!

Why is MojiPage the way it is?

Saturday, February 16th, 2008

It’s time to drill a little deeper into the technical side of MojiPage, and why we did it that way. Let me address the latter point by quoting an article by Tom Yager’s “Ahead of the Curve” column titled “The mobile app gold rush“:

The solution to the GUI dilemma is well in hand: HTML. While quality varies, all platforms have competent and improving Web browsers, which holds out the potential to use JavaScript, HTML, and CSS for user interfaces rather than cumbersome and proprietary APIs for text, graphics, motion, and input. Keep in mind as well that JavaScript has facilities for XML parsing, HTTP communication, and Web services. JavaScript performance is laughable on some handsets, but native or Java code fronted by an HTML/CSS/JavaScript GUI would impress and get apps to market faster.

The paragraph above nicely sums up our beliefs, which led us to our decision to base our platform on the lowest common denominator of MoMoMo devices (Yes, I just coined that term) — XHTML.

By requiring nothing but XHTML support, we can make ourselves useful to almost any phone that has data access today.

This may sound like MojiPage is just a bunch of CGI scripts from the 90s. Well, not really..

As I’ve said, MojiPage is a widget platform targeted at mobile devices, and that our widgets are written using standard web technologies — XHTML, Javascript and CSS.

When a widget is added to our platform (by giving us just the URL to the widget HTML file), our server downloads the widget HTML and executes the Javascript in it by emulating the browser environment. Since the Javascript runs on the server, it has full access to remote RSS feeds, XML and JSON content without cross-domain limitations and uses a combination of DOM the widget output and server-side extension APIs to accomplishes whatever features it needs to support. The result is a static chunk of HTML code which is then served to the client.

Bear in mind that HTML is only the baseline on which we can gracefully degrade our service when the client is less capable of utilizing modern web standards. The technology and API is fully capable of serving Javascript to the client for enhanced interactivity. This will be easily demonstrated by the MojiPage iPhone interface that we are currently working on and made available at the end of March.

This is cloud computing at its best, heterogeneous devices (with varying degrees of power) connecting to smart network of servers running code that pulls data from all over the Internet.