Archive for November, 2007
Unboxing Chumby and My First Impressions
26I don’t make a lot of shopping decisions based on an impulse, but in a rare case about a month ago, that is, the very first day I read about Chumby on its website, I registered my email for an invite notification. And the very day I got the invitation, I placed the order for it. So what prompted me to show such a deep interest in a product after reading for only 5-10 minutes about it? It was the open nature of the product’s design philosophy on both the hardware and the software front.
The team was excited to release the schematics and source code as part of the chumby launch strategy. The chumby license grants users the rights to use and modify the device, but withholds patent royalty rights. [...] The team is encouraging users to hack the device (they even included a parts list) and sell small apps, but not use the hardware in ways that end-run the chumby creators. [christine.net]
It is hacker-friendly, easily customizable, built on the Linux platform and hence guaranteed to attract a large user and developer community . And of course, it comes at a low cost of $180 :) Chumbys are now available to everyone in the US(international shipping not yet available), no invitations are needed any more. After a wait of almost 25 days, I finally received my Chumby a couple of days ago. What follows are my first impressions about the device.
My Chumby Review
If you don’t know what a Chumby is, head over to Chumby.com to get a basic idea about it. In short:
The chumby is a compact device that displays useful and entertaining information from the web using your wireless internet connection. Always on, it shows — nonstop — what’s online that matters to you. [Chumby.com]
But as I have noted earlier, Chumby can be customised or re-skinned to mean any of the several things(clock, news reader, portable IPTV etc.) according to one’s own requirements. My entire next post will be dedicated on elaborating this.
I was pleasantly surprised to see Chumby delivered in a brown coloured cloth bag instead of the typical shiny and colourful card boxes. The colour and texture of the bag reminded me of the khadi material popularised in India by Gandhi during the Freedom movement(of course I don’t know what material the bag is actually made of, but I am guessing it is environment friendly at least. Thanks to Anmol for informing in the comments that it is made of jute).
When I opened the bag, all the contents were placed in their own little pouches, like the power adapter and the Chumby Charms. Here is a picture showing all the contents that came with the Chumby package(click on any picture to view the enlarged version):
A note about the power adapter since it had bugged me for a while: the power rating(Input AC: 100-240V, 50/60 Hz) itself should be compatible with power output ratings of most(all?) countries but the prong may not fit physically into all outlets. I had no such problems though as I use surge protectors that take almost any kind of prong configuration.
Chumby itself from different angles:
Doesn’t it look very cute? I bet you can trick your friend into believing that it is an Apple product ;)
You can see a plastic cover over the screen of Chumby in some of the above pictures. It is supposed to be removed before use but don’t worry – there is another, almost invisible, screen protector on the screen which will prevent the scratches and dust from spoiling it. I am wondering which protective covers I need to buy in case I want to replace the current one.
The first time I connected the device to power outlet and powered it on, it took me through an interactive tour explaining some important features of Chumby. It was fun! Watch it yourself if you want:
[uploaded by youtube user bethgoza]
In the end, it prompted me to configure the wireless connection, set the time zone and stuff like that, all of which was a total breeze, and then finally prompted me to install one of the available updates. It warned me that the power should not be disconnected while the firmware update was in progress but it would have been more useful if the warning had been given before starting the update; I would have connected it to the UPS before updating. Fortunately, no mishaps occurred.
When the update was over, Chumby displayed a beautiful blue clock showing the current time.
(Oh, I forgot. Somewhere in the middle, I was prompted to activate the device which involved going to Chumby.com, clicking on some ovals and entering an n-digit key. Pretty straight-forward.)
I quickly went to the Chumby website, created a new channel, filled it with a preliminary set of interesting widgets and set the Chumby to this channel. Gratification at last! The device now temporarily adorns the right corner of my desk. It supports a night mode that darkens the display out so you can activate it before going to bed if you have set an alarm and want to leave the device powered on.
![]() |
![]() |
| Default Mode | Night Mode |
I plan to write a lot more about Chumby – what kind of interesting uses it can be put to, what are my biggest complaints about it(there are many!) and perhaps also a walk-through on how to set it up with interesting channels and in other configurations. Let me end for now with another quote from Duanne’s blog post:
Hopefully this and my previous post today provide a sense of where we’re headed with the chumby — an inexpensive device that you can make into whatever you want it to be, and that takes a bunch of the services that you can find in a range of other products like digital picture frames, weather stations, internet radios and delivers them all in a neat little package controlled by a really simple web-based interface. Just plug it in, create a widget channel for it at chumby.com, and you’re in business.
Update: A very similar review of Chumby to mine is posted by Joel Evans at Geek.com. In fact, I discovered it over my Chumby’s screen through the Google Blogsearch widget! You can also read an old article on Engadget and search for Chumby youtube videos.
My second post on Chumby is up now: Five Interesting Ways to Use a Chumby That Might Make You Buy It. Working on the third part.
Unit Testing C++ Programs using CppUnit in Eclipse IDE on Windows
13CppUnit is the most popular unit testing framework available for the C++ language today. So integrating it with one of the most popular IDEs available for the C++ language should be very appealing indeed. If you have not yet configured CppUnit library to work with the Eclipse IDE yet, here is a step-by-step procedure to do the same. By the end of it you will be able to create C++ classes and functions, write unit tests for them, run them and see the results, all from with-in the Eclipse IDE. This is for the Windows users; can be adapted for GNU/Linux users but there are shorter procedures for them.
You can either use Eclipse Europa for C++ as the IDE or other IDEs based on it like EasyEclipse, Wascana etc. And of course MinGW or someother C++ toolchain must already be installed and configured with your Eclipse IDE; if not, read the MinGW and EasyEclipse configuration post for more information; it’s for older version of the Eclipse and configuration is much simpler for Eclipse Europa.
Downloading and Preparing the CppUnit Package
You can skip this section and the next one if you already have CppUnit library built/installed on your system and you know where its include and library files reside. Jump over to the last section in that case.
- Download CppUnit package from its sourceforge.net page.

Extract it to a directory of your choice. I will assume that it is extracted to ‘c:\cpp\cppunit’. This directory should look like this:

(If the downloaded archive file gets extracted to a directory named cppunit-1.12.0 then just rename it to cppunit.) - What we downloaded in the above step is the CppUnit source code. We need to build this source code to create a library file which we can then use in the C++ programs. CppUnit can be built from sources either from the command line or from the Eclipse IDE itself. To build it from the Eclipse IDE, we still need to generate at least one file from the MSYS command line. Go to your MSYS installation directory and click on msys.bat file in it. In the MSYS console window, change to the CppUnit directory(c:\cpp\cppunit in our example) and run the ./configure command.

This will create the cppunit/config-auto.h file that we need. Close the MSYS command window.
Building CppUnit Package from the Source Code in Eclipse IDE
- Start the Eclipse IDE and create a new C++ project in it by going to File -> New -> C++ Project, enter a name(say, “CppUnitBuild”) in the Project Name text box, select “Static Library” from the Project Types pane and “MinGW GCC” from the Toolchain pane.

You can also choose to select “Shared Library” if you want to build CppUnit as a shared library. Similary, select “Cygwin GCC” if that is the toolchain you prefer.
Click Finish when done.
- Now we need to import the entire CppUnit source code into this project. Right-click on the newly created project(CppUnitBuild) and select the “Import” menu item. In the “Import” dialog box, expand the “General” tab, select “File System” and click the Next button. Click “Browse” and browse to the c:\cppunit\src\cppunit directory and click the “Select All” button and click Finish.

This will select and import all the source(.cpp) and header(.h) files of the CppUnit package into the CppUnitBuild project.
- Next step is to add the CppUnit include directory to the compiler’s include path. Right-click on the project(CppUnitBuild), select “Properties” and go to C/C++ Build -> Settings node. In the right pane, go to Tool Settings -> GCC C++ Compiler -> Directories. Click the “Add” button located near the “Include Paths (-I)” text box(see the screenshot below), click “File System…” button and browse to c:\cpp\cppunit\include directory.

- Finally, build the project by pressing Ctrl-B or by right-clicking on the project and selecting “Build Project.”
At the end of the build process, a static CppUnit library(libCppUnitBuild.a) should be built in the Debug subdirectory of the project directory in your Eclipse workspace(If you build using the Release configuration, the library will be generated in Release subdirectory instead). If you had opted for a shared library earlier, then [1] suggests that you define CPPUNIT_DLL_BUILD variable by going to Project -> Properties -> C/C++ Build -> Settings -> GCC C++ Compiler -> Preprocessor -> Define Symbols (-D). You will see a file named libCppUnitBuild.dll generated in this case.Let us test it with a sample C++ project.
Unit Testing C++ Programs using CppUnit in Eclipse IDE
- From the Eclipse IDE, create a new project by going to File -> New -> C++ Project, enter a name(say “CppUnitDemo”) in the Project Name text field, select Executable -> Empty Project from the Project Types pane and “MinGW GCC” from the Toolchain pane and click Finish.
- Now you can create a sample C++ class and write unit tests for it. A faster way would be to download this sample zip file that contains all the files required for testing. Download and extract it to some directory and then import all its contents to the CppUnitDemo project(right-click on project name and select Import, just like we did in Step 2 of second section). You can also drag and drop these files on the project name in Eclipse.
- Add CppUnit include directory to the project’s include path just like we did in Step 3 of second section. But remember to add the path to the CppUnitDemo project, not to the CppUnitBuild project! We also need to add the CppUnit library file that we have generated in the second part of this post to our CppUnitDemo project.
Right-click on the project name, select Properties, select C/C++ Build -> Settings node, select the Tools Settings tab, select MinGW C++ Linker -> Libraries node, click the Add button near “Libraries (-l)” text box and enter CppUnitBuild in the popped-up dialog box. Similary, click the Add button near “Library search path (-L)” text box, click “File System…” button and browse to the path where the CppUnit library file was generated([your-eclipse-workspace]\CppUnitBuild\Debug\; The generated file might be in the Release sub-directory if you had chosen a Release build configuration to build the CppUnitBuild project earlier).

If you had built CppUnit as a shared library earlier, then you need to define CPPUNIT_DLL at this stage; see Step 6 for more details.
- Right-click on the project name and select “Build Project” to build the project and right-click on the project name and select Run As -> Local C/C++ Application, select ‘gdb debugger’ and click OK to run the project. You should see two dots in the output to represent that the two unit tests present in the sample files ran successfully. You can now create your C++ classes, write unit tests for them and then run the tests. Need help in getting started with writing unit tests using CppUnit? Here’s a CppUnit cookbook for you and you can also download the CppUnit documentation.
Next up is how to integrate CppUnit Qt GUI test runner in Eclipse IDE. Then I will write about how to integrate CxxTest unit testing framework with the Eclipse IDE. Doxygen integration may follow, so hang tight ;)
[1] http://cppunit.sourceforge.net/cppunit-wiki/CppUnitWithEclipse – the sample zip file and other help for creating this tutorial were taken from this wiki page.
Maemo SDK VMWare Appliance 0.4 Released With Lot of Goodies
4Maemo SDK Appliance 0.4 for VMWare was released a few hours ago. This is the quickest way to get started with developing applications for the Maemo platform[Nokia N770/N800/N810 Internet tablets]. It is easy to setup(just boot-up the image in VMWare player] and all the necessary tools (and documentation!) are integrated nicely into a custom environment.
More details about the announcement can be found on Marcelo’s blog.
This release is loaded with a lot of goodies: Maemo 4.0 (Chinook) final and Maemo 3.2 (Bora) with Nokia Binaries Installer, PyMaemo packages, Vala compiler and its Hildon bindings for Chinook, Maemomm libraries, EVAS (Bora and Chinook, but i386 only), qemu-arm-eabi used as default cpu transparency method, Eclipse with ESbox plugin, and Firefox has now a lot of bookmarks for reference material. There are code samples for all the libraries and development packages cited above.
Already a user of Maemo SDK VMWare Appliance? You can read the complete list of changes from the previous version or Marcelo also provides a summary of the changes on his blog post:
* Scratchbox installed from official Debian Repository.
* Maemo 4.0 (Chinook) release.
* Maemo 3.2 (Bora) (the last release was using 3.1)
* Added a lot of bookmarks in Firefox for reference material.
* Maemomm (C++ bindings) added, with code samples.
* Eclipse 3.3.1.1 with CDT 4.0.1 and ESbox 1.2.0 plugins.
Preferred way to download it is by using the torrent file. You can also download using the direct links provided on its poject homepage. Lot of information about the release is available from the README document.
And finally, watch the video showing a sample session of how to use Eclipse + ESBox plugin to create Maemo projects:
Expect beginner-friendly tutorial(s) on how to get the best out of Maemo SDK VMWare appliance in the near future.
Accessing GNU/Linux & Windows Desktop Remotely From Nokia N800 Using VNC Viewer
5It’s easy to control the desktop of your computer from a Nokia N800 Internet tablet. If the computer is running a GNU/Linux distribution, you can run a VNC server on that computer and then connect to it from N800 through an application like VNC Viewer. You can do the same if the computer is running either Windows or Mac OS operating system too, but they also support their own native remoting protocols – Windows supports RDP protocol and Mac supports ADP protocol – which are generally, though not in all cases, considered to be better options over VNC. You can learn more about the differences between VNC and other native protocols like RDP and ADP over the Internet.
If you decide that you want to use RDP to connect to a Windows machine, then read How to Access the Windows Desktop Remotely From Nokia N800 Using rDesktop.
Here is the summary of what we have to do in order to get VNC working: 1) install a VNC Server on the computer running Windows or GNU/Linux OS; 2) install VNC Viewer application on Nokia N800 Internet tablet; and 3) configure/run VNC Server and VNC Viewer to connect them together. So let’s get started.
Installing and configuring VNC Server on a Windows Computer
You can download and install any VNC server available for the Windows platform but I am going to use TightVNC server as the example here.
Our first step is to download the TightVNC server from its website. Either a) download the “setup.exe” version and install it by running it and going through the installation wizard, or b) simply download the “zip” version highlighted in the screenshot below, extract it in a directory and run “WinVNC.exe” from the extracted directory.

In the properties window that is shown when you run it, erase whatever is present in the password text fields and enter your own password (twice) in them, and then click OK. Make sure that you remember this password!

That completes the server side configuration.
Installing and configuring VNC Server on a GNU/Linux Computer
Most GNU/Linux distributions come with a VNC server pre-installed so this step is not required in most of the cases. If you are using the GNOME desktop, go to System -> Preferences -> Remote Desktop. In the opened dialog box, select the settings as shown in the screenshot below. Remember the password that you enter in this dialog box.

If you are using the KDE desktop, go to KDE (start button) -> Internet -> Krfb Desktop Sharing. You basically need to search for Krfb Desktop Application in whichever menu your distribution might have placed it. Click “Configure” and select the settings as shown in the screenshot below:

If the above mentioned VNC Servers are not available on your GNU/Linux system, you can search your package manager or search one for your distribution over the web and install the one that you like. TightVNC server is one example that can be installed on almost all the platforms.
Installing VNC Viewer on Nokia N800
If the Maemo Extras repository is already added in your repository settings, you can install VNC Viewer from the Application Manager. If not(or you don’t know what repositories are), go to the website of VNC Viewer(from N800′s web browser) and click on the Single-click install file link for your tablet version(N770 or N800).

It should then be downloaded and installed on your tablet(answer OK/Yes whenever you are prompted to).
Connecting to your computer remotely from Nokia N800
The first thing we need to do now is to find out the IP address of your computer. Open a terminal/command prompt and run “ifconfig” as root on GNU/Linux or “ipconfig” on a Windows machine. On Fedora you may have to run “/sbin/ifconfig”. Example output on a Gentoo machine:

Note the IP address of your computer from the above output. You can run the VNC Viewer application from the Extras application menu.

When you run it, it will ask you for the IP address of the computer you want to connect to. Enter the IP address as shown in the following screenshot(substitute the IP address of your computer):

The format used to to connect to a GNU/Linux system is IP-Address:Display-number as shown in the screenshot i.e. 192.168.2.10:0; 0 is the display number here(the VNC Server will show you this display number; see the “Remote Desktop Preferences” screenshot above). To connect to a Windows machine, just enter the IP address like “192.168.2.10″(without the quotes). If all goes well you should be seeing the desktop of your computer displayed within the window of VNC Viewer on your tablet:

Well done! Here are more examples of how the desktop of a computer looks on the N800 tablet:
Ubuntu on N800 in fullscreen mode
Gentoo on N800
Windows on N800
Kubuntu on N770
Additional Notes
When accessing the desktop of your computer from Nokia N800, you do not have the access to N800′s on-screen keyboard. You can use the the keyboard of your PC if yours is a wireless one, but obviously it needs to be in the range of your PC to work. If you have a bluetooth keyboard that you have paired with N800, then it’s party time for you!
VNC access is usually slow on Windows systems(that’s why we use RDP). You can take several steps to make the experience more satisfactory:
- Disable the background image on your XP/Vista machine or just configure VNC server to disable the background image whenever someone remotely connects to it.
- Configure TightVNC server to refresh only the window under focus or window under the mouse.
- Experiment with other VNC servers. Examples are RealVNC, UltraVNC.
- I have heard from my friends that installing DFMirage on their XP machines made the experience better. I couldn’t test it as it is not yet totally supported on Vista operating system. In an email response, DemoForge’s CEO informed me that the next version due in a week or so will support both 32-bit and 64-bit Vista editions.
Now you can control the file downloads, select the music to play, or whatever that you would like to manage remotely, from the comforts of your bed/sofa. There is a lot more that you can achieve through VNC remoting but I hope this primer will help in getting you started.
I have a Few Jaiku Invites to Give Away
85Update 2:Every Jaiku user now has unlimited invites available now. So just ask here and I can send an invite your way(or ask any other Jaiku user you might know).
Update: All gone now. I will let you know if I ever get any more invites for Jaiku.
I have a few Jaiku invites left in my account that I can give away. Send me the email id where I should send the Jaiku invite or leave it here in the comments. I will update the post when I run out of the invites. (If you want a Pownce invite, leave a comment on this post)
Note: Preference to those who are users of Nokia Internet Tablets(N770, N800) and Mauku.
Remember that Jaiku invites are very difficult to find on the Internet. Still if you want to try, here are the other ways to find a Jaiku invite:
- Ask someone(not me!) who is already on Jaiku to request for an invite on the #jaiku channel.
- Google Search
- Google Groups and other forums you are a regular member of.
- No luck on InviteShare or EBay for Jaiku invites ;)









Recent Comments