Google 12th for “search” on Google

That cryptic title basically means that if you search for “search” on Google, the first result you get is for live.com. Surprising but what’s more so is that Google is 12th on the result list — coming after such giants as Search.org, Altavista and Netscape. Who uses those anyway and how come Google itself is doing so great for that?

Could it be that I’ve somehow demoted Google using the wiki features? Can anyone confirm that they’re getting the same (or similar) result?

“search” – Google Search.

Git Introduction

Difference between SVN and GIT

The usual answer: SVN is to GIT what revision control is to distributed versioning system. What in the crack pot is that supposed to mean? The answer is pretty simple: a revision control system keeps the whole revision meta-data in ‘one place’. A _distributed_ versioning system allows different developers/users/programmers/organizations create different repositories of their own and merge them to a central server as they see fit. They can even keep the changes to themselves (but that’s not the point of it). So, there you go. If you get code off Android’s git repo and make changes as you see fit. You can commit changes to your local repo, have revisions, do whatever and keep the changes to yourself. If Android was using SVN and you used that, you’d have to go through a lot of trouble trying to keep the changes to yourself while still using the revisions of Android team.

Some important concepts

Clone

When you clone a repo, you take the whole metadata of a remote git repository and store it locally. For example, when you get clone the Android repo from git, you get the meta-data of the whole source in a local repo. (You have to pull the changes to get the actual source, though.)

Commit

When you make a change, you can ‘commit’ the change and that change gets stored as a revision. A commit in git is recognized by a SHA-1 hash.

Branches

A branch is a specific sequence of commits. An example: The source code is at A, you make some changes and commit to B, then to C and then to D. Afterwards, you create a new branch, switch to this branch, make some changes and commit to P, make some more changes and commit to Q. The revision history would look like so:

                    P --- Q
                   /
A --- B --- C --- D

See why it’s called a ‘branch’?

Pull

A basic pull is simple. It gets the files from the remote git repo and puts them in the local repo. Things get messy when you’ve actually pulled once, made changes and committed them in the local repo. Let’s see how this goes: Taking the previous example of branch further: You cloned a repo at D. You made some changes and now, you’re at Q. However, while you were busy making changes upto Q, the rest of the world wasn’t asleep. They worked too and they got upto G. Of course, you didn’t tell them what you were doing. So, their repo looks like so:

A --- B --- C --- D --- E --- F --- G

Now, you’re in trouble because you have old copies of some files. You need to get to G without losing changes of Q. You ‘pull’ and git sees that you’ve made some changes and upates the repo to look like this:

                                      P' --- Q'
                                     /
A --- B --- C --- D --- E --- F --- G

Notice that P and Q are now P’ and Q’. That’s because P was based off D and P’ is branching off G. So, they’re not the same. Any-hoo, now you have the latest code _and_ your changes.

Oh, and read these two tutorials. They’re really good. They explain a lot of basic concepts. I’ll try to write more when I understand more of git.

You can see a wiki’fied version here.

Setting up Ubuntu

I’ve just finished setting up my Ubuntu desktop just the way I like it — uncluttered and usable. Here is a list of programs I’m currently using:

  1. Gnome-do:  A launcher like QuickSilver (mac) and Launchy (win)
  2. Avant-Window-Manager: A dock and very usable taskbar (plus all the awn-* extra packages)
  3. Stalonetray: A system tray replacement so that I can get rid of the gnome panels
  4. GDesklet for the analog clock

Here’s the script to get stalonetray to sit at the top of the screen and look nice and transparent.

stalonetray -geometry 100×25+900+0  –sticky -t –skip-taskbar –window-type dock –grow-gravity W –icon-gravity SE –ignore-icon-resize TRUE –respect-icon-hints false –max-height 48 –icon-size 24 -i 24 –window-layer top

And here’s the final look: (larger version)

Pretty Ubuntu Desktop

Pretty Ubuntu Desktop

BuzzWord and Adobe AIR Review

I just got signed up for Virtual Ubiquity’s “first real word processor for the web”. It’s called Buzzword and it’s lovely. I’ve just seen the first introductory document but many things have caught my eye.

For one, they have a nice collection of fonts. Much better than Verdana and Tahoma — the usual stuff you see on the web. They’ve even got Minion Pro. I’m not sure if you need the font installed on the system for it to work but even so, it’s great to see Minion Pro on a web-based word processor.

Secondly, the design is very good and unobtrusive. I especially like the way comments and table manipulation work in it. List handling is pretty good too.

Trouble is that without proper document structure such as header and footers, sections, page orientations, no word processor will even challenge MS-Word or any other desktop application. Besides, on my laptop (which is not that fast) it’s simply not possible to work effectively on a web-based app.

Which brings me to the second app I’ve tried. Adobe AIR. It “lets developers use their existing web development skills in HTML, AJAX, Flash and Flex to build and deploy rich Internet applications to the desktop.” I just got a twitter client app for AIR but even that small an app caused my system to stop responding for a second or two. So, it’s not for me right now.

Something needs to be done for the speed of browsers. I’m not talking about the bandwidth. I’m talking about the rendering speed.

Gmail, firefox and fonts on Linux

If you’re like me, you’d hate the default look of web pages (especially gmail) on firefox in Linux. I was beginning to think something was wrong with firefox because the rest of Linux fonts look alright. This is what I got after tinkering around for a day. Looks sweet, doesn’t it.

Here’s how to do it:

  1. Get webcore-fonts package. It’s fonts from Microsoft but only the free ones. You’d know Verdana if you come from Windows. If you hate Microsoft… well, write your own fonts of the same quality.
  2. Get Greasemonkey for firefox.
  3. Get Gmail RL Skin Userscript. Very nice script. I did a few modifications for my own use. Here’s my file in case you need it for reference.

Oh, and send a mail to Google telling them to please stop using ‘Arial’ on all their pages. If Verdana isn’t available by default on Linux, other fonts much better than Arial are! You’d think they’d at least look at their pages on a Linux firefox browser. Sheesh!

The hapennings…

Well, it’s been a long time but I’m finally back. The reasons for such a long absence are countless but boil down to just one: I got lazy.

Anyway, here’s what I’ve been working on lately:

  • Formal Mathematics (Set theory and logic)
  • Isabelle (automated theorem prover)
  • LaTeX (lovely, lovely typesetting engine. I don’t need a word processor any more)
  • My MS thesis
  • My MS research publication (more on this later)
  • My “Software Engineering Education” paper – that one’s going to be published by IEEE inshallah very soon.
  • And moving my stuff on to linux. I have to live with my conscious

Well, enough for the time being.

Yum, Yumex and Kyum

One of the problems I always faced with linux was the installation of new software. I’ve been trying to get a good lisp IDE installed for more than three weeks – without any success.

The answer is ‘yum’. It’s a wonderful tool for installing software on linux. What’s more, if you don’t want to work with command line tools, do a ‘yum install yumex’. Yumex works like a gem. Search for a software to install, add it to queue and process it! The interface is pretty sweet too.

Fedora Core 5 -vs- Windows XP

It took me a year but I’ve finally moved my stuff over to Linux. I had to. I’m supposed to be a geek.

It’s like moving into a new city. You don’t know where to get the groceries, how to get around. Stuff that sounds trivial where you’ve spent your whole life. Despite the problems, i’ve managed to set up shop in linux. I’ve got almost everything ready. Graphics editting, lisp programming, internet.

Moving away from internet explorer to firefox was easy. There are problems in linux but I think they’re manageable.