Saturday, August 22, 2009


Rahul (mether) Sundaram proposed this idea of a web-application to make Fedora remixes/spins.

I had decided to implement it using Ruby on Rails (surprising?).

I had already parsed the comps into a MySQL database schema. I then filed a ticket to the Fedora Design Team for a mock-up UI. I am still waiting for a response on this.

The name of the application is yet to be decided.

The next hurdle is to parse/build kickstart files. There are two ways of doing that:

  1. Writing my own kickstart parser in Ruby.
  2. Using the already existing and extensively used pykickstart - a Python library for manipulating kickstart files.
While the fate of the project was already decided at this point, I decided to give it another shot by asking around in the kickstart-list.

Well now its final. The web application would be developed using Django.

Hence I would not only be able to use pykickstart and thus avoid writing a parser from scratch, but I would also be able to integrate the application with FAS.

P.S. - This is the second time a missing or poorly written Ruby parser has let me down. While I am all for the far-more-superior framework of Ruby on Rails when building web-apps, I can't help but admire the advantage Django has when it comes to integration with existing and awesome Python libraries that do cool stuff.

Friday, August 21, 2009

Tab Auto-Completion in Python Shell

Strangely enough, I discovered that I do not get bash-like auto-completion in my python interactive shell.

Looking up helped.

Just need to have a file called .pythonrc in your home directory containing the following:

import os
import sys

import readline
except ImportError:
print "Module readline not available."
import rlcompleter
readline.parse_and_bind("tab: complete")

Apparently, that was not enough. I also needed to add the following line to my .bashrc file (in my home directory again).

export PYTHONSTARTUP=~/.pythonrc

That's all. Open a new shell and start the python shell.

And enjoy auto-completion!

Saturday, August 15, 2009

Dear Juniors,

Its the start of a new academic year and I know you feel very fresh after a long stretch of summer vacations. Hope you enjoyed them to the fullest.

But now that you are back to college, the usual worry crops up:

"Will I get a decent job?"

You tell me "Placements are poor!". I say it was inevitable. With the software companies having more on their plates than they can eat and the recent economic chew-up, this scenario was more than expected. Lets say its sad luck, so now what?

For those in final year, my advise is don't let the last few fun days of your lives go to waste looking for a job. Its not time yet. This can be your most productive year in college. There is another whole year of you life you can learn.

Yes, learn. And don't just learn something because you can learn. Learn because you need to. So how does that work?

Think of something you like. Something new you want to develop. A brilliant idea. Its natural you may not have the requisite knowledge to get it done. List down the ways it can be done. Google up. Ask for help on IRC, drop mails to mailing lists. Communicate. Get people to appreciate your idea and contribute to its enrichment. Use other's experience. Chalk up a plan.

Once you have a plan in place draw up a time-line. Make it flexible. A time-line is very important as it keeps the idea afloat. List down the minimum things you need to learn in order to make something which minimally resembles your idea. Learn.

This way of learning is fun as you have a motivation for learning stuff. Its as if you are building a stair in order to reach up. Always keep the goal in mind when learning. Relate how each and every detail fits in with your goal.

Once you think you can start with building your stuff, start on it. Put the rest of your learning as and when you require it. There'll be obstacles, many of them. Don't be afraid to ask questions. Before asking questions, look up and try gathering information yourself. And ask valid, strong and complete questions. The stronger and more complete a question is, the more easier it will be for the other person to help you out. Never look of spoon-fed solutions. Read up, understand the context. You will feel as if you solved the problem without help. Its a different level of excitement altogether.

As a developer one can never stop learning. There is just too many stuff to learn. Its a whole world out there to explore.

Well then coming back to the problem at hand. Once you have something minimal ready, release it. Do not wait for the correct moment. "Release early, Release broken" as they say. Its natural to have snags and edges. You will get enough feedback to help you sustain your motivation.

Where you go from here onward is entirely upto you.

Join a community you want to be a part of. Communicate with people. Build reputation. Discuss matters. Ideas are just waiting to be born and implemented.

Enjoy the journey, do not worry about where the path leads to. Wherever you reach by the time you finish college, I'm sure you'll have found your place.