This is the 100th post of this blog... and I couldn't think of more unique way of writing it than this one.
I am typing this on a german keyboard sitting in an internet cafe in Berlin. I reached here on Saturday and have spent last 2 1/2 days exploring the city. It's a welcome break.
On Sunday I took a 3 hour bus+boat tour of the city and was amazed to find how much there is to see here for a tourist. The most fascinating feeling I had while visiting several places was, this city's history consists of important events from the recent past. Berlin has changed a lot after the fall of Berlin wall in 1989, a significant event in this city's (and cold war's) history. Yesterday I visited the remnats of the notorious Berlin wall and other monuments related to it. Only a part of the wall is left and it is planned to be turned into a Museum. Currently the place holds collections of photos/documents on display from the Nazi regime. I guess the museum will be called 'Topography of terror'. It is near the building where the Gestepo and other Nazi plans took shape.
It is amazing to see how much the city has changed in around 20 years. The Sony center is a symbolic example of this change.
Today morning I visited the German Parliament building - Reichstag. It is freely accessible to public. Most of the buildings in Berlin have two well defined eras - pre WW-2 and post WW-2. As the tourist guide said, about 70% of the city was destroyed in the war. So most of the buildings were either rebuilt from scratch or in part. The glass dome of the Reichstag building is of great architectural significance. That's true about most of the buildings in Berlin. A lot of them were redesigned by inviting tenders from many architects and the winners of the competition were given contract to build the new structures. Thus it is obvious that all of them have been results of lot of architectural design efforts.
The city is very fashionable. I haven't visited more fashion-savvy city than Berlin. The people on street are rarely seen in mundane casual clothes. The streets are full of fashion boutiques or Ads of them. I must be looking odd-one-out ;)
Today's afternoon I spent in Alexanderplatz area (remember "Bourne Supremacy"?) :)
That's it for now. Stay tuned!!!
Monday, September 15, 2008
Sunday, September 07, 2008
Inkface - SVG based GUI design
I have always wondered why are there so many advanced technologies to learn to create the GUI for a software application. GUI is what we see, then if we want to design or customize it, then it should be as simple as editing an image in an Image editor. This becomes more important with the next-gen handheld devices, where the GUIs will be handled more intuitively - by fingers - rather than keyboards or mice. However the problem and its solution wasn't very apparent to me.
... until I read this post by Andre Schmidt on Clutter mailing list few months back. In his simsui project, he has designed a slider widget from an SVG image and used clutter to render its differnt parts. This little project defined the problem and solution I was looking for. I played with the simsui source code. Unfortunately, that code is written for very specific widget and had some duplicate implementation of some rendering logic.
So I decided to give a try to a generic SVG (vector graphics) based GUI framework. I looked for open source SVG rendering libraries. I chose librsvg (which is now part of the Gnome desktop) for this purpose. It took me a month to understand its internals and to extend them to fulfill my needs. I eventually got it working. I now have created a fork of that library - dubbed 'libaltsvg' - under my altcanvas project.
What I have achieved so far is complete isolation of GUI from the application logic code. I have coded two samples apps - A music player and A virtual keyboard for handhelds - using this new GUI framework. As you can see in the following demo video, the GUI look-n-fill can be changed by merely changing the input SVG filename. In this framework the app logic gets simplified as well. The code for the two apps can be found in player.c and keyboard.c.
high-res version on Blip.tv
The complete source code can be found here in altcanvas repository.
The demo above is prepared on my desktop, however I have tested these on my n810 as well. Of course, the animation effects are too much for it to handle. But it works decent at minimum frame rates. I will post packages for n810 diablo in next couple of days.
To put this in perspective: this framework lets you do on your desktop/mobile, what Adobe flash lets you do on the web (and on mobiles too) - with an added benefit of coding in C (and python or other popular languages, once I get their bindings ready). There are some closed source projects for doing vector graphics based GUIs for mobile devices (ikivo, bitflash). But I haven't found any open source initiatives so far. Let me know for sure if you have.
If you are attending OSiM or Maemo summit next week in Berlin, then look for me. I will be happy to give a demo.
Update (Sep 12):
A package for trying the Inkface demo on Nokia n810 is available now. Download the .deb file.
[Note that the keyboard/music player are not fully functional apps. They are proof-of-concept apps for showing Inkface GUI framework benefits.]
I will be flying tommorrow afternoon for Germany. If any of you guys are in OSiM or Maemo summit, I will be glad to meet. After I come back from the trip, I will work on further improvements to this project. Till then... have fun!!!
... until I read this post by Andre Schmidt on Clutter mailing list few months back. In his simsui project, he has designed a slider widget from an SVG image and used clutter to render its differnt parts. This little project defined the problem and solution I was looking for. I played with the simsui source code. Unfortunately, that code is written for very specific widget and had some duplicate implementation of some rendering logic.
So I decided to give a try to a generic SVG (vector graphics) based GUI framework. I looked for open source SVG rendering libraries. I chose librsvg (which is now part of the Gnome desktop) for this purpose. It took me a month to understand its internals and to extend them to fulfill my needs. I eventually got it working. I now have created a fork of that library - dubbed 'libaltsvg' - under my altcanvas project.
What I have achieved so far is complete isolation of GUI from the application logic code. I have coded two samples apps - A music player and A virtual keyboard for handhelds - using this new GUI framework. As you can see in the following demo video, the GUI look-n-fill can be changed by merely changing the input SVG filename. In this framework the app logic gets simplified as well. The code for the two apps can be found in player.c and keyboard.c.
high-res version on Blip.tv
The complete source code can be found here in altcanvas repository.
The demo above is prepared on my desktop, however I have tested these on my n810 as well. Of course, the animation effects are too much for it to handle. But it works decent at minimum frame rates. I will post packages for n810 diablo in next couple of days.
To put this in perspective: this framework lets you do on your desktop/mobile, what Adobe flash lets you do on the web (and on mobiles too) - with an added benefit of coding in C (and python or other popular languages, once I get their bindings ready). There are some closed source projects for doing vector graphics based GUIs for mobile devices (ikivo, bitflash). But I haven't found any open source initiatives so far. Let me know for sure if you have.
If you are attending OSiM or Maemo summit next week in Berlin, then look for me. I will be happy to give a demo.
Update (Sep 12):
A package for trying the Inkface demo on Nokia n810 is available now. Download the .deb file.
[Note that the keyboard/music player are not fully functional apps. They are proof-of-concept apps for showing Inkface GUI framework benefits.]
I will be flying tommorrow afternoon for Germany. If any of you guys are in OSiM or Maemo summit, I will be glad to meet. After I come back from the trip, I will work on further improvements to this project. Till then... have fun!!!
Sunday, August 24, 2008
Script fun
If you use Gnome, then you can use this quick script for setting casual reminders from command line.
$ cat ~/bin/remindUsage:
#!/bin/bash
msg=$1
shift
( sleep $* && notify-send $msg -t 0 ) &
$ remind "Laundry done" 48mAt the end of time, you will see a popup with the reminder message.
$ remind "Group meeting" 1h 10m
Tuesday, August 12, 2008
Visualizing source code
I always find it difficult to understand the legacy code after joining a new project. I cannot understand it until I can visualize it. Cscope, Ctags have been great help in this effort, but they don't present the source code structure in visual form. I tried KScope a while back, it's good. But today I got working a very useful method of visualizing the program execution. It's documented in this article on IBM Developerworks.
If your project has a C binary, then using the pvtrace utility mentioned in the article (which uses addr2line) and graphviz, you can create awesome picture of your C source code. (I haven't tried this yet on C++). One hiccup that was keeping me from getting this to work was resolved today. I was running it on an executable that was linking to a shared library. So even though I was compiling the whole library and the executable with debug symbols, the addr2line utility couldn't get the symbols that were in the shared library. When I realized that, I re-ran the linking part of my executable, so that it would now link the .a file statically, instead of .so file dynamically. The resultant binary had all the symbols.
After following all the steps in the article I came up with this picture.
If your project has a C binary, then using the pvtrace utility mentioned in the article (which uses addr2line) and graphviz, you can create awesome picture of your C source code. (I haven't tried this yet on C++). One hiccup that was keeping me from getting this to work was resolved today. I was running it on an executable that was linking to a shared library. So even though I was compiling the whole library and the executable with debug symbols, the addr2line utility couldn't get the symbols that were in the shared library. When I realized that, I re-ran the linking part of my executable, so that it would now link the .a file statically, instead of .so file dynamically. The resultant binary had all the symbols.
After following all the steps in the article I came up with this picture.
Labels:
c,
programming,
source,
visualization
Sunday, August 10, 2008
OpenMoko photo tour
Today on the OSiM blog, I reviewed 3 major distribution efforts on OpenMoko phone.
Here are the slideshows of the screenshots I collected.
om2007.2
om2008.8
fso
Check out the full article for more into.
Here are the slideshows of the screenshots I collected.
om2007.2
om2008.8
fso
Check out the full article for more into.
Subscribe to:
Posts (Atom)