Things i've made

Looking for more? See a list of everything i've made.

Monday, March 19, 2012

Micro mobile application framework

A little while back I had the opportunity to produce a 'lite' version of an application framework I was creating with the help of a few friends (cmw, dre), and have it ported to the peek platform. Peek went on to use their own in-house system instead which is more targeted toward their market whereas this implementation was aimed at bringing smart phone applications to low-end devices without looking too budget and while working fantastically. To be honest, the implementation never ended up working as well as it should have. cmw built a full qemu emulator of the peek so be sure to check out his stuff if the platform interests you. cmw and dre also ported a full web browser to the platform, seriously ninja skills right?

The application platform allows you to offload a lot of implementation and processing to the server side and gives you XML and scripting languages for the device side. This makes the development cycle ridiculously fast compared with traditional compiling of native code for target devices. Some smart technology takes care of the communication so that even though a lot is offloaded to the server side, you never really notice, the applications just behave as if they were native.

Some of the nicer features this framework provides are:
  • Instant application resume. Apps start where you left off, even if you reboot your device.
  • Roaming applications. If you get a new device, register it with your account and all your apps will be there, in the exact place you left off. Works over multiple devices too
  • Built in OTA application updates. Updating a large application with a small patch will only use a tiny amount of data.
  • Push support. People talk about 'push' like its a big deal, but if you communication was designed so that push is just part of normal operation then some of the things you implement with push become exciting instead of it just being 'push'
Some example applications built for the peek platform using the framework include a calculator (1,310 bytes big!), and a multi-protocol messaging application.
Calculator application


Messenger application splash screen
Messenger application account setup
Messenger application chat window. This is actually an older screen grab than the others, there should be protocol icons next to each contact name in that buddy list. When you receive messages from your buddies, their entry in the buddy list grabs your attention and you will see their messages in blue rather than the red 'me'
 You probably noticed the mouse cursor in one of those screen grabs, and that would be because the screen grabs were taken from the simulator.
Peek simulator running a simple example application
A nice feature for low-end platforms is to include some basic image filters so that application developers can take advantage of them and reduce the number of graphics in the binary. For example, I have an envelope image which is just a few shades of grey, yet with image filters I can apply color, make parts transparent, etc, while only adding minor computational complexity to the image painting.
One image with different filters applied
The Peek only had one application on it, email, so there was nothing other than the screens for email, no application list, menu, or such. A home screen or two was implemented firstly to make testing multiple application easier, then we went out and implemented something a little more interesting. The full home screen we implemented was more prototype than finished product but did have some things going for it. In the background there is a photo a NYC-Time Square with the current temperature, time, and network signal displayed on the buildings. In the foreground is a circular style application menu. The background is dimmed when you bring up the application menu so that the busyness of NYC doesn't get in your way.
Plain application menu

Circular application menu with time, temperature, and network signal on building in background
The maps application shown in the boot environment above also functioned. It showed your approximate location using cell tower locations and map data provided via google maps API. The actual device side for this application was tiny, it made the calculator look massive.

The source code for this project along with the other parts (web browser, etc) are available over on the peeklinux svn repository. Happy hacking!

11 comments:

  1. Is it as simple as doing an update with the correct data cable ?

    ReplyDelete
  2. Probably not. It requires a server which is part of the svn repository, however, you would need to use a SIM with a data plan so you could connect to your server hosted somewhere.

    ReplyDelete
  3. Well, I got the PEEK firmware build according the instructions on peeklinux.com.
    But there are almost no instructions how to build the server, the simulator, etc... Did I miss something on peeklinux.com or in the SVN repo ?
    Somehow, I have the feeling that the SVN repo mixes linux and windows builds ... Would be good if there would be at least a small help on that ...

    ReplyDelete
  4. The repo does mix simulator, emulator, server, and firmware in one place. The emulator (qemu) should build on a variety of platforms. The simulator (peek-build/simulator) will likely only build on windows at the moment but does contain code to allow it to build on linux, given some work. The server(s) (peek-build/src/emobiix/server, peek-build/src/emobiix/server/examples/purple-server) should build without too much effort. Not sure what state everything is in so expecting all the features to work would be wishful.

    ReplyDelete
  5. Ok, thanks for your comment. I'm trying to build the servers etc from the WINDOWS side and the last thing to do is to get the correct SDL includes in the VC projects ...
    Anyway, some more documentation, e.g. diagramms, state charts or a brief overview on the client-server protocols and functional divisions and configuration issues (ini file values) would be good ... ;-) ...

    ReplyDelete
  6. How does one transfer a compiled version of your firmware to a Peek, assuming one has the proper data cable?

    ReplyDelete
  7. Yes! Can someone give a very detailed step by step instructions to make the Peek run again? Just s step by step instructions how to do it without mixing all thew computer talk in them and the computer talk after the step by step EXTREMELY EASY insttructions?

    ReplyDelete
  8. TO RYAN: Could you contact me at looneyspook@gmail.com about the Peek transfer information please?

    ReplyDelete
  9. Just to reiterate those asking for assistance. This is not ready for end-users and is more a development version rather than a full working OS. If you are interested in using a Peek for IM, then it would take some work to get this framework going.

    ReplyDelete
  10. Hey. I bought a Peek device a while ago but I didn't ever get around to using it. So, I'm pretty much stuck on the setup screen. I would basically like to see what the interface is like. Does anyone know how I can bypass the setup screen?

    ReplyDelete
    Replies
    1. You can email me at ohhhhhkidd@gmail.com

      Delete