Scaling and Tools Diversity: Google vs. Facebook

Steve Yegge in one of his posts talks about Google’s policy of standardizing on the use of only a few programming languages. He mentions how he, as a guy interested in different languages, was at first annoyed by that fact, but later came to realize it was the only sensible way of building systems as scalable as theirs have to be.

In what seems to contradict that view, in Facebook’s recent discussion of the decisions they had to make when designing Facebook Chat, they mention choosing Erlang because, well, it was made to do distributed, realtime systems with… message passing. Can’t get a better fit for a Chat project than that.

To make that code interface with their existing codebase, they used Thrift, their free software “framework for scalable cross-language services development”, whose white paper begins with the strong remark:

“In our implementation of these services [Facebook], various programming lan-
guages have been selected to optimize for the right combination of performance, ease and speed of development, availability of existing libraries, etc. By and large, Facebook’s engineering culture has tended towards choosing the best tools and implementations available over standardizing on any one programming language and begrudgingly accepting its inherent limitations.

Now, of course Google and Facebook have very different needs (crawling, storing, rating and indexing the whole web on a regular basis must be a bit more challenging than showing user profiles — even if it’s showing many of them, many many times a day), and playing safe has surely worked out well for Google so far. But sometimes that requires reimplementing Ruby on Rails in Javascript just to suite a company requirement.

It’s good to see there is a place in the monster-traffic world for programming language enthusiasts :)

Making Gmail always use HTTPS without any Greasemonkey

It’s the stupidest solution, but I hadn’t thought of it before.

I had seen that the Better Gmail extension had this feature of making Gmail always run over HTTPS, but it also came with so much other stuff that I found it to be just too bloated, and kept wishing for a simpler solution (meanwhile exposing my privacy to all those sniffers out there — oh the danger!).

Of course, I could always replace “http” with “https” on the address bar, but it’s a pain doing that every time. If only I could set it to be always like that…

Wait a second: I always start Gmail as my home page. Always use Alt+Home when I want to go to it. Yes, people, I had this brilliant idea: why not just put the address with “HTTPS://” in the configs as my Home page?

And that I did. Now I’m a safe, happy Gmail user. No extensions, no glitchy Greasemonkey scripts. Just the ululating obvious.

Google Talk Gadget

I hadn’t heard about this, before randomly going to talk.google.com today. The Google Talk Gadget is a web client for GTalk, just like the one that sits inside Gmail, but a bit more complex and stand-alone.

I particularly loved the tabs for contacts and chats. And talk about intuitive: I tried Ctrl+Tab and it worked!! :-) [Ok, just found out now that it's only Tab]

I haven’t tested it yet, but apparently it even supports voice chat. And group chat.

The downside: it’s in Flash, not AJAX, so it might not work everywhere. And there are some missing features here and there, but they have my much-beloved (almost) one-click feedback feature, so you can do as I do and start swamping them with suggestions and complaints.

Posted in Uncategorized. Tags: , , , , , , . Leave a Comment »

Summer of Code All-nighters

After about a week of digging up stuff on Free Software projects, subscribing to a dozen mailing lists, emailing developers, reading documentation, waiting for feedback, thinking up proposals, twisting and changing them, confronting them wih my own limitations and interests, I finally gave birth to two applications for the Google Summer of Code, one for Ruby Central and the other for Eclipse. Below are the abstracts:

The Ruby Central application:

This project aims at allowing users to record normal usage on a website and then have a script generated that can reproduce such actions.

This script is generated in Ruby and can be changed and mixed with existing Ruby code to extend its behaviour, using regular Ruby variables, loop constructs, etc.

A parser is going to be built for Firefox logs of user-activity (extracted by existing free software extensions) with the ability to generate code for the browser-driving tool FireWatir.

The Eclipse application:

Ruby has a fast-growing community which has not yet settled for one particular
editor/IDE and still has ongoing debates on that topic. It has not found a home
yet.

The ability to change one’s surroundings and make it more confortable for daily
usage by implementing helpers appropriate to one’s specific needs is crucial in
having this feeling of acquaintance and familiarity with a tool.

Unfortunately, the barrier of entry into Eclipse plug-in development for Ruby
users is still pretty high, as few are as skilled in Java as they are in Ruby.

This project aims to bridge that gap by allowing Eclipse plug-ins (or a subset
of the possible ones) to be develop entirely in Ruby.

This last one was written on a rush and with almost no previous research so it’s not very well-finished. I’m open to any ideas and suggestions on either one.

Scooped by Google

I’m trying to start this good habit of going around writing software for no particular reason but for learning and personal pleasure. Not too easy though, given how lazy I am. I usually enjoy writing software but only do it on demand. Either course assignments or work. Since none of these deal with Ruby or Rails (yet), and I’m trying to get my hands dirty on those, I have to leave the couch.

The thing then, as people always say, is to find something that bothers you, something you want for yourself. A personal itch.

I’m a heavy browser user. Lots of tabs all the time on lots of subjects. Some frequent breadth-first-search on Wikipedia articles. The problem is that I use browsers all over. Especially now that my computer is momentarily dead (found the culprit already, waiting for replacement part), I have no fixed internet place. So I start digging up some subject and, before I get to the later tabs (there’s an endless supply of them!), I have to go and leave them unread. And next time I log in, it’s on another computer, and I can’t restore those tabs until I get back to the original computer.

So I thought “hmm… I mustn’t be the only one. This might be a nice idea for a pet project, a little app to synchronize closed tabs between computers, perhaps even expand it into some web-service with social whatever just to practice. Perhaps (my imagination was flying here) even make it a killer product for some niche and make money with it.”

Well, I got scooped. The need is gone. The itch has been scratched. And my laziness once again gets indulged. But hey, there’s the Bayesian Networks for Ruby project! More about that in some later post.

Posted in Uncategorized. Tags: , , , , , , . 1 Comment »

Joga.com not a phisher

Ok, this might look like I’ve been missing out on some obvious news out there (and, in fact, I am), but it was a great relief when I found out that Joga.com is indeed a product by Google (and Nike).

The smell of phishing came when I got a link from a friend, took a quick look at the front page, which looked like that of an ever-so-common flash game, and saw that GoogleAccount login box standing out from the rest, completely not blending with the rest of the page style.

After the relief, it’s still scary to think what damage a phishing like that could do, given the huge ammount of information we’ve been throwing into Google’s hands these days.

Posted in Uncategorized. Tags: , , , , , . 2 Comments »