free html hit counter
Posted on: Tuesday, 22 February 2011

I use DasBlog for this blog and the other one. One of my biggest gripes with DasBlog has been Permalinks. GUID based permalinks are downright ugly. Title based permalinks change every time I modify the title of a post. An ID / number based permalink (pretty much link SubText) would have been so much more better. Both of these issues haven't been solved yet and this post is not able them.

Another one of my biggest problems with Title based permalinks is that you are basically stuck if you need to use the same title for more than one post. The version 1.9 of subtext did overcome this issue when they introduced optional introduction of DATE in the permalink URL. This is one awesome feature but suffers from lack of documentation.

The tag that turns it on is: <EnableTitlePermaLinkUnique>true</EnableTitlePermaLinkUnique> in the site.config file which SiteConfig folder of the root of your blog.

The interesting part about this feature is that once I enable it, my older permalinks remain intact. Which means if they had been given out or posted somewhere, those older links just continue to work. The new format (where the date is embedded in the permalink URL) also starts working and is the default format to be used when someone hovers over your old posts hyperlink.

Along with that I can start using the same titles in newer blog posts. When I do that the Date gets optionally appended to the URL resulting in two distinctly different URLs. Of course, if two posts use the same title and I hit the older permalink (without the optional date element) the older post continues to show up, which is exactly how it should be.

If you were on Google looking for what EnableTitlePermaLinkUnique is, how it works, how it impacts your older posts or permalinks and you landed on this page, I am hoping this helps.

posted on Tuesday, 22 February 2011 03:29:17 UTC  #    Comments [0] Trackback
Posted on: Monday, 27 September 2010

Recently we started a series of webcasts or videos on a host of topics. The first topic that we started off with was Microsoft Entity Framework. In the first video, we go through the basics of ORM, talk about Entity Framework and do a Create, Update, Delete operation on a single table using Entity Framework.

To view the video on YouTube click here.

To get the most recent videos on the youtube channel you can click here.

To get a complete list of videos available on the youtube channel you can also take a look at the table of contents.

posted on Monday, 27 September 2010 14:46:36 UTC  #    Comments [0] Trackback
Posted on: Thursday, 05 August 2010

Of the very few things I don't like about a blackberry, is the user manual that they give out with their phones. After I started using my blackberry one of the biggest gripes I had about the phone was that I could not find an easy way to lock the phone.

Turns out, the simplest way to lock your blackberry curve is to press the "A" (the same key used for "*" and has a small lock symbol on it) and keep it held for a couple of seconds.

The screen light of your phone should switch off as soon as the phone is locked. Once locked you can press the mute button, which in not on the keyboard but on the top of the phone with other multimedia buttons, to unlock the phone.

If you are looking for a way to quickly lock the phone without setting any password, this works really well. Too bad it isn't documented anywhere in the user manual, but then who reads the user manual anyway.

posted on Thursday, 05 August 2010 11:27:42 UTC  #    Comments [0] Trackback
Posted on: Wednesday, 23 June 2010

Lately, I have been having a lot of conversations with the folks at ContextMine.

ContextMine happens to be a company owned and run by eFORCE, which by the way is also the company where I work.

While I spend my days at eFORCE designing and building banking applications which make small and big dents in the lives of bankers around the world, and turning some of those frameworks into open source tools which makes big and small dents in the lives of developers, the folks at Context Mine have been busy making the life of the average social media (I hate that term, mostly because of the bull-shit that surrounds it) internet user better.

When I first bumped into ContextMine it was shown to me by someone who works on the team and sits right across my office. After about ten minutes of his showing me ContextMine the discussion went like this:

Me: I Get it. I can track what people are saying about me or my blog with it.

Him: Not just that, It's a Social Media Monitoring and Analysis Tool.

Me: I Get it. I can track what people are saying about me or my blog with it.

Him: Not just that, you can do market process optimization with it.

Me: I Get it. I can track what people are saying about me or my blog with it.

Him: Not just that... Web 2.0... (Blah Blah Blah)... Marketers...  (Blah Blah Blah)... Brand (Blah Blah Blah)...

Me: Me... My Blog... Me... My Blog... Me... My Blog.

(I think you get the idea).

The jargon and the "enterprise description"  aside what I like about ContextMine however, is that it allows me to do some kick-ass ego-surfing.

If you're like me, you probably have a twitter account with a few followers and a much smaller group of people that you follow. You know nothing about a zillion other community websites out there and for you, your blog is your third place. Put simply, you neither have the time, nor the energy, nor the child like enthusiasm to sit down and do ego searches. All you do however, is try your best to push some meaningful content or products out there.

If that's your story too, you might develop a love hate relationship with ContextMine.

Hate, because it's slightly enterprizy (spelt: complicated) in terms of usability.

Love, because it gets you precisely the kind of data, information and ego boost you want about yourself, your blog or your product.

So, here is how it works:

  1. You sign up, using a free sign up form.
  2. You create something that ContextMine calls a brand.
  3. Inside a brand you create a topic and topics have searches where you type your name, your blog's name, your website name or your product name.
    [Actually, you search for anything you want. You can do "and" and "or" searches as well. I track "thousandtyone"].
  4. You submit the brand.
    [Which is weird and I have no idea why this is required but you just have to click a button which says "submit hierarchy"].
  5. You logout and come back in a couple of hours.

What ContextMine is doing in these couple of hours is crawling every freaking community site that you can think of out there and searching stuff you wanted it to search. It's also mining the search results in its own database. That has a benefit because some sites like Twitter tend to remove older items from the search results. The authors can delete tweets and after a while you can also lose the deleted tweets from the Twitter search timelines.

ContextMine, mines all of this data for you and gives you an ability to get the search results on a dynamic dashboard which is not hundred percent real time but does update at regular time intervals, a widget which you can place on your website or a RSS feed which you can subscribe to or go bonkers with (by consuming it programmatically and doing anything you want to do with it).

What impresses me the most about ContextMine is the sophistication of some of these parsers, because I have personally seen cases where I have missed tweets about me or my blog and ContextMine was able to grab them and throw them at my face. Twitter search did not return the tweets, Twitter clients did not get them as well, but ContextMine was able to fetch these and show these to me on my dashboard.

Another example for instance, is that I did not even know that there were folks on friend-feed and Google buzz talking about me or my blog.

It's one of those applications that I tried and then despite of it's complicated user interface, I found myself logging in again the next day. When an application allows you to pamper your ego, you are bound to login to it more than once. This is what ContextMine does and this is exactly why I keep looking at it's data. The data it gives me is fun.

Since it got me a few conversations that were going on about my blog that I had no clue about, I have become a returning user of context mine and have been thinking of doing a couple of blog posts on it. Couple of things you should know before you head out to go get your own ContextMine account though:

  1. I don't work on the context mine team. Having said that some of the folks who do sit right across my office and are good friends.
  2. The product is not complete. The user interface is going through a major revamp. Usability tests are being conducted on the product.
  3. The license agreement for the product has not been finalized yet but I am told by the people who head the team that they are going to allow up to ten topics for free, for life.

In the last few days I have found myself playing with the product and pampering my ego. I am using it for a couple of additional interesting things that the folks who built the product did not think about. Searching twitter handles of people who work with me so that I can find out what they are up to is one rather interesting use. There are multiple others I plan on discussing in future blogs.

I discussed the idea of me sharing this pre-beta release and talking about it and it seems like folks on the team were cool with that. They were warned about the tough love I tend to give to products I use, but that did not seem to scare them off either.

So here we go, this is my very first official review of ContextMine as an outsider.

A product that lets me search about 'Me and My Blog' or whatever it is that I am interested in.

Of course, if you run an organization it lets you see what people are saying about your organization, your products or whatever it is that you are interested in.

I'd recommend spending a few minutes on the site and getting yourself a free account.

It has a slightly complicated start up process where you will be asked to create a brand, a topic and then a search but get over the initial hump and you might start liking the data that it fetches for you.

I'm going to do a couple of additional posts on it and some fairly interesting stuff you can do with it. I plan on doing this whenever time permits, but for now, this aught to give you a decently fluff-less introduction to the product and what it does.

posted on Wednesday, 23 June 2010 19:10:14 UTC  #    Comments [1] Trackback
Posted on: Tuesday, 22 June 2010

I've been working on a small side project in my free time. One that would be built using Microsoft MVC framework and LINQ to SQL. For any of you who has ever worked on a side project in his free time, you probably know how it works. An idea grabs you at the middle of the night, you open your IDE and you start coding away to glory. The current project that I have been working on has been one such project for me.

The problem with these projects however, is that you start in a fit of enthusiasm. You hardly ever set up an SVN because after all, you are going to be the only human being working on the project. You drag and draw your database using SQL Server Management Studio because you figure that once you reach version one you can easily engineer your scripts using the SQL database publishing wizard.

Then your disk crashes and you lose your database.

Feel free to add your own digressions or variations here of how exactly that happens.

But as Murphy's Law would have it, if it can happen, it usually does.

So, with a lost-development-database at hand I set out to recover my database from the LINQ-To-SQL DBML file.

Turns out, if you have the LINQ-To-SQL DBML file with you, generating the database from it is a fairly easy task.

The data context, gives a simple method called create database which allows you to create an entire database in SQL Server.

To begin with delete your corrupt database, start a new console application, set a reference to the DLL containing your data context and type in the following code:

Console.WriteLine("creating database");
using (BusinessObjectsDataContext bc = new BusinessObjectsDataContext
("Data Source=(local);Initial Catalog=thousandtyone;User ID=sa;Password=yourpassword"))
{
bc.CreateDatabase();
}
Console.WriteLine("Database Created");
Console.ReadLine();

In the above example, I have taken a simple console application.

You could do this anywhere you wanted.

There are a couple of things which are interesting that you typically notice when reverse engineering your database using LINQ to SQL.

Firstly, what's interesting is that the connection string of your data-context now points to a database which does not exist in the SQL Server Instance yet.

Secondly, what is rather interesting is the speed of create database operation. In my case, the database had around five tables with relationships and the overall operation took around 385 milliseconds.

Finally, the accuracy of the database is seriously kick-ass. Things that you would think are not stored in the DBML file, for example, the original database field size (in case of strings) are in fact, all retained and used when you reverse engineer the database using your data context.

Not a bad option, if you are going to be deploying your application and do not have the scripts to create your database handy. It won't go so far as versioning your database or upgrading it like scripts do, but it does create a quick version of a fresh starter database and gets you going, specially if you have managed to lose your database and did not have the scripts generated in the first place.

posted on Tuesday, 22 June 2010 12:30:41 UTC  #    Comments [0] Trackback
Posted on: Tuesday, 15 June 2010

I recently posted my mini-affair with my Dell Mini 9 or Netbooks in general on my other blog. As it turns out a colleague of mine, inspired with the idea of using Net-Books wanted to buy one of his own. Before he did end up buying the Net-book however he wanted to use my mini 9 for a week.

I don't know about you, but when I start using a machine, I get personally attached to it. I load truck load of settings on to it and till I have formatted the box, I tend to feel fairly uncomfortable giving it out to someone.

Since the only setting the mini-9 contained however, was my blog account which was stored in windows live writer I figured a complete delete might not be necessary.

My first gut reaction --- I'll head to windows live writer and just delete the blog account before I had over the machine to my colleague. That way, I don't hand over my net-book with my blog account and credentials saved on it.

As it turns out, Windows live-writer however does not like people deleting the last or the only blog account it has and does not allow it.

If the blog is the only blog in windows live writer the delete button for the blog is completely disabled.

There are folks who have suggested that you uninstall windows live writer or for that matter install a dummy blog and then remove your blog, but both processes are fairly drastic and weird workarounds so to say. If there is a piece of software, setting or a zombie file on my laptop, I like to know where it is and I like the idea of being able to delete it if I want to.

It is with this freaky intent and illusion of control that I set out to delete the blog from Windows Live Writer. Turns out, deleting it happened to be rather simple. All I had to do was:

  1. Open the registry editor.
  2. Go to HKEY_CURRENT_USER\Software\Microsoft\Windows Live\Writer\WebLogs.
  3. Delete the blog that was denoted by a random GUID there.

Then when I started windows live writer it started with the usual wizard that it starts of with when you first load it. The wizard that you see when you have no blogs installed. With that settled, my Net-book seems personal-data-free and ready to be handed over to the colleague.

I wonder why deleting your last blog is not directly supported from the Windows Live Writer user interface and why I had to go through the registry to delete the blog, but the blog is off the Net-book and life moves on.

posted on Tuesday, 15 June 2010 08:46:42 UTC  #    Comments [1] Trackback
Posted on: Monday, 07 June 2010

My blog (www.thousandtyone.com/blog) where I talk about the human side of software development has been helping me exercise my writing mussels and express my loud opinions on software development. Most content on that blog is timeless.

This blog however, is meant to be my very own personal whiteboard where I can scribble content that is time bound.

Which means that blog allows me to talk about anything and everything that is on my mind or anything that I want to share with others.

Things which allow me to learn like a teacher and teach like a learner.

Things ranging from the new features in the latest version of C# or the release of a new framework. The formatting and proof reading of this blog may not be as tight as my other blogs, but expect to see much more dynamic content about the latest technology bits here.

posted on Monday, 07 June 2010 22:33:40 UTC  #    Comments [0] Trackback