Ranaviru Fund

Let me start by saying that I don’t believe in war, I’m more in the camp of Gandhi and Mandela who showed that although difficult you can achieve what you want through peaceful means. In short I don’t support the LTTE neither do I believe in a government that spends millions of dollars bombing it’s own people.

And every war takes it’s toll on people, leaving them mutilated, suffering and traumatized for life. The Ranaviru Fund is an effort by a few friends, some of whom I know and trust, and tries to provide some relief to those suffering.

Apparently one of the biggest needs for the veterans are gel socks and is used by amputees to help reduce their pain when the amputated stump rubs against the artificial limb. Unfortunately they cost money and they instead have to do with regular cotton socks which are ineffective in reducing pain and also wear off easily.

This is where we can help. A single gel sock costs about $10 and for the cost of a typical meal</font> we can help reduce someone’s pain for at least a year. So take 5 minutes of your time to visit http://www.ranavirufund.org/ and make at least a $10 donation through PayPal.

Dell Studio: Slow mouse (touchpad) and missing keys issue

Just before I installed Windows 7, the new Dell Studio suddenly started slowing down. The touchpad movements would be jerky and some keys wouldn’t get pressed. A post on a dell support forum outlined the same problem that I had and the keys the other user reported were the exact same ones.

What’s even worse is that the support site is so bad I can’t even locate that forum post. But here are a couple I found reporting the same problem (one with keyboard problems here and another with touchpad problems).

Draining the battery power was one suggestion but couldn’t be bothered doing that, I just went with updating the BIOS to the latest version (A05) and viola that fixed it.

So here’s to anyone having the same problem with a Dell Studio where the whole machine goes into slow motion when moving the mouse with the touchpad as well as when punching in the keys into the keyboard go missing. Solution: Update your BIOS to the latest version.

Running Windows 7 Beta

With everyone reporting that Windows 7 beta was very stable I upgraded both my wife’s Dell Studio and my Dell 64-bit XPS to Windows 7.

Both setups ran fine without a hitch although the upgrade route took a couple of extra hours with all the migrating of application and user settings.

The good news is that I’ve been using both for over a week without any major hitches. The only problems I’ve had so far are to do with the 64-bit install. The first one being Windows Live Mesh which stays forever at the ‘Live mesh is starting’ step (there doesn’t seem to be any kind of fix out for this) and Google Chrome which flat out doesn’t work unless you add a flag to it’s startup. This seems to work for most cases except for a few place where it fails like the new Gmail Offline access using Gears.

Migrating from BlogEngine.NET to WordPress

Yet another migration post, feels like just yesterday I migrated from dasBlog to BlogEngine.NET.

My justification was that I didn’t want to be manually updating my blog with each new release.

With Aneef graciously offering to host my site I’d be cutting down on my hosting bill as well! How sweet is that?

So here’s how I made the move.

  • First I setup a new instance of WordPress on my host account. Now this is the absolutest fun part, with Fantastico it takes just two clicks and literally two seconds to install WP, plus upgrading to the latest version of WordPress is going to be a breeze as well!
  • Next we’ll export our posts to BlogML from the BlogEngine.NET admin site.
  • You’ll need to tweak this file a bit before the import. Search for .axd files and you’ll realize the first problem. BlogEngine seems to pull down the images through an .axd file, a simple search and replace should fix this problem. You might want to move your images to the wp-content/uploads folder as well since it will become easier to backup your stuff.
  • In the BlogML file, the categories seem to have a GUID, which I think I might have inherited from dasBlog, but if you do come across the problem you can either do a search and replace with the GUIDs or after importing into WordPress rename the category from the Admin site.
  • Finally you’ll need to add the BlogML Import plugin to your WP install. Just grab the zip file from Kavinda, unzip and upload them to the wp-admin/imports folder check his post and the related posts if you have trouble setting it up.
  • From the WordPress admin menu click import, supply your file and your done!
  • You’ll of course need to upload your images as well.
  • If your using FeedBurner remember to change the source address of FeedBurner and also use the FeedBurner plugin from Google so that new user’s will get the FeedBurner url when they subscribe to your blog.

Enjoy! Let me know if you have any issues migrating.

Deleting millions of records from a table without blowing the transaction log

Over the weekend I realized that deleting 80% of the records on a table with 87 million rows is not quite as easy as issuing a delete statement with a where criteria.

The main reason is that the transaction log quickly grows as it needs to keep track of all the uncommitted rows that are being deleted. In my case the database file was 60GB and the log file grew quickly from a mere 40MB to 32GB before I ran out of disk space and the database goes into recovery mode.

Browsing through blogs I narrowed my scenario to two options.

  1. Move the required records over to a temporary table and issue a truncate on the table you want to delete.
  2. Issue the deletes in batches so that the log file doesn’t fill up.

The first option seems to take the shorter time to execute but I didn’t want to go through the effort of removing and adding foreign keys  and renaming tables. So I went with the second option. Here’s the script I used for SQL Server which deletes 10,000 rows at a time and commits them.

DECLARE @continue INT
DECLARE @rowcount INT
SET @continue = 1
WHILE @continue = 1
    SET ROWCOUNT 10000
    DELETE FROM Transactions WHERE  TradeDate IS NULL
    SET @rowcount = @@rowcount 
    IF @rowcount = 0
        SET @continue = 0

The print statements help to show you how things are moving along.

(10000 row(s) affected)
Jan  1 2009 11:54PM
Jan  1 2009 11:54PM

(10000 row(s) affected)
Jan  1 2009 11:55PM
Jan  1 2009 11:55PM

Seven hours later the script is still executing with 39 million rows deleted so far and the log file currently at 700MB.

Viewing the disk space usage (size) of all the tables in a SQL Server 2005/2008 database

I spent a couple of hours searching for a script that returns the size of all the tables in a database. Most of the ones that you find use sp_msforeachtable but that is just for one table and you then need to use temporary tables to hold the values.
This article on the Database Journal by Ananth Kumar (AKA MAK) had this handy script that simply works by copy-pasting it as is. Read the linked article for details on viewing the size by schema.
    (row_number() over(order by a3.name, a2.name))%2 as l1,
    a3.name AS [schemaname],
    a2.name AS [tablename],
    a1.rows as row_count,
    (a1.reserved + ISNULL(a4.reserved,0))* 8 AS reserved, 
    a1.data * 8 AS data,
    (CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN 
    (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 AS index_size,
    (CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN 
    (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8 AS unused
  SUM (
    WHEN (ps.index_id < 2) THEN row_count
    ELSE 0
   ) AS [rows],
  SUM (ps.reserved_page_count) AS reserved,
  SUM (
     WHEN (ps.index_id < 2) THEN 
   (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
     ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
   ) AS data,
  SUM (ps.used_page_count) AS used
 FROM sys.dm_db_partition_stats ps
 GROUP BY ps.object_id) AS a1
  SUM(ps.reserved_page_count) AS reserved,
  SUM(ps.used_page_count) AS used
  FROM sys.dm_db_partition_stats ps
  INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
  WHERE it.internal_type IN (202,204)
  GROUP BY it.parent_id) AS a4 ON (a4.parent_id = a1.object_id)
INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id ) 
INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
WHERE a2.type <> 'S' and a2.type <> 'IT'
ORDER BY a3.name, a2.name
 -100 as l1
, 1 as schemaname 
,       ERROR_NUMBER() as tablename
,       ERROR_SEVERITY() as row_count
,       ERROR_STATE() as reserved
,       ERROR_MESSAGE() as data
,       1 as index_size
,   1 as unused 


Quick extra tip, if you export the result-set to Excel you can do additional sorts to figure out more stuff. For example the first table on this list was taking up 47GB of disk space in a 63 GB database. With the index taking more space than the actual data! But this is more of an OLAP db with just one batch update daily and optimized for retrieving data faster so I guess that's okay.



Went shooting


So we went clay shooting yesterday with Adam Tyler (an Athen’s Olympic Bronze medalist and two time Commonwealth Gold medalist) showing us how it’s done.

After playing Counter Strike with the guys at office it felt good too hold a real live Beretta shot gun. Got four of the first five shots in the first round.

Here’s one where I hit the clay.


The Melbourne Unique World team!

UniqueWorld Team


It’s been nearly four months since I moved to Melbourne and having been in Sydney six months prior, Melbourne was indeed a welcome change.

Although it’s very easy to forget how beautiful it is here. My favorite part of the daily commute is the ten minute walk through Fawkner Park (named after Melbourne’s co-founder).

Here’s a bird’s eye view of Fawkner park.


A few from today’s morning walk.





On sunny days we grab our lunch and head downstairs to have it at the park. It’s no wonder Melboune has consistently been at the top spot in the World’s Most Livable Cities list over the years.

Could it be true? Is Live Search (Kumo) really getting better than the great Goog?

So I wanted to find a tool that would do fast folder comparisons. Searching on Google gave me a lot of useless stuff most of them related to fast folder access or folder comparison but not ‘fast folder comparison’.

On a whim I switched live.com and lo and behold I was presented with UltraCompare in the search results with this to say:

Save time by performing an extremely fast folder comparison using just the sizes and timestamps of corresponding files.

Even a quoted search for “fast folder comparison” returns 8 results in Live but just 2 in Google.

Will I switch to Live search? No.

But something to keep in mind when I’m not getting the results I want on Google.

BTW: The Google Search Wiki is certainly intriguing. I totally dig neat Ajax stuff.


A Personal Blog: Spaces vs Blogger

I’ve been wanting to start a personal blog for sometime and finally went ahead with it.

This post though is not about my personal blog but rather about which platform I chose. I’ve been blogging for nearly five years now and went the geek way and hosted my platform. But I’m now fed up with having to maintain the stuff myself whenever new versions are released.

I really wanted to use MSN Live Spaces since it had the nice integration with Messenger and the new Live bits that were going to be released excited me. But after spending a couple of hours tinkering with it I was finally put off by the obnoxious advertising. Not only were they flashy images, there were two of them a big banner as well as one on the right hand.

I was debating between Blogger and WordPress and then went ahead with Blogger as I could host it on my own domain. Other things that pushed me towards Google was that I already had my email hosted at Google, Feedburner integration.

On a side note, for those interested, my personal blog is at http://merill.blogspot.com until I get Custom Domains with Yahoo sorted out. But hey Blogger has permanent redirects so there’s nothing to worry. Really.