Turning your Asus eeeBox B202 into a XBMC

June 28th, 2009

I recently became owner and custodian of one of these cheap puppies

Asus EEEBox B202  (Intel Atom 1.8GHz; 1GB RAM; 80GB HDD)

Asus EEEBox B202
(Intel Atom 1.8GHz; 1GB RAM; 80GB HDD)

It’s a cute bit of hardware. Not sporting a powerful CPU, not boasting a kachunga of RAM and not carrying a large HDD, but for $360 what can you expect? The original intention behind this purchase was to use it as a cheap replacement for a Linux based web-server, but it seemed like such a shame to let what little spare power it has go wasted – turning it into a miniature media centre was an easy decision. The nice thing about XBMC is that there’s a version for Linux running on Ubuntu. This brief notation is my experience setting it up to run on my TV. It assumes you know Ubuntu reasonably well and are comfortable hacking at it.

Tools Required

Preparation

The eeeBox doesn’t come with a native CD/DVD-ROM, but you can easily jig something together by using an external EIDE HDD enclosure and a DVD-drive from any old PC. Just connect the cables together and you have yourself a working USB DVD-ROM.

Install Ubuntu

Firstly make sure you run a network cable into the eeeBox. Even though the wifi works fine, you’ll be downloading a stack of updates and doing that over 100MBps is better than 54MBps.

So pop in the Ubuntu desktop live CD and go through the standard installation. This might take a while depending on your setup, but just install the plain operating system and reboot. The installation has good defaults for partitioning when you let it decide what to do with the whole disk – just roll with it, unless you know what you’re doing. The nice thing about the desktop edition of Ubuntu as opposed to (say) the server edition is that it comes pre-packaged with all the necessary drivers:

  • Video: Intel Mobile 945GME Express Integrated Graphics Controller
  • Audio: Intel 82801G High Definition Audio Controller
  • WiFi: RaLink RT2860
  • Ethernet: Realtek RTL8111 Gigabit Ethernet controller

Additionally, it installs things like a working x-server and ALSA so that you don’t have to. It’s (by far), easier to start with desktop edition and cut-back, than to start with server and build up.

After reboot and login, the system will take you directly to your Gnome desktop. The autoconf would have detected the network connection and (assuming you have a local router/DHCP server) you’ll be on the network in seconds. Update Manager will then run a check for updates. You want to download and install these updates! In particular, Jaunty had graphics performace issues with the Intel GME 950 in its original release. I’ve found that an out-of-the-box installation doesn’t exhibit this problem anymore but its still a good idea to run the update first.

The desktop edition of Ubuntu doesn’t come with ssh natively installed. you can rectify this with:

$> sudo apt-get install ssh

There’s a good chance you’ll need to restart again after the updates.

Install XBMC

Once re-booted, we want to install XBMC from the package archive for your version of the system (again, assuming Jaunty). Using your fresh ssh install, you can PuTTY into the box (my personal favourite) and add the two following lines to your /etc/apt/sources.list:

deb http://ppa.launchpad.net/team-xbmc/jaunty-ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/team-xbmc/jaunty-ppa/ubuntu jaunty main

Then you need to add the signed public key to the apt key register:

$> sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9317790E

The most important step of all:

$> sudo apt-get install xbmc-standalone

Why standalone? The standalone version of XBMC contains “certain functions that are not available in normal XBMC for Linux, (or XBMC for Mac, or for Windows), these functions include Power Management, and Network Management.“. The power management alone is worth it.

At this point I recommend testing the installation. Load XBMC from the Applications menu and set your resolution + other options. Setting the resolution is quite important here because (as i found out later) you’ll need them if you decide to run a seamless boot sequence into XBMC

Configuring A Seamless Boot Sequence

By this, what I mean is that when your system boots, it will automatically log in as you and boot into XBMC and you wont incur the unnecessary overhead of running Gnome in the background as you might otherwise have. You can fall-back to Gnome if need be, but the default desktop environment will be set to XBMC.

In Gnome, click System > Administrator > Login window. In the dialog, make sure you set your password and for the default session choose XBMC. I’d also suggest the auto-login feature. It gives you a chance to break into Gnome or a failsafe terminal should you need it.

Restart your box in preparation!

At this point, if you should be unlucky (like me) and your resolution settings are lost after changing the default session, you’ll need to copy them from the original settings we set earlier. Fortunately this should be easy. Log onto the box as you and enter the following:

$> cd ~/.xbmc
$> mv userdata userdata_backup
$> cp /usr/share/xbmc/userdata . -r
$> killall xbmc

If you set up Gnome correctly, you should go back to the login screen and be able to log back into XBMC with full res.

Wireless Configuration

The last piece of the puzzle is getting the wireless to work. This should be too easy. Just edit the /etc/network/interfaces file and add the entry for the RaLink RT2860 wireless device (ra0). In my setup, i’m using WEP so it looks like this:

iface ra0 inet dhcp
  wireless-essid <SSID>
  wireless-key s:<PASSPHRASE GOES HERE>
auto ra0

Reboot one last time just to make sure it all works and you’re done!

What this doesn’t cover is how to configure an IrDA device for truly integrated experience. The B202 doesn’t have IR built-in but once i find a suitable device, you can bet i’ll be writing about it.

:)

Xerxes IT & Software , ,

Using Object IDs in C#’s Debugger to chase object references

June 1st, 2009

I’ve needed this a few times in the past and figured I best note it down for my own reference.

If you have created a number of objects and you want to be able to compare them during debugging, you can assign an Object ID to each instance of the object in the watch window like this:
Assign Object ID to object instance

Once assigned, you can evaluate that particular object instance either in the watch window or in the expression evaluator:
Evaluating an object using its ID

(The above images have been pilfered from Jim Griesmer)

Xerxes IT & Software

Enabling Colours In Git’s Console Output

May 28th, 2009

Mainly to serve as a reminder for myself: To enable colour output in MSysGit’s console, issue the following command from the bash prompt:

$> git config --global color.ui auto

Xerxes IT & Software

e Text Editor: “ruby: no such file to load — ubygems (LoadError)”

May 27th, 2009

i’ve installed e text editor on my desktop and trying it out for some Ruby development.

E is heavily dependent on using Ruby in the background to perform a number of its refactoring and text-based actions. Unfortunately, sometimes you can end up in a situation where E reports the following error whenever you trigger one of these actions:

ruby: no such file to load — ubygems (LoadError)

It looks obvious that the error is caused because E is trying to load the gem ubygems when it actually meant rubygems, but the problem is more involved than just that.

In my case, it turns out that after running the Ruby one-click installer, the installation creates an system-level environment variable RUBYOPT=-rubygems. This variable setting is what’s giving E its grief.

To fix: Simply remove the environment variable from your system settings and restart e for safe measure. In my experience, there’s no need to download the rubygem package and re-install it as mentioned on another site.

Xerxes IT & Software , ,

What do the following people have in common?

May 20th, 2009

Re: Email Account Verification Update

May 20th, 2009

I had the following email exchange this morning:

---------- Forwarded message ----------
From: Xerxes Battiwalla
Date: Wed, May 20, 2009 at 10:31 AM
Subject: Re: Email Account Verification Update
To: account_upgrade1@programmer.net

Sure thing - happy to oblige.

My username is: Whydontyou
And my pass is: Shoveitupyourarse

Enjoy!

On Wed, May 20, 2009 at 9:52 AM, HELPDESK ADMINISTRATOR
<Amanda.Warren@selu.edu> wrote:
>
> The Helpdesk Program that periodically checks the size of your e-mail
> space is sending you this information. The program runs weekly to ensure
> your inbox does not grow too large, thus preventing you from receiving or
> sending new e-mail. As this message is being sent, you have 18 megabytes
> (MB) or more stored in your inbox. To help us reset
> your space in our database, please enter your current
> username (_________________) password (_______________).
>
> You will receive a periodic alert if your inbox size is between 18 and 20
> MB. If your inbox size is 20 MB, a program on your Webmail will move your
> oldest e-mails to a folder in your home directory to ensure you can
> continue receiving incoming e-mail. You will be notified once this has
> taken place.
> If your inbox grows to 25 MB, you will be unable to receive new e-mail and
> it will be returned to sender. All this is programmed to ensure your
> e-mail continues to function well.
> Thank you for your cooperation.
>
> HELPDESK ADMINISTRATOR.
>
>
>
>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>

Just quietly, i’m surprised it managed to get through GMail’s spam filter….

Xerxes IT & Software

Add shortcuts to your Send-To menu

May 15th, 2009

In Windows 2000/XP you can add/remove content from your Send-To menu just by navigating to the SendTo directory of your profile (eg: C:\Documents and Settings\Xerxes\SendTo\

In Vista they changed the location of the SendTo directory and I never found out where until now! If you navigate to the shell extension “sendto” (eg: Start –> Run –> “shell:sendto”), it opens up the list of items in the send-to menu when you right-click a file in Explorer.

I normally like to add a shortcut Notepad so no matter what file type i’m opening, I can have quick access to drop it in Notepad if necessary.

Xerxes IT & Software ,

Reverting Changes In Git

May 14th, 2009

I’ve used a lot of SCM’s in my time, and none of them have been as esoteric as Git. This post serves as a reminder of the different ways to “revert” changes to a git repository

Scenario:

We are in directory with a local git repository. This repo contains 4 files and no sub-directories. Each file is in one of the 4 different states a file could be in for Git (not considering ignored files for the time being)

File Name State
Unchanged.txt File is unchanged in local directory
New.txt File is new to the repo
Deleted.txt File has been deleted from local directory
Modified.txt File has been modified in the local directory

All files except New.txt are being tracked and none of these changes have been staged/committed (yet).

Action: checkout

$> git checkout
  • This command has an implicit head of [HEAD]
  • This command has an implicit working file/directory of the CWD
  • This command will only affect tracked files
File Name State
Unchanged.txt no action
New.txt no action (because it’s untracked)
Deleted.txt no action (will not restore the file UNLESS explicitly stating file in command)
Modified.txt no action (will not restore the file UNLESS explicitly stating file in command)

Action: checkout <file/path>

$> git checkout .
$> git checkout Deleted.txt
  • This command has an implicit head of [HEAD]
  • This command has an explicit working file/directory of the path on line 1, and of the file Deleted.txt on line 2
  • This command will only affect tracked files
File Name State
Unchanged.txt no action
New.txt no action (because it’s untracked)
Deleted.txt File is reverted back to its original from the current head
Modified.txt File is reverted back to its original from the current head

Action: reset

$> git reset .
  • This command has an implicit head of [HEAD]
  • This command has an explicit working directory of the CWD
  • This command will unstage staged changes
File Name State
Unchanged.txt no action (changes are unstaged)
New.txt no action (changes are unstaged)
Deleted.txt no action (changes are unstaged)
Modified.txt no action (changes are unstaged)

Action: reset (with staged content)

$> git add .
$> git reset
  • This action assumes that all changes have been staged (line 1), so the repo is in the following state:
    File Name State
    Unchanged.txt File is unchanged in repo
    New.txt File is staged for adding
    Deleted.txt File has been staged for deletion
    Modified.txt File has been staged with modification
  • This command has an implicit head of [HEAD]
  • This command has an implicit working directory of the CWD
  • This command will unstage staged changes
File Name State
Unchanged.txt no action (changes are unstaged)
New.txt no action (changes are unstaged)
Deleted.txt no action (changes are unstaged)
Modified.txt no action (changes are unstaged)

Action: clean

$> git clean -d -f
  • This command has an implicit head of [HEAD]
  • This command has an explicit working directory of the CWD
  • This command will remove files and directories which are untracked in the repo
File Name State
Unchanged.txt no action
New.txt File would be deleted
Deleted.txt no action
Modified.txt no action

So in summary, if you want to completely revert your working directory to a clean state (IE: the equivalent of an svn revert) is to:

$> git clean -fd
$> git checkout .

Xerxes IT & Software

Search Engine Showdown: Google vs AOL

May 13th, 2009

I think it’s safe for me to say “shea right – if i hate AOL Search as much as I despise AOL the ISP, this article will not be favourable to AOL in any way, shape or form”.

Let the games begin.

AOL Search fails to render properly in Google Chrome

AOL Search fails to render properly in Google Chrome

Wow off to a flying start here, boys…. </sarcasm>

The second thing to peeve me off is that AOL Search doesn’t have a search provider exposed in their meta-data. So I have to create one for myself. Fortunately, Chrome makes this pretty easy, but that’s not the point – You guys are providing a search service. Irrespective of how shit it may or may not be, FFS at least make it easy for me to *TRY* and use your product?

…all this, and I haven’t actually started using it yet. How ominous. I’m hoping that the little “powered by Google” actually means “we cant do search anymore, and have given up. Here’s one which does it better”.

……………

One week (maybe a little more) has passed and well, lets just say i’m not as disappointed as I thought I would be. Mainly because AOL search really does seem to be effectively a wrapper around Google. As an example, I searched the hottest topic going around on the tubes at the moment (the effects of socialism on post-war Germany), and most of the results were the same, except that Google also listed a result to its Book Search service. Apart from little things like that, these two are inseparable. Even AOL’s image search is just a face-mask over Google Images.

The design of the page leaves a little to be desired however, as AOL shamelessly place advertisements on the top of the page in an attempt to drive click-throughs. My ad-busting eyeballs detect this easily so the placement of the ad isn’t so much the problem. The problem is that they have sneakily set the length of the HREF for each paid link to be the full width of the page, which means by clicking in what should be “blank space” you trigger the link and click-through the paid ad. Naughty, naughty.

All said and done, I couldn’t help but realise I just commented to a colleauge without realising that I’m finishing up this post so that “I can go back to using Google”. I guess even subconsciously I find any experience outside Google’s to be less than engaging.

On a final note, The Wolfram Alpha didn’t launch as soon as I was hoping it would, so there’ll be a week’s rest where I go back to Google, before trying out the new kid on the block on 18th May. Yes, I am aware of the broad misrepresentation of Alpha being as “Google killer” but it would still be fun to try :)

Xerxes IT & Software ,

Search Engine Showdown: Google vs Ask

May 5th, 2009

In this, the 3rd installment of The (Not So) Great Search Engine Showdown, I reflect on my experience using Ask.com compared to Google.

I don’t have a great deal of time so this post is going to be brief. I really only have one _serious_ gripe about Ask – that stupid fu#@$%g Answerbar at the top of the page everytime you navigate to a search result. NO, ask.com! I wanted you to give me the search result, not a pain in the ass waste of screen real estate. What also frustrated me about this “feature” was it’s sheer unpredictability. Most web results would display the Anusbar at the top, but others (like Wikipedia) would be displayed in full glory without being crippled.
The “Close Permanently” button was never hit with such gusto, i’m sure. To demonstrate just how much, i’ve prepared the following illustration:

How to close the Ask.com Answerbar

How to close the Ask.com Answerbar

By way of quality of results, I actually found Ask to be better than I was expecting. Certainly I felt like I wasn’t missing Google, though on a few occassions I had to drop back just to be sure I wasn’t missing anything (turns out I wasn’t). Overall the web search results were as good as Yahoo’s, though one thing that irritated was that Ask.com mixes the paid advertising results in with the organic search results. I’m sure they’ll claim that they’re putting the top-most organic result first and then allowing the rest of the results to be shown underneath the paid section, but we all know the truth. Money grubbers.

When it was originally launched as “Ask Jeeves”, the website’s search technology was based on doing some NLP against your search query and it would try to return the best results based on the context of your question. A few years ago Jeeve’s was given the arse from his job, and the company took the arse to their search results, because (quite simply) their NLP wasn’t advanced enough to provide accurate results compared to Big Brother

However having played with with Ask.com this week, I noticed they still have a Q&A section (it claims is in Beta) which allows you to phrase a question and let the NLP try and answer it for you. Not one to turn down a good opportunity to test NLP products (and get a comparative feeling for the upcoming Wolfram Alpha test i’ll hopefully be performing), I Ask’ed the following question in the name of science:

Putting Ask.com's NLP to the Public Service Announcement test.

Putting Ask.com's NLP to the Public Service Announcement test.

It’s heart-warming to see that even if you speak broken English like the second guy, you can still get valuable advice on the interwebs.

This week, I throw away all credibility as I try out AOL’s search. If using this website results in me getting another fking AOL starter CD, i’ll sht the roof.

Xerxes IT & Software ,

Poor-man’s Benchmarking in Ruby

April 29th, 2009

As part of evaluating several libraries for specification testing in Ruby (MSpec, RSpec, Bacon), I wanted to benchmark the performance of the library against a simple suite of tests to see if one was particularly slower than any of the others. It wasn’t intended to be very scientific but to at least expose a slow framework, if any.

Each benchmark was performed by creating a suite of specifications based around Bacon’s whirlwind sample (consisting of 5 specs), and executed the suite 10,000 times. This benchmark test was run 5 times in order to weed out any statistical anomolies. Nb: For this analysis, I didn’t benchmark RSpec because it’s not terribly compatible with IronRuby just yet.

The results and code can be found below. In a nutshell, it does seem as though MSpec performs slower than Bacon, but when you consider that over a 50,000 test sample it was only (roughly) 10 seconds slower, the difference is negligible.

  Bacon MSpec
Run 1 27.642 37.337
Run 2 25.598 37.755
Run 3 25.607 37.424
Run 4 25.317 36.439
Run 5 25.105 36.352
# This is the code for the spec test wrapper.
# To execute, save the file as "spec_runner.rb" and execute
#    ruby spec_runner.rb
#
#

ITERATIONS = 10000

require 'rubygems'

@old_stdout = $stdout
$stdout = StringIO.new

def milestone(n)
$stdout = @old_stdout
puts ("Reached milestone: ##{n}")
$stdout = StringIO.new

end

def time_it(&func)
	start_time = Time.now
	1.upto(ITERATIONS) do |n|
		func.call
		milestone(n) if n % 1000 == 0
	end
	end_time = Time.now
	end_time-start_time
end

bacon_time = time_it do
	load 'whirlwind_bacon.rb'
end

mspec_time = time_it do
	load 'whirlwind_mspec.rb'
end

$stdout = @old_stdout
puts "bacon time: #{bacon_time}"
puts "mspec time: #{mspec_time}"
# This is the Bacon test file. Save it as "whirlwind_bacon.rb"
#
#

require 'bacon'

describe 'A new array' do
	before do
		@ary = Array.new
	end

	it 'should be empty' do
		@ary.should.be.empty
		@ary < < 1
		@ary.should.include 1
	end

	it 'should have zero size' do
		@ary.size.should.equal 0
		@ary.size.should.be.close 0.1, 0.5
	end

	it 'should raise on trying fetch any index' do
		lambda { @ary.fetch 0 }.
			should.raise(IndexError).
			message.should.match(/out of array/)
	end

	it 'should have an object identity' do
		@ary.should.not.be.same_as Array.new
	end

	palindrome = lambda { |obj| obj == obj.reverse }
	it 'should be a palindrome' do
		@ary.should.be.a palindrome
	end
end
# This is the MSpec test file. Save it as "whirlwind_mspec.rb"
#
#
require 'mspec'

describe 'A new array' do
	before do
		@ary = Array.new
	end

	it 'should be empty' do
		@ary.should be_empty
		@ary < < 1
		@ary.should include(1)
	end

	it 'should have zero size' do
		@ary.size.should.equal 0
		@ary.size.should be_close(0.1, 0.5)
	end

	it 'should raise on trying fetch any index' do
		d = lambda { @ary.fetch 0 }
		d.should raise_error(IndexError, /out of array/)
	end

	it 'should have an object identity' do
		@ary.should !equal(Array.new)
	end

	palindrome = lambda { |obj| obj == obj.reverse }
	it 'should be a palindrome' do
		(palindrome.call @ary).should be_true
	end
end

Xerxes IT & Software

Search Engine Showdown: Google vs Yahoo Search

April 27th, 2009

In the second installment in my series of evaluating search engines, I take a look at Yahoo’s search offering – specifically the locally-branded Yahoo7 search

The first test – TICK. A Yahoo search on my name turns up very good results. My website first, and underneath that one of my blog posts. Closely followed by Facebook and LinkedIn. If i wanted to stalk myself, this is clearly a good place to start.

A cute little feature is that my Facebook search result contains deep links to come Facebook features like “Send Message“, and “Poke“. Way to get in with the 2.0, Yahoo.

After that, it starts getting a bit weird, and the results lose a lot of meaning. Some old documentation I wrote when in another job shows up on the first page, despite it being excessively out-of-date and not updated for at least 3 years, I didn’t think this content would fare at all.

In terms of visuals, the search results are very Google’esque…nay, identical. Yahoo results are minimalistic with Web, Image, Video, News, Maps and More at the top of the screen and a link to the cached version located conveniently in a position which makes defending a case of plagiarism from Google infinitely hard. I guess the up-side to this is that people will hit Yahoo search results and feel like they’re in familiar territory.

Which I guess leads me into Yahoo’s foray into Federated search called Alpha. Yahoo claim that “Alpha is a new beta product from Yahoo!7 that introduces the concept of Federated Search. With Alpha, you can search across many different information sources all on one place”.. Holy tuna, batman! “Search across many information sources from one place”?….Sounds like a regular search engine to me. *bored* The quality of search results don’t appear to be any different to regular Yahoo, but the UI is very different. Kind of like Live Search (and we all remember how that went)…

<fast-forward one week>

I’ve been using Y7’s search now for the week and I have to admit, I was acutally quite comfortable with the results it was giving. When evaluating MS Live Search, I was constantly living in this fear that I was missing quality search results and would fall back to Google just to make sure I was getting the right information when I needed it. However with Yahoo, I felt confident enough with what it gave me to not feel like I was missing out on good results. I honestly feel like I could replace Google with Yahoo if I needed to (which I don’t).

The next engine to go under the knife – Ask.com. They don’t have any locally branded content, and I’ve just got a gut-feeling this will be a difficult week :|

Xerxes IT & Software ,

Getting CruiseControl.NET To Talk To Git

April 22nd, 2009

CruiseControl.NET is an automated build system ported from Java to the .NET framework. The current stable release of CCNET is v1.4.3. Unfortunately this version of CCNET does not natively support using Git as a source control provider. So if you’re making the switch from (say) SVN or VSS, at the time of writing, you will have a few bumps in the road ahead. NB: This page assumes you have a working copy of git running on your machine

To get Git working with CCNET, I found the excellent ccnet.git.plugin project on Github. This code is a plugin for CCNET which exposes basic functionality (and a little more) to allow CCNET to use Git as a source repository.

Firstly you need to download said source and compile the binaries. In case you’re super lazy, here’s one I prepared earlier – ccnet.git.plugin binary download

The plugin works by dropping it straight into your CCNET server’s folder with the other binaries. In most cases, this will be c:\Program Files\CruiseControl.NET\server\. Make sure your restart CCNET.

The next thing is to configure your project to use git as the source control provider. The README has an excellent example of how to configure the project. My initial project block ended up looking something like this (renamed to protect the innocent):

  <project name="FittingApp.Project" queue="FittingApp.Project">
    <sourcecontrol type="git">
	<repository>git@bumblebee:FittingProject.git</repository>
	<timeout>30000</timeout>
	<executable>c:\program files\git\bin\git.exe</executable>
	<workingDirectory>C:\build\projects\FittingApp.Project\</workingDirectory>
    </sourcecontrol>

    <triggers>
    </triggers>

    <tasks>
    </tasks>

    <publishers>
      <xmllogger />
      <statistics />
    </publishers>
  </project>

One important thing to note is that the README (at the time of writing) doesn’t mention the timeout element you can use in your configuration. The default value is quite high. I prefer to lower it and found this property by perusing the tests.

Finally after all that, everything should be done and ready to rock, right? Turns out not so. One problem I stumbled into (and took a while to resolve) was the build timing out when it was doing a fetch. The CPU was idle and there was no traffic over the network. The process would timeout and the build would fail. The funny thing was that I could open a command-prompt console myself and fetch the remote repo no problem. But when being performed by CCNET, it would timeout during the fetch.

Afer digging further, it looked like the SSH authentication wasn’t working and that the auth process didn’t accept the default SSH credentials I created earlier. I suspect it was waiting for me to enter a password for the remote git account. Of course there’s no interaction with this process so eventually it times out. After a long back-and-forth with the problem, I got in touch with the author of the plugin and he suggested checking that the HOME environment variable is set to %USERPROFILE%, otherwise git wouldn’t be able to find the git config settings. This solved the problem, and the build started working sweet. (big props, Kevin – thanks :) )

With all that done, you should now be staring down the barrel of a CCNET installation successfully talking to Git. Hope this helps someone else out there.

Xerxes IT & Software , ,

Search Engine Showdown: Google Vs Live Search

April 20th, 2009

In my (what i hope to complete) series of comparing Google to other search engines, The first engine i’m testing out is Microsoft Live Search.

I guess the first (obvious) thing to try is to search for my name (on a side note, i’m soooo tempted to use “google” as a verb, but that would be inappropriate when testing out the competition, no?). The first two results are correct, or at least relevant (ie: my website) and the rest of the results are neither here nor there in terms of relevance – there really wasn’t a whole lot it could do with my name except find literal matches in page content.

One thing which surprises me is that the results returned vary greatly depending on how many results I show on each page. Setting the limit to the minimum of 10, and I seem to get results all about me and most of them pretty relevant chronologically. However if i switch it to 30 results per page the niceties pretty much drop dead as the search results spew into variations of my Facebook profile in different culture sub-domains (ja-jp being the most relevant out of about 7 others). FAIL.

Live search, (unlike Google) has a neat little equation solver (example), which would have been great about 10 years ago when i was actually doing calculus and solving quadratic equations. Relevant now? Probably not. I would expect the Wolfram Alpha to drop a big steaming shizzle all over this feature given it’s company history. So Maths equation solving – FAIL.

One problem i’m finding is that i’m just not used to the format of search results from Live search. I find that if what i’m searching for is not essential to what i’m doing (or should be doing) it turns me off and i want to just leave the site without getting any results. This is a very bad UX and it’s probably all in my perception of what “good” search results look like.
Must fight urge to judge a book by it’s cover.

……<fast forward a few days>……

and so it is i come to the end of the week and in all seriousness it couldn’t come soon enough. I tried, I really did. Microsoft has a loooong way to go before they could even begin to think about claiming that their search engine is actually a competitor to Google, and not just another smoking pile of crap. You know things are in trouble when you need to create a short-cut to Google’s search because the Live results are just plain inadequate.

Suffice to say, i’m very disappointed with Live Search and don’t think it’s ready to be considered a contender for search king of the net. i’m glad to get my browser away from it and move onto something else.

Yahoo – stand up. You’re next.

Xerxes IT & Software , ,

Managing Multiple Git Accounts

April 18th, 2009

I’m in a situation where I want to keep different settings for several Git repositories. My work’s Git repo and settings (like email address and private key) would be different to my GitHub email address and key.

After following the setup details on GitHub of how to setup username and email for github, and providing your SSH keys , I was left in an awkward situation where my global configuration was setup for GitHub, but didn’t know how to configure my work repo to authenticate properly.

It turns out that Live search does actually work for one scenario, and I found another guide on GitHub explaining everything required to configure multiple Git accounts.

  1. What’s most important is knowing that unless you’re using the same public/private key pair, you will need to generate a new key for the server, and give it a filename different to the default id_rsa
    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Documents and Settings/Xerxes/.ssh/id_rsa): /c/Documents and Settings/Xerxes/.ssh/id_rsa_github

    This file needs to be given a name different to the default id_rsa, ideally consisting the name of the repo.

  2. Once the key is generated, you need to create a config file in your ~/.ssh/ directory. This file allows you to configure connection settings per repository, overriding the global values set earlier.
    Host github
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_rsa_github
    

    Save that file.

  3. One final step in the mix is to configure the repo itself to use the correct email address when committing to the git repo. This is really only to ensure that the commit history has a valid email address associated to it. For instance, I don’t want my private email address being recorded in my work commit logs, and similarly I don’t want my work email address getting recorded in my GitHub commit logs.

    I’m sure there would have to be a way to do this using the console, but the way I know to set the email address for a single repo is to use the git gui command, goto Edit -> Options and do it via the interface.

    git gui repo configuration

    git gui repo configuration

Now you should be right to issue any commands to GitHub and have it authenticate using the key. When you push back to the origin, it will now also use the repo settings and not the global settings.

Xerxes IT & Software