I released version 0.7 of the SimplyVersioned plugin this evening in response to some feedback from Josh Susser that I was making his code look bad. Not being one to tolerate such things I paid to have him silenced took another look. Indeed there was something ugly.
I had included a method without_versioning that went like this:
def without_versioning( &block )
versioning_was_enabled = self.versioning_enabled?
self.versioning_enabled = false
begin
&block.call( self )
ensure
self.versioning_enabled = versioning_was_enabled
end
end
If you wanted to save a model without generating a new version it was simple:
thing.without_versioning { |t| t.save }
but what about a conditional?
if some_expr
t.save
else
t.without_versioning { |t| t.save }
end
which is a bit ugly. So we changed without_versioning/1 to with_versioning/2 and jimmied around with it a bit so that you can now call:
t.with_versioning( some_expr ) { |t| t.save }
and the result of the evaluation of some_expr determines if a version is saved. But Josh also pointed out to me that this was a good opportunity to use the Ruby Symbol#to_proc hack to tidy it even further and we end up with.
t.with_versioning( some_expr, &:save )
Which is very neat I think. I've been a bit suspicious of the to_proc hack up to now but examples like this are really turning me around. And thanks Josh for letting me know my code was bad so that I could fix it ;-)
In addition I have released another plugin called Enhanced Acts As State Machine which adds state awareness to ActiveRecords find method so that you can do stuff like:
Widget.find( :all, :state => { :is => [:worn,:rusty] }, :conditions => 'age < 5' )
It's just a very small enhancement but I find it enhanced the clarity of my state using code. Check out the README for more details.
There is a new contender to the crown called Blekko which is by the way a very cool name, like a detergent from the 1950's ;-)
Unlike PowerSet and Cuill I think they've cottoned on to the idea that "providing better search hits" is the wrong game to be in and not the way to attack Google:
Google was built to index a web that no longer exists... a web where people still engaged in social linking behavior, for one thing. --- [Rick Skrenta]
My guess, based on my vast storehouse of search knowledge & experience, is that PowerSet and Cuill will - if they survive long enough - be absorbed by Google (or one of the other existing search players) for whatever technical enhancements they've come up with. Cuill seem particularly designed for acquisition since, it is claimed, that they emphasize reducing the costs of indexing.
Mahalo, despite everything that is wrong about it (and that's just about everything), seems to me, nevertheless, to be point at what will change the game: synthesis.
The fractal nature of the web means that it is, as time goes on, less and less likely that any page, or even a series of interlinked pages, is going to be "the answer to your query." So that the goal of "finding the right page" is not even the right starting point.
What is needed is an engine that can synthesize, from the store of information available, answers to your questions that take into account your need, your experience, and your bias (conscious and unconscious). That's a pretty tall order but I think that's the territory that search will be fought on in five to ten years time.
The problem with Mahalo, and the reason it will be a footnote, is that it uses human editors to synthesize a single viewpoint. You only have to look at how Wikipedia's crown has become tarnished in the last few years to realize that won't scale both because the web is too vast, and because a single viewpoint cannot be achieved on any topic of substance. At best Mahalo might survive, in limited and highly specialized domains.
I've no idea if Blekko is working to solve the problem of algorithmically synthesizing knowledge from the web in real-time but Skrenta hints that they may be trying something different:
Basically, trying to make algorithmic sense of the vastness of the web is a difficult but really interesting problem. So is tilting at the biggest brand on the web. It's all just plain fun, which ideally should be the point of working. ;) [Rick Skrenta](http://www.skrenta.com/2008/01/why_search.html)[]
Am I reading too much into the phrase "make algorithmic sense of the vastness of the web"?
Where I think Arrington may have it wrong is that Blekko won't be a company to watch in 2008. I'd be surprised, if they are doing something game changing, if they'll be a company to watch in 2009 either. Maybe in 2010.
That was supposed to be the year we went to Jupiter again so a better search engine isn't so much to ask, is it? ;-)