Uraga is dead. Swaroop has confirmed this in a post to BangPypers.
I long doubted this might be the case, since there was no mention of Uraga in Swaroop's blog for quite some time. The reason he cites is job pressure; as if guys who contribute to open source do not do justification to their daily job! It sounds ironic, to say the least.
I have a principle which I apply in any open source or professional work I undertake; that is, if I propose an idea, I will try at least to do a basic prototype implementation of the same. More so, if I am talking and letting the world know about it. It is a basic contract that one should have to the community with which one interacts, especially when one tries to market the community with the tag of his idea. In this case, the community is BangPypers and the idea is Uraga of course.
If you don't fulfill this basic social contract, then you are not fit to be an open source contributor, let alone an open source project initiator. I hope some of the new-age geeks who looks to open source for quick stardom realizes this.
Wednesday, August 31, 2005
Wednesday, August 24, 2005
Design Patterns - Modelling the Singleton in Python
Singleton is a design pattern that seems to interest everyone, especially in the Python world.
I was doing a Google search on the ways in which Python implements the Singleton design pattern.
The results showed that in doing this in Python, you are limited only by your imagination. Unlike C++ or Java, you are not limited to a certain strategy of modeling the Singleton in Python.
I thought it was a good idea to gather the different Singleton solutions in Python and post it in a single post (pun intended) here. In this post, I list seven ways of modelling the Singleton in Python which looks elegant to me. I am not including some overly verbose or cryptic solutions which you will find if you perform the Google search above.
Though I have no preference for any particular solution, I have ordered them in the order of what I think is the least elegant solution, to the most elegant one. Of course this is purely personal! :-)
A word of caution: Except for the Borg solution, the rest of them will work only with new style classes. Also note that some solutions are exactly the same, though they look different. I have explained them as we go along.
The most basic solution overrides the __new__ method in an outer class, returning an instance of an inner class as the Singleton. Here it is:
The next solution fixes this problem. It works directly with the guts of the class by accessing the classe's dictionary.
class Singleton2(object):
""" Singleton by using new style classes """
class Singleton3(object):
Here is the solution from Bruce Eckel's Thinking in Python.
The elegancy of this solution comes from the fact that, the extra code for the class is just one line, where we assign the __metaclass__ attribute. All the magic resides in the metaclass, which allows one to quickly convert his class to a Singleton by adding just this one line.
NOTE: In fact the metaclass solutions for Singletons (or any other patterns for that matter) are not class scoped solutions, but type scoped ones. It might take some time to wrap your head around that, if you come from a C++ background.
But does this look a bit cryptic? Well, I should say yes since it took some time for me to figure out what is happening here. Apparently, you don't need to take all that trouble to get it right. Here is the above solution re-written, but without the inner function and all that.
class SingletonMetaClass(type):
Is that all you can do with metaclasses and the Singleton in Python? The answer is No. Looks like there is a much more elegant way of doing this using metaclasses. It is done by overriding
the __call__ method in the metaclass, instead of the __init__ method. This solution is the ASPN Python Cookbook Recipe #412551 by Daniel Brodie. I am just copying it here.
class SingletonMetaClass(type):
The Borg is unique in that it re-defines the problem Singleton is trying to solve. Instead of trying to ensure that the unique instance maps to a unique memory location, Borg ensures that the state of the various instances are shared and hence the various instances are in effect, the same. In other words, Borg focuses on object equivalence instead of object identity which is what Singleton offers.
Here is the Borg non-pattern, applied to the Singleton problem.
class Singleton7:
unique state across instances.
That is the end of my first post on Python and Design patterns. I hope to add more in the future, on the rest of the Gang of four Design Patterns.
I was doing a Google search on the ways in which Python implements the Singleton design pattern.
The results showed that in doing this in Python, you are limited only by your imagination. Unlike C++ or Java, you are not limited to a certain strategy of modeling the Singleton in Python.
I thought it was a good idea to gather the different Singleton solutions in Python and post it in a single post (pun intended) here. In this post, I list seven ways of modelling the Singleton in Python which looks elegant to me. I am not including some overly verbose or cryptic solutions which you will find if you perform the Google search above.
Though I have no preference for any particular solution, I have ordered them in the order of what I think is the least elegant solution, to the most elegant one. Of course this is purely personal! :-)
A word of caution: Except for the Borg solution, the rest of them will work only with new style classes. Also note that some solutions are exactly the same, though they look different. I have explained them as we go along.
The most basic solution overrides the __new__ method in an outer class, returning an instance of an inner class as the Singleton. Here it is:
class Singleton1(object):Here is this solution in action:""" Singleton by overriding __new__ and using an inner
class by using new style classes """
class __Singleton(object):
pass
__instance = None
def __new__(cls):
if not Singleton1.__instance:
Singleton1.__instance = Singleton1.__Singleton()
return Singleton1.__instance
Clearly the drawback with this solution is that it is not a Singleton in its true sense. The Singleton class does not return an instance of itself, but an instance of an inner class. In other words, what appears to be the Singleton class is actually a class wrapper around an inner class, which is the actual Singleton. Not very elegant.s1=Singleton1()
print s1
s2=Singleton1()
print s2
s3=Singleton1()
print s3<__main__.__Singleton object at 0x009F1390>
<__main__.__Singleton object at 0x009F1390>
<__main__.__Singleton object at 0x009F1390>
The next solution fixes this problem. It works directly with the guts of the class by accessing the classe's dictionary.
class Singleton2(object):
""" Singleton by using new style classes """
def __new__(cls):All right. Is there something magical about the _the_instance attribute ? Nothing. So why can't we replace it with a direct class level attribute? Yes, you can though there is not much difference in both technically. However, it looks like a kind of combination of the first solution with the second one (which it is not), so here it is for illustration purposes.
if not '_the_instance' in cls.__dict__:
cls._the_instance = object.__new__(cls)
return cls._the_instance
class Singleton3(object):
""" Singleton by using direct class attributeAll right. Enough of fooling around with classes directly. Can't we do this by using metaclass magic? Looks like you can. And with most metaclass solutions, it seems to be somehow more elegant than directly putting the logic inside the class!
access without using cls.__dict__. This might
look different from Singleton2, but in fact
it is the same. """
__instance = None
def __new__(cls):
if not Singleton3.__instance:
Singleton3.__instance = object.__new__(cls)
return Singleton3.__instance
Here is the solution from Bruce Eckel's Thinking in Python.
class SingletonMetaClass(type):
def __init__(cls,name,bases,dict):
super(SingletonMetaClass,cls) .__init__(name,bases,dict)
original_new = cls.__new__
def my_new(cls,*args,**kwds):
if cls.instance == None:
cls.instance = original_new(cls,*args,**kwds)
return cls.instance
cls.instance = None
cls.__new__ = staticmethod(my_new)
class Singleton4(object):
__metaclass__ = SingletonMetaClass
The idea is to override the __new__ method of the object's class right in it's metaclass's __init__ method. This is done the first time the object is created. The overrided __new__ works quite similar to the one in Singleton1,Singleton2 and Singleton3. Thereafter, everytime you create an object of Singleton4, it will call the __init__ in its metaclass where the magic happens.The elegancy of this solution comes from the fact that, the extra code for the class is just one line, where we assign the __metaclass__ attribute. All the magic resides in the metaclass, which allows one to quickly convert his class to a Singleton by adding just this one line.
NOTE: In fact the metaclass solutions for Singletons (or any other patterns for that matter) are not class scoped solutions, but type scoped ones. It might take some time to wrap your head around that, if you come from a C++ background.
But does this look a bit cryptic? Well, I should say yes since it took some time for me to figure out what is happening here. Apparently, you don't need to take all that trouble to get it right. Here is the above solution re-written, but without the inner function and all that.
class SingletonMetaClass(type):
""" Singleton using metaclasses by overridingThe above solution is a re-write of Singleton4, but lesser cryptic and more readable.
the __init__ method, 2nd version. """
def my_new(cls, *args, **kwargs):
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance
def __init__(cls, name, bases, dct):
super(SingletonMetaClass, cls).__init__(name, bases, dct)
cls.instance = None
cls.__new__ = cls.my_new
class Singleton5(object):
__metaclass__ = SingletonMetaClass
Is that all you can do with metaclasses and the Singleton in Python? The answer is No. Looks like there is a much more elegant way of doing this using metaclasses. It is done by overriding
the __call__ method in the metaclass, instead of the __init__ method. This solution is the ASPN Python Cookbook Recipe #412551 by Daniel Brodie. I am just copying it here.
class SingletonMetaClass(type):
""" Singleton using metaclasses by overriding the __call__ method.Before I conclude, I should include one of the most ingenious methods of doing the Singleton in Python, created by Alex Martelli. This is the so-called Borg non-pattern. This and the concept of non-patterns is discussed in detail here.
Original code courtesy from ASPN Python Cookbook recipe number
412551 """
def __init__(self, *args):
type.__init__(self, *args)
self._instances = {}
def __call__(self, *args):
if not args in self._instances:
self._instances[args] = type.__call__(self, *args)
return self._instances[args]
class Singleton6(object):
__metaclass__ = SingletonMetaClass
The Borg is unique in that it re-defines the problem Singleton is trying to solve. Instead of trying to ensure that the unique instance maps to a unique memory location, Borg ensures that the state of the various instances are shared and hence the various instances are in effect, the same. In other words, Borg focuses on object equivalence instead of object identity which is what Singleton offers.
Here is the Borg non-pattern, applied to the Singleton problem.
class Singleton7:
""" Alex martelli's Borg non-pattern. Not exactlyHere is the Borg non-pattern in action.
a singleton. Focus on equivalence of state rather than the
uniqueness of the Singleton instance """
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
Well, according to me, that is the most elegant one. Instead of solving the Singleton problem directly, it solves the problem that the Singleton is trying to solve, which is that of ensurings1=Singleton7()
# Set s1's state
s1.x = 100
print s1.__dict__
s2=Singleton7()
print s2.__dict__
s3=Singleton7()
print s3.__dict__
{'x': 100}
{'x': 100}
{'x': 100}
unique state across instances.
That is the end of my first post on Python and Design patterns. I hope to add more in the future, on the rest of the Gang of four Design Patterns.
Tuesday, August 02, 2005
Freezope is down
Freezope is down since yesterday. I was planning to make the 1.4.5 beta 1 release of HarvestMan today, but it looks like I cannot provide any updates on the HarvestMan site till freezope comes back up.
I might still make the files public at BerliOS and make the freshmeat and PyPI announcement today or tomorrow. There won't be any update at the site of course, but that can wait till freezope is back on track.
I might still make the files public at BerliOS and make the freshmeat and PyPI announcement today or tomorrow. There won't be any update at the site of course, but that can wait till freezope is back on track.
Wednesday, July 27, 2005
Apple? - Not on BillG's map
The latest offering from Redmond, MSN Virtual Earth beta is making the buzz for all the wrong reasons.
The Register reports that Apple HQ is nowhere to be found on MSN virtual earth. Apparently, MSN virtual earth has chosen to rebuild the World Trade Center towers too. Looks like the images Microsoft used is way too old.
Clearly, MS has pushed a hastily built software that has not undergone enough testing to make even to alpha stage, as a beta. The stunt is an apparent knee-jerk reaction to the buzz Google is making with its map service and Google Earth. This is supposed to be a competition to Google Earth, but clearly the features or stability to be a credible competitor are missing. This is when Google has upped its sights and started to map the moon!
My gripes about MSN Virtual Earth.
1. The images are way too old. The image quality and resolution is way lacking when compared to Google Earth. Since MS seems to have used U.S.G.S archives which are 10 years old, this is to be expected. But hey, we are talking about one of the richest companies in the world. Surely they could have done better.
2. The map is not as responsive to panning as Google maps. The tiling does not work very well, often leaving large patches of yellow rectangles without resolving the underlying geography. Also, the maps load pretty slowly and often you are left staring at blank patches of screen for seconds before the tiled images start loading. You almost end up thinking that the server has stopped responding. Yeah, I am on 256 kbps broadband, not dial-up :-) .
3. Screws up Firefox. After some panning and zooming, some buttons on Firefox (I am using 1.0.5) does not work well. And hey, why does it disable my "Back" button?
4. "Locate me" feature. I don't understand the actual need for such a feature except for generating buzz. The feature requires ActiveX which I think is one-step backwards for Microsoft for making this technology work with other browsers such as Firefox. The I.P address based location does not work very well. It located me in Bombay, India whereas I am actually in Bangalore.
5. Sticky mouse buttons: The left mouse click tends to "stick" on the page. So even after I release the mouse button and move the mouse, the image keeps panning. I have to click the left mouse button once more to "release" the "stickiness".
6. The stupid compass: Why do you need that? It just eats up space on the map and is really not very useful.
7. Interface quality: The interface seems hastily thrown together and not well thought out. It is counter-intuitive if you are used to Google maps since the search and address box is on the left rather than on the right as in Google. To me, right position seems more intuitive and user friendly since that means the map does not overlap on the right edge of my screen and looks solid. Also, MS seemed to have not done much research on how surrounding colors affect the users ability to effectively view the maps. The choice of colors and color contrast leaves a lot to be desired. If I were the engineer, I would replace that stupid blue overlay on the top with something that increases the contrast and is less straining on the eyes.
The pluses.
1. It occupies more screen area than Google maps. Clearly this is an advantage.
2. Seems to show more places in India than Google. Hell, it even shows some obscure towns and villages in Kerala, my native state. Google maps suck in that respect.
Conclusion: Not enough reasons for anyone to switch to Virtual Earth if he/she is already using Google earth/google maps. I think MS should apologize, rename the release to MSN VE alpha, work on it a bit more and release a much better, user-friendly and fast beta. Then I would agree that it is competition.
The Register reports that Apple HQ is nowhere to be found on MSN virtual earth. Apparently, MSN virtual earth has chosen to rebuild the World Trade Center towers too. Looks like the images Microsoft used is way too old.
Clearly, MS has pushed a hastily built software that has not undergone enough testing to make even to alpha stage, as a beta. The stunt is an apparent knee-jerk reaction to the buzz Google is making with its map service and Google Earth. This is supposed to be a competition to Google Earth, but clearly the features or stability to be a credible competitor are missing. This is when Google has upped its sights and started to map the moon!
My gripes about MSN Virtual Earth.
1. The images are way too old. The image quality and resolution is way lacking when compared to Google Earth. Since MS seems to have used U.S.G.S archives which are 10 years old, this is to be expected. But hey, we are talking about one of the richest companies in the world. Surely they could have done better.
2. The map is not as responsive to panning as Google maps. The tiling does not work very well, often leaving large patches of yellow rectangles without resolving the underlying geography. Also, the maps load pretty slowly and often you are left staring at blank patches of screen for seconds before the tiled images start loading. You almost end up thinking that the server has stopped responding. Yeah, I am on 256 kbps broadband, not dial-up :-) .
3. Screws up Firefox. After some panning and zooming, some buttons on Firefox (I am using 1.0.5) does not work well. And hey, why does it disable my "Back" button?
4. "Locate me" feature. I don't understand the actual need for such a feature except for generating buzz. The feature requires ActiveX which I think is one-step backwards for Microsoft for making this technology work with other browsers such as Firefox. The I.P address based location does not work very well. It located me in Bombay, India whereas I am actually in Bangalore.
5. Sticky mouse buttons: The left mouse click tends to "stick" on the page. So even after I release the mouse button and move the mouse, the image keeps panning. I have to click the left mouse button once more to "release" the "stickiness".
6. The stupid compass: Why do you need that? It just eats up space on the map and is really not very useful.
7. Interface quality: The interface seems hastily thrown together and not well thought out. It is counter-intuitive if you are used to Google maps since the search and address box is on the left rather than on the right as in Google. To me, right position seems more intuitive and user friendly since that means the map does not overlap on the right edge of my screen and looks solid. Also, MS seemed to have not done much research on how surrounding colors affect the users ability to effectively view the maps. The choice of colors and color contrast leaves a lot to be desired. If I were the engineer, I would replace that stupid blue overlay on the top with something that increases the contrast and is less straining on the eyes.
The pluses.
1. It occupies more screen area than Google maps. Clearly this is an advantage.
2. Seems to show more places in India than Google. Hell, it even shows some obscure towns and villages in Kerala, my native state. Google maps suck in that respect.
Conclusion: Not enough reasons for anyone to switch to Virtual Earth if he/she is already using Google earth/google maps. I think MS should apologize, rename the release to MSN VE alpha, work on it a bit more and release a much better, user-friendly and fast beta. Then I would agree that it is competition.
Saturday, July 23, 2005
Apple - An "i" for Innovation
iMac, iPod, iTunes - Popular brand names from a company known for its innovative products - Apple.
Now it has become official. In a Businessweek poll conducted among top executives from across the planet, Apple won the top slot for the most innovative company, with nearly 25% of the votes.
3M came second with nearly 12% of the votes, followed by Microsoft. Big Blue came a distant 7th after GE, Sony and Dell in that order.
Another feather in the innovative cap of CEO Steve Jobs.
Way to go Apple! Well done.
Now it has become official. In a Businessweek poll conducted among top executives from across the planet, Apple won the top slot for the most innovative company, with nearly 25% of the votes.
3M came second with nearly 12% of the votes, followed by Microsoft. Big Blue came a distant 7th after GE, Sony and Dell in that order.
Another feather in the innovative cap of CEO Steve Jobs.
Way to go Apple! Well done.
Hasta-la-Vista Windows!
Microsoft has re-christened its unborn poster child,
"Windows Longhorn" as "Windows Vista".
The marketing speak from Microsoft is that Windows Vista brings clarity to the connected world.
Personally, I think "Longhorn" was much better than "Vista" though it gave rise to subtle bovine references.
It will be no wonder if the naming turns out to be prescient and puts an end to Microsoft monopoly on the desktop, considering the rate at which features are getting axed from Longhorn aka Vista.
(Also read Steven J Vaughan Nichols' article on axing of Monad from Longhorn).
Is it time yet to say "Hasta-la-Vista Microsoft"? Let us wait and watch.
"Windows Longhorn" as "Windows Vista".
The marketing speak from Microsoft is that Windows Vista brings clarity to the connected world.
Personally, I think "Longhorn" was much better than "Vista" though it gave rise to subtle bovine references.
It will be no wonder if the naming turns out to be prescient and puts an end to Microsoft monopoly on the desktop, considering the rate at which features are getting axed from Longhorn aka Vista.
(Also read Steven J Vaughan Nichols' article on axing of Monad from Longhorn).
Is it time yet to say "Hasta-la-Vista Microsoft"? Let us wait and watch.
Monday, July 11, 2005
Longhorn Screenshots
Some screenshots of Longhorn have made it to a few blogs today. The news has also hit Slashdot. The winbeta.org site claims that this cannot be part of Longhorn Beta1, since the build number 5203 is not part of the Beta1 builds, which means it must be a leak from inside Microsoft.
The screenshots show a system which looks like a modified Windows XP with transparency and some other eye candy and a black theme. Nothing great when you consider that this system was supposedly 5 years in the making.
Microsoft cannot even do a copy job well. ;-)
Btw, I have added a few screenshots right here with the new photo feature of blogger.
Originals, courtesy xerocool.






The screenshots show a system which looks like a modified Windows XP with transparency and some other eye candy and a black theme. Nothing great when you consider that this system was supposedly 5 years in the making.
Microsoft cannot even do a copy job well. ;-)
Btw, I have added a few screenshots right here with the new photo feature of blogger.
Originals, courtesy xerocool.






Thursday, July 07, 2005
Europe says no to software patents
On July 6, the European parliament decided
by a large majority to reject the software patents directive.
This is great news for the FOSS community and open software
innovation in general. The patent directive was a looming threat for
software innovation in Europe, since it threatened to bring
into legislation, the US style practice of supporting patents
in software and business processes.
Redhat and Sun Microsystems worked with the
Foundation for a Free Information Infrastructure (FFII) to bring about this victory for those who value free and
open source software.
This should be a blow to Microsoft's business aspirations in Europe
and should help the Linux community.
by a large majority to reject the software patents directive.
This is great news for the FOSS community and open software
innovation in general. The patent directive was a looming threat for
software innovation in Europe, since it threatened to bring
into legislation, the US style practice of supporting patents
in software and business processes.
Redhat and Sun Microsystems worked with the
Foundation for a Free Information Infrastructure (FFII) to bring about this victory for those who value free and
open source software.
This should be a blow to Microsoft's business aspirations in Europe
and should help the Linux community.
Thursday, June 02, 2005
Guido did not create Python!
Well, you and me know that the title of this post is not true, but that is not what Mark Joseph Edwards would have us believe, given a chance.
In an article on Windows IT Pro Magazine introducing IronPython, he writes...
"You might have heard of Python, a popular and powerful cross-platform open-source programming language. Python, which is the creation of Jim Hugunin..."
I am not sure how many Pythonistas read Windows IT Pro, but I won't suggest it to someone who is new to Python, for reasons that are very clear. :-)
In an article on Windows IT Pro Magazine introducing IronPython, he writes...
"You might have heard of Python, a popular and powerful cross-platform open-source programming language. Python, which is the creation of Jim Hugunin..."
I am not sure how many Pythonistas read Windows IT Pro, but I won't suggest it to someone who is new to Python, for reasons that are very clear. :-)
IronPython, Boo and Smallscript
What do the terms IronPython,Boo and Smallscript have in common?
Well, before you type an entry into dictionary.com, let me tell
you that these are all relatively new language implementations for the CLR provided by the .NET platform.
IronPython is a supposedly faster implementation of CPython for .NET, which allows you to extend Python on .NET with C# and other .NET static languages.
Boo is a new, statically typed OO language for .NET with a Python-inspired syntax, but without it's dynamic typing overhead. Boo claims to be as fast as C# or VB.net on the .NET platform.
Smallscript provides the new S# language, a modular re-design of the Smalltalk language, designed to work with .NET and the AOS common language platform which supports dynamic languages.
IronPython had initially hogged the limelight, but after the
creator Jim Hugunin was appointed by Microsoft, it has become something of a one-man-show instead of becoming a true peer reviewed open source project.
Well, before you type an entry into dictionary.com, let me tell
you that these are all relatively new language implementations for the CLR provided by the .NET platform.
IronPython is a supposedly faster implementation of CPython for .NET, which allows you to extend Python on .NET with C# and other .NET static languages.
Boo is a new, statically typed OO language for .NET with a Python-inspired syntax, but without it's dynamic typing overhead. Boo claims to be as fast as C# or VB.net on the .NET platform.
Smallscript provides the new S# language, a modular re-design of the Smalltalk language, designed to work with .NET and the AOS common language platform which supports dynamic languages.
IronPython had initially hogged the limelight, but after the
creator Jim Hugunin was appointed by Microsoft, it has become something of a one-man-show instead of becoming a true peer reviewed open source project.
Wednesday, May 04, 2005
Best Essays on Software in 2004
I found a post on the best essays on software in 2004 at Max Ischenko's blog today and felt that I should make a mention of it in my blog.
The discussion started in the popular Joel on software, when Joel asked his readers to post
essays which they consider are the best on software related topics in 2004..
Go to: Best essays on software in 2004.
The discussion started in the popular Joel on software, when Joel asked his readers to post
essays which they consider are the best on software related topics in 2004..
Go to: Best essays on software in 2004.
Tuesday, May 03, 2005
Logix Talk
I should be blogging more often, but some how I have to put a lot of mental effort to get my ideas into words most of the time, which makes me a pathetic blogger ;-)
Well, I had a nice trip to Norway last week where I met with some cool folks at Agder University College with a vision to create accessibility metrics in order to improve European web sites. I am involved in the project because they are using HarvestMan web crawler, as part of the crawler component in the project. I have to blog about it separately, since there is a lot to write. However, here are some quick links:
Hey, I am diverting... This post is about the upcoming talk on Logix, a multi-language programming system developed by Tom Locke. He says has "outsourced himself" to Bangalore for developing and popularising Logix here. The idea is to allow the Python developer to create his own languages and schema
by using a meta-language model.
I think it is ideally suited for tasks such as meta-modeling which is one important aspect of EIAO. Perhaps the EIAO folks will look into Logix for developing some of their metamodeling components. It could also be used for developing software modeling techniques similar to UML, specific to Python.
The talk is on May 7th at the regular venue for BangPypers meetings, i.e at ThoughtWorks, Diamond District. For more information see my post at BangPypers
regarding the talk here. For marking your calendars, go here.
BangPypers is turning out to be an important forum for presenting Python related
technologies and reaching out to the Python community here. The Logix talk is yet another achievement which shows the popularity of BangPypers.
If you are in Bangalore on May 7th and you like the idea of multi-language programming, it might be a good idea to drop in at ThoughtWorks by 5.00 pm to attend Tom's talk.
Well, I had a nice trip to Norway last week where I met with some cool folks at Agder University College with a vision to create accessibility metrics in order to improve European web sites. I am involved in the project because they are using HarvestMan web crawler, as part of the crawler component in the project. I have to blog about it separately, since there is a lot to write. However, here are some quick links:
- Web
accessibility and meta-modeling workshop on 15th April 2005 - European Internet Accessibility Observatory Home Page
Hey, I am diverting... This post is about the upcoming talk on Logix, a multi-language programming system developed by Tom Locke. He says has "outsourced himself" to Bangalore for developing and popularising Logix here. The idea is to allow the Python developer to create his own languages and schema
by using a meta-language model.
I think it is ideally suited for tasks such as meta-modeling which is one important aspect of EIAO. Perhaps the EIAO folks will look into Logix for developing some of their metamodeling components. It could also be used for developing software modeling techniques similar to UML, specific to Python.
The talk is on May 7th at the regular venue for BangPypers meetings, i.e at ThoughtWorks, Diamond District. For more information see my post at BangPypers
regarding the talk here. For marking your calendars, go here.
BangPypers is turning out to be an important forum for presenting Python related
technologies and reaching out to the Python community here. The Logix talk is yet another achievement which shows the popularity of BangPypers.
If you are in Bangalore on May 7th and you like the idea of multi-language programming, it might be a good idea to drop in at ThoughtWorks by 5.00 pm to attend Tom's talk.
Sunday, March 20, 2005
Yahoooooooooo!
Yahoo! completed 10 years on 3rd March.
Yahoo!, which started off as a search-engine has now diversified into many areas, so that it is not perceived any more as specialising in any single vertical. Meanwhile Google has beaten Yahoo! as the top search engine.
Yahoo! is remarkable in that it has survived the dotcom bubble and the meltdown of the Internet during early 2000. When many search engines and web startups such as Altavista, Excite, Lycos, Go.com, Snap etc fell down by the wayside, Yahoo! is still going strong with a 50 billion $ market cap.
Google has been the leader in taking new technologies to the market, with Yahoo! being forced to follow-up. The new Yahoo! search has borrowed a lot of concepts from the Google, not just the look n feel. Google has been the pioneer in broadening the search market from simple keyword/directory search to specific search verticals such as newsgroup search, image search, catalog search, product search, scholar search, news search, video search etc.
However Yahoo! has improved their search tremendously since they parted ways with Google last year. Though forced to do catch-up, Yahoo! seems to be doing a good job of it now a days, with Microsoft tagging along.
So who will win the search war ultimately? One yer back I would have confidently said "Google" (Yahoo! who?) but not anymore. The field is wide open once more.
Yahoo!, which started off as a search-engine has now diversified into many areas, so that it is not perceived any more as specialising in any single vertical. Meanwhile Google has beaten Yahoo! as the top search engine.
Yahoo! is remarkable in that it has survived the dotcom bubble and the meltdown of the Internet during early 2000. When many search engines and web startups such as Altavista, Excite, Lycos, Go.com, Snap etc fell down by the wayside, Yahoo! is still going strong with a 50 billion $ market cap.
Google has been the leader in taking new technologies to the market, with Yahoo! being forced to follow-up. The new Yahoo! search has borrowed a lot of concepts from the Google, not just the look n feel. Google has been the pioneer in broadening the search market from simple keyword/directory search to specific search verticals such as newsgroup search, image search, catalog search, product search, scholar search, news search, video search etc.
However Yahoo! has improved their search tremendously since they parted ways with Google last year. Though forced to do catch-up, Yahoo! seems to be doing a good job of it now a days, with Microsoft tagging along.
So who will win the search war ultimately? One yer back I would have confidently said "Google" (Yahoo! who?) but not anymore. The field is wide open once more.
Sunday, March 13, 2005
Microsoft gets "Groovy"
Microsoft recently acquired Groove Networks and Ray Ozzie in one shot. Ozzie will become one of the three CTOs at Microsoft, taking care of collaborative software, for the evil empire.
So what is the big deal? From Microsoft point of view, it is another one of the acquisitions which appears to give an "edge" to its products. Groove is basically a peer to peer computing system over a secure internet connection which allows people to share documents over a network, creating a kind of virtual office. Microsoft has been an early investor in Groove, providing it funding as early as 2001. Ozzie has also aligned himself nicely with Microsoft since his days as the chief architect of Lotus Notes at IBM. Thus the acquisition is not a big surprise at all.
Ozzie has been successful in aligning his software ideas with the biggies in the game, since 1984. He worked for Lotus in developing Lotus Notes and later on continued his work at IBM, when IBM acquired Lotus. He left Lotus and IBM to start Groove in 1997 and aligned his work with Microsoft. Bill Gates, who is not too lavish in encomiums, have praised Ozzie as one of the best programmers in the universe. However tall that might sound to be, one has to accept that Ozzie is a shrewd guy with his software, and knows to position himself correctly in the market.
Ozzie is surely one of the most influential programmers of the 90s and can be credited with inventing the groupware class of software products, along with pioneers such as Mitch Kapor. It will be interesting to see how his ideas and vision will work at Microsoft, and whether the addition of Ozzie as CTO, will improve the technical quality of Microsoft products in areas where they lack sorely such as security. Ozzie has had a lot of success as an independent programmer and team leader, but it remains to be seen how that experience helps in shaping the future of collaborative software at a company of the size of Microsoft.
So what is the big deal? From Microsoft point of view, it is another one of the acquisitions which appears to give an "edge" to its products. Groove is basically a peer to peer computing system over a secure internet connection which allows people to share documents over a network, creating a kind of virtual office. Microsoft has been an early investor in Groove, providing it funding as early as 2001. Ozzie has also aligned himself nicely with Microsoft since his days as the chief architect of Lotus Notes at IBM. Thus the acquisition is not a big surprise at all.
Ozzie has been successful in aligning his software ideas with the biggies in the game, since 1984. He worked for Lotus in developing Lotus Notes and later on continued his work at IBM, when IBM acquired Lotus. He left Lotus and IBM to start Groove in 1997 and aligned his work with Microsoft. Bill Gates, who is not too lavish in encomiums, have praised Ozzie as one of the best programmers in the universe. However tall that might sound to be, one has to accept that Ozzie is a shrewd guy with his software, and knows to position himself correctly in the market.
Ozzie is surely one of the most influential programmers of the 90s and can be credited with inventing the groupware class of software products, along with pioneers such as Mitch Kapor. It will be interesting to see how his ideas and vision will work at Microsoft, and whether the addition of Ozzie as CTO, will improve the technical quality of Microsoft products in areas where they lack sorely such as security. Ozzie has had a lot of success as an independent programmer and team leader, but it remains to be seen how that experience helps in shaping the future of collaborative software at a company of the size of Microsoft.
Saturday, March 12, 2005
Economics of the Bazaar
If you have been associated to opensource software in an intimate way, say as a programmer, business developer or the marketing/sales person, you must have asked yourself this question at some point.
"How can opensource software be a viable business? How do you make money by creating software whose source code is free?"
Bruce Perens, one of the founders of the OSI (Open Source Initiative) has some interesint insights on this. According to him, open source reduces the costs for your business IT infrastructure so that you save money which can be used for creating software that differentiates your business from others. In other words, you can spend your money on researching and developing your actual technology instead of spending it on buying up software infrastructure. The money you save becomes additional profit or can be spent on other areas where it is required.
Well I never looked at open source from that point of view. I think this comes from the my programmer's mindset where the focus is immediately set on the free and available source code rather than thinking about the economics behind it.
Bruce's article contrasts the open source model with other software development models and points out the benefits of the open source economy. The complete article can be found here. A must read for any open source afficianado.
"How can opensource software be a viable business? How do you make money by creating software whose source code is free?"
Bruce Perens, one of the founders of the OSI (Open Source Initiative) has some interesint insights on this. According to him, open source reduces the costs for your business IT infrastructure so that you save money which can be used for creating software that differentiates your business from others. In other words, you can spend your money on researching and developing your actual technology instead of spending it on buying up software infrastructure. The money you save becomes additional profit or can be spent on other areas where it is required.
Well I never looked at open source from that point of view. I think this comes from the my programmer's mindset where the focus is immediately set on the free and available source code rather than thinking about the economics behind it.
Bruce's article contrasts the open source model with other software development models and points out the benefits of the open source economy. The complete article can be found here. A must read for any open source afficianado.
Friday, March 11, 2005
Daily Python Url!
I am a regular reader of Daily Python Url which gives a snapshot of the daily happenings in the Python universe. It is powered by Blogger.
For the last week, the blog has been almost dead. I was getting the same old page, last posted on 3rd March. Today I came to know the reason :-)
Well guys, shrug off your laziness and get a fresh start! I think that the Daily Python Url is too important for the Python community to be given such a cold shoulder!
For the last week, the blog has been almost dead. I was getting the same old page, last posted on 3rd March. Today I came to know the reason :-)
2005-03-10
(no posts? some editors are on vacation, the rest of us are just lazy. and blogger sucks. postings will resume shortly. stay tuned.)
Well guys, shrug off your laziness and get a fresh start! I think that the Daily Python Url is too important for the Python community to be given such a cold shoulder!
Monday, March 07, 2005
IBM Redux
I just finished reading the book "IBM Redux" by Doug Garr. The book is all about the business turn around by IBM in the last decade under the leadership of the previous CEO, Lou Gerstner.
The book is a great read on how corporations behave and gives many insights into how a gigantic corporation like IBM works. It is quite eloquent in its praise for Gerstner, though his not-so-amiable personality and ego-centric nature is pointed out as personal drawbacks. However, the book lays no doubt on who is responsible for the bounce back by IBM from the bottomless quagmire it found itself in the beginning of the 90s.
It also has a few interesting anecdotes such as IBM's role in the 1994 Atlanta Olympics and the PR disaster which ensued. A few pages are also devoted to the much hyped Garry Kasparov - Deep Blue face-off in 1997.
The book follows a rather chronological style, starting from the events that lead to Gerstner's heading IBM, and ending with the peak of Gerstner's rule at 1999, when he is sitting pretty at the top and is percieved widely as the saviour of IBM. The author follows the style of chipping in with a few anecdotes and history pieces here and there which sometimes is against the flow of reading. However, he cannot be charged on missing out a single piece of event which impacted the computer & software technology landscape during 1993-1999, where IBM played a part, either as the vanquisher or as the vanquished (Remember OS/2 Anyone?).
All in all a good read and a book recommended to anyone interested in the history of technology.
Some links worth reading about Lou Gerstner and his life.
http://news.com.com/2100-1001-828095.html
http://www.forbes.com/2002/11/11/cx_ld_1112gerstner.html
http://www.thecarlylegroup.com/eng/team/l5-team861.html
http://www.britannica.com/eb/article?tocId=9114982
The book is a great read on how corporations behave and gives many insights into how a gigantic corporation like IBM works. It is quite eloquent in its praise for Gerstner, though his not-so-amiable personality and ego-centric nature is pointed out as personal drawbacks. However, the book lays no doubt on who is responsible for the bounce back by IBM from the bottomless quagmire it found itself in the beginning of the 90s.
It also has a few interesting anecdotes such as IBM's role in the 1994 Atlanta Olympics and the PR disaster which ensued. A few pages are also devoted to the much hyped Garry Kasparov - Deep Blue face-off in 1997.
The book follows a rather chronological style, starting from the events that lead to Gerstner's heading IBM, and ending with the peak of Gerstner's rule at 1999, when he is sitting pretty at the top and is percieved widely as the saviour of IBM. The author follows the style of chipping in with a few anecdotes and history pieces here and there which sometimes is against the flow of reading. However, he cannot be charged on missing out a single piece of event which impacted the computer & software technology landscape during 1993-1999, where IBM played a part, either as the vanquisher or as the vanquished (Remember OS/2 Anyone?).
All in all a good read and a book recommended to anyone interested in the history of technology.
Some links worth reading about Lou Gerstner and his life.
http://news.com.com/2100-1001-828095.html
http://www.forbes.com/2002/11/11/cx_ld_1112gerstner.html
http://www.thecarlylegroup.com/eng/team/l5-team861.html
http://www.britannica.com/eb/article?tocId=9114982
Saturday, March 05, 2005
The BangPypers
First of all, the introduction -> The BangPypers are a group of Python enthusiasts in the city of Bangalore where I live.
How did BangPypers come into being? It all started on Dec 27 2004, when I was browsing the Daily Python Url blog and saw a post mentioning that "Chennai Python Meetup is on...". I followed the link and found out about the Meetup.com site. I was surprised to learn that there were already many Python meetup groups at the site http://python.meetup.com. Well I mused that if the Chennaites can come up with a Python meetup group, the Bangaloreans can come up with one too and do it in a better manner, considering that Bangalore is the tech hub of India.
I scourged the python meetup site for any Bangalore Python meetup groups. There was one, a dysfunctional group that called themselves "Bengalru Python meetup group" with 5 members and looking for an organizer. I initially joined them and posted a message.
The next day, I checked the site. There was no reply for my post and I realized that the group was quite dead. Bengaluru might be the original name of Bangalore in Kannada, but it is of course more popular and better known as "Bangalore" itself.
I created the "Bangalore Python meetup group" on Dec 28. The first few members to join were my friends who I invited - Anish Damodaran, Indrajith. I also sent an invitation to Premshree Pillai and posted in comp.lang.python about the news.
There was good response over the many days that followed with 16 members joining till Jan 7 2005. Swaroop published about the group in his blog on Jan 7th and the response increased, which shows the popularity of his blog. I have captured some interesting statistics on this in a post to the BangPypers group.
We had the first meeting at Ebony Restaurant, Barton Center, M.G Road on Jan 22nd. 10 guys including me attended. We decided to form the Yahoo! group and also a website. The idea for Project Uraga was also born. It was a fun night, though I had some personal expenditure which I expect the group to make up over time. :-)
I created the Y! group with the name "BangPypers" on 24 Jan 2005. We have a lot of activity in the group and it still must be one of the Yahoo! groups with the highest traffic. The group currently has 75 members most of who are in Bangalore. There are a sizeable number of non-Bangaloreans too. The first month had 101 messages, Feb had a whopping 364 messages! March has just started and we already have 25 messages over the last 4 days.
We had the first "technical meetup" of the group at ThoughtWorks on Feb 19 2005. You can read all about it here .
A website at http://www.bangpypers.org is also registered. Many thanks to Ramdas S of Developer IQ for doing the same. The website work has not started off however. We also have a Google group of the same name. All posts to Y! BangPypers gets mirrored to the Google BangPypers.
If you love Python and you are a Bangalorean, you should join BangPypers :-) . Well, you are invited to join even if you are a non-Bangalorean. BangPypers is the second biggest Python meetup group in the world, so we are on the world-map of Python, just like Bangalore is on the world-map for technology.
How did BangPypers come into being? It all started on Dec 27 2004, when I was browsing the Daily Python Url blog and saw a post mentioning that "Chennai Python Meetup is on...". I followed the link and found out about the Meetup.com site. I was surprised to learn that there were already many Python meetup groups at the site http://python.meetup.com. Well I mused that if the Chennaites can come up with a Python meetup group, the Bangaloreans can come up with one too and do it in a better manner, considering that Bangalore is the tech hub of India.
I scourged the python meetup site for any Bangalore Python meetup groups. There was one, a dysfunctional group that called themselves "Bengalru Python meetup group" with 5 members and looking for an organizer. I initially joined them and posted a message.
The next day, I checked the site. There was no reply for my post and I realized that the group was quite dead. Bengaluru might be the original name of Bangalore in Kannada, but it is of course more popular and better known as "Bangalore" itself.
I created the "Bangalore Python meetup group" on Dec 28. The first few members to join were my friends who I invited - Anish Damodaran, Indrajith. I also sent an invitation to Premshree Pillai and posted in comp.lang.python about the news.
There was good response over the many days that followed with 16 members joining till Jan 7 2005. Swaroop published about the group in his blog on Jan 7th and the response increased, which shows the popularity of his blog. I have captured some interesting statistics on this in a post to the BangPypers group.
We had the first meeting at Ebony Restaurant, Barton Center, M.G Road on Jan 22nd. 10 guys including me attended. We decided to form the Yahoo! group and also a website. The idea for Project Uraga was also born. It was a fun night, though I had some personal expenditure which I expect the group to make up over time. :-)
I created the Y! group with the name "BangPypers" on 24 Jan 2005. We have a lot of activity in the group and it still must be one of the Yahoo! groups with the highest traffic. The group currently has 75 members most of who are in Bangalore. There are a sizeable number of non-Bangaloreans too. The first month had 101 messages, Feb had a whopping 364 messages! March has just started and we already have 25 messages over the last 4 days.
We had the first "technical meetup" of the group at ThoughtWorks on Feb 19 2005. You can read all about it here .
A website at http://www.bangpypers.org is also registered. Many thanks to Ramdas S of Developer IQ for doing the same. The website work has not started off however. We also have a Google group of the same name. All posts to Y! BangPypers gets mirrored to the Google BangPypers.
If you love Python and you are a Bangalorean, you should join BangPypers :-) . Well, you are invited to join even if you are a non-Bangalorean. BangPypers is the second biggest Python meetup group in the world, so we are on the world-map of Python, just like Bangalore is on the world-map for technology.
My Blog is up!
After trying to set up a number of blogs on many different sites, I have finally found time
and patience to create a blog of my own... hip hip hooray!
The setup is not complete. You can find details about me and my work once I set it up properly.
and patience to create a blog of my own... hip hip hooray!
The setup is not complete. You can find details about me and my work once I set it up properly.
Subscribe to:
Posts (Atom)
