Archive for the 'Operating Systems' Category

Book Review: Beginning Ubuntu Linux Third Edition

Ubuntu and desktop Linux have come a long way in the past few years. Ubuntu is currently one of the most popular, if not the most popular distro for desktop linux users. It was my first distro and though I no longer use it, I’ve always acknowledged to be a well-polished piece of work and I always recommend it to people who are just starting on their personal Linux journey. Like most other things in computers, getting used to a new operating system is made easier if there is a good source of documentation available. Beginning Ubuntu Linux, published by Apress is a particularly good example of documentation geared towards to the new user. I’ve reviewed the previous versions of the book and I find that the books have kept improving just Ubuntu itself.

One of the things that makes this book particularly appealing for me is that it starts out with a brief but informative review of the philosophy and history surrounding Linux and Ubuntu. I personally believe (and I think that many other Linux users share this) that there is much more to Linux and open source software than simple technical excellence. It is a way of thinking and acting that I find very appealing and which I wish others to understand. This book does its part in helping new users understand the culture that gave rise to the software that they will soon be using.

The book continues the practice of understanding that most of the people reading it will be Windows users. As a result the chapters dealing with installation also tell users how to properly back up their data and how to smoothen the transition. The guide through the actual installation process is also very in-depth and well written. Partitioning is often the most confusing part of the installation for a new user. I’m glad to see that partitioning has been dealt with very well with all the options in the install process carefully explained and the pros and cons weighed carefully. The chapter dealing with common installation problems is as good as before but now includes information on more than just installation problems. I particularly liked the section on how to deal with resolution and other common graphics problems since these can be very frustrating if not dealt with properly.

Once installation is complete the book goes on to describe with an equal amount of care how to perform various day to day tasks and how to customize your system. The section that deals with Linux equivalents is also comes in very handy for new users who just want to be pointed quickly in the right direction. The book geos beyond describing simply the core operating system and the user interfaces. Of particular note are the sections devoted to how to use multimedia systems. You’d be hard-pressed to find a computer user who doesn’t have a substantial collection of various music and video files and this book helps newbies get up and running with minimal effort. This new edition keeps the sections on using OpenOffice and the BASH shell but adds substantial material regarding the new automatic multimedia setup, the 3D graphics effects that have the Ubuntu desktop much more visually appealing and also on security and encryption. There is also a mini-tutorial on using the GIMP for basic image manipulation which I think shutterbugs will find handy.

The last part of the book is devoted to slightly more advanced topics such as package management, backups and automation and remote access. Personally I feel that package management deserves a more central place, right alongside installation, but the book’s modular structure means that this isn’t much of a problem. Overall the last few chapters act as a springboard from where newbies can start another journey to the level of power user and beyond.

The book as a whole is well laid out and material is clearly separated. The use of sidebars and small tips and warning sections means that a good amount of extra information is presented without interrupting the main flow of the text. There are also lots of links to other information sources where the interested reader can go to for more in-depth information. Most of these are freely available online sources and the full URL is often provided resulting in minimum effort for the reader. For Windows and Mac OS X users there are also pointers to third party tools that might make migration easier. The book is replete with high-quality black-and-white screenshots which add to the complete guide experience that the book provides. The third edition updates everything to be in sync with Ubuntu 8.04 and comes with a double-sided DVD containing a ready-to-install image on one side and various ISO images of the Ubuntu derivatives on the other. In essence the book has everything that a user would need to get up and running with Ubuntu.

The book is at a reasonable price of $39.99 and I think it’s a good investment for anyone looking to jump into the world of Linux. Even though you’ll get the most from this book in the first few weeks after installing Ubuntu for the first time, the later parts of the book will serve as a handy quick reference for those types you find yourself needing to dig under the hood. There is certainly a large amount of information online which means that books of this type are not strictly necessary, but at the same time it can make things a lot easier to have a quick reference close at hand. My litmus test for this sort of this sort of product is generally: would I give it to my mom? This time the answer is yes.

Cocoa, Python and the quest for platform independence

For the past few days, I’ve been looking into Apple’s Cocoa infrastructure in some detail. The reason once again stems from my research projects. All our code is in platform-independent Python meaning that we can develop on any of the 3 popular operating systems and then run on any others. This has been a great advantage since the three members of our team each run different OSes. For most of the time our project was purely command-line and text input based, using graphics only for the final display. However we have now come to the point where we need to fork our system into two different systems: one for architects and one for artists. How each program will develop is something that we will work on over the next few weeks, but one thing is clear: for the artists at least, a purely textual interface will simply not do.

Till now our system had been accepting an instruction file as input. While this method of using a instruction was very powerful (we could essentially embed our own programming language), this not the direction we want to go with the artists. And besides, not every artist wants to sit down and right pages of instruction to draw a picture, we might as well ask them to write the program themselves. It would be best to create a GUI for them to use. Even before this had been clear, I had written a simple interface that was essentially a text editor containing a hook to our Python backend. It was written in Tk, was exceptionally ugly, but got the job done.

My Tk Interface running under Leopard

Now I think the Tk toolkit is capable of letting me create the entire GUI interface that I have in mind and it will be cross platform as well, but there’s one problem: it’s ugly, especially on the Mac. I think this is because the Python Tkinter version doesn’t use Aqua (like Tcl/Tk), but rather uses X11. Though I spend a lot of my time in Vim and at the command line, I’m still a fan of good looking user interfaces (see my last post). As a result I would feel rather guilty about making something that I know would look bad on the platform it would be used most. So like a good programmer off I went to find a solution.

I thought I would be able to use Cocoa to create a front end, especially since Xcode now has support for the PyObjC bridge. Unfortunately this has turned out to be much harder than it at first appeared. Cocoa is Apple’s very powerful object oriented API. It is almost everything you will ever need to create a Mac application. While it allows to create native applications by leveraging the powerful infrastructure Apple provides you, it also doesn’t allow you to perform the sort of rapid duct-tape styling programming that Python and UNIX encourages. In Python it’s very easy to write your core application in Python with any number of GUI front-ends that are easily interchangeable. Cocoa, on the other hand, is not another GUI toolkit that you can simply add to the mix. If you want to use, you’ll have to invest a certain amount of time in learning your way around.

Python can’t communicate with Cocoa directly. To  have your Python programs leverage Cocoa, you need to go through the PyObjC bridge. Though the bridge is certainly effective and I could use it, I’ve been having troubles finding decent documentation. Apple’s own tutorial is the sort of document I’m looking for, but it is dangerously out of date. Lacking a proper tutorial, I would have to figure out a lot of things on my own. Once again, a large time investment.

Considering that I have only two weeks left to make real progress on my project and that learning Cocoa or Objective-C was not my original goal, I’ve decided not to pursue that avenue at the moment. I would certainly love to learn Cocoa at some point in the future and PyObjC seems like it could become a very powerful tool. But I simply don’t have the time at the moment. I am going to start working on a proper GUI interface in Tkinter. Perhaps sometime later this year, I’ll get back to some Cocoa.

OS X Leopard, Firefox 3 and native UI

I installed Firefox 3 yesterday on both my old G4 Mac and my Windows laptop. Arch linux, which I normally use doesn’t have a package for it yet. Firefox 3 has a number of new features, which are being talked about on almost any random technology site, so I won’t bore you with them. I’ll just focus on one thing that I like: the changes to the user-interface.

Firefox 1 and 2 sported a UI that seemed to be uniform across platforms. However this uniformness across platforms also meant that Firefox didn’t quite look like the other applications for the platform. This isn’t really a big thing, especially considering the horrible UI inconsistencies introduced in Windows Vista. But at the same time, it’s little touches like this that can make or break an app. Sure there were skins, but you really want something like that to builtin. One of my favorite pet peeves was regarding Firefox 2 on OS X. The buttons for various web apps like Gmail or the Google search page’s search button would show up as ugly Windows 95-ish rectangular boxes rather the sleek Mac buttons. It was something that really irritated me, since I spent a lot of time in Gmail. I’ve been glad to see that the new Firefox fixes that and adopts a very native look and feel.

I also upgraded my G4 Mac to OS X Leopard today. I had been putting it off since it has only a 1.25GHz processor and less than a gigabyte of RAM. However, it turns out that my fears were mostly unfounded. It took about 20 minutes to install and it runs as fast as Tiger did. The only noticeable difference is that the boot and login times are somewhat longer. But considering that I rarely logout or shutdown, that isn’t really an issue at all. I’m surprised by how Apple’s development takes into account older machines and actively works to extend their lifetimes. This stands in sharp contrast to the effect that Windows has as the Great Moore’s Law Compensator. In fact I will go as far as to say, that some things actually run better on Leopard than on Tiger, the Leopard-Firefox 3 combo in fact seems to very capable.

On Tiger I always experienced Flash videos being somewhat choppy irrespective of what browser I used. That problem no longer exists on Leopard. Furthermore, the UI changes to Firefox fit right in with the overall darker look that Leopard sports. I’m really looking forward to using Spaces, which should come in really handy as I start doing Cocoa application development. I was also impressed by how little impact Spotlight scanning the disk had on performance. I would never have known it was going on if I hadn’t tried to use it. There are some features of Leopard which I won’t be using such as Time Machine ( I have a homegrown SVN backup system), and that will probably mean my system won’t be under a full load anytime. If it turns out that my system can’t handle (considering that I’ll be using Xcode fairly heavily), adding a gigabyte of RAM might help speed things up. I had been considering buying a new Macbook to last me until the end of college, but it seems like my current machine will be all the Mac I’ll need for a few more years (or at least until Snow Leopard hits the stage).

New Gumstix project blog

My past record with blogging hasn’t been too good. I’ve never been able to sustaing contiued posting for more than a few weeks at a time, often less. One reason has been that I’ve never really had something focused to blog about, meaning that it has been rather easy to lose interest or to simply not know what to write about.

But now I have something more to write about. I’ve recently come into possession of a Gumstix single board computer for a college project. It’s something I’m very interested in as it represents a huge learning opportunity for me and it will be the first time that I will be able to put my programming and technology into a real tangible application. Along witht he project I have also started a blog which will be part record of my experiments and part scratchpad for any ideas I might have of what to do with Gumstix and systems programming in general. I’m calling it Gumstix Adventures. Yes it will be rather technical so if you’re not that interested in hard computer technology, you might not find it very interesting.

Since I will be devoting a lot of my free time to that project. I will no longer be updating this blog. It’s been fun and it actually gets a fair amount of traffic but I just don’t have the time or the inclination or continue it. Of course, it will still be online for anyone who is interested.

Goodbye and thanks for all the fish.

Why I love the Mac

Thanks to my job with Information Technology Services at my college I’ve managed to get my hands on an old G$ PowerMac. It’s a decent machine with a 1.25GHz PowerPC processor and currently 768MB of RAM, but what really makes Macs what they are is the world-class Mac OS X operating system. I’m currently running a fully upgraded Tiger 10.4 with iLife ‘06 and I can only say that it simply rocks.

Firstly, it’s beautiful. The looks are clean, bright, but not gaudy and the UI stays out of your way for the most part. There aren’t too many customization options, but for me at least, I don’t want to customize it. I haven’t even changed the default wallpaper and somehow, I really don’t think I will. For anyone used to a a Windows or Linux interface, the Mac does take some getting used to. The lack of some sort of a start menu can be intimidating at first, but thanks to the Dock’s flexibility you can just drag your Applications folder into the dock and it gives you a menu on right click (or control-click). Any other folder dragged onto the Dock also gives you a menu in the same way, saving you from having to open Finder all the time. Talking about Finder, it fulfills its role as a discrete file-management application. The ability to easily and directly mount FTP shares and other forms of network drives makes it particularly useful to peopple who need to work across a network.

Besides the UI there is one other thing that I deserve special mention: application install. Having experienced application install procedures on Windows and Linux, I’ve come to believe that the most important thing in an application installation system is simplicity. Users should not have to go through a dozen complex steps to install a simple program. On a Mac, some programs come with Windows style installers, but for many others, double-clicking on the downloaded file for an application will give present you with an icon which you can drag to your Applications folder and everything else happens automatically and behind-the scenes. Simple, isn’t it?

Though I’m well on the way to becoming a Mac fan, I do have some gripes. Though Expose is a great way to manage open windows, it can become slightly confusing an involve a fair amount of mouse movement if you have lots of windows open. Holding the Apple key and hitting the Tab key provides a list of open programs, but not open windows, making it useless if you’re trying to quickly switch between several open PDFs or something similar. I’m looking for something more keyboard friendly than expose, but haven’t found anything yet.

As for Leopard, I’m still not ready to switch. I am looking forward to using Spaces, and I actually like most the new UI features, but the incompatibility are not something I’d like to deal with. We have it running on a test machine at work, so I get to try it out often, but I think I’ll wait a few months before taking the plunge.

Spend less on buying a computer

Computer prices may have plummeted in recent years, but they are still quite expensive, especially for students. With some planning and looking around you can avoid a lot of unnecessary costs without compromising on quality. Some of the stuff I’ll talk about is free, while others just cost a little less. However they do require that you invest some amount of time and effort, so it’s up to you if the savings will justify the work you have to do.

1. Software

If you’re an average computer user, almost all the software you’ll need can be gotten for free. There are lots of free (and in many cases, open source) software that will take the  place of popular commercial software. You might have to sacrifice support services if you want things absolutely free stuff, but if you pay just a bit, you can buy a supported Linux Distro and get help with your problems. If you’re even a bit computer-savvy, you can easily get free help from online forums and mailing lists and take care of most problems yourself. This may well be the largest saving that you’ll be making.

2. Don’t get standard upgrades

Most computers that you buy nowadays let you upgrade things like RAM and hard disk space for an extra price. This is certainly convenient, but in many cases you could buy the parts for a fair deal less and install them yourself (or ask a tech-savvy friend to do it for you).  If you think you won’t need the upgrade immediately, it makes sense to wait until you do. Prices keep falling, so in 6 months time, chances are you’ll get a bit more for your buck.

3. Keyboard and Mice

These things don’t really cost much, but you can get them even less of Ebay and other auction sites. Unless you’re a hardcore gamer or you’re typing all day long you probably won’t recognize the difference between a new one and an old one. If you work in a large corporation or are in a college environment, chances are the IT department has a fair number of unused  keyboards and mice lying around. If you’re friendly with the IT guys, you could get yourself one for free.

4. Look around and wait a while

Computer stores and websites often have good deals going on things like printers, scanners and other peripherals as well as many seasonal discounts. Often you can get things for a good $100 or more less (often in the form of mail in rebates). If you don’t need a computer right now, try waiting a while, and if you do need one now, look around. In addition to looking at websites for the best deal, also visit physical stores near you, they might have special local offers going.

As for college students, if you have a student discount, remember to use it. Late summer is a particularly good time to buy thanks to lots of ‘back-to-school’ offers going around. Apple is currently giving rebates on iPods and Printers bought with a desktop or laptop.

A combination of all of the above could easily knock a few hundred dollars off your computer expenses. Of course, just buying a computer isn’t the end of it, there’s also a certain price associated with running a computer (upgrades, printer supplies and of course the monthly power bill). Tomorrow I take a look at the things you can do spend less money on running your machine.

Operating Systems for Students

There are a large number of different operating systems out there, including everything from expensive, industrial strength systems to small hobbyist projects. If you’re a computer user, you’re bound to find something out there that you can put to use. But what if you aren’t just a user or even a hobbyist? What if you are a serious computer science student interested in knowing what makes an operating system tick? While there a large number of excellent books on the subject, the best way to learn (as with most things related to computers) is to do it yourself. But writing a whole operating system, or even the kernel by yourself isn’t an easy thing to do, especially if you’re starting from scratch. Most programmers will agree that a very good way to learn programming, any sort of programming, is to read other people’s code, understand what makes it ticks, and then use some of those principles in your own projects. This isn’t hard for small pieces of software, but an operating system, even the kernel, isn’t a small piece of software. Most of the kernels out there, even the smaller ones are rather complicated pieces of code. They’ve probably been in development for years, with large groups of people contributing lots of different code. If you’re new to kernel development, looking at the Linux or BSD kernels probably isn’t a good way to start learning. So what do you do?

Enter Minix. Minix is a UNIX clone, but it has been made with students in mind. Minix 1 and 2 were made by Andrew Tanenbaum exclusively for students to  go along with his book: Operating Systems: Design and Implementation. Minix 3, is still geared towards students, but is also being made usable as a day-to-day system for low resource computers. What makes Minix3 good for students is that it is compact. The whole of the kernel (it uses a microkernel design) fits into just 4000 lines of executable code. The rest of the system runs in user mode, and in case you want to take a look at those parts too, you can do so just as easily. Minix has a fully modularized design, which means that you can tinker with one small part without having to worry too much about breaking everything else.

Even though Minix is for students, doesn’t mean that is unusable as a proper operating system. Over 400 UNIX programs have been ported including a graphical X window system and networking capabilities using TCP/IP. As for programmers, there is a native C compiler and the shell, ash supports scripting. There are also interpreters for BASIC, Perl and Python (though the Python interpreter is very out of date). That should be enough to let you tinker around and learn something useful. While you’re at it, you might want to get the book as well, especially if you don’t know anything about operating systems.

However if you want something that is still in the early stages of development, but has a clear game plan, you might want to take a look at Fiwix, a project geared towards producing a kernel compatible with Linux while keeping students in mind. Like I said, it’s in its early stages so you could learn a lot if you hang around. The Google Directory on operating systems has a few listings for educational operating systems, and some of the might be worth taking a look at. But please do not jump into the world of operating systems without an adequate knowledge of C/C++ and a good grounding in operating system theory or you might find out that you bit of more than you can chew.

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.

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.

Next Page »