Older blog entries for shalabh (starting at number 48)

Magic buzzword?

Yes, Titus - the buzzword is agile.

Is indentation more human?

I was creating a bulleted list in Word and using indentation to demarcate a sub-list, when a thought crossed my mind - what would it be like to use delimiter, instead of indentation?

  • Fruits {
  • Apple
  • Orange }
  • Veggies {
  • Spinach }

Eek! And yet, while writing programs, we work harder to appease the machine, than to help the human readers. Perhaps we have been working with machines so much, we have lost our ability to recognize human-friendliness?

Ruby is good for Python (and vice versa)

Yes, you heard that right, and here's why:

Because it offers more proof that dynamically typed, loosely coupled languages can more productive in creating robust solutions than statically typed, stricter languages with deeply nested class hierarchies. Java and C# essentially lead us through the same path for tackling problems. One may be a better version of the other (I like C# more) but the methodology is very similar. In fact the release of C# only validated the Java-style methodology by emulating it (albeit offering a more productive way to follow it).

Enter Python or Ruby, both different from the Java/C# style. Both producing 'enlightening' expreriences in ever growing list of seasoned, fairly well known static-style developers (Bruce Eckel, Bruce Tate, Martin Fowler...). As the knowledge spreads, it pokes holes in the strong Java/C# meme in peoples minds. Then people start to explore and experiment, and discover the Python (or Ruby) productivity gain. Some may prefer one, some the other. Ruby, in the end, validates the fact that Java/C# style methods may not be the best for everything, something the Python advocates have been saying for quite some time.

Guido van Rossum joins Google. Definitely buzzworthy news!

Trac projects for Quixote Extras as well as QLime are now available at trac.cafepy.com

Ruby book sales surpass Python - interesting read by Tim O Reilly
9 Dec 2005 (updated 12 Jan 2006 at 03:32 UTC) »
Humane Interfaces vs Minimal Interfaces

Martin Fowler writes how a 78 method Ruby list class is so much nicer than a minimal 25 method java.util.List. Elliotte Harold takes some of those 78, and tries to tell you why they're useless.

You cannot pluck a class from Ruby, implant it in Java (or a Java mindset) and expect to see the benifit. You have to use the language, understand the philosophy, and see how the different classes work so well together in the other language.

I don't use Ruby, I use Python. So where does Python stand in the humane-minimal scale? Somewhere between Ruby and Java, I would think. Simple is better than complex, but practicality beats purity. And yet, special cases aren't special enough to break the rules. (From the Zen of Python). Thankfully, there is Guido, maintaining the balance.

Python determines the MRO (or method resolution order) of all new style classes at definition time. Here is an overview with diagrams of the C3 algorithm defined in the first link. I think this is useful for the curious, but burried inside a longer article and so may be harder to find.

29 Nov 2005 (updated 29 Nov 2005 at 06:42 UTC) »

With the Python ORM discussion heating up recently, I thought it was time to start exposing capabilities of QLime. So here is a longer features list. I know, I know... it need more examples.

24 Nov 2005 (updated 27 Nov 2005 at 18:23 UTC) »

Updated with colorful new diagrams and minor textual changes - step by step introduction to new-style Python objects:

Python Types and Objects

Python Attributes and Methods

(OmniGraffle is a great little diagramming tool)

39 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!