perjantai 26. lokakuuta 2012

Project Hydra

First snow fell from the sky today here in Helsinki and to celebrate that I decided to write a status update. From now on, the Widget runtime for MeeGo will be called Hydra widget platform and should no longer be considered a beta. It's a name that I feel symbolizes well the purpose of the project, which is to create a widget runtime capable of running web applications created for any mobile web runtime, all in one environment. Just like the beast of same name has many heads, the widget platform shall support many web standards and platforms.

Version 1.3 is almost ready at the moment, just running some final tests before releasing it. Main improvement on the runtime side is integrating Cordova core functionality and APIs to the list of supported features. Cordova (previously known as PhoneGap) is an extremely popular HTML5-based open source cross-platform application development tool that offers developers a rich set of device APIs and the ability to embed a web application into a native application package for distribution over app stores. This means that a single Cordova application is basically just another widget. There is even a handy cloud service called PhoneGap Build that lets a developer convert a web application using W3C standard packaging format with a few extensions into native packages. From version 1.3 forward Hydra will support the Cordova APIs and packaging extensions, so that you can use Cordova applications even without converting them to native packages. Version 1.3 will contain Cordova 2.1 MeeGo port with the exception of File and Contacts APIs, which will be supported later once I figure out how to make them secure.

Update 30.10.2012: Version 1.3 is now out! You can get it from http://store.ovi.com/content/302071. Here is the full changelog:
  • Implemented support for Cordova 2.1.0 core and plugins (excluding file and contacts API)
  • Fixed Cordova Camera plugin to work with DATA_URI destination type
  • Fixed Cordova Acceleration plugin to return timestamp in ms instead of micro seconds
  • Implemented simple caching support for wiget preferences to preserve IO
  • Implemented support for widget.onExit event
  • Changed application name
  • Improved widget update support by no longer 'downloading' local update description files
  • Added system notification for discovered widget updates
  • Added support to enable fullscreen mode via preference 'fullscreen' with value 'true'
  • Added support to control orientation via preference 'orientation'
  • Changed default view-mode (i.e. 'maximized') to no longer show application toolbar
  • Widget information dialog now shows if widget update is supported
  • Rewrote geolocation handling
  • Fixed some vertically pannable widgets allowing slight horizontal pan
  • Improved GMaps widget with Street View and Places search support as well us graphical presentation of location accuracy
  • Fixed Feature Demo Geolocation page getting stuck
  • Updated Feature Demo widget with Cordova examples
  • Added vibration support for StopWatch widget

New application icon.

After updating to 1.3, you should automatically see updated versions of the bundled widgets offered to you as updates on the manager app. If you don't see the available updates, that means that you are using really old version of the widgets and should update them manually (selecting the attachment icon from toolbar and selecting each of the widgets). Please also notice that the Google Maps widget may randomly crash due to an issue in the platform components and unfortunately there seems to be nothing I can do to fix this issue.

lauantai 29. syyskuuta 2012

Top-3 Opera widget games on N9

Besides the Tizen games that are obviously created for touch screens, it gets a bit harder to find the smartphone and touchscreen friendly games from Opera widgets. I went through some of the available games and here are a best three games that I discovered.

1. Bubbles (http://widgets.opera.com/widget/10982/)

Very addictive game that also happens to work great on the new 1.2.1 version of Widget runtime. Keeps track of your high score so that you can compete against your previous best. Only annoyance is that if you change the orientation, the game resets itself. Also, the game will be shown as live icon in widget manager even though it is not playable in that mode.


2. Game FiFteen (http://widgets.opera.com/widget/27001/)

A classic mechanical puzzle game with 15 movable numbers to sort on a grid of 16 spaces. Works great on portrait mode.


3. Tic Tac Toe (http://widgets.opera.com/widget/6608/)

A clear and simple game of noughts and crosses. Works best in portrait mode.


keskiviikko 26. syyskuuta 2012

Widget runtime 1.2.1 available

A new version has just become available in the Nokia Store. It comes with a long list of improvements and fixes. The most important change in it is the way web viewports are sized. Earlier versions tried to follow the content size and automatically scale based on that. It wasn't a very stable method and some web applications behaved poorly with it, so I changed the logic to no longer use scaling by default. Any widget with dimensions specified in the configuration document will still be scaled to provide a viewport that matches the defined size. In addition, Tizen widgets will now be recognized and will automatically use viewport of size 1024x600 unless otherwise defined so there is no longer any need to define that in the configuration file. Similarly, Opera widgets will use default viewport with width of 300px, since that seems to be a default resolution in some Opera products.

Full changelog:

  * Refactored widget viewport and scale calculations
  * Improved widget manager UI by putting all the actions to a toolbar and adding a search function
  * Added a feature demo widget to show how the widget APIs work
  * Implemented support for W3C Widget Updates specification
  * Implemented support for W3C Widget Access Request Policy specification
  * Implemented support -o-widget-mode and view-mode media queries via hackish means of converting them to -webkit-view-mode
  * Implemented support for sms URI scheme
  * Implemented settings page
  * Added option to always start Symbian widgets in 2x magnified view
  * Added option to enable or disable WARP
  * Fixed regressions in 1.1.0 regarding notification id storing and comparison
  * Fixed automatic input reveal to also pan when typing on the input field modified html and places input behind VKB
  * Fixed Opera widgetmodechange event to fire with proper values expected by Opera widgets and separated it's listeners to a separate stack from W3C viewmodechange event listeners
  * Fixed Symbian widget.isrotationsupported to properly return boolean true value
  * Fixed Symbian widget.wrt references
  * Fixed cleared preference values drawn from configuration defaults

  * Fixed a random crash after uninstalling a widget with live icon
  * Fixed remote widget instances initiated before the manager not closing when uninstalling


sunnuntai 9. syyskuuta 2012

More widgets?

The most common user issue I get is basically "too few widgets". Well, good widgets targeted for mobile devices will surely be more common after Tizen comes out. Meanwhile, there are quite many widgets available for Symbian WRT and Opera. 

Opera widgets are mostly intended for desktop and often work poorly on mobile devices. But there are some good ones there. All of them are accessible through http://widgets.opera.com/. Just go to that address with your N9 and try them out.

Symbian widgets are a bit harder to get (albeit more suitable for mobile devices) because you can't just download them from the Nokia Store. Some of them, like the AccuWeather, are also available through the author's website if you know what to look for. There is also a good collection of 50 small games available at http://www.drjukka.com/50Widgets.html (though these are designed for devices with traditional keypad).

Let me know if there is a good place out there filled with good widgets!

keskiviikko 29. elokuuta 2012

Update for Widget Runtime

A new version of Widget runtime (1.1.0) is now out. It contains the following changes:
* Refactored architecture so that each widget is ran on it's on process
* Implemented support for WAC Webview API
* System's 'application not responding' dialog should now have correct widget name in case JavaScript is taking too long to execute
* Improved responsiveness during JavaScript-heavy operations by processing event loop
* Fixed upgrading a widget with version in format x.y to x.y.z to be considered a newer version if x, y and z are numbers
* Fixed uninstalling a widget not cleaning up any included hidden files
* Fixed links that use _blank as target
* Implemented error page for URLs that couldn't be fetched

More coming a bit later...

sunnuntai 5. elokuuta 2012

How to run Tizen widgets?

Before you even start asking, here are some instructions on how to get and run Tizen widgets on N9 with the widget runtime. At this time, you can get some example widgets from Tizen's developer resources but unfortunately those are meant for developers and are not properly packaged. Luckily we can make them work with a few small modifications. Follow these steps for each of the example widgets you want to try out:

  1. Download the widget to your computer, it comes in a .zip package
  2. Extract the package into an empty directory
  3. Go into the directory and follow the directory structure deeper until you get to a directory with the actual content (it should always have config.xml file in it)
  4. Open this config.xml in any text editor (don't use Windows' Notepad if it looks like all the content are on a single line... Notepad does not understand Linux-style line breaks, use some other editor instead, such as Notepad++)
  5. To avoid wrong scaling on N9 resolution, you need to define the correct resolution for the widget. Usually Tizen widgets seem to be using 1024x600 resolution which means you need to insert  width="1024" height="600" attributes to the widget element.
  6. Since all the example widgets seems to require landscape orientation, you can force this orientation by adding <feature name="http://wacapps.net/api/viewport"><param name="orientation" value="landscape"/></feature> inside the widget element's content.
  7. After editing the config.xml, you need to rezip the content. You need to make sure the directory where the config.xml file resides in is the top level directory in the zipped package. I recommend using 7-Zip to easily do this from the context menu after selecting all the files and folders in the directory.
  8. The last and very important step is to rename the .zip file to use .wgt extention instead. After this, the widget package (.wgt file) is ready to be sent to your device. Bluetooth is likely the easiest way to send it to your device. After receiving the file, just open it from the transfers UI and the widget should open up, ready to be used!

Example Tizen configuration file with the recommended modifications

The same example widget running fullscreen on my N9


keskiviikko 1. elokuuta 2012

Widgets!

Back with some good news. I've developed an application simply called "Widget Runtime" for the N9 that allows you to run your favorite web widgets on your favorite device. To be more exact, it currently supports widgets created for Symbian (.wgz file extension) and any W3C widget standards based widget (.wgt, such as ones created for Opera or Tizen). The application will come with a manager interface and a few bundled example widgets. It's still currently in a BETA stage so it will contain some bugs, but I'm working to make it better when ever I have the time. It will appear in the Nokia Store shortly.



Where are we on compatibility? Currently the focus is on W3C standards as well as basic support for Symbian widgets. At the moment here are the supported standards:



Some things that are planned for future releases:

  • Proper view-mode support (currently it is only supported through webkit prefixes)
  • WAC2.0 compatible platform services
  • Symbian compatible platform services
  • Better architecture where each widget is ran on it's own process

I was for a long time very frustrated that Google Maps wasn't available to the N9 as I prefer it's maps to Nokia's. With my Widget Runtime, I was able to create a basic touch-enabled widget (see the screenshot below) in just about an hour! This widget comes bundled with the Widget Runtime and might get expanded features in the near future as well. Sadly, however, the widget crashes randomly due to a bug in QtWebkit that plagues the device :(


torstai 28. kesäkuuta 2012

Something entirely new

A few days ago, a new application I've created called Caller ID was released in Nokia Store. It's a handy application that gives you an opportunity to find out who calls you from any number not stored in your address book. You can either use the application to manually resolve identities behind any phone number or you can enable automatic resolution of unknown callers, which attempts to resolve the identity before you even answer the call. Usually resolving a number takes somewhere between 5 and 60 seconds depending on your carrier and selected service provider.

Caller ID uses public SMS services to find out the identity of the caller. These services are not provided by me and are unfortunately not free to use (since the application uses regular short messaging service, the costs are applied in you next carrier bill just as if you had manually sent the SMS to the service).

Currently Caller ID is only available in Finland because I don't know any foreign services working the same way as Finnish ones do. If you know a similar service in your country, please let me know and I'll add it to the application. Thanks!

torstai 1. maaliskuuta 2012

MeeCatalog and N9 1.2 update

It seems that some people are having issues with the new 1.2 system update for N9 failing at 0%. The problem has been identified (see comments by Santtu Ahonen at Nokia developer blog) to be caused by configured repositories that cannot be reached. The issue is NOT caused by MeeCatalog and MeeCatalog does not by default add any repositories.

If you have added custom repositories via MeeCatalog settings it is advised to disable them and refresh the catalog lists (the button in the middle of the toolbar on MeeCatalog) before updating your system software. Note that you cannot disable repositories added by other applications using MeeCatalog.

keskiviikko 18. tammikuuta 2012

New version is out!

Just a few hours ago, a new version of MeeCatalog was made public in the Ovi Store. The main improvement is the support for configurable application catalogs. Catch it from http://store.ovi.com/content/220215.

maanantai 9. tammikuuta 2012

Two weeks down the road

It's been exactly two weeks now since MeeCatalog was released in Ovi Store. It has been downloaded more times than I dared to hope two weeks ago, coming to a total of about 2300 downloads from 95 different countries. I'd like to thank you all for these outstanding figures with a sneak peek of a feature I'm working on.

MeeCatalog settings view

Thank You!