Jaipur, here we come

Uncategorized June 20th, 2009

So it seems Praneeth and I will be off to Jaipur over the next weekend (26-28 July) to lead a 3-day session about linux and open source at a Poornima college. I’m not sure of the details of the logistic such as venue, etc. since my involvement in that part was limited to being asked if I’m up for it by Praneeth and then sending an outline a couple of days later. Most of that work is apparantly being taken care of by the folks from Young Engineers and some people from the host college, so they’re the ones to thank for setting it up.

Edit : It seems the Rajasthan university postponed its exams, due to which the lectures are also being postponed for the moment. We dont know when they will happen now, or even if they ever will. I’m leaving the rest of the post intact because it would apply to other situations as well.

The outline we sent in is largely derived from the talks I gave recently in the Students Gymkhana lecture series, and looks something like this :

Talks only – spread over the three(?) days

Philosophy and Architecture
- Free Software and Software Freedoms
- Free Software Licenses
- Anatomy of the Linux Operating System
- Kernel-space vs user-space
- Files and Filesystems
- User-space Applications
- Application / package management

Linux system administration (or, installing and using linux)
- Decisions you need to make when installing
- Useful config files and commands

Hands-on supported sessions

1 : Dive into the terminal
- Terminals, shells
- Generic command structure
- Basic commands : cd, ls, mv, cp
- Interesting commands : cat, grep, touch
- Piping, redirection

2 : Doing stuff on the terminal
- A text editor
- Writing and running a hello world (python)
- Compiling a small application from svn (./configure, make, make install)
- File permissions and ownership

3 : Open ended, participant driven session

4 : Install fest?

While we’re planning to stick to this as far as possible, there is still scope for some modifications here and there. Thats where this blog post comes in. When I did the lectures last week, there were times when I felt that things were going a tad bit outside of the audience’s comfort zone. Praneeth handled the Hands on sessions in the Young Engineers summer camp on the linux track (which is pretty much what the hands-on sessions planned this time as well will look like), where I dropped in for a while, and there we saw a wide spectrum of responses, from people who could barely handle a terminal to those who were bored after the first hour or so.

The questions that have been picking at me at the back of my head is this :

What sort of audience do we expect at Poornima? Should we simplify the talks, should we make them more comprehensive, or should we just go by the crowd’s reactions?

What would they expect? What would _you_ expect if this sort of thing were happening in your college/school/whatever?

Talking about Linux

gsoc June 14th, 2009

Over the weekend, I’ve been talking about linux to a somewhat technically oriented audience. Mostly first year undergraduates, the audience has so far sat through almost a month of technical and non-technical lectures at the rate of one a day, along with working on summer projects under the Science and Technology Council of the Students Gymkhana of IIT Kanpur.

The slides can be downloaded in PDF here.

Here are some things about the slides that I should mention, though :

  • This is not a “this is how you install linux, this is how you do $foo in linux” kind of talk.
  • This is meant for an audience that, if not experienced, is atleast open to information of a somewhat technical nature.
  • This is not really a “learn on your own” kind of presentation, but you could theoretically use the slides along with wikipedia and google to make sense of much of what is mentioned. The slides themselves are not too detailed
  • Actually presenting the 22 slides to a an audience of about 30 - 40 people who mostly have minimal to none linux exposure beforehand, without going into the gory details, should take about 5 hours or so.

Any feedback (crititicism included) is welcome. Comments are, as always open. I’ve had a bit of a spam problem of late despite of akismet, so if that starts plaguing this post as well I’ll set comments to require approval. Forgive me for the delay (not more than a couple of hours, I hope) in moderation if this happens - and be assured that as long as its not the random, typical spam, it’ll be approved.

Looking Forward

Uncategorized May 30th, 2009

I haven’t quite been writing much lately (surprise, surprise.. :P ). While I wouldn’t make any promises for the near future either, largely because I am (and have been) in a state of a strange superposition of busy and preoccupied (which are’nt the same thing, by the way), I’m dropping in to say I still exist, I’m alive (mostly), and should be writing a bit more often in a few days.

In the meanwhile, here are the ‘first look’ sort of videos of three web based tools that promise to change the way we do things. Whether either of the three will actually deliver is yet to be seen, but they do have certain potential. Interestingly, I came across them via three channels that, in their respective times, did change the way we communicate and use the internet, although to a slightly lesser degree - IRC, Facebook, and Twitter.

1. Wolfram Alpha

2. Bing

3. Google Wave

Moin Install and Admin UI - GSoC’09

gsoc April 22nd, 2009

Since this will be my first post on planet SoC, some introductions may be in order. I’m a 4th year student of Physics from India, who will this summer be working on an installation and administration system for the MoinMoin wiki engine.

More information (possibly more than you would really want to know) can be found on the Moin wiki. Through the course of this summer, I hope to use the blog to provide periodic glimpses into the state of the project without really going into elaborate detail. Some general python discussion is also on the table, especially since this would probably be the most complex bit of python code I’ve written so far. :P

The basic goal of the project is described in the abstract as :

The proposal is to create a graphical web-based UI for installation and management of MoinMoin wiki instances, including a number of the usual administrative tasks that typically require editing the configuration files or manually running scripts. If implemented, it could lower the barrier for people who would like to try to configure and then maintain a MoinMoin wiki.

If all goes according to plan, by the end of the summer* you’d be able to take moin out for a spin without having to dabble around config files and ‘understand’ the way the system works. Not only that, it should be possible for a wiki admin to maintain and administer his/her wiki (or wiki farm) from the wiki itself, and not worry too much about backups, migrations, transplantations, etc.

*It might take longer for it to be shipped with moin. Its possible that it’ll take until moin 2.0 for it to be shipped with moin itself. In any case, I’ll try to have a patch available for the latest stable moin version at the time of the end of GSoC (or as soon as its finished, whichever comes later :P) that you can use.

False Promises of Usability

Uncategorized February 26th, 2009

I´ve been using computers for a long time now, and I´ve seen the evolution of the modern operating system almost as if it were happening in front of me. Sure, I´m not very old. I havent used the most of the first Unixes and first GUIs. I missed completely the dominance of the mainframe, and never actually saw a punch card, let alone touch one. I wasn´t even around when the first networks were born. By the time I got used to computers and networks as a way of life, usenet was pretty much dead and IM was on its way to being king. The following is an account of usability from my perspective, heavily influenced by things I have been exposed to. In the grand scheme of things, I might be very, very wrong on many counts.

I remember still, though, the time when MSDOS was the operating system of choice on the personal computer. I remeber the time Windows 3.1 came out, and everyone appreciated the fact that once you booted into the cold, heartless DOS command prompt you could type in ´win´ and an oh-so-friendly GUI came up, never mind that it did very little. Then, usability did not mean what it does now. The GUI made things easier, nicer to the eye. The assumption was and remained to be that computers were complicated beasts and were respected. The GUIs, although they did very little, did improve the human interface to things so that kids such as myself could do small things without worrying too much about the underlying complexity. Soon, we moved on to Windows95, around the time the Internet was gaining mass adoption. The definition of usability started to change around then. Windows 95 was good, for its time. It tried to eliminate the command line altogether. What it caused was pretty much a shift in the paradigms of computing. A system that required human intervention became a ´bad´ system. Computers, and more specifically, operating systems, had to ´Just Work´. Hardware became infinitely diverse. AMD started beating the crap out of Intel in the decade to come, and then Intel returned the favour. SiS, ATI, nVidia and others started taking graphics to a whole new level. Computing had, for the first time, become something ´for the masses´. This transition, however, started another in the background. The basic assumption about computers being something you respected started to erode. In the 14 years since, people have hurled all sorts of abuse at computers. The fact that they even survive today is testament to the fact that they are something real, something substantial, and that they are not just a child´s toy. They pretty much power the economy and governance of today.

People now dont want to worry about the internals of a computer. They dont give a damn if the processor is made by Intel or AMD. They care even less about who writes their operating systems. Most dont even want to know. All that they care about is that their computers _work_. And not just work, but work the way they expect them to. After windows 95 came 98. Then there were some junk released before XP took the market by storm. By then, we all but forgot about the command line. What you could do with complicated batch files and environment variables could now be done in less than 10 clicks of a mouse. The wonderful complexity of the computing platform was all but hidden away to the user. The most that the slightly-more-than-casual gamer saw was cleaner graphics, enhanced sound and gameplay, and 3D. Oh, 3D. The wonder of walking around in a world filled with objects made of discrenable polygons and killing people at whim without worrying about the consequences. Usability moved from being something people appreciated to something at the back of someone´s mind, and bitched about when something didn´t ¨Just Work¨. Sure, computers could now do much more than before. Paradoxically, they also became less flexible. There were only so many things you could do to customize your computing environment. You couldnt just go in and rewrite your routing rules. You could´nt have different environment variables for different tasks (Actually, you could. But did you ever know that?). The computing market had changed, and since the operating system developers (even the open source ones) were market driven, like all good things in this materialistic world of ours, so did the way operating systems were made. Marketing teams decided what an operating system should do, and the developers became the guys who write the code. Desktop Operating systems were no longer written _for_ the power user. The name given to this transformation was usability. Usability became key. Usability now meant ¨An idiot can use this system without breaking it¨. It didnt matter that it was painfully difficult, if not impossible, for a generally intelligent person to do something that should have been trivial. It didnt matter that the flexibility of the computing platform was being grossly underused. Operating systems and usability driven applications became the primary hogs of computing power. Graphics rendering became the core of high end computing on the desktop, not typical number crunching or data mining.

It was only after I came to IITK that I started taking Linux seriously. Till then, it was just something out there. It wasnt ´usable´. I had no clue what KDE and Gnome were. The first time I installed linux in my 11th(?) I picked KDE because it didnt sound as lame as Gnome. Not having an internet connection then, though, I soon got tired of not having mp3 codecs and decided to ditch the idea. It didnt matter that mp3 was a propietary format and hence was not included in the distribution (Fedora Core 2). MP3 support was something that you needed. It didnt matter that MP3 support was just one command away. Without the internet, that one command can be a very, very difficult one to run.

Today, my definitions of usability have changed. I dont care if an idiot cannot operate my operating system - I need to know that I can. I need to know that I can do with my operating system what I want to do with it, and do it without mucking around in places that are clearly not meant to be messed around with. I dont want to say ¨I Know¨ to a million warnings before I get to the part I want to change. If I want to switch my network from static to dhcp, it takes me whole of 17 keystokes, not counting bash auto completion. If I want to mount a whole bunch of ftp folders into my own filesystem and then let dolphin and gwenview and beagle use them as if they were my on my own harddrive, it takes about 15 keystrokes. I want all my window decorations to look more or less the same, and want my widgets to look uniform as well. I dont care if its a Java application or a Qt one. I want my system to respond instead of freezing and I want to be able to kill the application causing the freeze. I dont care who implements that, I dont care how much it costs. I dont even care if it doesnt have any localization to speak of, as long as its in English.

Windows Vista was great. Really. It looked amazing. Aero was a little late in the game, but glass made my day the first time I saw it. Usability wise, it sucked. I still take about 2 minutes to find the window that lets me change my network settings. It had a boatload of cosmetic improvements, but nothing discernable of note in terms of usability improvements. Applications still did random things, modifying system behavior was just as hard, if not harder, than in XP. Vista was by far the worst disappointment than anything else in my short stint with computing, including KDE 4.0. Its not that it was _worse_ than Windows 3.1. It was, obviously, better. The point was that it was supposed to do so much more. We all knew what to expect with windows 3.1, and were happy when we got it. We never got what Windows Vista promised to give us. KDE 4 looks promising now, but still is below the standards that were set for it. It still crashes. It still does strange things occasionally. Applications still break once in a while. But KDE 4 is on the right track, for the long run. The road to KDE 4 was not filled with _just_ usability improvements. It involved rewriting a lot of the underlying mechanics of computing. It fixed gaping flaws in some implementations and exposed some in others. Over time, KDE 4 and its successors can probably achieve the kind of usability that the user of today has been promised. But right now, it is far from it. Windows 7 is something that I havent used yet, so I cannot comment on it. Perhaps in a couple of weeks I´ll find some time (and hardware :P) to try it out on.

At the end of day, usability is something that needs to be defined. Users should know what to expect. We are still atleast a decade away from software that can guess what the user wants. Probably more than a decade, in fact. In the mean time, software usability will continue to evade developers. Usability teams will look at some aspects of usability, and those are, in general, not the parts of usability I care very deeply about. I´m not trying to say that I prefer a heartless terminal to a GUI solution that ¨Just Works¨. What I want is _something_ that ¨Really Just Works¨, to that point that saying it ¨Just Works¨ is having more information about the system than I really need.

I have a feeling I wont get to see that kind of system in my lifetime, though. Do you?