Wednesday, April 25, 2007

Design patterns in Symbian

This time my post will be a short one. :)

You know, I've been thinking about writing some posts on various design patterns applied in Symbian OS core components. My motivation is first that I enjoy reading/using code that has been carefully and nicely designed. Second, I wanted (and I still do) to encourage each developer to always think before starting to implement any solution for a given task/problem. It may sound as a cliche, but I found it a very common pattern that people (i.e. developers) had not considered how others will use their module (niceness of interface, readability of source code, etc.), how it fits into the big picture, how future-proof it is, etc. You know, ideally you shouldn't just code something, but rather do it nicely. That's the difficult part.

Even though I found this idea pretty challenging I've kept postponing my first article on this topic for various reasons. Now I'm late - at least with the first article. :) I've just noticed that rensijie from had posted two article about design patterns:

Good posts, Rensijie! I'm really looking forward to the next article on the topic. Or even I might add some. :)


Monday, April 9, 2007

Forum Nokia Wiki - the responsibility of contributors

As Ron from Forum Nokia announced, Forum Nokia Wiki has been launched just a week ago. We, Forum Nokia Champions, were asked to fill the Wiki with contents a few weeks earlier so it wasn't news to us when it was launched. Nevertheless, I thought it was a good thing to have a centralized knowledge base online available to anyone wishing to find answers to their technical questions. Ideally it's going to be updated regularly with high- and low-level information alike (e.g. architectural vs API-level) sharing all the knowledge that lots of developers have gained on many areas that have anything to do with mobile development. I believe it was a good step waiting for being made by Nokia.

However, users of a wiki system must be aware of that there are some rules that every contributor should follow. Because one side of the coin says that a wiki can be edited by anyone, the other side, though, suggests that it ought to be done well. For example,

  • Most people know that copyrighted stuff shall not be added to the wiki, unless the author of the material in question has approved of doing so.
  • Then it also has to be considered if the article to be added is really useful or not. Typically, "how to"s greatly improve the usefulness of a wiki, because what they explain is usually not mentioned in any off-line documents. As opposed to detailed API-documentation that should rather not be added to wikis (imho), since most developers interested in APIs already have a comprehensive API reference off-line.
  • We have to be catious on adding new things so that they're in a readable format meaning that it can be digested easily. For example, I have seen articles that not only lacked formatting (I mean, at all), but they used internet-slang, like 'r u nuts?' (emphasis on one-letter words). I'm pretty sure that it's obvious to everyone why this style should be avioded in wikis.
  • Finally, a very-very important thing: since anyone can edit any other people's article in a wiki, special care must be taken to change other people's contribution elegantly. For example, my articles have already been:
    • Re-categorized - by removing a category which the article belonged to on purpose
    • Re-formatted - so that external references (i.e. links) have been removed
    • Truncated - some parts have been removed that should have stayed intact.
Unfortunately, all these changes happened so that no-one asked me what I thought about the changes and whether I approve them. Side-note: I would not have approved these changes, btw. Also note that above is not a comprehensive list of what people should keep in mind, I just picked up some topics.

You know, there're a lot of people who don't know that wikis provide means to ease what I call elegant contributions. For example, MediaWiki, a web based wiki software used by e.g. Forum Nokia Wiki or WikiPedia, provides watchlist, feeds, notification mechanism for regular contributors to make it easy for them to follow-up the changes they made. Each article can be watched so that any changes are visible when one is checking to see if an article has been further improved since the last check. Feeds enable you to check it out what the recent changes were, for example. Although automatically not enabled, but e-mail notifications can also be requested upon any changes to any articles.
MediaWiki also lets you initiate a discussion over a topic of an article so that people can come to a conclusion over a debated topic without changing the content of the article in question. This is the reason why there is a comment page attached to each article in MediaWiki. If those people who changed my articles had been aware of this feature (or if they'd cared), then their contributions wouldn't have left mixed feeling behind.

Of course, it's not only bad things that happened to the articles that I published on Forum Nokia Wiki, but the vast majority is useful additions and corrections. In addition, I'm so much amazed of the growth speed of the wiki and hope that it will be at least close to this in the future, too. But I also see that there're still lots of things to improve - Nokia Ron and his team and the future board of administrators will probably spend lots of hours with figuring out how FNWiki suits their users' needs in the most convenient way.

Keep up the good work, guys!