Archive for July, 2009

You are currently browsing the memamsa archives for July, 2009.


git init community

Late in February, at the Recent Changes Camp, I noticed some familiar faces and so walked into the Calagator Hacking session, hoping to spend a few hours learning and contributing to the code.

Alas, I was ill-equipped, lacking git. I had heard several people evangelize git, hold training sessions and in general rhapsodize about it. All the cool kids were using it. For several time and efficiency reasons, I had put off switching to git. Meanwhile, I was dealing with the practical annoyances, since many of my svn:externals were deserting to git repositories, forcing me to download tarballs.

Igal Koshevoy

So that day, with some help from some of the friendly Calagator folks, I got myself git. From there it was a short step to using github, and short time before I switched multiple client and project repositories to git.

As a result, my coding workflow has improved tremendously.

Sometimes, we need a nudge to stop putting things off and start doing something that improves our lives. And community meet-ups such as RCC, BarCamp, and OSBridge, are great at connecting and catalyzing people to do just that.

Thanks to all the great folks who infuse Portland with this community spirit.

Harmonious Hashing

Working in ActionScript and JavaScript, one gets used to getting and setting known Object properties using the dot-accessor.

var h = {}
h.foo = "bar";

For the lazy and the brave, the same can be accomplished in Ruby.

class Hash
  def method_missing(m, *args)
    if args.size > 0 
      self[m] = args.first
    elsif self.include?(m)
      self[m] 
    elsif self.include?(m.to_s)
      self[m.to_s]
    end  
  end
end

The newly assigned key is a Symbol, a desirable default.

Conversing with Video

I know several “conversationists”. I refer not to people who can make small-talk with anyone, anywhere about anything. The conversationists think of the Internet as being a vast infrastructure for conversations.

And truly, that’s how it all began. Literate, word-savvy graduate students interfacing with each other through text. Wielding the knives of satire and sarcasm while burning the ether with flame wars.

To a large extent, today’s bloggers and twitterers carry on this tradition, albeit with better business savvy and slightly larger egos. Many of them know the power of images and deploy them to great effect.

The Medium is the Message

The Medium is the Message

Clearly, there is a huge difference in impact between reading a comment on some nameless text-only forum (or worse, a rendering of a forum in one of your favorite client) vs reading it in a controlled space. Despite the atavistic tradition of feed readers, blogs reinforce weight and authority through a hundred and one subtleties around choice of domain, layout, theme, content focus as well as through stats widgets, comment areas and ancillary businesses. Read the rest of this entry »

Chrome OS

Google has tremendous amount of talent in terms of engineers and strategists. And in their 20% time they build pretty amazing stuff.

Over the years, speculation had built up on the Google desktop OS. (There is already a super-scalable server version, but that is not for general release I suppose).

Now it’s official. This is a great opportunity for those lucky OS engineers refactoring and building a clean, modern OS that matches today’s most common usage. Good luck.

I write this with mixed feeling because Google is working with several OEMs to build x86 and ARM versions. Unlike Linux, which piggybacked on existing computer infrastructure (and hence x86), Google will probably intervene aggressively to find the right price points and distribution channels. So, its the erstwhile rumored duopoly that Google is going after, not just an OS monopoly.

Let the marketing and turf wars begin.

AirDB – Credits & Inspirations

AirDB solved a pressing need in abstracting SQLite operations and thinking in terms of object behavior. I was able to design and build it quickly thanks to ideas and various bits, pieces and whole chunks of work that has been done by various people. 

Thanks to Jacob Wright for AIR ActiveRecord. His ideas and code on Inflection and Reflection have been useful and incorporated with due credit into AirDB.

Thanks to Christophe Coenrats for demonstrating how to use annotations and meta-data. 

AirDB of course is adapted to solve particular problems of interest, including support for explicit, incremental migrations (useful for AIR apps that update themselves) and chainable associations, and is available for others to build upon or use.