my experience with bug triage

July 2, 2008

I have been always wanting to contribute to Ubuntu since the day I joined Ubuntu India Team. But, other things happening around me always kept me from converting this wish into action. It was this new year that I finally took a resolution to start some solid contribution to the Ubuntu project. The most viable options was to Ubuntu Bugs at Launchpad, which in better terms is the bug tracking system for Ubuntu.

The formal way to help with bugs (not formal as it literally means) is to join the bug squad, the team of ubunteros whose sole motive is to check bugs filed by the users, help the users provide as much information about their problem as possible, assign bugs to related packages, find earlier reports which is very similar or sometimes the same (duplicate bugs), assign status and importance for bugs and finally make it all ready for developers to work on them. This process also filters out reported bugs which are not bugs but user end mistakes, which are rather feature requests (wishlist) or merely misunderstood normal behaviors. In addition, we can also file patches for the bugs if we know how to fix them, which actually reduces a lot of developer time (which is precious).

So, where did I get started? Actually two places, one is Launchpad Bugs for Ubuntu and second is the bug squad team channel #ubuntu-bugs at irc.freenode.net. When I joined the team, the irc channel was both a place to discuss about bugs as well as where the bug announce bot was running, announcing the channel whenever a new bug was filed. Later, the bug announce was moved to #ubuuntu-bugs-announce channel, while #ubuntu-bugs became a complete discussion channel for the bug squad. Then I started reading the docs in the wiki, especially the following,

  1. How to Triage
  2. Debugging Procedures
  3. Standard Responses
  4. Bug Importance
  5. Bug Status

Apart from reading docs, I started observing how triagers respond to bugs. When I got an idea of the basics, I started triage with some newly filed bugs, easy ones which I could make sense of from the description. All I did was find bugs where I can ask for more information from the reporter. This is the easiest way to start as most filed bugs lack in one information or another, and it’s the primary task of the triager to get as much information from the reporters as possible.

Most people miss out the Ubuntu version they are reporting the bug against, the related package for which the bug is filed and it’s version. These are minimal information required in the bug report. The next important thing is how complete and meaningful is the bug description itself. It is not uncommon for people to be in a tensed mood when they file bugs and their description is quite unclear about their problem. Minimal requirements of a good description are what is their problem and how to reproduce this problem. Some reporters also specify things they tried to fix the problem, and surprisingly sometimes this ends to be round about solution for the problem. Some people take more responsibility of getting into the problem, finding a fix and submitting a patch to the bug as well (which is amazing btw). Now bug triage doesn’t seem to be simple all together, but it offers various levels of participation fitting with one’s level of interest and skills. I know of a few in bug squad who are specialist in dealing with duplicates, which is nothing but a reporter filing a bug which already someone (or even many others) have filed already.

Filing a same bug doesn’t help much, rather what would be welcome is looking at existing bug and adding additional information to it if possible. Similarly, one can also check existing bugs and if the problem can be reproduced at our end we can indeed confirm the bug reported by someone else.A bug also gets confirmed when the triager feels that the bug report enough information for the developer to deal with it. There is no hard and fast rule, but some guidelines on what makes a report complete (which you can find in link 1 above) and is often acquired as a trait by experience.

There is not much for the basic level of bug triage. As I got involved doing these basic things, I started learning more. Sometimes I have done little mistakes, but as I always refer to people in #ubuntu-bugs for doubt, my mistakes got immediately corrected. Am still in the lower levels of bug triage, but learning a lot. One wonderful endeavour regarding bug triage is 5-a-day project started by Daniel Holbach. It is nothing but a team of bug triagers who make sure they at least triage 5 bugs a day. This has really been working and if you would like to see some stats check this one out.  One handy link for every new triager is the Checklist.

So, when can you join us? Anytime anyday and if you are looking for special time to join then Hug Day and Global Bug Jam could be a nice opportunity :)


Usability by Celeste

June 16, 2008

I made it yesterday though it was late into the midnight, attending Kubuntu Tutorials Day at #kubuntu-devel. The session I was interested to catch up was the second one by Celeste Lyn Paul aka seele on Usability. I have heard about her, her work, KDE-HIG and openusability.org a few months ago after I attended the HCI workshop at IIT Bombay. The following are the brief notes from my scratch pad on what seele said during her session. Official logs from the Kubuntu Tutorials Day should be available soon (or am not yet aware of the link yet..) and will update when I get it.

( Questions from seele are in italics, with related links I managed to get by Googling and my own comments. A little bit of editing to make it look a bit “blog formal” and readable. Comments are welcome, especially if you find something wrong :) )

In 20 words or less, what do you guys think usability is? (and no cheating on wikipedia)

If we take this from an ISO standard, usability means that a product must be,
1.learnable
2. efficient
3. memorable
4. prevent errors, and
5. be satisfactory to users

Learnable
This is the one no one usually picks when i ask the “what is usability” question. A product (in our case software) doesn’t have to be so easy that you don’t have to learn it. For a simple task, then you expect it to be simple but for a complex task, it is OK to expect learning.

Efficiency
This probably shouldn’t be #2 even though it is listed in the ISO spec this way, because it is related to learnability and memorability. But it is exactly what the word means, an appropriate use of time and resources in relation to the complexity of the system. Even if you made a simple printing function an easy to use 10 step wizard, it isn’t very efficient if you need to do that every time you print. Clicking one button will get the same amount of work done than stepping the user through all the options and clicking 10.

Memorability
This is what I think should be #2 because it is closely related to learnability.

Have you guys ever heard of the term Information Scent? It is an Information Science Theory

Information scent is a search behavior theory. Information scientists believe we search using the “gathering” skills of our “hunter-gatherer” basic instincts. What it turns in to from a UI perspective is how easy it is to find information (functionality or options) from it’s surface presentation. So, what options you expect to be under menu X before you open menu X? By having good information scent (good labels, structure, etc.), you can use the UI more efficiently because you can stack layers of information.

Basically you are leaving hints to the user to find the information on their own, they don’t need to Remember where options are, but only follow a logical path. This saves the user’s cognitive resources to go on and solve more complex problems instead of using them on the UI. Remember that a UI is a tool to solve a problem, the UI shouldn’t be the problem.

Error Prevention
Have any of you guys heard of Jef Raskin?

He was a famous designer who worked at apple (i think he was employee #12 or something close). He was a true user advocate in the sense that he believed no matter what the circumstance, the computer should do no harm. Also, many of you are probably familiar with the practice of confirming actions, particularly destructive ones, yes? Error prevention is more than just confirming a destructive action. It is preventing the user from having to make that decision to start with.

We dont see this too much in the desktop environment because we model a lot of our work-flows off of existing software, but i see this a lot in other expert systems. “Are you really sure you want to do that? It will cripple the system and you will lose all of your data” (Well then, the user should have never been able to choose that option from the top level of a UI). Even so, there are a lot of confirmations we do in the desktop environment which could be prevented if we shaped the work-flow differently; the user should never have to select Cancel.

Satisfaction (keeping it consistent ;)
Satisfaction is the quality many people tend to identify with usability. But it is also the last dimension in the spec (and i believe the least important of all we’ve talk about). Satisfaction is important. If a user finds a system pretty or cool, they will want to use it more than the other system that is not. Users will sacrifice ALL of the other parts of usability (learnability, efficiency, memorability, error prevention) for satisfaction. our goal is to help them not make sacrifices.

I’ve seen users in usability tests take 3, 4, 10 times longer to complete a task in a terrible UI that looked pretty, and complete the same task in a different not-as-pretty UI much much faster and they still like the pretty UI.This is an advantage and disadvantage: it gives us room to experiment because users will be forgiving if we give them options they want or other cool toys; but at the same time, we should use eye candy as a crutch to solve problems. We should solve problems and make our solutions beautiful.

Have you guys ever heard of a one-time learning event?
Often when you are reviewing a new UI or work-flow, one of the questions you may ask yourself is “will the user figure this out”; and the first time around, sometime the user doesn’t. they can’t find the options, they don’t know the label, they can’t figure it out. But,if they have someone show them how to do it, they find the solution on a webpage, or painfully figure it out, it makes sense to them and they remember it for next time. We call this type of experience a one time learning event

They won’t figure it out the first time, but if they can do it once, they will remember how to do it. This is something that is often forgotten in UI design. You can break users out in to different dimensions - one of them being problem solving skills and related motivation, some users are not afraid to try something and fail, other users will not try new things in fear of failing and the users who do not explore are at risk of never exploring options hidden behind a single-learning event.

That’s why doing user research on your product and understanding who your users are, their motivations, environment, and their skill (it’s not JUST about their skills) is important. This leads me in to a discussion about universal usability.

Has anyone heard this term “Universal Usability” before?

Universal Usability is the belief that any user, no matter their skill, background, motivation, experience, etc. should be able to pick up and use a product. In cases where products must serve the general public (such as e-voting machines), this could be a valid argument, but there are very few products that focus on EVERYONE. Even so, the concept of universal usability would be extremely difficult to achieve, especially in expert systems or systems which knowledge workers use

The ipod, why does everyone use that as an example of universal usability? The ipod is an excellent example of very sexy tech that people forgive its shortcomings for. It doesn’t do everything everyone wants, and not everyone can use it or figure it out, but because it is so damn beautiful, most people don’t care.

Universal usability forces designers to lower the bar of the average user to accommodate more people. This is why it hurts expert systems. If there is a pocket of experience or information that a certain group of users may not have or be able to attain, it must be removed.

[ To a question about apple and the point mentioned above...]
Yes, but apple traditionally does not follow a user-centered design approach. they believe that designers know better. It’s only been recently that they’ve done usability testing.. everything before was market research (which is very different).

[ We seemed to digress a bit, so I tried bringing it back on track with question :P]
There are three domains of usability i work in: User Research, Design, and User Testing. Together, these are part of the user-centered design process (UCD). It is a design philosophy which keeps users in mind while creating a system for them.

User Research is often linked to the Requirements stage of software development. So when you developers are thinking of new features to integrate in to a software, or a new software to develop from scratch. Here are some things you should be thinking of in addition to your functionality spec and other things,

Who are your users?
Try to come up with some example users who you are building the software for. Even if you are a user, try to keep yourself out of the list, it makes it too easy to do what you want instead of what they need.

What will you users be doing too many times?
Not all of the functionality is documented or fully planned. A single function might be discussed and mapped, but the other functions of a system aren’t thought of until afterwards. What happens is you don’t have a complete picture of how your users are using the system, and if the functions are integrated properly mapping out screen flows before you begin coding will help document your functionality (so you aren’t trying to squeeze or force options in later) and give you a reference for when you code.

What problem are you trying to solve?
This is the big one, your Vision Statement. Having an idea of your goals before you start will help development. It is related to the “What are my users doing?” question. If you don’t know what problem you are trying to solve with your software, you can’t know what to provide users or what they will expect? Plus, in larger projects, it is a good idea that all the developers are on the same page. It prevents a lot of road map issues later on

Being able to answer those three questions will give you a head start. On KDE Techbase there are user research templates to help guide you.

I guess we will get in to Open Source Usability 101 now,

First step: Contact the project you want to work with and express interest in working with them.
You dont want to surprise developers by dropping a usability report in their inbox. It will just make them angry, even if the work was good.

Second step: Start small. Open source is a community based on commitment and trust (after the getting work done thing).
Start with a small activity such as interviewing users, conducting a survey, or doing a small UI review. This will help developers get used to your methods, get used to you, and know what to expect from your work.

Third step: Maintain your relationship with the project.
Design is an iterative process, just as open source is iterative development. Developers are wary of seagull designers: designers who fly in, poop on their software, then fly away. Developers are in for the long hull, they are committed to their project and want to see it succeed. They don’t want to work with a designer who will ask them to change a bunch of things, then disappear and not be able to comment on the results.

Obviously I don’t want to see any unhealthy marriages, but keep in mind that you will make a bigger difference in one project than doing a bunch of little activities for a bunch of projects. Design is a VERY iterative process; it is important for both you the designer and the developer you work with to understand this.

[ To my question whether we have something similar like KDE-HIG in Ubuntu/Kubuntu to which we can contribute.. ]
For Ubuntu designers, you will want to look at the GNOME HIG. It might be a little out of date, but one way to get started with contributing would be updating it!

For Kubuntu designers, you will want to look at the KDE4 HIG and the KDE3 User Interface Guidelines.

These are under active development, and so if you have any questions it would be best to ask me or Ellen Reitmayr who sometimes lurks in #openusability.

Other Resources:
Look at other interfaces that do similar things, not just in your own environment but in windows, KDE/GNOME, Mac OSX. You’ll find similar and very different solutions. You will want to look closely at the context of the solutions and make sure it is a good fit before you use it as a mode. Copying a solution will not solve a problem, the goal of reviewing other software is to get inspiration when you have no other better ideas.

[ The End - Applauds!! ]


Tasque

April 30, 2008

Heard about this wonderful little GNOME app called Tasque from nixternal’s blog post today, checked it out (mean the web site) and found it useful. May be I will try it out soon, not now because I am not having much tasks to do and whatever I have is reminded by ReminderFox in ThunderBird. Good thing is it is available for both Hardy and Gutsy (thanks to nixternal) from tasque-packagers’ PPA.


Maryo is in Universe

March 28, 2008

While reading the latest issue of Full Circle Magazine today, I came across the Game section and was surprised to know Maryo was available in the Ubuntu Universe repository. The package is named smc, short form of Secret Maryo Chronicles. I downloaded it (some 41MB totally) and went running it. Unfortunately, it doesn’t get added in the menu. So I had to manually add it and also set its icon.

Always I have the habit of running a newly installed software from the terminal to check whether it spews some error or not. So did smc, there was some dependency error confirming to this launchpad bug. Luckily some one had prescribed a fix that makes it work. Had some fun playing Maryo after a long time. Hope they fix the bugs and we get a really super Maryo game in Hardy.


5 a day

February 29, 2008
What is 5-A-Day?
We, that means everybody, will do 5 bugs a day - every day. With only
five bugs that everybody looks at every day, we will cover a lot of ground.

What you can do? That's up to you, your interests and your abilities.
 - If you're a developer, you can help out reviewing patches and getting
them uploaded.
 - If you want to just confirm new bugs, you can do that.
 - If you have experience with a certain package and want to triage bugs
you can do that and forward them upstream if necessary.
 - If you know your way around Ubuntu quite well, you can help assign
bugs to the right package.

What you need to do to participate?
 - Do it! Follow the instructions on the 5-A-Day homepage
 - Spread the word by adding your 5 a day to your mailing list posts I have been trying my best to triage 5 bugs a day, but max I could do was 3. Hope I can try better in future.

Making Flash Player Plugin work with Firefox in Ubuntu 7.10

January 2, 2008

Erased previous installation and installed Ubuntu 7.10 afresh. When I tried to check the blog stats in wordpress.com, which uses Flash for the chart, it gave me a missing plugin error. It also showed me a little pop up to install the plugin, but unfortunately it did not work. So I decided to try the alternative Gnash plugin, but it too didn’t seem to work.

A bit of googling took me to some Ubuntu Help Forum post where it was advised to get the Flash Player from the Adobe site and install it. This involves downloading the tar.gz file, extracting it out and running the flashplayer-installation script which installs the player. But this is to be done in the command line, followed by answering some simple questions. It asks to specify where the mozilla plugin directory is, which is /usr/lib/mozilla (and the plugin directory within), but this step kept failing.

This is where the hacker jumped out of me and made me to look into the source code of flashplayer-installation script to find out where it was going wrong and what I rather need to do to install. This script is accompanied by the actual plugin file `libflashplayer.so`. The scripts just performs some checks and copies this file to the mozilla plugin folder with a permission 755 for root:root. Then it checks for the existence of an environment variable `MOZ_PLUGIN_PATH pointing to the plugin directory for Firefox to detect the plugin.

This is the manual step to install the Flash Player plugin for Mozilla Firefox in Ubuntu 7.10

  1. tar xvzf install_flash_player_9_linux.tar.gz
  2. cd install_flash_player_9_linux
  3. sudo cp libflashplayer.so /usr/lib/mozilla/plugins
  4. sudo chmod 755 libflashplayer.so
  5. vi ~/.bashrc and add `export MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins` (i.e. the command within the “)
  6. Run Firefox (all opened Firefox windows should be closed before doing this installation)Adobe site

Thus, we have added the export command to .bashrc of the user so whenever he logs in, the environmental variable gets set and thus his Firefox can detect the Flash player plugin.

When things like installation script fails do not give up. A true geek looks into the script and does what the installer does. This is what that is awesome about GNU/Linux and FOSS, even when one door is locked there is surely another door which can be opened. What needs is an effort to search for the door and try opening it :)

Update: Trying to file a bug lead me to the solution. The md5sum mismatch has been fixed in the package, but uploaded into Hardy repository rather than Gutsy. But we can get the .debs from here and install with dpkg.


printing tees

November 21, 2007

Its only a couple of week more before foss.in 2007 begins. Every team participating in Project Day are preparing something or other for the event, mostly are T-shirts and stickers for their project. Though ubuntu-in team had been discussing this for some time, we hadn’t actually put anything in to action. When we and tuxmaniac met this weekend in barcampbangalore, we decided to start some action.

We were pretty impressed with the stickers distributed during the barcamp. Instead of giving tags and coupons, they had print different kinds of stickers which can be stuck on to the shirts. There was sticker to write names, there was “this is my [nth] barcamp” sticker, there was “i am barcamped” sticker and there was a barcamp laptop sticker as well. We felt this idea was cool and we can also make use of it for the project day. We made some enquiries and found out it was well within our financial capacities. So we decided to print the stickers and sought Niyam’s help in designing one for us, as he had been desgining logos for foss conf chennai of late.

We might also be printing some Ubuntu posters to put up in the stall and around the venue. We had come out with a handout pamplet during Carte Blanche which we might use for this occasion as well. All we need is someone who can take a laser printout of the handout and make nice xerox copies of out, some 500-1000 nos will be enough.

We also were thinking about printing some 20 T-shirts to be distributed to the speakers and enthusiastic contributors. Initially there was Yahoo! interested in sponsoring us for the T-shirts. But there were lot of fluster as Y! is not a sponsor for this year’s foss.in and giving a T-shirt sponsored by them might be not welcomed, even might drag us into some unwanted problems. So, we have decided to make a pool of as much as we can and print some T-shirts for the speakers of Debian/Ubuntu Project Day. We are also enquiring whether it is monetarily feasible to print some mugs as well, may be replace t-shirts with mugs as every other team is printing tees.

To print T-shirts, we are looking for people to contribute to the money pool. As the Loco Team has to take care of itself and its needs this time, we are looking for contributions from the team members, from enthusiastic Ubuntu users as well as people from the community to help us in creating a pool so that we can print some nice t-shirts for those people who are speaking for us during the Project Day. We may also use the extra tees to reward people for their contributions and volunteering for various ubuntu-in activities (we do not promise this, but we will try to :) ).

Looking for your helping hands… :)


got the Gutsy

November 15, 2007

I had asked Ubuntu/Canonical to ship a couple of Gutsy CDs to me on 22nd October 2007 and the request was approved the next day. I almost forgot about it and when HereBeDragon reminded me about it a couple of days ago, I found it was 3 weeks since I put up a request. So I was expecting it to come in another week or so, but to my surprise it arrived at my table just a few minutes ago.

It always happen that the CDs arrive when I remember about them (after requesting for it, of course). The first time I requested Breezy, it took nearly a couple of months for it to arrive and then we could ask for more CDs. Now we can request a maximum of two and I usually get it before a month. It also comes with a few Ubuntu stickers, which am ready to give to others as I already have enough stock with me :)

Its a nice feeling when you have the Gutsy CDs sent from Netherlands in your hands :) Will now check whether I can get Kubuntu CDs ;)


Ubuntu Tutorials by Christer Edwards

October 25, 2007

Those who are watching over Planet Ubuntu might have not missed Edwards Ubuntu Tutorial posts, especially dealing with things to make our Ubuntu experience a lot better. I have always been reading his posts and trying to implement a few things which I had not known before.

Today Edwards, through his blog, had asked his readers to link his Ubuntu Tutorial Blog in their blog/web sites so that more people start making use of his tutorials. I felt it was a good thing to do and help more people know about such awesome tutorials. Hence I added it to my Blogroll as well as made this post so it appears in those planets which am in too. Hope I can get him at least one routine reader to utilize his tutorials :)


(Ubuntu) Gutsy is Ready!

October 12, 2007

Time to run the update manager as the Release Candidate for Ubuntu 7.10, codenamed Gutsy Gibbon, is out. We have waited for 6 long months for this and I hear Ubunteros say that it is indeed stable for any one to give a try. With just a week more for the final stable release, it is not a bad time to upgrade your Feisty machines. My Helios is waiting for me to go home (Chennai) and upgrade it to Gutsy. Heard some nice stuff are available for GNOME and my favorite KDE desktops, such as Dolphin file manager, newer version of Amarok, Compiz Fusion for desktop eye candies (hope it works well with KDE also, I have problems with Beryl-KDE), Gnash for Flash and interestingly Firefox plugin installer.

Want to know how to upgrade? Refer here. Want to know more about what got changed ? Refer release notes. Want to know the new things in Kubuntu 7.10, check here. And be ready for the Gutsy party.

In addition to this, Ubuntu is having its Open Week this month from 22nd to 27th, at #ubuntu-classroom @ irc.freenode.net. There are interesting things like ‘Ask Mark’ and Holbach’s Packaging tutor session. Check Jono’s post for more info on this :)


Gobuntu, go freedom!

July 11, 2007

A surprise post by Mark Shuttleworth appeared in Ubuntu Planet today, beginning of a new flavor of Ubuntu called as Gobuntu. I am not sure about the reason behind this name, but the idea behind this new flavor is have an “official” freedom focused flavor of Ubuntu.

I was very much like what you are thinking now, “What about gNewSense then?”. As what I infer from Mark’s post, this will serve as a upstream reference for all such distributions like gNewSense. Or in a more technical term, Gobuntu will serve as a base for freedom oriented distributions based on Ubuntu.

Gobuntu is available under Gusty daily build here.

Indeed, there were people inside the Ubuntu community to bounce back with questions. One important question, which I too would like Mark to answer is, whether a freedom-focused Gobuntu is going to use Canonical’s closed source applications like Launchpad and Merge-o-Matic. I join Jordan Mantha in asking the question to Mark. Shouldn’t it something bad to use a non free tool to develop a freedom oriented distribution? Though I have been somewhat agreeing to use of those for Ubuntu, where the ultimate aim is to provide a Linux distribution which “just works” for the user, I have this question when the total aim behind Gobuntu is removing all those controversial non-free drivers, firmware and apps out from the Ubuntu and offering a complete freedom GNU/Linux distribution.

Let us once again wait to hear from Mark.


GNU Units - for conversion between units

July 4, 2007

Again Planet Ubuntu has introduced me to a new tool, may be not new for you, which is very useful in day to day life. Its `units`, which helps in the conversion of one unit to another. It can be invoked from the command line (aka terminal), either by passing the input and output units as arguments or using the interactive mode. It supports 2438 units, 71 prefixes and 32 nonlinear units.

When you just call the units, it fires up the interactive mode,

$ units
2438 units, 71 prefixes, 32 nonlinear units

You have: _

Now we have to enter the input unit, that is the unit we want to be converted. Say “1 inch” to be converted to cms. For this “You have:” is “1 inch” and “You want:” is “cm”.

You have: 1 inch
You want: cm
* 2.54
/ 0.39370079

It gives two outputs marked by * and /. The first one (marked by *) is the forward conversion, i.e., inches are represented in cms. The second one (marked by /) is the reverse conversion, i.e., it is the representation of 1 cm in 1 inch.

Let us look at some common conversions which we might me interested in general.

You have: inch
You want: cm
* 2.54
/ 0.39370079
You have: feet
You want: cm
* 30.48
/ 0.032808399
You have: feet
You want: inch
* 12
/ 0.083333333
You have: meter
You want: inch
* 39.370079
/ 0.0254
You have: meter
You want: cm
* 100
/ 0.01
You have: kilometer
You want: inch
* 39370.079
/ 2.54e-05

We have looked at conversion of units for length|height. Now lets see for weight and volume.

You have: kg
You want: lb
* 2.2046226
/ 0.45359237
You have: liter
You want: m^3
* 0.001
/ 1000
You have: gallon
You want: liter
* 3.7854118
/ 0.26417205
You have: gallon
You want: m^3
* 0.0037854118
/ 264.17205

There is one more common conversion left out, degC to degF and vice versa.

You have: degC
You want: degF
* 1.8
/ 0.55555556

These are basic conversions where we compared one unit of input to corresponding output. Now lets looks at different values and the corresponding results. There is an interesting thing to note here.

You have: 5 inch
You want: cm
* 12.7
/ 0.078740157

A inch is 2.54 cm and 0.39370079 cm is one inch. Looking at the current conversion, 5 inches is 5 *2.54 cms= 12.7 cms. But what is the second value “0.078740157″ ? This is nothing but the 1 cm with respect to 5 inches, or how much 1 cm is a part of 5 inches (1/(2.54*5) = 1/12.7 = 0.078740157). It might be a bit confusing at the beginning, but this is useful at times when we want to know the reverse ratio as well.

You have: 8 meter
You want: inch
* 314.96063
/ 0.003175
You have: 400 feet
You want: cm
* 12192
/ 8.2020997e-05
You have: 72 kg
You want: lb
* 158.73283
/ 0.006299894

Now, let us try to convert between units which do not have much relation.

You have: kg
You want: liter
conformability error
1 kg
0.001 m^3
You have: kg
You want: m^3
conformability error
1 kg
1 m^3

Though it shows the conversion, it says conformability error. Lets try again with mutually incompatible units.

You have: liter
You want: ohm
conformability error
0.001 m^3
1 kg m^2 / A^2 s^3

What it does is convert it to common base (m^n) and try to match them. But still, it doesn’t conform to standards conversions.

What if we are not sure of a unit or do not know how to spell them exactly. Just enter the first few letters and press tab, it shows a list of related units.

You have: kg
You want: l
Display all 102 possibilities? (y or n)
You want: li
li              lid             line            lithium
liang           light           linenyarncount  lithuanialitas
liberiadollar   lightminute     link            litre
libra           lightsecond     liquidbarrel
librae          lightyear       lira
libyadinar      ligne           liter

Another interesting feature of this tool is that we can obtain quick definitions of units. For example, if we want to know about ‘tablespoon’ then enter it in the “You have:” option and just press `Enter` without typing anything for “You want:” option. Then you get,

You have: tablespoon
You want:
Definition: ustablespoon = 1|16 uscup = 1.4786765e-05 m^3

Another good example will be definition of ohm and volt.

You have: ohm
You want:
Definition: V/A = 1 kg m^2 / A^2 s^3

You have: volt
You want:
Definition: W/A = 1 kg m^2 / A s^3

Thus, the interactive mode of GNU Units is very useful tool and we can play around with it. When we exactly know what we have and what we want, and just want the answer, the command line mode will be preferable. The basic syntax is,

$ units [options] [from-unit [to-unit]]

For example,

$ units '8 meter' 'inch'
* 314.96063
/ 0.003175

When the same command is invoked without the second ‘to-unit’ option, it just displays the definition of the given unit. For example,

$ units 'feet'
Definition: foot = 12 inch = 0.3048 m

Thus `units` is a versatile tool which converts quantities expressed in various scales to their equivalents in other scales. More information and options can be got from `man units`. The home page provides more information about the tool.

Units is available in Debian and Ubuntu, in the `universe` repository for the latter. So, its all an ‘apt-get install’ away. Thanks to lucas for posting this on the planet. Have fun! :)


Installation Successful

June 17, 2007

It was time for shock and excitement when Nee told me she wants to move to Linux. It happened suddenly that I couldn’t believe my eyes. I have shown Ubuntu on my laptop to a lot of ladies but till now no one was ever ready to say, “why don’t we install it in my laptop/PC?”. I did not want to lose out this chance, rather an opportunity to break the ice and show people that we can indeed use Linux for our day to day computer needs. She indeed did say that she was thinking Linux to be all “black and white text”, though she had worked with Open Solaris a year ago. This sudden excitement and interest in trying out Linux has come from seeing a 3D desktop live.

So, we decided to install Ubuntu in her laptop this weekend. As hers’ was a HP laptop, I first decided to try it out with a Live CD of Feisty Fawn before installing it for ever. As she had 1GB RAM, I was too sure of Live CD to install without much problem. Booted with Live CD, she tries using the new GNOME desktop for some time, before I got the approval to proceed with the installation. I asked her to click the install icon and start the installation. Other than the partition stage, she did everything without my intervention. I also explained some basic things about how GNU/Linux system works and even a bit of philosophies behind. She, being a geeky girl, very well understood the hard part of “free” software and Ubuntu using some “non-free” drivers to make a few things work.

She had an empty F drive under NTFS, which was around 30GB. We deleted it, and used it to install Ubuntu. The installation was smooth and got done in 10 mins. We booted into the newly installed system and next 30 mins went in showing her some basic configuration stuff. As we did not have internet at that time, we could not download and install something.. But I thought her about using apt-get to search for packages and install them.

She was very happy for having a working Linux system. But as we did not have internet, we could not install and try out Beryl (3D Desktop). Later, when she had internet, we tried to connect her laptop to the broadband connection she has. First, it wasn’t working and when she called up the Hathway customer service, they said they do not know about configuring it for Linux (the expected reply ;) ). Then, I asked her to get the configuration details for IP address (they have static IP), mask, gateway and DNS. The new mask they gave made her connection work. I told her to ring them up and tell them she did configure the connection and can teach them how ;)

One mistake I did was, forgetting to check the sound after installation. Sometimes it doesn’t work right away and we have to check the alsamixer. We tried to do it through online interaction, but it did not work out. And as a result, she will be using Windows sometime for her music needs before I get her sound working. Besides this, everything seem to work and she is so excited that she can forget Windows soon and start using GNU/Linux full time :)


Will the leader answer ?

June 15, 2007

The latest hot talk in the FOSS world has been about the latest deal between M$ and Linspire. Many had expected it, especially after the bashing of GPLv3 by the Linspire lead. This follows similar deals with Novel and M$ which had provoked large scale debate over the actual intentions of M$ with respect to its publicly proclaimed enemy, GNU/Linux.

Though the new deal has similarly kicked on another round of debate, I was a bit excited to find a number of posts in the Ubuntu planet, from some of the top bloggers there. It was started by Aaron Toponce, followed by Richard Johnson, Jonathan Carter and Christopher Denter. The one common thing with all these 3 active Ubuntu guys is that they all wanted to know what Mark Shuttleworth thinks. Its because Ubuntu project is being financially supported by Canonical Ltd. and the same nightmare can be created by them too.

But we Ubunteros have our hopes, mainly at the bug #1 filed by Mark. We all believe that Canonical and Ubuntu are committed to solve that bug and we will not fall prey to lure of $$ by M$. Also, we have Mark’s comments in the past in which he had been certain that there won’t be an Ubuntu-M$ deal. But nothing is impossible in this world.

Hence, the Ubuntu community is looking ahead to hear from its leader, a reassurance that we will also be not embarrassed with a similar deal. And, many of the Ubunteros who had commented to one of the posts in the Planet had mentioned that if some thing like that ever happens, they will not have a second thought in walking away from Ubuntu. With respect to the passion we have within the Ubuntu community and think of the past years since we joined our hands, we hope that day won’t come.

/me joins the Ubuntu community and waits to hear from our leader. :)


Mutt in Feisty

June 8, 2007

Have been trying to make mutt work since dapper days, did not quite get it right. After seeing a post in ilugc mailing list today, was determined to try again. It did not take me any more than 5 minutes to get mutt working with exim4. Here are the steps..

[1] install exim4 (+exim4-base, exim4-config, exim4-daemon-light) and mutt

[2] configure exim4 as follows,

$ sudo dpkg-reconfigure exim4-config split configuration into small files ? YES

choose "mail sent my smarthost; received via SMTP or fetchmail

System mail name: localhostIP Address to listen on for incoming SMTP connections: 127.0.0.1

Other destinations for which mail is accepted: <blank>Machines to relay mail to: <blank>

Machine handling outgoing mail for this host (smarthost): smtp.gmail.comHide local mail name in outgoing mail ? NO

Keep number of DNS queries minimal(Dial-On-Deman) ? NO

[3] Now configure the password client

$ sudo vim /etc/exim4/passwd.client gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD

*.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD

[4] Specify the port,

$ sudo vim /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost # add the following line after the line containing 'host_try_auth ..'

port=587

[5] Add your outgoing email address,

$ sudo vim/etc/exim4/email-address # myuser@localhost: mymail@gmail.com

yourUserName@localhost: yourAccountName@gmail.com

[6] Update the exim4 config

$ sudo update exim4.conf

[7] create a ~/.muttrc and add the following,

# mail check options

set pop_host="pops://username:password@pop.gmail.com:995"

set pop_last

unset pop_delete

# mail send options

set sendmail="/usr/sbin/exim4"

# check for new mail on startup

exec fetch-mail

[8] The necessary configurations are done. Open up a terminal and issue the following command

$ mutt

This will ask you to accept a security certificate and then check your mails. If the configurations are done as given above, you should be able to get the list of mails in your gmail inbox.

If it shows the error “/var/mail/UserName: permission denied (error-13)“, then send a test mail to ‘Username@localhost’. This will create the required /var/mail/UserName and make things work fine.

Happy mutt’ing :)

Sources:

[1] Gmail and Exim4 - Debian Wiki

[2] Using mutt with Gmail