I'm a mobile enthusiast thinking in mobile life. There is still place for innovation in services, games and applications. What are you waiting for?
(En español todavía hay más oportunidades)
firt | 14 April, 2011 03:20
As you may known, Nokia just announced the new updated Symbian, called 'Symbian Anna'. In the last months my work was related mainly with Mobile Web & HTML5. This work started years ago, but the main public works are my book Programming the Mobile Web from O'Reilly and my new blog.

Therefore, while waiting for the first Nokia Windows Phone with IE9, I took a Nokia X7 prototype with Symbian Anna and I run lots of tests over the browser.
I have to admit two things:
It's important to mention the new things we will found on this version on the new X7 and E6, and later this year in N8, E7 and other Symbian^3 as an OTA update.
Main new things supported are CSS3-features, great for frameworks such as jQuery Mobile or Sencha Touch.
The new browser supports:
It also supports Canvas 2D drawing, the only HTML5-complaint API available on this version.
If you want to see my full review of this browser, you can check this post.
What other feature do you want to see on next ersions?
firt | 28 December, 2010 19:19

I often see many companies working only for iOS and Android, mainly based in US. What about other platforms, such as Nokia's? If you are not multiplatform, your products will never be famous. Let’s analyze for some minutes the Angry Birds example to see how the multiplatform worked for them.

This post was extracted from my blog mobilexweb.
If you are reading this post you may already know what Angry Birds is. If not, you can check what Wikipedia has to say about it or you can go to Ovi Store now and download the free Lite version. Why am I talking about Angry Birds? This addictive game crossed a line when talking about popularity: millions of downloads, #1 in almost every store, Plush Toys Store launched, people talking and joking about it, fans worldwide, etc. And all achieved in one year!
Just look at the end of this Google’s video where Angry Birds is treated as the same level as iPad talking about hot search topics in 2010. You can also see the video showing a TV comedy show Angry Birds fun video.
What about the dozens of videos in YouTube showing how to solve every level of the game?
Why did they all pick Angry Birds and not other game? Popularity. I will not talk about Angry Birds as a game. I will talk about Angry Birds as a multiplatform solution. Angry Birds is now officially available for Nokia (Symbian^3 and Meego) in Ovi Store, iPhone/iPod, iPad, Android, webOS and the list continue growing, including Windows Phone and Bada for next months.
Everyone can talk about Angry Birds because it is available in most platforms. Think about it: if a game or app is only available for one or two platforms, it will never be famous. Which famous trademarks do you remember that are iOS applications, Symbian or Android applications only? If you decide to develop for one platform, your app will only be a niche product and it will not cross the popularity frontier.
Ok, I know… multiplatform is not the only outstanding feature of the game. Angry Birds is also funny and addictive. But I’m pretty sure that if they were available only for one platform, they would not be so famous.
BTW, I don’t believe Angry Birds is an innovate game. It is just a clone, a good one, from other older games. Just look at Crazy Penguin Catapult and you will see what I’m talking about. In fact, I believe Angry Birds has also some failures in game and level design. However, here we are: talking about it.
Conclusions:
Follow Angry Birds example: be multiplatform.
Extracted from my blog mobilexweb. Source: http://www.mobilexweb.com/blog/angry-birds-multiplatform
firt | 30 July, 2010 04:10
Hi! I'm happy to announce that my book "Programming the Mobile Web", published by O'Reilly Media is finally available in stores for both printed and ebook editions.
The book has 2^9 pages and cover the whole process involving mobile web and widget development for multiple platforms, including compatibility, standards, best practices and samples.
If you want to order a copy, here are the links. If you want to buy it at O'Reilly store I can send you a discount code for buying the book. Just send me a tweet to @firt and I will reply with the discount code.
I hope to receive feedback!firt | 28 June, 2010 23:11
Last week, I speaked at Velocity 2010, a great conference about web performance and scalability, with a workshop about "Mobile Web High Performance" (slides available) covering many tips about delivering faster mobile websites. At the same time, I've launched my new blog www.mobilexweb.com that will follow updates, tips, tools and information about mobile web development. I will also post in this Forum Nokia Blog every interesting post for the Nokia web development community.
Next month, my O'Reilly book "Programming the Mobile Web" will be available in stores and e-book stores. So, my blog will follow different updates for mobile web development market after the book's launch.
If you are interested in mobile web and widget development, you can follow my blog's updates at @mobilexweb or my personal Twitter account @firt. I hope to be in touch with everyone interested in this area.
firt | 18 March, 2010 19:07
If anyone will be attending next Velocity 2010 in Santa Clara, CA, USA, I will be doing a the workshop Mobile Web High Performance, using information on my research on this topic covering all browser platforms, including Nokia Browser S40, Web Runtime for Symbian and Maemo browser.
The workshop will include conclusions published in my upcoming book Programming the Mobile Web, from O'Reilly Media.
Hope to see you some of you there!
Maximiliano Firtman
How is performance impacting on mobile web?
We’ll get deep in the well-known techniques for website’s performance (from Steve Souders and others) and how real mobile devices reacts to each one. Are mobile browsers compatible with CSS Sprites or with Lazy Load Script? What about inline images and canvas? What are the big differences between desktop and mobile web performance?
This session includes a brief overview about mobile web browsers today, what we should expect in this year and some numbers about mobile browser usage in the market.
Also, what new perspectives mobile web adds that we need to understand for getting real high performance on mobile web.
More information http://en.oreilly.com/velocity2010/public/schedule/detail/13063
firt | 05 February, 2010 23:19
I'm happy to announce the availability of my upcoming new book, "Programming the Mobile Web" from O'Reilly. It is available now in Rough Cuts version (online) open for feedback for the final version to be printed in a couple of months.
The book covers the mobile web as a whole with all possible platforms (including Nokia's platforms), compatibility and technologies. Today, there is available more than 50% of the book and more content will be updated automatically.
Rough Cuts and preorder: http://oreilly.com/catalog/9780596807795
The Table of Contents:
Feedback is welcome!
firt | 03 August, 2009 16:32
Here is my presentation about cross-platform mobile widget development.
Any question about it feel free to contact me by mail or twitter.
firt | 08 July, 2009 21:07
Hi,
If anyone is near San Jose, California this month, I will be speaking at InsideMobile Conference organized by O'Reilly and 360 Conferences.
My session will be Mobile Widget Development and it will cover WRT Widgets for Symbian, migration from/to other platforms and OVI Store publication.
"Today is possible to create mobile offline (and installed)
applications using web-related technologies (XHTML, CSS, JavaScript,
AJAX, Flash) and additional APIs. WRT for Nokia-Symbian, WebUI for
Motorola, WebOS for Palm Pre, online/offline Webapps for iPhone 3.0,
widgets for BlackBerry, and other mobile widget platforms. There
is also a new hybrid paradigm using the best of the web technologies
and a native development, like the PhoneGap project.
What can we do using this technology? what are the differences
between platforms? Can we distribute them in the Application Stores?
What compatibility do we have with web standards? What kind of
applications are best-suited for this platforms? How to access
location, contacts, accelerometer, SMS, home screen and Internet for
each platform? What about security and privacy of my code?"
To see full schedule, other sessions information and registration details look at the official sites:
www.insidemobilecon.com or training.oreilly.com/insidemobile
Hope to see some of you there. Drop me a line if you are near! I will be arriving to USA on July, 24th.
firt | 16 April, 2009 17:29
Hi! A long time not posting. I was working ;-) Here is the first project I want to share with you. It's still in beta testing, and I'm opening to suggestions, critics, bugs, and other comments.
You can try it free at www.mobiletinyurl.com
Mobile Tiny URL is a URL shortener service optimized for mobile keypads. So, if you want to access forumnokia.mobi from your mobile phone, try to type ad.ag/wapdat instead. You'll save 36 keypresses!! Go and try it now in your mobile phone.
Ok, perhaps you won't remember this new URL, but it's for use having the address in front of you (like this post).
With the service you can:
Give it a try and share it with your friends!
More projects to share soon!
firt | 25 January, 2008 04:27
Yes guys, I’ve just installed PAMP (Personal Apache, MySQL and PHP) on my N95 and it worked!
Do we need another language for Symbian? I’ve also been a beta tester of a .NET Compact Framework for Symbian and it worked well too (but this is for another post).
So, my first thought was: “great, I can see a PHP running on my phone… and now what?” I’ve seen PHP running on an iPhone last weeks. But then, I realized that this are real good news. Not only because of PHP or Apache, because of MySQL too. We have MySQL on Symbian! A great database (recently acquired by Sun) with a lot of features that all web developers love.
Is PHP useful? Now you can port in 1 minute a development you already have in a website or intranet. There are thousands (millons?) of PHP developers in the world and now, they can run their applications in many Series 60 devices with no change. Many CMS (Content Management System) as Joomla or Drupal worked well too.
Ok, I had to install five applications and libraries (7.5Mb), I’ve received almost 15 warnings and disclaimers, but it worked. A simple user will be a bit frustrated. But this is the first beta of the product (hosted by Nokia Open Source) and I think there is a great opportunity in the future for this solution.
After installing it, I opened PAMP application and start both Apache and MySQL (you can start only one if you need). After 5-8 seconds I’ve both services running. Then, I opened my S60 browser and type 127.0.0.1 and I could see a phpinfo page with all the information about PHP version (5.2) and packages installed (like GD for image manipulation).
The PAMP application shows the obtained IP in your LAN, so you can type that URL in your desktop browser and you are receiving PHP files from your phone.
After that, I opened a MySQL client I frequently use for web development and tried to connect it to my phone’s IP, it worked too; so I created a database and one table. I inserted some records, all from my desktop computer (we still need a MySQL native client on Symbian, anyone?).
I could also write some CREATE SQL statements from the phone, but I don’t have a bluetooth keyboard ;-)
Then I opened PyEd on my N95 (the Python on device Editor) and wrote a simple PHP file that connects to the the MySQL and show me the results on an HTML page. I saved it on e:dataapachehtdocs (the root folder on my MicroSD card) and… everything worked!. And, I was surprised about the speed, even browsing the webpage from my desktop. It wasn’t a hard benchmark, but I’m satisfied about the response time.
I saw in the PHP’s package list some S60 packages, like contacts, messaging, but I couldn’t find any documentation about them. But I think you can use some Symbian API from PHP.
What's missing?


What kind of application can we see developed in PHP?
Congratulations to the porting team that is working on PAMP and I would like to see more about this project.
By the way, only the N95 8B was tested succesfully by the team, but in my N95 classic with firmware v20 it worked ok in my little test.
Follow the installation instructions and try it. What do you think?
firt | 17 January, 2008 00:35
Recently,
Yahoo! announced his new Yahoo! Go 3.0 platform (beta). “The best Internet
experience on your phone. Period.” Let’s see after the period.
Yahoo! Go is a Java ME application available to many MIDP 2.0 devices and is
the On-Device Portal that Yahoo! published for access mobile content provided
by the company as Mail, Maps & Local, News, Financial, Sports and Web
navigation.
Yahoo! Go 3.0 is also one response to Google’s Android. It isn't a new
operating system as Android, but it has the ability to host new Widgets and
Snippets developed by any using the Blueprint language, an XML based language
on XForms. The first thing to note is that the platform doesn't use the standard
way to develop widgets: XHTML, CSS and JavaScript/AJAX, as Series 60 Widgets.
All applications inside the download are Widgets developed with this language.
You can download more using Internet.
A widget is some kind of application that is installed inside Yahoo Go! and can
use RSS and internet information using some visual controls (similar to iPhone
UI). All widgets are shown on a carrousel (like Android Home application) and
when you browse them, you can see resume information about them (for example,
your last e-mails or current weather information). You can access a submenu of
each widget using up and down when you are over a widget on the carrousel.
A snippet is a "mini widget" that appears on Yahoo WAP Home Page and
Yahoo Go Home Page and shares the layout with other snippets. They can link to
widgets or external websites. All of this happens inside the Yahoo Go
application that has its own browser implementation. I like more Opera Mini's
renderization than this one's.
According to the roadmap, in the future the Widgets will run directly on the device.
I don't know how, will it generate dynamically a JAD and JAR only for your
widget? Today it hasn't some client script programming language, all the logic
must be implemented server-side.
The User Interface is really cool, smooth animations and transitions. But there is one big problem: IT'S TOO
SLOW! I'm talking about the UI, not the response time from the server.
I've tried in my Nokia N95 (with a good CPU) and it's really slow. In the Home
Page carrousel when I press the right or left key I've to wait one second until
the UI shows next widget on the carrousel. To open a Widget sometimes you need
to wait 3/4 seconds and to move from one news or item to another leaves you
another seconds. Everything feels slow. Reading news and looking for some
restaurants, I pressed down key to scroll the information and it reacted 7
seconds later! To go back from a widget to the carrousel (the * key) you
have to wait 3 seconds. Opening the soft key menu "Options" take 1
second or more.
You don't know if the application is alive or not. There isn't any waiting signal
in the UI or clock pointer: a big UI mistake. If some operation will take more
than 1 second you need to warn the user to wait.
Try it yourself in your mobile phone and tell me if it's only me ;-) Go to
get.go.yahoo.com from your mobile phone or go.yahoo.com from your desktop. If
you want to learn about how to develop Widgets and Snippets you can see the
developer site or download the Blueprint
Developer Guide in PDF.
I think it has a great UI, but if the Y! team don't speed up the UI in final
version, I won't use it, and I won’t develop widgets for it. For now, Nokia's
Widsets has more content developed and the UI is much faster.
What do you think?
Here is a video showing the application (on a desktop) in CES 2008 Las Vegas
firt | 01 December, 2007 20:24
Let's analyze many ways to get the user's geolocation.![]()
Recently, Google updated its Google Maps Mobile application with a new
"My Location" feature that works even without GPS. If you do not have a
GPS-enabled phone, you might see
a blue dot surrounded by a light blue circle over the map to
indicate uncertainty about your location. Let's see how we can do this.
We all know that Location Based Services (LBS) are a great feature to
add to many mobile applications. I want information based on my
location. I don't want to receive restaurants from other city, I want
to see weather, driving directions or traffic data from my geographical
zone, I want to geotag my photos, and I want to know what other people
think about the place where I am right now. I also want to socialize,
play games, and organize meetings with people near me.
So, all we need
is a GPS? The first answer seems to be "yes". The GPS is one of
the best solutions to find the location of a user. The GPS (Global Position System)
gives the developer the coordinates (Latitude and Longitude) of the
user with some error (usually less than 100m) using satellites. And the
AGPS (Assisted GPS) could be even better. The AGPS (if you have a Nokia
N95, just update your firmware to get this feature) is a data-based
feature to help the GPS to find faster the possition of the user. With
AGPS in Nokia N95 now I can localize myself in less than 10 seconds
outside and sometimes I can do it inside a building too.
We can
query the (A)GPS from many platforms, like Java ME (Location API),
GPS with Symbian C++ or Python and then search for information in our local
database or remote server using the Internet connection of the phone.
If we need information about the street, neighbourhood or any other
data regarding the calculated coordinates we can use some inverse
geocoding service: if I have some latitude and longitude, can you give me
the street name and address?.
At this time only a few devices have GPS integrated, and less people have a bluetooth GPS connected to the mobile phone.
But, what happen with the millons of non-GPS devices?
Just look to these other solutions.
Solution 1
You can use the cell
information of the phone to georeference the user. When you are
connected to a mobile cell network you are in range of one or more
towers. The range of the tower is called a cell. Since every cell has
it owns range (100m, 500m, 1km for example) we really don't know
exactly where the user is, but we know the zone with some error.
Sometime this is enough useful to give the user the information. But,
how can you use the cell to know latitude and longitude?
a) In Java ME there isn't any standard solution. You can query the CellID (Identification Number) using System.Properties("phone.cid") on some devices only. For example, this doesn't work in Series 40 devices. It only works in some Motorola or Sony Ericsson's phones.
b) In Symbian (Signed), you can get the Cell, Area and the Carrier (see this sample). With this combination you have a unique cell number in the world. You "only" need to convert this information in geographical information. How to do this? Here comes the difficult part. There isn't any direct way to make this conversion. You can use a Carrier API (if they have one), you can use some Open Source collection (like CellSpotting.com) or you can make your own one.
c) In dev cert Python, you can get this information. Just see this sample.
That's what Google is doing with its recently updated Google Maps My Location feature. If you don't have a GPS, you can still find your location using the Cell information. Google can compare your cell number with querys from other users having the same Cell and GPS, for example. So, Google is making its own cell-coordinates database (or buying it).
You can see a video of how Google Mobile Maps works here:
Solution 2
The mobile carriers should bring developers an API to know the coodinates of some user. Using three cells in range, the carrier can calculate where are the user and give the information to the developer through an API.
Solution 3
Use the IP address to find the location of the user. If the user is connected through WiFi (or 3G in some cases) you can try analize the IP address connected to the Internet. With the IP Address you can query some open database (like MaxMind or GeoIP) and then try to calculate where the user is with some error.
Solution 4
Ask the user! Don't be afraid to ask the user where is he or she! Your
application can be smart and reduce the user's typing.
- If the user knows its position: The user can insert zip code, city name, neighbourhood name, address, street name. Just ask for one quick entry. You can query your database or some webservice.
- If the user doesn't know its position: The user can insert some
information he is seeing, like a phone number found on a shop or some
place name (parks, museums, stations).
Solution 5
Allow the user to select its current location from:
- Home: ask the user where he/she lives when the application is installed and store this information.
- Favorites places: query the Places database (GPS' devices) or make your own favorite places.
- History: allow the user to select a recent place where he/she was. Order the list by frequency.
Visit this mobile Location design pattern in Little Springs Wiki.
Of course, you can make a mashup with all this solutions to develop some smarter way to get the user location.
Do you imagine any other way to get the location of a user? I'm waiting for suggestions.
firt | 16 December, 2006 18:14
A new free Java ME application was launched by Microsoft: Windows Live Search for Mobile. The first thing I've noticed after installed it on my Nokia N90 was the UI design. It's very, very similar to a Windows Mobile Smartphone UI application. Is it a good idea?
Windows Live Search for Mobile is a connected application available for Java ME and Windows Mobile phones that allows the user to search content into Live Maps service (similar to Google Maps, an application reviewed in a previous post here). You can find addresses, traffic information, business, restaurants, hotels, etc. in US and inside a map you can pan, zoom in and zoom out. When you are typing your search, it has a very useful autocomplete feature.
After opening the application you'll see a full-canvas design with many Windows Mobile Smartphone UI components and features, like:
Full width list items with horizontal scrolling labels when they are focused
A textbox that works a bit different as Nokia's one. You should start typing wherever the focus are, and you don't have an “editing” or “non editing” status inside the textbox.
The Command area for softkeys is a bit diferent than Java's one. They are two commands rendered like visual buttons, with their labels centered (not aligned to the edges).
The “Options” or “More Options” command is called “Menu” and opens a mini-submenu in a pop-up style where you can browse with up-down or use [1] to [9] keys to select the option (similar to Opera Mini too)
The “Ok” or “Select” Command is called “Go”.
There is a “Home” command to go the the Main Menu and you have an “Exit” application command in every screen. Sometimes there isn't a back command, so you should use “Home” instead (a bit confusing).
The alert messages are similar to Windows Mobile.
When you are typing in the search box, the autocomplete feature replaces the Home menu options with new ones. But you must clear characters with the left arrow (I've to try many keys to detect that). Right key acts as "Select". If you keep pressed a key, it doesn't appear the number corresponding to that key, you should cycle between letters and numbers, for example "abc2ABC".

I think if you are a Java ME phone user, like a Nokia's one, you can feel yourself lost inside this application for a while. The usability guidelines aren't the same between Windows Mobile and Nokia/Symbian/other vendor OS.
I like the visual design and some of the “original” UI behaviour like the dynamic options based on the user partial input (similar to an autocomplete), but I'm not sure if it's a good idea for the usability to have a totally different UI compared to the device's where the application is running and different from other applications installed.
Download the application free from http://wls.live.com and tell me what do you think.

firt | 29 November, 2006 18:12
firt | 13 November, 2006 05:09
I've received this information a few days ago, but I coudn't publish it until now. Sun Microsystems, Inc, the creator of Java technology today (Nov, 13) announced it is releasing its implementations of Java technology as free software under the GNU General Public License version two (GPLv2). Available today are a buildable implementation of Java ME (formerly J2ME) and the first pieces of source code for Java SE.
Available in the Java.net community is the source code for Sun's feature phone Java ME implementation with the Java ME testing and compatibility kit framework. Before the end of the year, Sun will release additional source code including its advanced operation system phone implementation and the framework for the Java Device Test Suite. Sun is also releasing as free software the javac compiler, JavaHelp and Java HotSpot technology, the heart of JVM and JRE for desktops.
In addition, an application developer project is available as part of the Mobile & Embedded community, with links to resources such as the NetBeans Mobility Pack.
Rich Green, execute vice president of Software at Sun said "By open sourcing Sun's implementation of Java technology, we will inspire a new phase of developer collaboration and innovation using the NetBeans IDE and expect the Java platform to be the foundation infrastructure for next generation Internet, desktop, mobile and enterprise applications".
More information on
What do you think?
Will this accelerate the development and evolution of the platform? Will this reduce fragmentation and drive down development costs throughtout the Java ME ecosystem as Sun is claiming? Will this modify your Java ME developer life?