Tuesday, December 23, 2008
Inkface update
A main change in this update is, the definition of a new abstraction called 'Face'. This was introduced to make programming the app more intuitive. A 'Face' object is initialized by giving it a name of SVG file that holds UI elements. One can create several face objects that hold elements from different SVG files, and as per the program logic can add-remove these 'face' objects from the canvas. The elements in the SVG files can be addressed as attributes of the face objects in which they are loaded. This makes the app source code very intuitive. The management of the element objects is done behind the scene without the app programmer having to worry about it.
To demonstrate these features, I have written a simple yet useful app using above concepts. It's a twitter client, written using python-twitter library as backend and inkface-python as front end. This app depicts friends' and public's twits in a more playful manner as clouds and banners, rather than rectangular gtk widgets. It enables text-entry by a face object called 'Keyboard' which implements the logic of text entry (from touch screen interface as well as actual keyboard of n810). I want to polish the app further before making a demo video, so I am not going to rush it today.
The inkface infrastructure is now divided into three libraries: the SVG parser and renderer library - libaltsvg (derivative of librsvg); the python bindings for inkface - inkface-python; a helper python library which defines above mentioned abstractions - inklib. There are deb packages for each of these components. A good news is, I have got permission to upload these packages to maemo extra repo; so users now won't have to worry about dependencies.
Soon I will have to seriously concentrate on the performance issues. As you will observe while running the twitter client, the app takes nearly 50% of n810's total 128M memory. So it surely is not healthy. The python ref count debugging made sure that the memory was no longer leaked in buckets; but a vector graphics based app is known to need more resources. I plan to look deep into librsvg and cairo data structures to trim down the memory usage.
Meanwhile, this update also has some code for OpenGL backend, however it's disabled by default. It is targeted for desktop and OpenGL ES based handhelds.
Tommorrow I am leaving for a vacation, so after I return next week, I will do some final testing and release the deb packages.
That's all for now.
Merry Christmas to all!!!
Saturday, December 20, 2008
Debugging python reference counts
The primary documentation on the subject from python.org is the first stepping stone. Considering how daunting the task of memory debugging is - some inspiration always helps. Read this post from Guido which explains how to approach the task.
In most of the cases we start debugging the memory leak after we have seen the program crawling or ever-increasing heap profile graph from valgrind massif. Whichever is the case, the theory of reference counts as explained in above docs, doesn't make sense in this scenario. In such case, the following steps may help you get started.
- Put debug statements in the dealloc functions of your Python Type objects. This will tell you when are they getting called, if at all. They will be called when Py_DECREF call on your python object decrements its refcount to zero.
- Identify the python objects that you suspect to be leaking (i.e. the objects whose ref counts are not reaching zero when you expect them to) and write a simple routine that dumps their refcounts. You can write this routine inside your C module or in python - depending upon how your code is organized. In C you can find PyObject's refcount by its member ob_refcnt. In python you can do the same by passing the object to sys.getrefcount() function. Call this refcount-dump routine from various places in your code and monitor how the reference count of these objects varies.
- By calling the refcount-dump routine at strategic points you will soon narrow down to the area that is increasing the ref counts unexpectedly (or more correctly forgetting to decrease it when the job is done). Now look in the Python-C API docs for the behavior of the API calls you are making in this particular code segment. Understand the meanings of borrowed reference and new reference. Soon, you will find the places where you are supposed to call Py_DECREF, but you haven't.
- The ref counts on my objects were astronomical. After a while I figured that they were increasing with time. This observation clearly showed that the bug was in a loop structure. Soon I found the problematic code and put Py_DECREFs.
- One common place of forgetting to release the ownership of an object is while iterating over a sequence using PyIter. Note that, PyIter_Next returns a new reference and you have to release it (roughly at the end of the iteration)
- Sometimes Heisenberg's law kicks in ("you can't observe something without influencing it" as mentioned by Guido in above post). In my case, the python objects I was tracking were saved as values in a dictionary. So the only way to refer to them was
sys.getrefcount(dict.values()[index])
This leads to a creation of list of values, thus incrementing the reference count of the object I am monitoring. There is no easy way that I know of to work around this, but just taking into consideration these additional refcounts helps. - In my code, I have a pure python class which encapsulates the objects created by C library. So the deallocation of C objects was dependent on the deallocation of pure python object. So I had to track its refcounts as well. One surprising thing I noticed was this object had very high refcount immediately after its instantiation. e.g.
o = someclass()
This was very unexpected. The reason behind it lied inside its constructor of course. This class has several methods. And inside the constructor I register these method objects as callback handlers. This understandably increases the refcount of method objects; however as it turns out it also increases the refcount of the parent object. So in my case, I got rid of these references by unregistering the callback handlers when I wanted to release the object.
print sys.getrefcount(o) # 11
These are my findings based on less than one day's work. If you find any mistakes in my understanding, please do point out.
And yes... an update on Inkface is coming soon.
Saturday, December 06, 2008
Paul Graham nails it again!
... it has gotten muchAll the thoughts on my mind these days, couldn't be summarized better. Check out the full essay, as usual his opinions are radical yet convincing.
cheaper to start a startup. There are four main reasons: Moore's
law has made hardware cheap; open source has made software free;
the web has made marketing and distribution free; and more powerful
programming languages mean development teams can be smaller.
By the way, tomorrow
P.S. This is my first post from ScribeFire
Wednesday, December 03, 2008
A great essay
Here are my favorite snippets:
... As the economics is known as "The Miserable Science", software engineering should be known as "The Doomed Discipline", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter "How to program if you cannot" ....
... The practice is pervaded by the reassuring illusion that programs are just devices like any others, the only difference admitted being that their manufacturer might require a new type of craftsmen, viz. programmers. From there it is only a small step to measuring "programmer productivity" in terms of "number of lines of code produced per month"....
... Unfathomed misunderstanding is further revealed by the term "software maintenance", as a result of which many people continue to believe that programs - and even programming languages themselves - are subject to wear and tear....
Tuesday, December 02, 2008
Fedora 10 on MacBook 2,1
It is pretty easy, to install Linux alongside Mac OS X, provided you are ready to completely format the hard drive. I attempted to salvage my original installation of Mac OS X, by resizing the HFS volume with parted; however that didn't work. I had taken backup of all the necessary data (hopefully!!).
Here is the recipe for converting a 2nd generation MacBook with Intel Core 2 duo, into a dual boot box. Since Bootcamp has expired on Mac OS X Tiger, I couldn't use it; so this one uses rEFIt and OS X's Disk Utility for repartitioning.
1. Download rEFIt and install it.
2. Reboot and see that you can boot into Mac OS X
3. Reboot with Mac OS X install CD. During installation, use the "Disk Utility" to partition your entire hard drive into three volumes. My layout - 30GB Journaled HFS for Mac OS X, 40 GB for linux (type doesn't matter, we will change it later anyway), and 4GB for linux swap.
4. Continue with Mac OS X installation (this takes looooong time)
5. Reboot into newly installed Mac OS X
6. Reboot with Fedora 10 (or other distro's) installer Live CD.
7. Install Fedora 10 as you normally would - I chose the disks with root partition on 40GB volume (mark it to format to ext3) and 4GB swap. Also note that, you should install the bootloader on first sector of the partition (In my case it was /dev/sda3) and NOT the MBR.
8. After installation is complete, reboot.
9. In rEFIt menu you should see the Penguine alongside Mac OS X.
There are several tutorials that tell additional steps; but above steps worked for me.
I was happy to find many things working out of the box: Wifi, sound, Battery meter in tray. (Note that 2nd gen Macbook doesn't have nVidia card, so don't go installing kmod-nvidia packages like mentioned at many places for newer Macs)
There are several things that still need some investigation - right click, scroll gestures on touch pad. I have yet to test suspend and resume.
But overall the system looks good (writing from the same). I am excited to try out KVM virtual machines for the first time - because this is only the first personal machine I have got with hardware support for virtualization.
Saturday, November 29, 2008
Thanksgiving at Crater Lake
Monday, November 17, 2008
Digital SLR buyer's guide
I always like Amazon's reviews (no matter which site I am buying from). Also their "X% people bought this item" feature gives some idea about product popularity (although those numbers look pretty skewed when you check out second item on that list). So Canon Rebel XTi (10MP) and XSi (12MP) seemed like decent candidates for my budget (after a long fight with my stingy self of course). From the reviews these models seemed clear winners. XSi was rated 5 stars by 170 out of 213 customers. And 85% bought people bought it. But I still wanted to understand what I was getting before drilling this big a hole in my pocket.
One of the reviewers mentioned this book "Understanding Exposure" by Bryan Peterson. It's a fantastic book. After going through first 40 pages, I got pretty good idea of all the photographic jargon I found on DSLR product page. The aperture, shutter speed, lens, CMOS sensor, significance of MegaPixel, etc. I also found useful articles elsewhere . Although I didn't read it fully, I found the wikipedia article on "depth of field" amazingly detailed. Also this article on the lense that comes by default with XSi, (18-35mm f/3.5-5.6) is also detailed.
edealinfo.com showed a pretty good deal on the XSi model. Although their math showed that it will cost me $607 at Dell Home, I found out that they have conveniently forgotten $50 tax. Especially when I compared this on Amazon, which had the camera for $637 and free shipping and zero tax - my decision was easy (Moreover this earns me 3 times points on Amazon visa).
... the pocket feels lighter. Hopefully it will pay off in long run ...
Wednesday, November 12, 2008
more fun with notify-send
# cat runmon
!/bin/bash
COMMAND="$*"
eval "$COMMAND"
if [ $? -eq 0 ]
then
notify-send -t 0 -u normal "$COMMAND Done!"
else
notify-send -t 0 -u critical "$COMMAND Failed!"
fi
Use it like this:
# runmon make all
# runmon cdrecord -v speed=2 dev=2,0 cdimage.raw
# runmon wget http://download.fedoraproject.org/.../Fedora-9-x86_64-DVD.iso
It is useful for monitoring the tasks that take long time. Like build of entire product or burning of a CD. When I leave something to build and get to other work, I would like to be notified when it's done - even if it is running in some background screen session.
Thursday, October 30, 2008
(k)ubuntu 8.10 - not ready for my home yet
There are two major reasons with installing ubuntu on my AMD 64 box - one my video card (NVidia 6800 GS) and other my fancy (read sophisticated ;) LVM layout. Actually it's the combination of these two reasons that it's almost not possible to install ubuntu right now. ("almost" because there is a busybox shell. I can theoretically install the whole distro in a complete gentoo-ish way; but that's for one-time learning experience, not for every upgrade.)
The two problems given separately can be resolved.
I have the same fancy LVM layout on my office box, but I can install ubuntu there, because the GUI of Ubuntu Live CD has support for LVMs (since past couple of releases). On that box Live CD installation is possible, which is not the case on my home machine because the nVidia driver is too high end for the generic video driver on Live CD to handle.
With Fedora GUI installer I have same problem with my graphics card. But Fedora's LVM management is an integral part of Fedora's text mode installer, so I can install the whole system and then boot into command line and install nvidia graphics driver from livna and get the GUI running.
Ubuntu has had very poor support for LVMs. Till 8.04, you had to manually load dm-mod and create custom initrd, etc... With 8.10 I can at least see (from busybox shell, not any installer screen) that the LVM volumes are automatically detected. The problem is, the text installer screens will only allow me to create new LVM volumes, they won't present me with existing volumes (even though the system has already detected them, as verified from shell). It is sooo close... Is there a hidden button somewhere that I missed, unfortunately not :(
I guess I will have to wait for Fedora 10 for my home box and enjoy Kubuntu on my office box only.
What appears bizzare to me is after all these years of linux distro evolution why do we still have to reboot the machine to install a new version of the OS. The new operating system should be installable while you are booted into the comfort of your old operating system. Not only is it easy to implement; it is already done in some forms. The wubi project of Ubuntu will install ubuntu linux as an app from a running Windows OS. Many people (including me) have tried doing a chroot installation of the new OS, I almost got it running with Fedora 8; but certain initrd errors stumped me. Live CD installation is halfway on that path; instead of the old OS it runs a minimal OS booted from CD.
An added advantage of this scheme is, one can undo the new OS installation equally easily. In case of a linux distro - the footprint of an OS on the file system is essentially made of two parts - root partition and some files in boot partition. If the root file system is located on a logical volume, then undoing the OS install is just to remove this volume and deleting some files from boot partition. I do this every time (that's why I have that fancy LVM layout); I just want it nicely integrated inside installer interface.
I hope the distros will have this facility some day...
Have fun with Ibex !!!
Update (Oct 31):
I got it running. The key is to run "modprobe dm-mod" and (more importantly) "vgchange -ay" before the text installer reaches the disk scanning screen. After than the installation happens as usual. After the installation was complete, of course I didn't have the GUI working.
Add "deb http://us.archive.ubuntu.com/ubuntu/ intrepid-updates main restricted" to /etc/apt/sources.list.
Run apt-get update
Run apt-get install nvidia-glx-173 nvidia-settings
Still the GUI won't start.
At this point you are expected to tweak /etc/X11/xorg.conf. But I never get it right. Luckily I could copy the file from my Fedora-9 installation and KDM loaded successfully upon reboot.
The KDE 4.1 GUI is awesome!!!! Try it!
Tuesday, October 28, 2008
Migrating to Google App Engine
So in my app, I hosted the keys on an xmlrpcserver. The plugin would pull the keys from the server and sign the user's upload request. I had a website project running alongside, so I just put the xmlrpcserver on the same host that was serving the website. This host I rented for $15/month from a VPS vendor. Well... the website didn't fly and recently I found that there was no point anymore paying the $15 every month. But I had to take care of the xmlrpcserver hosting the keys.
One solution would have been to issue new version of the plugins and ship keys with them. But this would have not worked because the users who have already downloaded the plugins, won't come back to check an update when they get an obscure error.
The other alternative was to use Google's web app engine to host my xmlrpcserver. I had to spend some time in customizing the standalone xmlrpcserver to work with Google App engine. I have contributed the code in this recipe in App Engine's cookbook. I also had to modify my flickr API library a bit to use app engine's URLfetch API instead of urllib.
Finally I have successfully migrated my XMLRPC server to Google App engine. I liked GAE a lot. Like other Google apps, the GAE interface is rich with goodies - log viewer, traffic analyser, Database viewer, etc.
And it's free (read the EULA for limits).
With a free webserver like this, I can imagine so many things I can do. Moreover it supports my favorite language... what else can I ask?!
Wednesday, October 22, 2008
Android opened - first looks inside
News of the day! Android is open. First thing after returning from work was setting up the git download and build.
Follow the download and build instructions here.
Tip: If you are running x86_64 box, make sure you install *-devel.i386 packages as well. You will keep getting errors otherwise, that the libraries found in /usr/lib64 weren't deemed good candidates by the build system for linking.
For the description of each subdirectory of the project tree, check this.
The things of interest are the toolchain and location of bare-bones libraries. Toolchains are located inside the prebuilt directory.
mydroid $ prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/arm-eabi/bin/gcc -v
Using built-in specs.
Target: arm-eabi
Configured with: ../../toolchain/android-toolchain/gcc-4.2.1/configure --prefix=/android/mathias/armdev/toolchain-eabi-4.2.1 --program-transform-name=s,^,arm-eabi-, --prefix=/android/mathias/armdev/toolchain-eabi-4.2.1 --target=arm-eabi --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --enable-languages=c,c++ --disable-libstdc__-v3 --disable-libssp --enable-threads --disable-nls --disable-libmudflap --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs : (reconfigured) ../../toolchain/android-toolchain/gcc-4.2.1/configure --prefix=/android/mathias/armdev/toolchain-eabi-4.2.1 --program-transform-name=s,^,arm-eabi-, --prefix=/android/mathias/armdev/toolchain-eabi-4.2.1 --target=arm-eabi --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --enable-languages=c,c++ --disable-libstdc__-v3 --disable-libssp --enable-threads --disable-nls --disable-libmudflap --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs
Thread model: single
gcc version 4.2.1
The basic libraries are available under bionic subdirectory:
bionic/
bionic/libthread_db
bionic/linker
bionic/libdl
bionic/libstdc++
bionic/.git
bionic/libm
bionic/libc
After your build is successful, the android binaries should be available under out/target/product/generic/obj/lib/
mydroid $ file out/target/product/generic/obj/lib/libc.so
out/target/product/generic/obj/lib/libc.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), stripped
I tried to compile a simple helloworld.c, but no luck :(
mydroid $ PATH=./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/libexec/gcc/arm-eabi/4.2.1:prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/arm-eabi/bin/gcc:$PATH prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/arm-eabi/bin/gcc hellodroid.c
Assembler messages:
Fatal error: Invalid -march= option: `armv5te'
I can't wait until someone compiles python with this toolchain. I don't have enough time and know-how in how to arrange this toolchain in a manner so that Python's autotools can compile in it. Hopefully scratchbox or OpenEmbedded people will take up that task and we will soon have a Pydroid.
Saturday, October 18, 2008
Has it started?
Elon Musk's post on taking the Tesla Motors' chair
These are extraordinary times. The global financial system has gone through the worst crisis since the Great Depression, and the effects are only beginning to wind their way through every facet of the economy. It’s not an understatement to say that nearly every business will be impacted by what has unfolded in the past weeks, and this is true for Silicon Valley as well.
Mark Shuttleworth's post on the financial crisis
The term “credit crunch” is very misleading for the current crisis. It suggests that the problem is merely one of confidence, that calm will return if liquidity is introduced to the system.
My view, though, is that the real issue is one of solvency. This is the systemic bankruptcy of 2008.
Mortgages are just the beginning.
Paul Graham's post yesterday
The economic situation is apparently so grim that some experts fear we may be in for a stretch as bad as the mid seventies.
When Microsoft and Apple were founded.
As those examples suggest, a recession may not be such a bad time to start a startup......
Monday, October 13, 2008
Inkface v0.1
If you want to try these applications yourself:
- Install the .deb packages (libaltsvg, inkface-python)
- Download python scripts and GUI SVG images: Keyboard (.py .svg) IRC (.py .svg)
# Install Inkface libraries
dpkg -i libaltsvg_0.1.0_armel.deb inkface-python_0.1.0_armel.deb
# Keyboard demo
python inkface-keyboard.py keyboard-entry.svg
# IRC demo
python inkface-irc.py irc.svg
Check out the project wiki for future plans of the project. It has some notes to get you started. A look into simple python scripts mentioned above will also help.
Here is my last month's post that discusses the idea behind the project.
Saturday, September 27, 2008
Musical discovery of the week
During the zombie nights of the worst-ever jetlag I spent some time reviving my 4G iPod. Just before its release 3.0 was announced on Slashdot, I installed Rockbox on my ipod. It's fantastic! The installation was smooth (unzipping a file and running an executable that will tweak the bootloader). With it you can do more things with the playing song than what you could do with the Apple stock interface. You can save locations in a song as bookmarks, change the pitch, and there are more things in the context menu that I haven't tried. The fade-in/fade-out on play/pause is pleasant. Also there are cross-fade options.
You can program it to pause the song when you remove the headphone jack. You can organize the songs in more sane format
Do try it if your device is on the supported list!
As for the other discovery - Nerina Pallot.
Some awesome tracks: Geek Love, Damascus, Everybody's gone to war, Sophia
Enjoy!!!
Monday, September 22, 2008
Die Berlin-Affäre
Needless to say, Last four days were amazing. I met a lot of interesting people; saw all the cool things they were doing; dived in insightful discussions; showed the demo of my UI project to all; ... And sometimes ended the day with overdose of buzzwords like 'fragmentation' :)
In OSiM, some notable talks came from Sean Moss-Pultz (OpenMoko) reinstating their mission to provide an open device that gives freedom to innovate; Andreas Constantinou (VisionMobile) - analysing which mobile stacks are more open source than the others (even though everyone claims to be as open as classic FOSS projects), Ari Jaaksi announcing Nokia's next version of Maemo SDK - with HSPA connectivity, high-def camera, omap3 processor (with improvement in multimedia and 3D acceleration in hardware), Ken Banks (kiwanja.net) giving a very insightful presentation on very uncommon businesses built by people in African countries to suite their needs - especially some social projects that are built on top of mobile infrastructure to spread information that is otherwise restricted by non-democratic governments.
Among the "suit" presentations (Ari Jaaksi's term for execs as opposed to t-shirts for geeks), I liked Christy Wyatt's presentation. Although it was well above the technical details (in the world of graphs and trends), I found her opinions honest and frank - also unlike other execs she seemed to have right idea about actual technology problems (for instance, problems faced by independent developers in the face of dozens of SDKs - otherwise referred to as the fancy buzzword 'fragmentation').
The Maemo-summit was enormous fun. Largest gathering of smart geeks and tech enthusiasts, I have ever attended. Over couple of dozen projects/ideas were presented in the "Lightening sessions" (fast 5-minute presentations/demos). The setting of the event deserves a description. The event took place inside a building of an organisation called c-base. Imagine a shabby building used by artists for various purposes and you will get the idea. It has been the venue for other open source events as well (ubuntu for e.g.). The philosophy of the c-base project is also interesting, check it out. Back to summit. The entire summit schedule was posted and collaboratively updated by people as different sessions took place. There was free wifi and everyone was logged in using their n8x0s or apple/ubuntu laptops. While listening to various speakers we could on the spot check the online resources they were talking about. That's why this setup made all the sessions extremely productive.
Among many prsentations the ones I found very useful for my interests were: debian chroot running on n8x0 by Alan Bruce (qole) and liqbase by Gary Birkett (lcuk). The former one is the first virtualization solution I have seen running on the tablet so far. The awesome part was Alan gave the presentation inside openoffice presentation running on debian inside chroot environment on his n8x0. This gives enormous flexibility to developers trying to build custom rootfs for their tablets. They can test such experimental rootfs inside chroot before flashing their device.
The liqbase demo was eye-opening. All the time I spent wondering when will 3D hardware arrive for me to program cool animations on the tablet, seemed futile after seeing what Gary had achieved on existing hardware. So far what I understand is, he is leveraging the X video extension (the same backend used by mplayer) and converting regular rgb data to yuv and drawing it. He demonstrated smooth scrolling like I have never seen before on a tablet. I can't wait to reach home and look into his library (I checked it yesterday, but didn't have enough time in the cafe).
Another mentionable presentation was from frogmetrics. This 6-people startup in NY is using n810s for collecting surveys from customers. There are putting n810 to use in a unique way. I was further impressed after learning more about them during a chat with Doug later on.
After listening to all the talks about open source solutions in mobile, I find Nokia to have made the most genuine effort in this field. I think it is indisputable that they pioneered this field when they brought n770 to market 3 years ago.
The overall Berlin trip was awesome. In first 3 1/2 days I explored the city as much as I could. Hopefully I will soon find time to upload the snaps. One observation I didn't mentioned in my last post was the domination of glass in new Berlin's architecture. By that I don't mean the shiny reflective façades, but the use of trancelucent glass as walls. In some buildings it induces a fear of height, because even if you are standing on a solid structure, the transparent walls on all sides challenge your sense of balance. I felt this predominantly in Sony center.
Looking back, this turned out to be a successful trip - for me it opened a window to a new world in many senses.
Monday, September 15, 2008
aus Berlin
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!!!
Sunday, September 07, 2008
Inkface - SVG based GUI design
... 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
$ 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
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.
Sunday, August 10, 2008
OpenMoko photo tour
Here are the slideshows of the screenshots I collected.
om2007.2
om2008.8
fso
Check out the full article for more into.
Saturday, July 26, 2008
New connection with the past
... anyway. Today I felt extremely happy when I came across Prof. John Riedl's blog. He has been my favorite Teacher among all the ones I ever came across in my life. Back in my school days I used to be the "full-attendance" student, but I have slept in almost all teachers' classes in my college days (sitting on first bench ;). In Prof. Riedl's class, I could never even felt like sleeping even if I was awake for past 24 hrs (yes, there were many such night-outs in those couple semesters). I had taken Advanced Internet Programming and later Advanced Operating Systems with Prof. Riedl. Both of them were the best courses I ever took in my life. What was so great about them? It is not important what programming languages/ technical skills/ theoretical foundations were taught in those courses. What I learnt there was passion for technology (no, that's incorrect... passion can't be 'learnt'. More correctly, our interests resonated perfectly and that boosted my passion for technology).
I didn't immediately understand the techniques Prof. tried to teach us in Advanced OS class. Most of the classic Operating systems papers that we read, were too tough for me and I could barely add any new insights (something we were supposed to do in our writeups) to the original ideas. But after 1-2 years when I was settled in my job, I reread some of those papers (this time with a focused interest on OS virtualization technologies) and I understood the significance of the techniques that Prof. Riedl were trying to teach us back then. It doesn't surprise me, why only Prof. Riedl has managed to influenced me. Because he comes from the startup culture, which I am so much in awe of.
If you are In U of M CS department, (and "love" computing), then never ever miss an opportunity to take Prof. Riedl's course (if it is offered of course... I feel lucky I got that opportunity twice).
Wednesday, June 25, 2008
George Carlin - favorite clip
Also check John Mayer's post paying homage to George Carlin.
Sunday, June 22, 2008
Sunday, June 15, 2008
80-20 rule
In every business there is some version of the 80-20 rule that says 80 percent of the business comes from 20 percent of the customers. Smart businesses do whatever they can to play to that powerful 20 percent....
There's another kind of company, however, that applies the 80-20 rule in a different manner and Apple is one of those companies. They aim everything they do at that top 20 percent and ignore the rest. Sometimes you hit a home run and get 75 percent market share, like Apple did with the iPod and iTunes, but I can guarantee you the business plan was aimed at taking 20 percent, tops, and making a good living with that.
There are other companies that take a similar market approach to Apple, but few of them are in the computer business. BMW and Porsche are good examples.
The 80-20 rule is known as the Pareto principle. Before this I knew it only in software programming context: 80% of software program is written in 20% of the time.
I don't know how many of Cringley's predictions come out to be true. But some of his analogies (like this one) just seem fitting.
Thursday, June 12, 2008
Python fun
I will mention one bit here. I found an elegant solution (at least in python) for one piece of code that I could never write with sufficient elegance.
A typical problem would be to create a string out of an array of words by separating them by commas. To solve this problem you always have to take care of the one corner case - the first element or the last element of the array. The code would be clean if every element could be followed by the comma OR every element could be preceded by the comma (depending upon your choice). So either you have to use a flag to detect the first pass of the loop and not use comma before current element. Or eat the extra comma after you have come out of the loop. In any case, I always resented the loss of elegance in this type of code. Here is how I would write it in C:
int numbers[MAX] = {2,3,5,7};
first = 1;
for (int i=0; i < max; i++){
if(!first){
sprintf(str,",%d",numbers[i]);
} else {
sprintf(str,"%d",numbers[i]);
first = 0
}
strcat(string,str);
}
Result: "2,3,5,7"
I found a one liner to do this in python:
fruits = ['apple','banana','orange']
print reduce(lambda x,y: '%s,%s'%(x,y), fruits)
Enjoy!
Sunday, June 08, 2008
OSiM'08 Berlin, Germany
The March conference in SFO was the first one of OSiM's in US. However they have been active in Europe for some time now. On September 17-18 of this year they will have the 3rd annual conference at Berlin, Germany.
One thing to note about it: For next 3 months the conference will be publishing a blog. .... and I will be running it. :)
Wednesday, June 04, 2008
Monday, May 26, 2008
"Wine" tasting
But last night, out of the blue I decided to give Wine a try to play some of the games I have. I have played three games halfway through their storyline - Halo 2, Warcraft III - Reign of Chaos, Need For Speed - Most Wanted. I installed Wine on my Fedora 8 system last night and installed Warcraft III with it. It installed alright and started smoothly as well. However the scrolling around the map was very sluggish and made the regular tasks very difficult to perform. I applied the registry tweaks suggested in WineHQ, but no help. Only today when I read the WineHQ forum posts again, did I find the -opengl option. When I ran War3.exe from command line with -opengl option, the map scrolling became smooth. The map still doesn't scroll smoothly when mouse pointer touches the edges. However I have a hunch that it might have to do with me using Compiz. It's not a big problem, I liked using keyboard. Sound also doesn't work right now. I could successfully complete one campaign. Unfortunately it crashed while saving the game state.
But overall I am glad I can play games again without rebooting into Windows. Another cool thing was I could start playing from the stage where I left it on Windows. I just had to copy the "Program Files\Warcraft III\save\Profile1" folder from Windows partition to the new Wine installation. I love it when software programs don't unnecessarily complicate things under the name of sophistication. I couldn't have restored my old game data if Warcraft creators had decided to encrypt or mangle this data and save in some non-intuitive location deep down the directory structure.
Saturday, May 24, 2008
Today's slashdot and open source
Two biggies of the industry opening up. Cisco's news isn't that big, these days it doesn't make sense to develop protocol libraries behind high walls anyway. This however shows that the big companies will be seeing the value in open source; or the futility of keeping the source closed.
There is another news on slashdot that is an interesting read: The Rise of Geekdom.
I think the following para from the article describes the geek phenomenon very well.
But the biggest change was not Silicon Valley itself. Rather, the new technology created a range of mental playgrounds where the new geeks could display their cultural capital. The jock can shine on the football field, but the geeks can display their supple sensibilities and well-modulated emotions on their Facebook pages, blogs, text messages and Twitter feeds. Now there are armies of designers, researchers, media mavens and other cultural producers with a talent for whimsical self-mockery, arcane social references and late-night analysis.
Saturday, May 10, 2008
Cost of Open Source
Bill Gates, at some event said
"there is this thing called the GPL, which we disagree with." Open source, he said, creates a license "so that nobody can ever improve the software," he claimed, bemoaning the squandered opportunity for jobs and business.[full article]
Then there was a report saying
[original news]
"Open Source software is raising havoc throughout the software market. It is the ultimate in disruptive technology, and while to it is only 6% of estimated trillion dollars IT budgeted annually, it represents a real loss of $60 billion in annual revenues to software companies," said Jim Johnson, Chairman, The Standish Group International, Boston, MA
That's one interesting (up-side-down?!) way of looking at the phenomenon of open source. I never thought of it like that. Coming to think of it, it is absolutely true if you have a traditional businessman hat on your head.
Today one can fulfill all their computing needs - from web browsing to photo editing, from instant messaging to corporate email - by paying absolutely no money. For every computing activity there are free software tools available. One can argue, that if Richard Stallman or Linus Torvalds (and countless other geeks like them) hadn't happened and everyone had written programs to make money, then maybe all of them would have earned those $60 billion.... Economics has never been my strong point, but I don't think economies run by so simple additions and subtractions.
Also there is another dimension to this argument. The above argument won't hold good if one looks back 50 years, instead of last 20 years. No one would have believed 50 years ago, that you could make big bucks just by sitting in your garage for few months, punching some keys and creating nothing but a photo editing program. But the advancements in computing showed that you can do that. The computing revolution opened variety of venues and making money by selling software was just one of them. For obvious reasons that became the most attractive route; and to some people (traditional businessmen) it appeared to be the only one.
If one expands the scope of this argument beyond just decades, then I think the phenomenon of open source is creating enormous amount of wealth that we may haven't yet recognized. Also I don't think anyone could have stopped it from happening. It happened because it was the very natural thing to happen with software. And if it was something as bad as mentioned in above quotes, then by laws of evolution it would have died by now. (Taking my own advice above, I shouldn't jump to theory of evolution based only on last 20 years. But we will see.) On the contrary, there are predictions (from reputed sources) that open source is going to thrive and will overtake the proprietary world in near future.
I think Bill Gates is an admirable personality who will be noted as one of the smartest businessmen in the history of world, but I don't think he or M$ has done much good to the history of computing (their recent tactics undoing whatever good they might have done in their early days). There is something about people who fit in M$ culture. Their achievements or visions sound so wrong to me, even before I know they are affiliated to M$. I had read about Ray Ozzie and his startup Groove in Jessica Livingstone's "Founders at work". Almost every chapter of that book inspired me one way or the other, but I didn't get Ray Ozzie's story. His approach to technology - described in sophisticated business lingo - just bounced off me (call it my incompetence, but that's the way it is). I wasn't sure about my gut feeling, until recently I found it echoing in Joel Spolsky's post (Yes, joelonsoftware fame). He describes Ozzie (who is now M$'s Chief Software Architect) as Architecture Astronaut, analysing Hailstorm project, or recent Live Mesh project. The whole article confirmed my views.
Just yesterday I read about this entrepreneur 'Nathan Myhrvold' on slashdot. This guy has come up with an innovative (?) idea of a company with bunch of smart people who just think about wildest ideas they can and patent them. His company doesn't plan to implement or manufacture them, but just accumulate patents and then sell them to other big companies. I was just stunned. The idea is indeed innovative ... a novel way of being as evil as one can imagine (in software industry perspective). Patent system is one of those systems that were conceived in the past for doing good in certain cases. But because these systems aren't revised with time, evil doers use them for doing anything but their original good intent (like the reservation system in India). Patent trolls are exploiting this system to the disadvantage of innovative startups. The above mentioned company is just an "uber patent troll". And yes... the guy is an ex-Microsoft CTO. What's interesting from yesterday's slashdot post is: there are links to two stories on same topic - one from NewYorker which cheers this new idea and another from an IP law firm which analyses the questionable intent. The contrast is noteworthy.
... so much for Microsoft bashing.
Check out an update to Altpublishr I released last week.
Sunday, May 04, 2008
Lions for Lambs
The story unfolds on three plots in parallel in a duration of 1 hour - a US military mission in Afghanistan, an interview of the US senator with a long-time reporter happening in Washington DC, and a one-on-one discussion between a student and a professor of political science taking place in some west coast university. All three events address the same problem, but it is shocking to see what one hopes in an ideal world, what actually happens in the real world, and how one justifies it in a bureaucratic(!) world.
Every character in these story lines is deep. But all of them have something in common. They all show how a young one starts a career with the fresh ideas in his/her mind and how the harsh reality dries them away. What disturbs is the seeming inevitability of all this.
I think the disillusionment an idealist suffers along the progress of his career is irrespective of the profession. In political or social contexts however they have grave consequences because they can cost people their lives.
... Do watch it if you like thought provoking stories.
Monday, April 28, 2008
Ubuntu reviewed
Over a year I have been contemplating a shift from Fedora to Ubuntu. At the time of Feisty I took a step in that direction, but then I decided to stick with familiar Fedora little longer. Now I am more comfortable with apt and dpkg, thanks to Maemo. So I was eagerly waiting for Hardy release of Ubuntu.
As you can read everywhere else, Ubuntu 8.04 is impressive. I agree. I will rather write about two specific issues that were relevant to my environment.
For few years I have been managing the storage of my desktops using LVM. It's very handy for me. Unfortunately Ubuntu's Live CD installation method doesn't support logical volumes - something that Redhat/Fedora supported so easily. Probably, ubuntu's target audience would prefer minimum click installs to advanced tweaking of the system. The alternate CD discovers logical volumes, but it's very tricky. I don't remember exactly, but last time I tried it, the installer froze on me until I figured - by jumping to adjascent terminals - that scanning of each volume was taking too long. But this time, I found an easier way of using LVM while still using Live CD. As per the instructions, I installed lvm2 and inserted dm-mod into the Live CD kernel. But the article guides you on how to create logical volumes from raw discs and then install Ubuntu on them. In my case I already had volumes. The instructions given in above link are not sufficient if you want to reuse the volumes that you created with your old linux installation. However it is very simple, if you do it right.
- Make sure you use "sudo" while doing pvscan, vgscan, lvscan. If you don't, these commands will exit silently, giving you the impression that they haven't detected your LVM setup.
- If you create new volumes as mentioned in above instructions, you will be able to see them as device nodes under /dev/mapper or /dev/
/, you can use them as targets of your favorite mkfs. utilities. However your already existing volumes won't show up that easily. If you want to see them, use "vgchange -ay". This will activate all your volume groups.
Now a days, it's common to have dual monitor setups in workplaces. I have one too (I mean two :). I needed to use some nvidia specific utils to get dual monitors working. If you search for terms like "dual monitors ubuntu nvidia twinview" you will get lots of posts. I found and followed all those too. But all of them told me to do Ctrl+Alt+BackSpace to reload X, to test the changes in my x.org file. That just made the display more and more horrible for me. The resolution dropped to 800x640, nvidia's twinview utility was no where in sight. ... until I rebooted the box. Maybe it was little dumb of me to not have rebooted after I installed nvidia's driver. I don't know which of the changes found in all those posts worked for me, but I think the important thing is to reboot the machine after you install nvidia's drivers.
Monday didn't seem so boring because a brand new system was waiting for me at work today. I set things up to suite my needs - nis, automounter, users, firefox sync, mail setup .... Firefox 3 beta 5 is pleasant. Fast as advertised. But I still couldn't find compatible google extenstions that I am so used to (browser sync, notebook, toolbar). There are compatible versions available for Firefox 3, but for some reason they didn't want to get installed on my beta 5 build.
But a major change I did was with my mail client, which wasn't planned. I don't remember if I had used Evolution any time in the past - not seriously for sure. But today I decided to give it a try, as it's the default mail client that comes with ubuntu. And within few minutes, I was a convert. I have stopped using Thunderbird. The biggest turnoff with thunderbird is its lack of calendar utility. Lightning is far behind alpha quality. That had forced me into using Korganizer on my Fedora 7 desktop. But this time I decided to give a shot to Gnome's PIM tools integrated into Evolution. Evolution has almost all the good things that thunderbird has (most importantly fast search), but in addition it has a functioning calendar program. I haven't tried to sync it with MS Exchange, but I doubt if any non M$ client will reliably work with MS Exchange calendars. I am happy with setting up my events and reminders manually, as long as basic functionality is there. Furthermore it was easy to import my mail folders from Thunderbird to Evolution, thankfully both use a standard "mbox" format to store the mails. Filter rules aren't compatible however, I will have to manually write them.
Fedora 9 is coming out in May. If you try it, let me know. I will skip Fedora this time though.
Tuesday, April 22, 2008
Flickr uploads from n810
Saturday, April 05, 2008
Cringely and Paul Graham
I read Bob Cringely's weekly articles. He is certainly not from my generation. But he is a rare commentator of technology who is venerable and contemporary at the same time. Read his recent column.
This emerging world will be very different in many ways. How many of these kids expect to someday earn a pension? Surveys show that few of them expect Social Security to even survive until their retirement -- if they can ever retire at all. Where we went through a couple career changes they'll go through half a dozen or more in a life that will outlast ours by 20 years. Growing up is changing from becoming what you will be to becoming what you will be for a while, and that has a huge impact on the educational requirements placed on our society.... His comment on what "education" really is, is just perfect.
Do read the rest.Part of any answer is figuring out what education is for. We use it for paying dues, for passing time until a certain level of maturity is reached. We use it for networking and finding mates. We use it for acting goofy at the expense of our parents. And we use it, to some extent, to learn what we need to know to get by.
The question that has so far gone unanswered in this series, then, is how will we learn in the future?
I can't say enough about the influence of Paul Graham's essays on me. Sometimes he just gets it. Last week he wrote about his list of heroes. Here are some inspiring quotes:
About Leonardo da Vinci...
His most impressive work, to me, is his drawings. They're clearly made more as a way of studying the world than producing something beautiful. And yet they can hold their own with any work of art ever made. No one else, before or since, was that good when no one was looking.About P.G. WodeHouse...
But Wodehouse has something neither of them did. He's at ease. .... But Wodehouse didn't give a damn what anyone thought of him. He wrote exactly what he wanted.About Isaac Newton...
You only get one life. Why not do something huge? The phrase "paradigm shift" is overused now, but Kuhn was onto something. And you know more are out there, separated from us by what will later seem a surprisingly thin wall of laziness and stupidity. If we work like Newton.
Sunday, March 30, 2008
Accelerometer brainstorming
The upcoming OpenMoko phone (named 'Neo FreeRunner' or GTA02 architecture) is going to have an accelerometer. Someone started a thread about how one can make use of this new piece of hardware. So far there have been many replies on the thread and they have very innovative ideas.
My favorite one, a suggestion from Crane, Matthew:
... if the device:Check out the rest here.
- goes from 60km+ to 0 in short order, e.g. high g stop
- while traveling horizontally
- over a road
- an on-screen alert/countdown is not stopped
Then it's likely a vehicular accident so auto-call/sms for help with
some kind of countdown to disable. Only really possible to do that with
a phone + GPS + acell.
Saturday, March 15, 2008
Clutter Webkit
After watching the demo of clutter at OSiM I got interested in the OpenedHand's Clutter project. More importantly embedding a browser in cairo is of greater interest to me. So when I got it working, I couldn't help showing it off.
Thursday, March 13, 2008
OSiM USA 2008 - Day 2
As I said at the end of my last post, I was expecting more interesting sessions on second day. But I had even more fun than expected. Most enjoyable sessions to me were the 2 demos - one by Soonr and another by Matthew from OpenedHand.
I asked many presenters about what sort of business model do they envision for open source application developers, and I didn't get any conclusive answer from them. However I found partial answer to my question in the demo from Soonr (and also from the talk with funambol yesterday). In short, Soonr allows users to save their data (docs, contacts, etc.) in the cloud (an account with them) and lets them access it using their cell phone or desktops. It customizes this data to suite the browser's capabilities (downsize powerpoint slides etc.). Basically it has the same benefits as having mobile versions of all Google/Yahoo services. However Soonr makes the process seamless. I liked the idea of how they handle the stolen cell phone use-case. If the user looses his cell phone, he can configure his account to disallow access from that cell phone.
I particularly liked the OpenedHand presentation because it was the only hardcore technical presentation in the entire conference. Matthew Allum (CEO, founder of OpenedHand), demonstrated the Clutter GUI his company is working on. The presentation was impressive. I have almost never attended a presentation where the slide show hasn't been done using PowerPoint. I suppose I might have seen OpenOffice presentations, but those were clearly not flashy. Matthew however gave presentation on his Ubuntu laptop and his slides had more fascinating effects than any PowerPoint slides I had ever seen. When I asked him at the end of the session about which software he used, he said that it's one his own little scripts. I know now where to look for, while preparing my next presentation... Back to "Clutter". If the phone has hardware support for graphics acceleration then Clutter gives all the snappy effects that you see in modern iPhone-like phones. See it for yourself. I have dowloaded and built the Clutter from o-hand's svn repository and played with many examples myself. It's very well structured source code and easy to build. Matthew's demo was done on an iPod-touch, but I heard it will also be able to run in upcoming GTA02 version of Openmoko phone.
Among all the people I met at conference, I enjoyed talking to Quim Gil the most. He is the product manager of Maemo project and I have read him on mailing lists from time to time. The discussions we had were very educational for me. I had many questions on Maemo (some of them naive and impractical), but Quim was nice enough to answer all of them with enthusiasm. I am a software engineer by profession and have worked with bunch of smart people; but never have I had such a frank discussion with as senior a person as a product manager. I think that is why we call it "Open" source. Thanks to Quim, Matthew and Hal (Funambol), I left the conference with an inspired spirit.
I was very excited about hearing Sean Moss-Pultz, but I got little disappointed when he couldn't make it to the conference. However Michael Shiloh gave very informative session on Openmoko. I got to handle the GTA02 that he passed among the audience. It was nice to see it, before I actually buy it in next few months.
There were couple of panel discussions on how web 2.0 is different from or similar to mobile 2.0. Among a lot of arguments and opinions I found Fabrizio's (Funambol CEO) comment very curious. It's well known that mobile browsers are lagging in AJAX and flash support as compared to desktop, which impedes the access to web 2.0 from mobile phones. With iPhone's browser interface and n810's microb engine that goal is looking within reach. However according to Fabrizio, mobile 2.0 will be made up with native apps connected to the web, rather than a fancy browser. I have always liked this idea personally even on desktops. But only time will tell how the web will unfold on the phone in our hands.
Ari Jaaski's presentation in the morning was as per expectations. Carolyn Lewko did very good job of hosting today's sessions. Andreas Constantinou also had many insightful comments during various sessions. Dan Morril's Android presentation was also nice. I would have liked to ask him about difficulties in porting android to other platforms because of the closed source binaries at the core of android, but then I changed my mind. My hunch is, Google will at least provide pre-compiled binaries for various platforms in future, even if they won't open source everything. Let's see. I hope someday I will be able to run android on OpenMoko and Nokia tablets.
Overall, this was a successful beginning of the US chapter of OSiM. Congratulations to the organizers. I hope there will be increased participation from the developer community next time. After all, the Open source phenomenon is nothing without the Geeks in the Garage. If big corporations are to involve more in open source, they should get to meet face to face with the real innovators. Conferences like this can play key role in that.
Tuesday, March 11, 2008
OSiM USA 2008 - Day 1
Most of the presenters were eloquent and knowledgeable in their fields, so all of the sessions were pretty interesting. At high level, today's sessions covered 4 areas: General discussion on role of Open Source in Mobile, security aspects, communities and licensing.
As an open source developer, I cannot say I learnt anything new about the technology. But I did gather bunch of information about several forces that are driving the mobile industry and how Open Source is going to play key role in it. Here are some highlights.
Most interesting thing of the day was the discussion with the Funambol representative (Hal Steger). Too bad I hadn't heard about them before. They provide push email and PIM syncing services to mobile users. They have developed the whole project under open source. It was pretty interesting to listen to their revenue model, which is essentially advertisements-based. Hal was kind enough to answer my questions on various details.
I also enjoyed talking to the Access developers, who demoed the SDK for Access Development community. It made me aware that Mameo, OpenMoko and Qtopia are not the only ones in that category.
The sessions were driven by Andrew Aitken (from Olliance Consulting Group) whose various comments throughout the day were very insightful on respective subjects.
Among morning sessions, Michael McLaughlin's (Azingo) presentation was very entertaining. Their push for LiMo based application development looks like a strategy. It will be interesting to see how LiMo platform evolves with competition from Android and others. I hope to get more understanding on LiMo tommorrow.
The security session by Bob Guimarin (Motorola's senior director of Security technology) was also neat. It showed how the corporations value open source communities to harden the products by means of code reviews and testing.
There were 3-4 very interesting sessions that discussed Open Source "communities" and various licenses under OS. After exploring so many open source projects in past few years I hardly found anything new in those sessions. However from the point of view of corporations investing into open source projects, it must have been educational. The concepts like typical 3-tier communities (core developers, contributors and users); mailing list conventions are taken for granted by regular source-forgers. Seeing them as part of a formal presentation just underlined what I already knew. However all the speakers were pretty witty and made the sessions enjoyable.
I am very hopeful for tommorrow. The sessions that were my main motivations to attend this conference will be tommorrow - Sean Moss-Pultz of OpenMoko and Ari Jaaski from Nokia. I am also curious to listen to Funambol CEO Fabrizio Capobianco.
Stay tuned...
Monday, February 18, 2008
Google code
But this post is not about my project, it's about its hosting site. I have done open source projects before on other hosting sites - xenen on Sourceforge, faint on Maemo garage - but I found their web interfaces very ... awkward. They look pre-historic compared to today's web 2.0 interfaces (Note: this is just about UI, SourceForge deserves lot more credit for what it has achieved beyond UI). So when I came to know about Google code I was extremely happy. When I came to know about it (that was already after 1 year it had lanched), the UI was still very simple. It didn't have all the features SourceForge had. But I had a gut feeling that it will have the finest features in the future to come, only because it is Google.
And I was right. One of the very useful they have recently added is source code browsing. Their previous code browsing was as plain as firefox's file:// browser. But I had a feeling that Google will be putting an extremely well SVN browsing interface that matches their style. And they did. Browse my project's source code here and see it for yourself. The browsing of entire source files, their older revisions and the diffs - everything is just how it should be. It just makes open source project development lot of fun. Thanks to Google code team for this new feature.
I have some good things to say about Google codesearch as well, but I will save it for next post.
Thursday, February 14, 2008
Gr8 commercial
The prime goal of a commercial is to capture the viewer's attention. These days ad-campaigns achieve this by showing something bizzare at the beginning of the commercial, however irrelevant that is with respect to the actual product. Then they do some lame spins on words (Comcast commercials) or some equally stupid things to justify themselves. Rarely seen are the commercials that show some innovation. Generally a good ad should start with a surprising, interesting scene and all the way should keep the viewer wondering about its subject. It is at the end where it differs from other mediocre commercials. It has to reveal the actual product in such a manner that it just fits the concept. It only helps to have a subtle climax.
This ad is an excellent example.
Friday, February 08, 2008
OSiM USA 2008, see you there
It looks very promising conference for whoever interested in Open Source in Mobile technologies. Here is the agenda for the 2-day conference.
Among the speakers there are some big names in Mobile world - Ari Jaaksi, Director of Open Source Operations, Nokia; Sean Moss-Pultz, Founder, OpenMoko; among others. Also there will be talks on many interesting topics including,
- Android (by Dan Morill Google Developer Programs),
- WiMAX and Open Source (by Brian Coughlin, Manager, 4G Product Development, Sprint Nextel),
- Panel discussion on "Raising Venture Funding for Open Source: The Investor Perspective" (Ira Kalina, Partner, Drinker Biddle & Reath; Patrick Walsh, Manager, Open Source Incubator Program, Intel Capital; Jai Das, Partner, SAP Ventures
- Panels discussion on "Taking Web 2.0 Technology to the Mobile Device" (speakers from ARM, Openwave, Sun)
- And many other talks on legal, technical, enterprise aspects of Mobile and Open source
If you are attending, drop me a line, we should meet up.
Saturday, January 19, 2008
OpenMoko, Android and a great hacking post
Nokia tablets have some part of their software stack as proprietary components. So one cannot totally write an entirely new operating environment easily. (There are some projects happening in that direction though - e.g. Mamona) But OpenMoko has completely open stack from the beginning. I believe OpenMoko uses a GTK based environment by default. But now that Trolltech has opened Qtopia under GPL, there are Qtopia images available to run on OpenMoko. However I wanted to see if OpenMoko can run yet another upcoming mobile environment - android. So I did some googling. That brings us to the excellent post I mention in the title.
Although its conclusion is disappointing, it gives deep insight into the mobile phone software stack. Check it out here. The conclusion is, Neo1973's processor architecture (ARMv4) is slightly older than what android project binaries are compiled against (ARMv5). That's why one cannot use OpenMoko's Neo1973 as an actual phone that runs Android - at least not in the current state (as most of you know there is no actual phone that yet runs Google's Android platform, it will come sometime in later part of 2008). Benno (the author of above post) has gone to the extent of emulating unsupported instructions (something I would never have dared to do) just to get android working somehow on the Neo1973.
Once in a while you come across a post/article that fulfills your tech appetite to the fullest. It explores the matter to the darkest technical depths (to which you may not be able dive yourself), but you understand totally what is being said. This gives you a vicarious experience that satisfies your thirst for technology and inspires you to continue on your quest. I believe authors of such articles are true hackers (and I am not alone).