Everything and the Mobile Software Universe…

  • rss
  • Home
  • About

Performance vs Developper productivity and ease of coding : Why can’t we choose both?

Thomas Menguy | November 18, 2006

This DevX article: Get to Know uSTL: A Lightweight STL for Symbian describing a symbian STL (C++ Standard Template Library, the C++ “toolbox” with lists, vector, string utils, etc.) less crippled that the standard one, really reminded me of this eternal debat.

Recently we have worked on some memory optimization for our product, the part running on the PC. It was using way too much memory compared to what information was effectively loaded.

The data model is XML, and we are creating our objects with SAX parsing of this model… and many things were stored in STL string, and some stream where used….surprise STL string where using 128 bytes preallocating data…so for a 4 bytes string you use …. 128 bytes! stream memory use were growing exponentially!

So we played brut force and quickly reimplemented a class string based on good old char *, and a stream tuned for our use…and guess what: mem usage was divided by 10, and it was really faster.

Conclusion of this story: if you want to go serious, you have to master and well understand all the objects you use heavily: It may sound obvious, but many many time programmers take too many things for granted, especially on the PC world ….you know why Windows is now using way too much RAM :-) …but in the PC camp Moore Law helped a lot to deal with RAM/CPU power explosion…

It is not to say that STL is a bad library (ok, not so intuitive to use, but it is another story), but those kind of services are ok for prototyping, or “normal” application, not for intensive ones. The difference between this two kind of applications is blurry, and coding something faster prevails way too often, heading to crippled apps.

Now look at the mobile phone space, here the Moore Law is not bringing a lot of RAM/CPU, it is “only” bringing down the chipset cost…but the vast majority of mobile phones are still running on CPU with less that 10 MIPS and 256 or 512kB of RAM, BUT feature sets are still growing and growing….

So obviously your applications, services, HAVE to use less RAM and less CPU each time, hum we are really NOT in a PC world.

To achieve that you can:

  1. Continue to code as close as possible to the bar metal (uhm silicium), using low level C code, assembly, few OS services.
  2. Use a Mobile Phone coding framework, taylored for the embedded space (this one is itself made using the previous point mode of programming), with a native programming language (C/C++)
  3. Use a Higher Level OS with a native programming language (C/C++) (Palm, WinCE, Symbian)
  4. Choose an “interpreted framework” like Java or .NET (see the Mono effort in this respect)
  5. Go for scripting. (like OpenLaszlo, Ruby On Rails, Digital Airways, etc)

Of course the more abstract you go the more RAM/CPU you loose, but the more developper productivity you get … if you stick too closely to the PC world mantra. BUT if it doesn’t fit in your target …. it won’t fit , and you loosed a lot more that productivity, you loosed your market.

A high Level OS is simply not a choice: try to fit WinCE in a 10 MIPS machine … it is already not snappy on a 400MHz ARM 926 … (same for Symbian and in less extent Palm)

So things have to be more balanced, and as the zen approach told us “the middle way” may be the solution.

I strongly believe that a mix of very high level services for UI, with a good interconnection with low level services for control, algorithm and modelling part of the application is the way to go:

  1. You let the graphists/designers quickly design your UI
  2. You code the algorithm, controls, threading model, network in C/C++ with low level or very low resource consumming APIs
  3. You let the framework dealing with interactions between applications and resource access sharing.

The last point is crucial, else you end up with a big mess, with unmaintenable and non evolutive code cause all the services will have to know each others, definitively a big mistake. The first one has to be there cause clearly the UI is, in this market, defined in specifications by UI specialists, and it can greatly improve the time to market to let them “design to manufacture” with some powerfull tools to create UI, like user friendly RAD, or even better like Flash Lite SDK, or Digital Airways But those high level solutions are not enough cause they lack the second point: the logic of your app have to be done in a scripting language, which is clearly not tuned nor designed to do that: UI and Logic HAS TO BE more clearly separated to use the best tools to do the job.
Java also doesn’t fulfill those needs … SavaJE is not everywhere, no phone with full Java UI…(I won’t go also in the Java mess around standardization, check this techtype entry about internationalization ): It is not good for UI (only a programmer can do a UI), and so so for application core (CPU and RAM, plus missing APIs).

For sure, as said at TomSoft we need Mobile Developement Simplification(and yes widget standardization can help), but the traditional vision of “one model” fits all seems clearly not relevant for our industry, and more innovative frameworks have to emerge to trully allow the explosion we are all waiting around mobile services (see this entry about skype failure to deliver…).

What do you think?

Update: Taken from the Adobe Flash Lite 2.1, here are some RAM/CPU for flash …

Adoble Flash Lite 2.1 CPU and RAM figures
Ok, we are far from the “Ultra Low Cost”/”Low Cost” segment but not by a 10 factor (except for CPU), so suing only some part of flash for a phone UI is not out of question ….

Update 2: Good read at “C. Enrique Ortiz Mobility Weblog” about the C language, and why it is still, and will stay, usefull. Anyway for me C++ is also a “low level” language as it is compiled and you are dealing yourself with pointers …

Comments
2 Comments »
Categories
Mobile Industry, Software
Tags
application_framework, memory_optimization, mobile, Mobile Industry, mobile_phone, moore_law, Software, stl, symbian
Comments rss Comments rss
Trackback Trackback

Web Developpement frameworks…

Thomas Menguy | October 16, 2006

In this blog we talk a lot about developpement frameworks in the mobile space, which are close to “traditional” framework (like GNOME, Qt, Windows, MacOS, even Java in less extent), but newcomers are popping … from the web space.
I’ve played recently with a great CMS (hum : a blog engine on steroid) Drupal to developp as quickly as possible an in-house test cases/release quality report system for our test teams, a weekly tracking tool for my team and some other stuffs: I’m NOT a php/javascript/XML/HTML junky, I’m a C/C++/algorithmics dev, and … doing that was EASY and FAST, and I must say efficient.
The biggest positive points that have popped out:

  • Documentation of PHP/Drupal : amazing, clear, dense, …neat
  • Data formalization (RSS feeds and XML)
  • Powerfull presentation framework that let me concentrate on the job

If we compare those point to exisitng frameworks, some are really missing : Documentation of course is not only many time missing, but when it is present, it has been written by code monkeys, certainly good at coding and architecture, but not for teaching and giving fun (I’ll quote here one of my Kathy Sierra favorite post never underestimate the power of fun). Data formalization: it is a joke today in the C/C++ world, where is easy serialization? Database?. Presentation framework : ok you have some exisitng but you still have to fight with widget mechanics…boring and bug prone.

It is where new web frameworks may bring something new, I’ve spotted 2 at this time:

  • Ruby on Rails
  • OpenLaszlo (found again via TomSoft)

Ruby on Rails is really pushing the MVC (Model View Controller see my post here and here) paradigm to its limits, with a clean high level language….I’ll try to use it as soon as possible.

OpenLaszlo claims to bring the desktop power to web applications … and the approach seems greats (look at the examples) : the UI is described in clean XML, then everything is compiled in Flash or DHTML, AJAX stuff/javascript are hidden.

So it will be time to bring this kind of technologies to mobile developement … and constraints… Flash today is perhaps too RAM and CPU consuming (but I’m sure it will change). Making things too easy has also its drawbacks, especially in an area where customization is a key differenciator, see also this Kathy’s post about ease of use.

At Open-Plug we already have a clean, all recoded GTK that is running on Ultra Low Cost phones with no issues, for me the next step would be to add some more formal and high level UI descriptions, and some better data modeling to come close…We have begun, and it is exciting!

Comments
2 Comments »
Categories
Mobile Industry, OpenPlug, Software, Uncategorized, User Interface
Tags
Mobile Industry, OpenPlug, Software, Uncategorized, User Interface
Comments rss Comments rss
Trackback Trackback

Nokia and its Linux/Open-Source strategy, how be back in the game for value added services…

Thomas Menguy | October 7, 2006

Linux not ready for mobile phones, Nokia exec says and this about some experiments they are working on: Nokia turns cellphones into webservers
This is pretty interesting and gave a good balance to the “all on linux” message.
At the end, what really matters are the services offered by th eplateform, and not the kernel…if you have the malloc/fopen/socket functions, do you really care if there is a linux kernel to implement the functions ? Guess no, only the services and their description are relevant, not their implementation, to digg this idea, see my post: Does mobile OS matters : no, it’s all about function. in response to this great one at Mobile Opportunity.
So nokia wants to run some “open-source” services (a browser, Apache) on their phones … and has realized that Linux is NOT mandatory to do that.
To come back to the web server article, I’ll quote the following:

[...]

  • Interactive, contextual, and location-dependent content
    • Use the phone as a webcam
    • Find other mobile web sites in the proximity
    • Find out the location of a mobile website (cellid)
  • Enabling new communication means without operator involvement
    • Send instant message
    • Leave instant message in the inbox
    • Leave a note on a mobile weblog
  • Access core data
    • Access favorites, contacts, calendar, logs, and messages
    • Download images
    • Mount a read-write view of the root webserver directory and edit pages directly using WebDAV

[...]

The second point is particularly interesting: no need of the operator nor centralized servers to create services…the phone makers are back in the game to master as much as possible user content and phone usage…For me many things can be read between the lines with this experiment, pretty exciting to say the least!
Any comments are welcomed!

Comments
No Comments »
Categories
Mobile Industry, Mobile Web 2.0, Software
Tags
Mobile Industry, Mobile Web 2.0, Software
Comments rss Comments rss
Trackback Trackback

Agile and Gantt chart : Agile Chronicles: Can Gantt Charts be Agile?

Thomas Menguy | September 28, 2006

Interesting read :
Agile Chronicles: Can Gantt Charts be Agile?

We try to put in place Agile methods here, but even if as software developpers we strongly believe in the iteration process and so one : we have traditional clients that need to know Date/Schedule/What is in a release/Is the project going late? by how?. And for me, and for now, even if Task/user story are “agile” in our process, I need a Gantt Chart to give DATES/DEADLINES/SCHEDULE to my hierarchy, taking into account my team holidays, the impact of bug fixes vs features coming from different clients.
I’m incomfortable in respect to Agile methods because of this deadline thing:

  • Either client/management has to adapt and forget the deadline stuff, accepting many incremental changes and releases….hum forget the incremental release stuff in the embedded space, with those awfull build systems.
  • Agile has to be adapted to present a Schedule and Deadline frontend … because it is what PEOPLE understand, forget team velocity, % completion, etc, the only things clients/hierarchy want to know is by how much days you will be late :-)

What do you think? what solutions did you put in place to make Agile compatible with businesscases?

Comments
5 Comments »
Categories
Software, Uncategorized, development process, project management, team work
Tags
agile_methods, bug_fixes, development process, gantt_chart, gantt_charts, incremental, iteration, project management, Software, software_developpers, team work, team_velocity
Comments rss Comments rss
Trackback Trackback

TomSoft » Myths of mobile Web2.0 (and mobile Ajax)

Thomas Menguy |

Great read from TomSoft about Mobile Ajax:
TomSoft » Myths of mobile Web2.0 (and mobile Ajax).

Really in line with what Thomas said, especially this point :

…Ajax applications will run the same on mobiles than on PC, and this will save us some porting costs. Wrong! Seems that the Write Once Run Anywhere myth is back!! It was actually already not achievable through technology designed for this, so I did not see how Ajax app…

Same for me … the more I work in this industry with european, chineese,Korean partners the more I see:

  • How skilled they are
  • NO UNIFORMITY : for each client, and even for each phone for each clients, many things are different and can’t be abstracted generalizing a concept.
  • Requirements are from Operators (Carriers), Graphic Designers etc… and no one has the same approach for UI and data representation…

A good technology should help this diversity and free the creativity of those actors… wrong idea to lock them in one scheme, one way to do … how will they differentiate?
Customization is key, and is not at all limited to theme, colors and image, but of the whole software …this is our vision here at open-plug :-)

Comments
No Comments »
Categories
Mobile Industry, Mobile Web 2.0, Software, User Interface
Tags
Mobile Industry, Mobile Web 2.0, Software, User Interface
Comments rss Comments rss
Trackback Trackback

Widgets all over again…Content came back with MVC again!

Thomas Menguy | September 27, 2006

Suddenly everything’s coming up widgets – September 1, 2006 Is an interesting introduction to the widgets and why this concept is successful:

…In the early days of the Internet, most companies would create a destination website, wait for users to show up, and then make money from the advertisements. Now they use widgets to reel users in.

A Gmail widget on someone’s desktop that shows “10 unread messages” will make that user click and go back to the Gmail website, where the ad-based cash register goes ka-ching! Microsoft (Charts), AOL (Charts), Yahoo (Charts), and even Nokia (Charts) are also offering widgets. …

And …:

…Of course, the main reason widgets are hot is that users love them. That’s because they help to make the Web user-programmable…

So it has something to do with advertising for now : display snipets of information …. to attract user more often to advertized content.

As for RSS feeds the “data” coming from the content provider is highly minimized and standardized, and IS PUSHED to the content consumer; then a local “application” or service is displaying it nicely according to the system on which it is running: the winning equation seems to be again a strong separation between the content and its representation (as everything around XML, PUSH mode instead of passive publication plus a good standardization and description around the content itself : it reminds me of the microformats concept (see this great microformat blog for more information) and the concept behind Ruby on Rail …

Looking for links for this post, I’ve found this interesting MVC introduction, worth a read if you don’t know it!

UPDATE: I’ve crossed this post just after this one: Open Gardens: The implications of ‘Data is the intelligence’ on mobile software development the data IS the value. (found from the excellent “Carnival of the Mobilists” of this week)

Comments
No Comments »
Categories
Software, Uncategorized, User Interface
Tags
mvc, rss_feeds, ruby, Software, standardization, User Interface, widget, widgets
Comments rss Comments rss
Trackback Trackback

UI and Services Revolution needed…

Thomas Menguy | September 26, 2006

Today, in the cellphone space (as it was for the PC years ago), two main applications/services launching UI paradigms are fighting for dominance:

  • Icones that launch applications : All architectures needs a kind of “glue” or shell, called explorer on Windows. This is the path choosen by high level OS : great for dynamic downloads, new applications. Look at you windows/linux Desktop, your PalmOS explorer , your s60 or pocketPC one…same concepts of text/icon point and click : very poor for services interactions, UI consistency.
  • Ad hoc UI : the “Menu” Application in many proprietary OS  : great for integration, with user interaction fine tuning, ad hoc customization by operator, wrong for code maintenance and dynamique expandability.

Read the rest of this entry »

Comments
5 Comments »
Categories
Mobile Industry, Software, User Interface
Tags
Mobile Industry, Software, User Interface
Comments rss Comments rss
Trackback Trackback

Manage or be Managed….so many questions

Thomas Menguy | February 23, 2006

Micromanagement dangers is again a fairly good read from Kathy Sierra, complemented by this great post about motivation by reputation. Those posts led me to think about management practice, what I liked when I’m managed … and what I do when I manage myself.

Communication

  • How do you feel when you miss information, how should you react? / What Info a manager have to pass on to the team? where is the thresold to retain info to not add pressure to your team versus frustration to not being aware of the big picture?
  • Reputation/Image given by little words : other’s work is only known by collegues/management team through his manager words: be really carefull with that: longer term carrier issues may depend on the image of an employee …image given by his manager.

Initiatives, creativity vs workforce/efficiency?

  • How to leverage your team creativity potential while not loosing efficiency? This one is a hard one I think, strongly correlated with the first one: a manager should be able to lower enough the corporate pressure to let its team a certain freedom of movement…hum not a simple task.

Responsabilities and ownership

  • This one is a key part: when a resposibility is given, it must be the full scope: good and bad, reward and pain.

Motivation: corolary to the previous points.

  • Never uderstimate the power of fun … In that regard creating blogs to present what ones are really proud of, in an informal way can be a really good tool.
  • Saying when things are done and well done… with a little “thank you” and “good job”, it’s free and efficient, and corporate culture tends to only raise the “bad done things” … not a good culture to say the least.
Comments
No Comments »
Categories
Software, development process, team management, team work
Tags
development process, Software, team management, team work
Comments rss Comments rss
Trackback Trackback

How to interview a programmer?

Thomas Menguy | October 30, 2005

I’ve came up with this question recently : I need a new team member, but How to choose him/her? What are the good criterions? The right interview questions?.
With my point of view in mind, I’ve made a first interview and, after the interview, found this post at lifeHack.org which emphasizes on reading code from the candidat (I can’t disagree more), but point to a nice entry from artima (?).

For me an interview has to be fair: When I was myself a candidat I enjoyed my interviews (ok, difficult to really enjoy this bright stress moment for a junior) when I had the feeling that I shown what I was ABLE TO DO, that I understood QUICKLY what the interviewers explained, that I had no issue COMMUNICATING with them … But it was no all the time like that, and many interviewers were only looking at my diploma (a good one in France) or my communication skills, really never going down to the code, algorithm, scientific/technical culture etc: even if this last interview category led to some job proposal, I had a mixed feeling about the company: Why did they choose me? They don’t know If I’m goog or bad, Are they all like that? …and so what are the core values in that company? certainly not technical, so “political”?

So I’ve took some times before the interviews, and here are my own tricks to have the feeling to not loose my time and the candidat one’s ;-) :

  • What profile do I really need? … a good question isn’t it? In my case I need a programmer…
    • …but it’s not enough, here a some more precise profiles:
      1. An Executant: someone able to execute well defined tasks, great organizational and coding skills… the “process” kind of guy, able to finish cleanly a product.
      2. A Communicant: this one is able, and like, to be in front of client, write docs and presentation.
      3. A Creative: someone able to bring new ideas to the table, able to impose those ideas, invent new things (certainly not an executant…), this one will defines what he has to do.
      4. The guy who fiddles around: give him something, it will work … but forget about testing and process…
      5. Background : this one is not a profile, but is a measure of the scientific and technical culture of the candidat.
    • Knowing those profiles I try to give a % to each profile for the best match I’m looking for (ex : Executant: 70% Communicant: 5% Creative: 5% Fiddle: 20% for a good release manager ;-) ). Giving that it’s now possible through questions to “extract” this profile … and see if it is matching.
  • Execution Skills
    • Asks for process vision: versionning tools, branching process.
    • Testing: Testsuites? is it something normal for him? who has to test a code.
    • Release view and policies: When could he say that his code is ready to be externalized, what citerions did he choose?
    • C/C++ Code questions (we have a pretty good question list here in Open-Plug :-) ): Synthaxe questions, memory management, etc…
  • Creation Skills: Find some good exercises (I have some good one .. thanks Cadence!), be sure the candidat doesn’t know the exercise before, and listen carefully to the ideas, good and bad he is trying to complete (or not) the exercise.
  • Communication Skills:
    • Let him explain a big and complexe project he has been involved in, if you don’t understand … the candidat has perhaps a communication issue .. or worse few synthetic skills.
    • Talk a little of his passion, hobbies, etc.
    • Try to put him in “bad and stressfull” situation (the exercise given to check its creative skills can be enough ;-) )
  • Fiddle Skills: See if he had done some “personal” technical project, from the ground and how he made it working. How autonomous he can be?
  • Technical Culture: Let him talk about its skills … and ask anything that are (or not) related to your own expertise field, just to see if he is curious and a self-teaching kind of guy.

For me the idea to see some of the candidat own code can be a “false good idea”: Now that I’ve worked with a lot of different coders, on different projects, I can safely affirm that no one code as any other one, and that at first sight I’ve never liked ANY code not written by me, and many times for bad reasons. The only important thing are architecture, algorithm and professionalism (CPU and memory care, readability, testing coverage), but to judge a snipet of code in few minutes we tend to only focus on synthax, programming style and tricks and so only on the style, not the content…bad idea to say the least.

Thomas

Update: Sergiu gave me some nice references for technical questions (mostly C++) :

  • http://www.beyondcode.org/articles/interview.html
  • http://www.techinterviews.com/?p=238#more-238
  • http://www.geekinterview.com/Interview-Questions/Languages/C-Plus-Plus/
  • http://www.duke.edu/web/ACM/interview.html
  • http://www.possibility.com/epowiki/Wiki.jsp?page=CppInterviewQuestions
  • http://oneparticularharbor.net/sam/interview.html
Comments
No Comments »
Categories
Software, development process, project management, team management, team work
Tags
development process, project management, Software, team management, team work
Comments rss Comments rss
Trackback Trackback

Desktop Search Round-Up : part II, conclusions and final thoughts

Thomas Menguy | October 25, 2005

Again, I ‘ve tried software to … gain time, putting my business laptop stability in jeopardy, loosing hours of processing and hard drive stress use for indexing and re-indexing my files, slowing down my PC to the point where it was barely usable … everything to be sure at the end that I have choosen the best desktop search application … what a satisfaction ;-) Despite this infinite source of happiness, I hope this test will help you choose the best solution for you!

Read the rest of this entry »

Comments
1 Comment »
Categories
Software
Tags
Software
Comments rss Comments rss
Trackback Trackback

« Previous Entries Next Entries »

What I’ve enjoyed reading

Recent Posts

  • You will be disappointed by your Android Market application sales…think twice before jumping on the little robot
  • Why Adobe should change its mobile strategy (again)
  • No Qt for S40, Maemo and Symbian apps won’t be compatible: is Nokia really willing to unify development for OVI Appstore?
  • Why Samsung Bada makes sense vs an Android-me-too journey
  • Flex on Mobile: What’s coming in ELIPS Studio…iPhone insights (and android teasing :) )

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox