Archive for the ‘Open Source’ Category

Freedom of choice…

Friday, May 9th, 2008

Every human has four endowments - self awareness, conscience, independent will and creative imagination. These give us the ultimate human freedom… The power to choose, to respond, to change.” - Stephen R. Covey

Here is a list of choices I made :

Operating System : Linux

There are lot of reasons why you should use linux : easy access to software, no viruses/adware, fast, possibility of configuring every bit. There is also a long list reasons why you shouldn’t run linux, which I don’t agree with most of them, except some great Windows only(may be Mac supported) software like Photoshop; and few drivers.

Desktop : GNOME
Simple elegant interface. Pretty stable.

Gnome Desktop

Window Manager : compiz (compiz-fusion)
Rather than the cool 3D effects, there are some really useful plugins in compiz. For example : Expo, Scale.

Expo Plugin Scale Plugin

Web Browser : Firefox 2
Firefox 3 has some great fixes on critical bugs like memory leaks, but there is one flaw. Some of the plugins I’m using are not available/stable for Firefox 3. So, I’ll stick to Firefox 2 for few more months.

Mail Client : Thunderbird
I’m not a heavy user of the desktop mail clients. I only use thunderbird for one of my mail accounts. There is no specific reason I’m choosing thunderbird over evolution, just like the interface.

IM : piding / emesene
Pidgin is one of the best multi protocol IM clients available in linux(kopete is also nice). Depicts the fact it supports many protocols, that’s only basic features. Most of my friends are using MSN network, and emesene is capable of handling those, and thousand times better than the crappy aMSN interface.

VOIP : Skype
Just one word : clear

IRC : xchat
Nice interface.

File Transfer (ftp/sftp) : Filezilla/GVFS
If I’m using a separate client for file transfer, that would definitely filezilla, but it’s much easier to mount the shares directly using GVFS and use it like a local directory.

Word Processing : abiword
It’s a light weighted, really fast word processor. Even though it’s light weighted, all necessary features are there.

Graphics : Adobe Photoshop
Yes, Adobe Photoshop, that’s the best I’ve ever seen. I never got along with gimp. Anyhow, I rarely mess with graphical stuff, yet I still miss Photoshop.

Text Editor/IDE : gedit
Simple, clean interface and have syntax highlighting. I can survive without an integrated debugger.

GEdit

Video Player : mplayer/vlc
Those will play almost anything.

Audio player : banshee
Banshee has a nice audio library management features. Similar artists + cover info rocks.
Worth mentioning : one of the best media library management softwares I’ve seen is Windows Media player.

Twitter Client : twitux
Very stable, with many features. twhirl is stunning, but adobe AIR still doesn’t support tray icons on linux.

File Sharing : bittorrent
The content is reliable - well you have to read the comments.

Torrent client : azureus
Many features + plugins. I’m using the webui plugin, with auto start init script. (If you are curious, there is a azureus command line option : –ui=console)

Email Service : gmail / Google apps
It’s the cool ajax interface. The usage of conversations instead of individual mails is also remarkable. I’m using google apps to handle my gunathilake.com domain.

RSS Reader : Google Reader
Easy to use. Rather than a desktop RSS client, I can access it from anywhere. When I’m at somewhere with an internet connection killing time, I always have something to do. The sharing feature is handy too.

Photo sharing : Picasa
It’s the desktop application - It’s easier to upload.

Blogging platform : wordpress
Wordpress is a solid, easy to use platform. From a developers point of view, it’s internal structure is amazing.

Bookmarking : foxmarks
I tried to use social bookmarking sites like del.icio.us. But I don’t bookmark much, so I just use the firefox builtin bookmarking. I don’t want to experience losing my bookmarks again, that’s why I’m using foxmarks.

Web Developer plugins : firebug / web developer toolbar
Just check the plugins - you’ll see.

Virtualization : VirtualBox
I’m using VirtualBox to access IE to test sites. VirtualBox has nice integration features like free mouse.

VirtualBox

What I read
Except reading my friends blogs, here are few feeds from my RSS reader.

  • Techcrunch - I believe they have spies all over the world. Anything related to startups, it’s over there. Easy to keep track of what’s happening on the internet.
  • Linux today - Everything related to linux/open source
  • Gnome planet - Some nice content over there, related to gnome.
  • ReadWriteWeb - This is like techcrunch. Techcrunch gives you more news, this will give you analysis/comparisons.
  • Smashing Magazine - A source to get inspired - collections of creative work all over the internet.

Gnome Online Desktop

Sunday, April 13th, 2008

Few years ago, the internet is mostly used for information and emails. Over the fast few years, it has changed a lot. Recently(around last two years), the desktop applications started to consume the power of web. Since then, some platforms yet not much popular emerged, like Mozilla Prims, Adobe AIR.

But as for today, generally, the online applications and desktop are separated. Gnome Online Desktop tries to bridge the gap between those two.

This weekend, I gave it a trail run. Here it goes :

Installation

I installed the system on Ubuntu Gusty, which doesn’t have online desktop is repositories (I think only fedora have them). So, I had to build from the sources. I followed the building guide they have given on using jhbuild.

Then, I installed gnome dependencies for ubuntu. There were problems with the installation. “gtk-doc” was not there. So, I just ignored it and installed other packages. Then, there was a conflict between “libxul-dev” and “xulrunner-1.9-dev“. “apt-cache show libxul-dev” indicated that version is “1.8.x.x”, so I only installed “xulrunner-1.9-dev“.

First, I installed jhbuild from repositories(sudo apt-get install jhbuild). Then, created the .jhbuildrc file as it says, and tried the command. But it started to complain about a “lib_packages” variable. I googled for it, and the first hit was from the same page. Apparently, the wiki page have been updated very recently, and the script has been changed(to non-working version). So, I edited “.jhbuildrc” file, and removed “addpath(’PYTHONPATH’, os.path.join(lib_packages, ‘gtk-2.0′))” line. Now, jhbuld is working fine, but for the obvious reasons, apt-getting from ubuntu, doesn’t install the “online-desktop” module. So, I removed it, and got the jhbuild from gnome SVN.

Now, it started to build 101 packages. Normally, if I was emerging in gentoo, I would go for a tea, have a nap and come back later. But since I ignored “gtk-doc” and “libxul-dev“, I knew those two would fire back later. After going through many packages, it complained about the gtk doc. By analyzing the error message, I managed to install “gtk-doc-tool“, and it continued. Then again, some xul errors popped up. It was complaining that some “idl” files are missing. Going through “/usr/share/idl” revealed that both “unstable” and “stable” are installed, thus those are in sub directories. Once I moved to “/usr/share/idl/xulrunner/unstable” to “/usr/share/idl/xulrunner/“, and done same with the “/usr/includes/xulrunner/unstalbe“, it worked fine and compiled all packages. Then, I followed the rest of the guide, and logged out(I created the session “.desktop” on “/usr/share/xsessions/” instead of “/etc/X11sessions“).

Login In

I crossed my fingers, and logged into the gnome online desktop session. Gnome startup splash was followed by the bug-buddy saying mugshot crashed. I just ignored it, and continued. The sidebar said I’m “nobody” and firefox started with the session. Then, I clicked “enable online desktop”, and it took me to “online.gnome.org” which I successfully logged in. But the desktop still says, I’m “nobody”.

I suspected this might be related to mugshot, so I ran mugshot from terminal again. This time, it ran without any problems. Then, I close firefox, and went through the login process again, but it’s the same results. After going through some files, I found there is a firefox extension, and that was not installed. There was a shell script called “firefox-update.sh”, but running it didn’t help, instead it created some broken symlinks. Then, I created a symlink manually to “od/lib/mozilla/extensions/ {longstring}/firefox@mugshot.org” in “/usr/lib/firefox/plugins“. Then, the extension loaded, but still it’s the same results.

Then, I killed few hours with mugshot-client and bigboard source code, but didn’t come up with anything. The last chance was thinking that something is wrong with gconf settings. So, I logged out, created a new user, and logged back in.

Playing Around

Mugshot crashed as usual at the startup, but then I ran it again it gave a black and white tray icon. It was a long shot, but I was lucky! Online authentication worked. The problem with my used account must be either mozilla settings or dbus settings.

However, mugshot icon turned into purple and suddenly it crashed(Just after I logged in from web interface). So, I saved the bug report, and started to play around a little bit. The sidebar downloaded my information(name,photo,online services) from the gnome online account and displayed those, but I already know those :) Of course those are useful as much as bookmarks. Then, the “recent documents” from places menu is moved to sidebar. That’s a good choice, quick access.


The next stock in sidebar is “Applications“. It showed some applications like “Firefox”, “Terminal”. It also showed “Thunderbird” as not installed, which is actually installed and used exclusively :-/ So, I wanted to change the list of applications showed there. The Application Main panel is quite attractive and nicely build. It’s very easy to find applications. However, only very limited set of applications can be added to the sidebar. I can understand everything else, but this? I’ve no clue.

Then the “people” stock was there, but unfortunately I don’t have any friends on my mugshot account. It only showed some generic user called “Gnome Online”(or something similar). I accidentally added another email address to “Gnome Online”, then I found out there is no way to remove that. The only option was to just remove that user(There is no point of keeping a bot with wrong addresses associated with it). Once I logged into gtalk via pidgin, the people stock got filled with my gtalk contacts list. But it’s just some photos+names, nothing else.

I added the “Google Mail” account, and it worked without giving out any problems. After a complete swap of the sidebar, It felt like nothing is new in online desktop. So, my next guess was there must be something amazing in mugshot client.

Mugshot Adventure

I googled for a little bit about what mugshot client do, but didn’t find any useful information. Then, I checked mugshot bugzilla to see whether anyone else has got these problems. But I was alone. So, I fired up Xchat, joined #gnome-hackers on GimpNet. However, I didn’t get any replies(that’s my bad timing, the channel was very quite when I was dropping there - probably most of the people are sleeping).

The Online Desktop getting started said something about mugshot-client should be bootstraped. I had no idea what that means, so I logged back into my normal *perfect* gnome desktop(By the way, I’m a big gnome fan :) ), and ran “jhbuild bootstrap“. Then, it installed 14 more packages. So, I cleared the built file from mugshot-client checkout directory using “make clean” and executed the mugshot-client build command(”jhbuild build meta-online-desktop -t mugshot-client“).

Here comes the trouble again - it gave me weird error saying “hippo canvas python module not found” - which the files/headers are there. Then, I rebuild several other modules like “hippo-canvas, desktop-data-model, gnome-settings-daemon, online-desktop” and tried building “mugshot-client” but nothing worked. Then, it must be something I did with the bootstrap command - I’m not even a little bit familiar with jhbuild, so I decided the best thing to do is rebuild everything from scratch.

First, I removed the install directory. Then, cleared the build files in the checkout directory. The “bash” saved me from lot of trouble. I didn’t have to worry too much about going into each directory and running “make clear“. If you are interested, following are the two commands,

for x in `ls *.tar.gz *.tar.bz2`; do rm -rf `echo $x | sed 's/.tar.gz$//;s/.tar.bz2$//'`; done
for x in `find | grep Makefile$`; do make -C `echo $x | sed 's/\/[^\/]*$//’` clean; rm $x; done

After clearing everything, I ran the full build command along with the “time” command. After 1 hour, 59 minutes and 49 seconds, it finished(2.4Ghz dual-core 2GB RAM).

Then, I re login to online desktop and now it’s worst; both bigboard(sidebar) and mugshot-client crashed. They must have just committed a non-working version on bigboard around that time :( However, bigboard bug was simple, they were trying to integrate google docs(good news!!) - and gdata.gdocs package was not there. I simply removed “import gdata.docs as gdocs” line from “bigboard/google.py“, and sidebar is back in business.

The bug-buddy was a real rescue buddy on musgshot-client. I changed few lines of code, and it’s started working again. (I didn’t exactly fix it - Just changed some lines that it wouldn’t crash, just work barely). However, the result was not what I expected, it’s just getting the updates from mugshot site, and displays the notifications.

Speaking of mugshot site, it let users integrate many services into one feed, which seems to be a great idea, but since I don’t have any friends on mugshot, I couldn’t really experience it. My idea is it would be a much easier to keep track with friends this way.

Programmers point of view aka “Thoughts of a coder”

From the users point of view, online desktop doesn’t have any killer features *yet*. Anyhow, reading of some of design documentation enlightened me :) The technology used is online desktop is XMPP, which means, it’s using push technology instead of pull; less bandwidth usage, less server load, quick response time.

Just like most of other opensource products, they also have core libs which helps other developers to tap into the system, and make use of that. This means a real integration between all desktop-online bridging applications.

Conclusion

Simple conclusion, it’s not ready yet. Of course, it should be - I built it from the trunk. Anyhow, considering the large number of gnome developers, and super cool gnome desktop, I feel like online desktop is not upto it’s full potential. A lot of simple yet effective improvements can be done, like improving the “Applcation” stock, or “Workspace Switcher”. I’m not sure why they are only adding people from “Gtalk/XMPP/..” connections to people stock(probably something with the design). Most of my friends are using MSN(may be I’ll check whether I can create a plugin for emesene to throw out some dbus signals).

The good news is, once the basic core framework of online desktop is much stable, developers will create some stunning integration apps.

Precisely, this is something you should checkout, but I’m not exactly sure how soon.

Improve jhbuild downloading

Friday, April 11th, 2008

Yesterday, I tried to install Gnome Online Desktop. Since, this is fairly new, it has to be build from the source. Gnome Online Desktop is a complete branch of gnome desktop, which will of course have many dependencies. It’ll take years to download each and compile manually. That’s why they have jhbuild (it works like gentoo emerge).

This is April, which is supposed to be the best month of Sri Lanka with festivals/celebration. But there is a price to pay, thundering (Last year, lighting took my laptop :( ). My connection goes down for each 10 minutes.

So, while jhbuild downloading a module, the connection goes down, and when I restart jhbuild, download doesn’t continue from where I left off. It downloads the whole file again. So, here is a very simple one line hack to prevent that from happening to you.

In jhbuild/versioncontrol/tarball.py, line 171, add a command line option “-c” to wget command. If you are not happy with “wget”, you can change it to whatever you want(prozilla,aget,d4x).

I’m still building online desktop (101 packages :-/ ), can’t wait to see what it can do.

Wordpress 2.5

Sunday, March 30th, 2008

I just upgraded “Thoughts of a coder” to wordpress 2.5. Mostly user’s won’t feel any difference, but there is a huge user interface change in the admin section. The upgrading process was fairly simple and straight forward.

Speaking of the new features, the admin dashboard is really slick and customizable. You can see have a glance of what is going on with your blog in few seconds. The dashboard was there for a long time, but the interface highlights the information quickly.

Another feature I noticed was plugin upgrades. The wordpress upgrading process recommend disabling plugins beforehand. So, when I return back to plugins to activate plugins, there were some light yellow bars informing me about the updates of plugins, and more interestingly there is a link to upgrade automatically. Just of a click of that upgraded the plugin without giving any problems.

I just figured out while writing this post, the old upload form is no longer there. Instead there are set of buttons called “Add media”, which links to media library. You can now easily add photos/videos/audios to your post without any problems.
Edit : First, I thought wordpress is integrated with flash audio/video player, or when you gave a youtube url, it automatically embeds the video, but it turned out to be just pasting the link. However, the uploading is rather nice than the earlier version.

I’m glad they haven’t seem to change any API/hooks, so the plugins that used to work before will hopefully work without any changes. My plugin “Picasa Photos” just worked. Overall, it’s a pretty good release with fairly noticeable features. Worth upgrading.

Free(dom) Software and Free Rice

Saturday, February 23rd, 2008

Last week, proving one of the most effective open source successes, firefox hit 500+ million downloads. There are no arguments, they have definitely changed the world. Now, in honor of firefox downloads, they are going to change the world in another perspective by helping the Free Rice foundation.

Free Rice

Now, it’s your turn.

Apache Solr

Saturday, December 29th, 2007

I have been quite for sometime, rather busy doing some interesting work at Ulteo. It’ll be coming out soon, so keep looking :). (Ulteo recently released an online version of OpenOffice with many possitive reviews - we had a huge rush just after the release showing the potential of a such product).

However, after quite long time, I did some web programming with Paradox. Today, I played around Apache Solr as a database backend to improve the searching capabilities. The results are amazing, it gives a very powerful storing and indexing schema and nice query language to do the queries. PHP can communicate with the server using REST. Solr has the ability to generate output in many formats, including PHP serialized objects. However, the easiest I found is JSON output (You’ll have to install php-json extension).

Solr explanation from the site :
Solr is an open source enterprise search server based on the Lucene Java search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search, caching, replication, and a web administration interface. It runs in a Java servlet container such as Tomcat.

Picasa Widget updated

Wednesday, July 11th, 2007

Edit : Latest update http://www.sandaru1.com/2008/04/04/wordpress-picasa-plugin/

I just updated the picasa widget. Thanks for the comments on the early version. Now, you can select the image size. Then, picasa username field get bit complicated.

If you want to use your whole picasa album you can just type your username. If you want only one album then you can put the album name within brackets(Without spaces). Here is an example : username(album).

If you want to get photos from more than one user, then type all usernames separated by space. You can even use brackets with the usernames.

Click here to download

Picasa wordpress sidebar widget

Saturday, June 2nd, 2007

When I saw cool random photo display gadget at wela’s blog, I also wanted something like that. Earlier I had a gallery2 installed, but when Google released picasa, I found it much easier. It actually optimizes the photos and then uploads. So, I switched to picasa. Fortunately, picasa have RSS feeds for each album :).

At first I thought of writing a normal wordpress plugin, but then since it’s in the sidebar, I thought of writing a widget. My blog was running wordpress 2.1 and either I had to install the widget plugin or install the new wordpress 2.2(Wordpress 2.2 comes with the builtin support for widgets). Since there are some bug fixes in version 2.2, I upgraded to that.

Then, after coping about three lines of codes into my theme, I widgetized it. Then, finally it’s writing the widget.

Actually, the widget was fairly easy to write because the wordpress itself has a rss parser. Even though, it doesn’t completely parse the RSS given by picasa, I managed to use some regular expressions and get the necessary values.

When I finished writing the widget, I realized that there is no point of downloading the RSS each time when someone requests the site. So, I put a download delay time and the stored the parsed RSS results as a wordpress option.

If you want to try this, click here to download. Copy the file into wp-content/plugins/widgets directory. Then, activate the plugin and add that to the sidebar from Presentation -> widgets. (You should have widgets plugin installed)

Hitchhikers guide to linux

Friday, March 30th, 2007

Let’s start by the unix way: “do one thing and do it right”. That’s one major part of the unix concept. A typical unix system is build using so many tools and libraries and those are maintainted by different user groups. So, they only have to concentrate on their packages, thus those packages are high on quality. A collection of unix tools and a kernel from linus became the linux system. That’s the beginning of the universe.

Then, once after people found this new universe and got to know that it’s quite interesting they started to build lot of galaxies here and there. One such popular galaxy was redhat, then debian and the current most popular one called ubuntu with huge population.

Fortunately, with a little effort it’s possible to adapt a planet to fit into another galaxy. Usually, people develop a planet in one galaxy and port those into other galaxies. The only problem is that normal users (non developers) might find the newly developing planets unusable in their galaxies unless someone port that to their galaxy.

The nice thing behind these galaxies and planets is that all plans and the core elements of the planet/galaxy is freely available and you can actually see what it is build on and choose what fits your needs. And if you find any difficulty in living there you can always change your galaxy/planets at free of cost. Or you can always talk to someone and solve your problems; most of the people in the universe are willing to help you.

The really nice part is if you don’t like any of the galaxies/planets you can always get the plans of something, modify those and create your own; and trust me when other people are using that, you’ll feel really really happy.

Welcome to the new universe.

Get ntfs-3g working with windows hibernate

Sunday, March 18th, 2007

Several weeks ago, I installed ntfs-3g and it was working fine. However, It doesn’t mount the drive if windows is hibernated. I usually hibernate windows in my laptop, so I wasn’t having ntfs-3g in fstab, I just remount it when I need it. I was sick of this and came up with a very simple script which allows me to mount it in ntfs-3g if possible, and to use ntfs otherwise.

This is how to do it.

  1. Install ntfs-3g
  2. Just type sudo apt-get install ntfs-3g

  3. Edit your fstab
  4. Open /etc/fstab and change the mount type from “ntfs” to “ntfs-3g”

  5. Open /etc/init.d/mount-bak.sh
  6. Here is my script. Change your device and get options from the fstab. The device should be changed on both 2nd and 4th lines.

    #!/bin/bash
    mounted=`mount | grep sda1`;
    if [ "$mounted" = "" ]; then
    mount /dev/sda1 /media/sda1 -o ‘defaults,nls=utf8,umask=007,gid=46′
    fi

    Change the permission of the script by running sudo chmod a+x /etc/init.d/mount-bak.sh

  7. Change the run level
  8. sudo ln -s /etc/init.d/mount-bak.sh /etc/rcS.d/47mount-bak.sh