Book Review: Beginning Ubuntu Linux Second Edition

    The latest version of Ubuntu Linux, 7.04 Feisty Fawn was released yesterday and at the same time a courier showed up at my door with a package from Apress Publishers. The package contained their wonderful Beginning Ubuntu Linux book, now in its second edition. When I reviewed the first edition, almost a year ago, I liked it a lot. The second edition is also geared to the newbie, just like the first one, but there are a number of changes, all of which for the better.

First off, the book comes with a double sided DVD containing both the 6.06 and 6.10 releases of Ubuntu, Kubuntu, Xubuntu and Edubuntu, which means that there is something for everyone. The basic chapter is the same, starting with an introduction to what Linux is and what you can do with and progressing to how to get around to installing and using Ubuntu. But some sections of the text have been reorganized and additional matter added. Of course, everything is now up-to-date with regards to the 6.10 release. There are more screenshots, which is always a good thing for a new Linux user.

The installation guide is still written in a hold-your-hand manner, something that is certain to be reassuring to people installing their first Linux. The section dealing with common installation problems and their fixes has been expanded and the typesetting is now much clearer, making it easier to find the problem that you are looking for. The getting-started sections as well the introductions to common programs retain their well-written style but have been improved by adding further screenshots and by providing howtos for  common tasks.

One thing that I especially liked about the first edition was the section on using the BASH shell to perform slightly more advanced tasks. The corresponding section of the new edition provides much of the same information, but advanced topics are better explained. The chapter regarding filesystems, users and file permissions has been improved and expanded. This will be a welcome change for first-time users as file permissions can often be something quite hard to understand and quite easy to misuse.

By far the section that has received the most attention is the one regarding software management. There are instructions on keeping your system up-to-date as usual, but also guides on installing an anti-virus software (which is probably not necessary, but many people feel safer with one around) and also on adding more repositories. This is handy for people who are ready to pass out of the “newbie” stage and move on to do some exploring.

On the whole, the book lives up to its claim of being “Written for newcomers to Linux, yet comprehensive enough to appeal to even seasoned users”. While readers will derive the most benefit in the first few weeks of their Ubuntu experience, there is a good chance that you will you be looking up some of the more advanced matter even after a good few months. The second edition has the same price as the first one : $39.99, but whereas the first one was a fair deal, the new one, with all the new material and the power-packed DVD, is a downright bargain. If you’re looking for your first Linux experience, but unsure where to start, I recommend you pick up this book.

Gmail extra

I’ve talked about using Gmail for more than just plain email a number times. but most of the time, I’ve mainly talked about using external tools to make Gmail do things that aren’t related to it’s functionality as a mail client (such as using it as a feed reader or as online storage space). But Gmail is an outstanding e-mail tool, and so today I’m going to focus on Gmail’s email functionality to do a number of useful things.

Many of the tips that I’m going to give you will make use of plus addressing and labelling. Plus addressing gives you multiple email addresses for the price of one. Any mail sent to an address of the form somebody+something@gmail.com will go to somebody@gmail.com. You can replace the “something” part with anything that you like as long as it does not contain a space or @ symbol. Instead of a + you can also use a dot.Gmail also allows you to assign labels to emails, and you can set up filters to automatically assign labels to certain label based on numerous criteria.
Now that we have the basics covered, here goes:

1. Separate email from Mailing lists, newsletters etc.
This is perhaps the most obvious use of plus addressing. Give each of your newsletters, mail lists or other services a different plus address (or give different groups different addresses). Then set up a filter based on the To: field to give incoming mail a label, star them or archive them directly.
Strictly speaking, you don’t need plus addressing, you could apply a label based on Subject or From, but if whoever is mailing you changes either of these, your filters won’t work anymore.

2. Maintain a journal or diary
Create a contact with +journal or +diary as part of your email ID. Then set up a filter for all mail sent to this address to skip the inbox and to labelled as Journal or Diary. Then just email your daily entries to this address. All your entries are in one place, sorted by date, searchable and as secure as the rest of your important email. The only downside of a diary like this is that you can’t edit previous entries, though you can add to them (by keeping the same Subject) and Gmail’s thread view lets you see all additions together.

3. Create a personal database
Get the Gmail toolbar and whenever you find something on the net that you would like to keep for future reference, use the send to Gmail function to email it off to a personal plus addressing and use filters to keep these little pieces of data from cluttering your inbox. All your saved information is easily searchable and you can easily forward it to anyone else who might be interested.

4. Manage your time and keep a to-do list
Once again send yourself email to a personal plus address. The subject line contains brief info on whatever it is that you want to get done and the message body can be packed with details. Labels can be used for projects and for contexts (where something is done) and since a message can have multiple labels, you can find your tasks whether you’re looking for all tasks related to a project or to a context. You can star tasks that require immediate attention or are very important and Gmail’s starred view will give you a neat list of things to do next.
Gmail can be used very effectively as part of a Getting Things Done system and if you are a GTD user, the GTD Inbox firefox extensions might come in handy.

5. Post to your blog
A number of blog services (including Blogger) allow you to send email to a specific email address and the content of the email gets posted as a blog post. How much success you have with this will depend on how good your service’s implementation of this feature is. Blogger works pretty well. I am unsure as to how WordPress performs, but the hosted version at WordPress.com does not support this feature.

If you can think of any other new ways to use email, let me know and I’ll add them to this post.

A File System For The Average User

Yesterday I talked about how today’s filesystems, while doing their job quite well, were not all that suitable for the average user. Today let’s take a look at what improvements could make filesystems better for the average user. So let’s start with the typical average user: my mother.

The Big Problem: My mother has finished a good few weeks of heavy-duty research at her lab and now wants to write up her results as a publishable paper. Not only does she have to bring together all her raw lab data, there are also lots of references to previous work. Her raw data is mostly in the form of pictures and Word files containing lab results. The references are mostly PDFs and the occasional saved webpage.

The Solution: Like any other good scientist, she decides to break down her work into a number of steps. First she has to collect all her data. Then she has to write everything in a massive Word document, and finally put together references and send it off to an editor. Luckily, my mother does not use a simple heirarchical filesystem, but rather an improved next-gen filesystem which I will be describing throughout this article.

Problem 1: Gathering the data. As I’ve already mentioned, the data is a mix of images, Word files, PDFs and saved web pages. The problem is that all this data is saved across well over a dozen folders, many with subfolders going down two or three levels. Also, most of the data has been collected over the past few weeks, but some of it goes backs almost a year. It would take my mother hours to go through her jumble of files to find the things she needs. Some of the files are badly named, meaning that searches based on filename would miss the mark quite often.

The solution: Metadata. This is data about data. The commonest example would be the tags that many web services now use to help users classify their content, without restricting them to classic file/folder hierarchies. My mother’s filesystem uses metadata extensively. Whenever a file is created, the filesystem records certain information about the file. There are mundane things like filename, size, type, etc. These things describe what the file is. But there are other pieces of information (let’s call them tags) that describe what the file is about. For example, a certain PDF file has tags that say that it is about lizards, temperature, humidity and diet. Some of these tags were entered by my mother when she saved the file. But some of them were obtained from the file itself. The filesystem took the liberty of searching the file’s contents and adding repeated words and phrases, as well as words in titles, headers, and image captions to it’s list of tags.

But having the filesystem store metadata is only half the solution. The other half is that my mother is actually encouraged to find her files based on metadata. Looking through her files based on metadata isn’t delegated to a small entry in the start menu, she doesn’t need a third party program to use the feature and she doesn’t have to open a terminal and enter arcane commands like ‘grep’ . Whenever she opens the file manager, she sees the typical directory structure, but a part of the interface is devoted to showing her common metadata on her hard drive, metadata that she recently looked for as well as prompting her to enter words or phrases related to content that she is looking for. All she has to do is type in “Maximum temperature of lizards” and she gets a list of PDFs referencing the required work, image files containing graphs of temperature tolerances etc.

Problem 2: My mother has been using the metadata capabilities of her filesystem to find the information that she needs. The problem is, she’s afraid that she’ll forget where all the numerous files are and will have to search for them all over again when she needs them again. She could copy them to a temporary folder, but if she makes any changes to them, she’ll have to remember to sync them with the original. If she moves them, she’ll have to remember to put them back when she’s done.

Solution: This solution has been around for a while, known as shortcuts in Windows and Symlinks in Linux. But this new filesystem gives it a few improvements. My mother creates a special type of “temporary folder” . Anything that she places in this folder is actually just a link to the original somewhere else. But any changes that she makes here are mirrored with the original or vice-versa, however she can turn this off in case she doesn’t want changes to be mirrored. The links are also smart. If the original file to which the link refers is renamed or moved, the link is automatically updated. Besides linking to ordinary files, she can also save lists of files which match certain metadata, similar to saved search folders.

Problem 3: Now that my mother has found all her data and got it in a temporary folder, it’s time to start writing her paper. This is going to be a big paper, over a dozen pages, she’s going to be working in many sittings and doing numerous edits. At times she’ll probably want to roll back changes, or just look at what she had written earlier. But she doesn’t want to have a dozen different files each with a different draft of her paper.

Solution: Version Control. What she needs is a robust versioning system. Seasoned programmers will testify as to how useful these systems are to maintaining code. But my mother does not have the time or the patience to set up and learn to use a version control system. Luckily for her, version control is built right into the filesystem and file manager. First off, her filesystem uses journalling so that data losses due to sudden shutdowns or reboots are kept to a minimal. She doesn’t need to keep multiple drafts of her paper stored separately, she has just one file. When she opens it, she gets the latest version.

But the filesystem keeps track of what has changed every few minutes, or every time she makes a change. By right clicking on the file in the file manager, she gets a menu with a list of every time a change was recorded and she can easily open up a previous version of a document. More advanced options allow her to choose how far back the versioning goes, how often changes are recorded and whether copying/moving the file causes the whole version history or just the latest version to be moved. Finally, if she has some sort of online or external backup, then everything is synced automatically at periodic intervals.

Problem 4: The paper in its final form is written and then emailed off to a journal editor for publication. He likes the paper, but there is a small problem: my mother had quoted from an earlier article but had forgotten to add it to the list of references. The editor asks her to make the correction and send him the corrected version. She’s glad to do so, except she can’t quite remember which article she quoted from and she doesn’t fancy the prospect of having to look through all the possible articles.

Solution: Data Relationships. Unlike most modern filesystems which only remember things about individual files, this filesystem also remembers relations between different files. This is a slightly more advanced feature and not one my mother regularly uses. But being the avid geek that I am I help her out. After opening a few menus I get to the required dialog box which tells me that she saved the file 27 times over the space of a week, that she rolled back changes thrice and she had copied the file 5 times. It also tells me that she had copied information into the file 8 times and copied something out of it 6 times. Another few clicks give me the files from which data was copied into the file as well as the type of data that was copied. By only looking at the times text was copied in from a PDF, I help my mother narrow down the possibilities to just 3 sources and it takes her about a minute to find the required reference.

Conclusion: A collection of a number of new, “smart” features means that my mother no longer has to worry about the details of how and where her data is stored or how to properly manage it. The filesystem helps her concentrate on what she wants to do with her data, not how to go about doing. For the average user, it means that the computer is more similar to how we are used to dealing with non-computerized data and that the user needn’t be bothered with obtaining and learning to use various third party devices. For power users, there is simply a lot more power in their hands. Of course not everything described above can be handled by the filesystem alone, but it is at the core of it. Next time we look at the current state of affairs: how far away we are from my mother’s dream filesystem and what other tools beside a augmented filesystem we will be needing.

Why today’s file systems are inadequate

My mother is an average computer user. Not a power user, not an IT pro, just an average user. She teaches at college and does research. Her computer needs are mostly limited to email, reading scientific papers off the internet or in PDF form and using a word processor to write her own papers and question papers. Occasionally she does some light graphics work, mostly just labeling photographs. She has a large number of files on her folders, once again mostly scientific papers or notes related to her work. Every once in a while she forgets where she put a certain PDF document, as well as what she named it. She remembers what it was about and has a vague idea about when she saved it. Then she comes to me and I have to go look through her dozens of folders, with Google Desktop search as my pal, and after a good deal of pain, I finally stumble upon the culprit.

What does all this have to do with file systems? Well, everything. Today’s file systems work in a strictly hierarchical manner, one file goes inside another. While that may be very good for some sorts of things, it certainly isn’t the best for everything. On top of that, there is currently only one way to find a file: it’s name. Which means that if you’re someone like my mother whose typical PDF has a name like “RNA acceptor protein reaction mechanism in Axolotl Mexicanum” and if you forget the filename, you’re pretty much stuck. Sure tools like Google Desktop can help you even if you remember a fragment of the filename, but that is still a stop-gap measure to the filesystem’s underlying fault: a total lack of flexibility. Does a picture of my mother’s regenerating newt go in her “Regeneration” folder, or in her “Current Project” folder or in her “Animal studies” folder? Or should she make copies and place one in each folder? If she makes a change to one, she’ll have to remember to copy it again. Sure she could make one copy and use a link or shortcut, but I think that might be too complex for her to handle.

Then there is the question of versioning. Anybody who has had to write a long detailed document, will know about what I am about to describe. You start on day 1 with an innocently named Doc1.doc, then on Day 2 you add another paragraph and it becomes Doc2.doc, then the next day you go to Doc3.doc and Doc4.doc, so on and so forth. Keep track of the versions of your file is boring and repetitive, it’s something a computer should do. Sure there are a number of excellent version control systems out there, but why they are all fairly complex to use. Why isn’t versioning handled by the place where all the versions are kept, namely the filesystem?

The typical file/folder view of data doesn’t easily fit everyone’s needs. If you’re a novelist, how do you write your next book? Is the whole book one big file? Does each chapter get it’s own file? What about the various notes and random ideas that you deal with? How many files do they go into?

Today’s filesystems are inadequate because they force us into a strict relationship with our data, a relationship that most people are not very used to. While they do get the job done (for the most part) there’s lots of room for improvement. Tomorrow we take a look at some of the changes to filesystems that can make them a whole lot easier to use as well as how close we are to implementing those changes.

7 ways to stop wasting time at your computer

Update: I have recently revisited this post in More Ways to Stop Wasting Time at Your Computer and posted what I hope is a more relevant set of tips. Please consider the advicce given here deprecated. Thanks.

Many people today spent large parts of the day in front of the computer. The sad truth is that many of these people end up wasting a large amount of time even when there are a lot of ways to work more efficiently, simply because they don’t what those ways are. If there is something that you do regularly, doesn’t take much brains and can be reduced to following a few simple steps, then there is most likely a technological way to save yourself from such drudgery. After all, that is what computers are for. If you spend more than an hour or two at your computer, the following tips will probably be of some help to you.

1. Stop checking multiple email inboxes

If you’re someone like me, who has different email addresses for work and personal email, then chances are you spend a good bit of time switching inboxes, organizing mail and keeping contact lists up-to-date. Well, stop it. Even if you spend just a few minutes a day switching inboxes, that will add up to many hours over the years, hours that could be better used doing something else. If you’re a fan of desktop email, there are numerous clients out there that can handle multiple email accounts and keep your mail separated and organized for you. If you prefer webmail, get a Gmail account and set it up to collect your email from the other locations. Gmail automatically makes sure that if you reply to an email which came to a particular address, the reply email will have the same address, not the Gmail one.

2. Stop visiting the same websites over and over

If you depend on websites that get updated regularly, then in all probability those websites will have RSS feeds. Subscribe to them via a feed reader, I recommend Google Reader for an online reader or FeedDemon for a desktop alternative. Not only will you save time by not having to move through all those sites, you’ll also save a fair bit of bandwidth.

3. Don’t backup to CD or DVD

Writing to a CD or DVD is still quite slow, you’ll probably need special software and it’s much harder to undo a mistake. And a single scratch would make your data unreadable. Try out online storage or if you prefer to keep your data to yourself, get an external hard drive. If your budget is tight, at least get a USB pen drive. If you need to keep multiple versions of your data, don’t resort to file names with numbers and dates at the end, get a proper versioning system like Subversion and invest some time in learning to use it.

4. Learn keyboard shortcuts

You’ll be surprised how much time you can save by leaving the mouse alone. You’ll be hard-pressed to find a software that doesn’t support keyboard shortcuts. If you use a particular program a lot, find out what the keyboard shortcuts there are and use them. Some programs let you create your own key combos, so if a shortcut doesn’t exist for a regularly used command, you can create it. In case you find that you simply cannot remember the shortcuts, write them down or print them out and put them somewhere you can see them all the time. After enough practice, using shortcuts will become second nature.

5. Learn to type faster

Unless you’re someone like a graphics artist who uses the mouse for most of the time, you will probably be spending a lot of time using the keyboard. Even if you’re use of the keyboard is limited to writing emails and letters, you can save large amounts of time by typing faster. Take a speed test, there are numerous free ones online, read up on the various speed-typing techniques and learn one or two. If you think you need a better keyboard or a different seating arrangement, make the changes. Also try to make stress on typing error free as much as possible. The less time your fingers spend on the Backspace key, the better.

6. Know your tools

If most of your time on the computer is spent mostly using just two or three programs, then you could save yourself a lot of time by properly learning how to use the programs. Now, this doesn’t mean spending time learning about features you almost never use, but a good read through the documentation can turn up a good few valuable tips. If your program supports plugins or extensions, see if there are any available that will speed up commonly performed tasks. If macros are supported, recording macros for regular tasks could save a great deal of time. Once again, learn keyboard shortcuts. If you search the internet a lot, learn the various operators that you can use with Google as well as how to narrow down your results.

7. Don’t multitask

A lot of new research is showing that multitasking does not really increase efficiency, in fact it might even hinder it to some extent. This is even more so for tasks on the computer. There are lots of distractions on the computer, many of which are addictive. Don’t start checking email or reading a blog unless you absolutely need to, or have free time on hand. Disconnect your IM client if you need to work without interruptions. Shut down programs you won’t need and whenever you have free time on your hands, make a rough list of what you have to do next, preferably in order. If you think you’re suffering from an addiction or can’t seem to stop yourself, get professional help. If you suddenly think of something that should be done soon, but you’re afraid you’ll forget, write it down somewhere. Don’t break your workflow unless it’s urgent.

Most of the above will not save yourself more than a few minutes at a time, but those little moments of saved time will add up in the long run. If you want to make use of those little moments, try keeping a list to small things to do, which don’t require more than a few minutes and get them done with your new free time. For some more general time saving tips, see this article.