August 24th, 2009 — 5:40am
Today I came across an online tool that allows you to see the screenshot of pages in the google search result. You can give it a try at “Veesual.com”


While I found the concept to be interesting, I was wondering what could be the use of looking at screenshots of pages in search result. What matters to me is getting a list of relevant search results. A thumbnail of a particular page in search result won’t help me in determining how relevant that page is to my search.
However, I do see one use for getting search results along with thumbnails. It can be used to come up with ideas for designing web-sites for a particular theme. You can search on Veesual using a keyword that describes the theme of your site and then take a quick look at the design of pages in the result. This can help you to come up with your own web-page design.
Do let me know if you can think of some more applications of Veesual.com
Comment » | My Thoughts, Tips
August 9th, 2009 — 4:06pm
Consider the following class in C#
public class Person
{
private string name;
private int age;
public string Name{
get {return name;}
set { name = value; }
}
public int Age{
get {return age;}
set { age = value; }
}
}
If I want to set the value of Name and Age property on the instance of Person class, I’ll need to refer to that instance for every property I need to set in the code. For example:
var person = new Person();
person.Name = "Super Man";
person.Age = 30;
It would have been great if C# had an equivalent of VB’s “With..End” statement, where we could refer to the instance of Person class only once and then refer to properties only.
Today, I came across this post “mucking about with hashes…“, which shows how C# lambdas could be used as hashes. Using this concept, I implemented a simple extension method that simulates the behavior of VB’s “With..End” statement to some extent.
Here is the code for extension method:
public static class MetaExtensions
{
public static void Set(this object obj,params Func<string,object>[] hash){
foreach(Func<string,object> member in hash){
var propertyName = member.Method.GetParameters()[0].Name;
var propertyValue = member(string.Empty);
obj.GetType()
.GetProperty(propertyName)
.SetValue(obj,propertyValue,null);
};
}
}
Using this extension method, we can set the value of properties on instance of Person class as follows:
var person = new Person();
person.Set(
Name => "Super Man",
Age => 30
);
Isn’t that cool?
7 comments » | Programming, Tips
August 6th, 2009 — 3:47pm
Yesterday I installed and activated Blass2 theme for this blog. I liked this theme as it was very simple and free from any extra graphics. After installing the theme, I discovered that “SyntaxHighlighter Evolved” plugin which I use to display code segments, was not working. I searched for other themes which are similar to blass2 and can run syntaxhighlighter plugin, but couldn’t find anything better. Finally, this is how I fixed it.
To fix it, I had to edit ‘footer.php’ of Blass2 theme using inbuilt theme editor of Wordpress (Appearance > Editor). The original ‘footer.php’ looked like this:
<div id="footer">
<p>© <?php echo date("Y")?> <!-- Please leave this line intact --><?php if (is_home()) : ?><?php bloginfo('name'); ?> | Theme <a href="http://1000ff.de/wordpress-theme-blass-english-version/">Blass</a> by <a href="http://1000ff.de/">1000ff</a><?php else : ?>Theme Blass by 1000ff<?php endif; ?> | Powered by <a href="http://wordpress.org/">WordPress</a></p>
</div>
To fix the plugin, you need to add a call to ‘wp_footer’ function in ‘footer.php’.
<div id="footer">
<p>© <?php echo date("Y")?> <!-- Please leave this line intact --><?php if (is_home()) : ?><?php bloginfo('name'); ?> | Theme <a href="http://1000ff.de/wordpress-theme-blass-english-version/">Blass</a> by <a href="http://1000ff.de/">1000ff</a><?php else : ?>Theme Blass by 1000ff<?php endif; ?> | Powered by <a href="http://wordpress.org/">WordPress</a></p>
<?php wp_footer() ?>
</div>
After making this change, syntaxhighlighter plugin started working again.
1 comment » | Tips
August 5th, 2009 — 11:19am
If we want to share a file or photos while chatting with our friends on internet using IM tools like GTalk, we use file sharing services available online. These services allow us to upload a file to their servers and give us a link which we can share with our friends. But what if you are a developer and want to share a small piece of code with your friend? You are left with following choices:
- Paste it in your chat: I know most of us do this when we quickly want to share the code. However, its annoying as it becomes unreadable and makes your code look as if its obfuscated
- Email: This approach is better compared to previous approach, however the recipient wil need to manually compile the code and run it if he wants to know the output.
I won’t say these approaches are useless. But I would like to have a place, where I can put my code fragment and then share it using a link. I can use this link in my gtalk status, chat or even in twitter posts.
Luckily, there is a site called “codepad” that allows us to do exactly the same thing. It allows us to share a piece of code using a small url.
You can try it now at “http://codepad.org/” or take a look at this example code posted by me at “http://codepad.org/XZpSNngW”
Finally, one thing I would like to see is support for C# code.
4 comments » | My Thoughts, Technologies, Tips
July 31st, 2009 — 10:28am
Today, I managed to install Mono 2.4 in Ubuntu 9.04 without affecting Ubuntu’s default mono installation. Thanks to the instructions here (Building Mono 2.4 from source on Ubuntu 8.10), I was able to install latest mono/monodevelop in a parallel environment. Now I can work on C# 3.5 code in Linux as well.
Here is the screen shot of MonoDevelop instance with the code given in this post.

Comment » | Technologies
April 8th, 2009 — 2:19pm
For last few days, I was trying to use lambda feature of C# to implement Y-Combinator. After few trial and errors, I was able to implement it in C# 3.5. I’m currently posting the code here and in my next blog, I’ll explain how I derived it.
In this code, Y-Combinator function, is used to implement anonymous recursive-factorial function called ‘factorial’.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace YCombinator
{
class Program
{
delegate Func RecursiveFunction(RecursiveFunction f);
static void Main(string[] args)
{
Func, Func>, Func> Y = (f) =>
{
RecursiveFunction function = (h) =>
{
return (x) =>
{
return f(h(h))(x);
};
};
return function(function);
};
Func factorial = Y(function=>
{
return x =>
{
return x == 0 ? 1 : x * function(x - 1);
};
});
Console.WriteLine(factorial(5));
Console.ReadLine();
}
}
}
1 comment » | Programming, Technologies
February 11th, 2009 — 10:14am
It is really embarrassing to send an email with an attachment and actually forgetting to attach the file you were supposed to mail along, isn’t it? In my case, I often forget to attach files to emails if I’m typing it in hurry. Sometimes, I even end up receiving replies from recipients of those emails requesting me to eat food instead of attachments. I don’t know about you, but for me this is really embarrassing!!!!!!
Luckily, today I came across a feature in Gmail Labs, which helps you to identify missing attachments as soon as you press send button. This small functionality in Gmail warns you if you have written something like “I’m attaching” or “I am attaching” or “I have attached” in your message body and you haven’t actually attached any file. I’m not sure if it is capable of identifying any other patterns in email text which suggests that you wanted to attach something. However, I tested for above 3 patterns and I’m good with it.
To enable this feature, you will need to login to your Gmail account. Then go to Settings -> Labs, and enable ‘Forgotten Attachment Detector’. Don’t forget to click on ‘Save changes’ after that.
I would like to thank Mr. Jonathan K, for creating this useful feature in Gmail lab. It is definitely an important feature for me, and for many other people who like to eat attachments instead of food.
2 comments » | My Thoughts, Technologies, Tips
February 9th, 2009 — 2:58pm
Gone are those days when users had to learn all the shell commands (Dos or Unix), to be able to use their PCs. Now you have Graphical User Interfaces or GUIs which allow you to do all those tasks simply by pointing and clicking at icons or menus with that small device near your keyboard called ‘Mouse’. This means that we simply need to buy a computer and sit in front of it, and soon we will be able to use it effectively to manage all required information.
But wait!!!!! As computers are becoming smarter and smarter, some new age pirates are also becoming smarter. They are now finding new ways of hacking into your computer to steal your information with use of Trojans and viruses. For example, read this report on BBC News called ‘Parking ticket leads to a virus’.
This makes me feel that nothing has changed as yet. Earlier, it was difficult to use computers because users had to learn all the commands which were required to operate it. Now, common users are often scared to use their computers for doing activities like online transactions as they need to learn all the ways to protect themselves and their data from hackers.
Well, what does this mean for software developers? Software developers must keep themselves updated about various security issues and design stable and secure system so that more and more users will be able to use technology without even having to learn things they are not supposed to. For those who think software development is easy, I agree with you. Yes, software development is easy. BUT, developing a stable, user friendly and secure application is definitely not as easy as writing ‘var x=a+b;’.
1 comment » | My Thoughts
October 28th, 2008 — 5:20am
We had an application written in C# .Net, which used to communicate with Alfresco Enterprise Document/Content Management System. The application was using Alfresco’s NTLM component for authenticating users against their AD (Active Directory) user account.
The application worked perfectly while we were testing it on Windows XP system. However, on Windows 2003 64 Bit system, the application started failing as it could not authenticate users on alfresco server using NTLM.
So we had a situation where NTLM authentication used to fail only when our application was running on Windows 2003 Operating System. We tried disabling “Internet Explorer Enhanced Security Configuration”, but it didn’t help. Finally, after spending a lot of time on Google, we came across following article on Microsoft Knowledge Base:
“You may experience authentication issues when you access a network-attached storage device after you upgrade to Windows Server 2008, to Windows Vista, to Windows Server 2003, or to Windows XP“
This article talks about configuring the system to use appropriate NTLM version. In our Windows 2003 system, the value of “lmcompatibilitylevel” (Under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA subkey) was set to 2. We just changed this value to 1, and the client application started working properly in Windows 2003 system as well.
If you are also facing a similar issue on Windows 2003, then you can try the solution mentioned here. If setting the value of “lmcompatibilitylevel” to 1 makes no difference, then change this value to 0, which is the default value of “lmcompatibilitylevel” in Windows XP.
Comment » | Technologies, Tips
October 27th, 2008 — 7:55am
Most of the time, while trying to replace a substring in a given string, either all its occurrences or just the first one, java programmers tend to use ‘replaceAll’ and ‘replaceFirst’ methods provided by String class in Java. Java programmers like to use these methods to replace substrings as compared to ‘replace’ method of String class because of different reasons like:
- ‘replaceAll’ and ‘replaceFirst’ methods use regular expressions instead of character sequence. It is pre-assumed most of the time that using these methods will allow us to replace a given pattern in future, instead of just replacing a substring.
- ‘replaceAll’ and ‘replaceFirst’ methods are named such that they clarify the intent of their execution.
However, while using these methods, we need to be very careful while providing the string value which would replace a given substring or a pattern. Let’s understand why with the following example:
Run the following java code:
public class StringReplace {
public static void main(String[] args){
String stringValue = "test1 test2 test1 test3";
String replaceValue = "test";
stringValue = stringValue.replaceAll("test1", replaceValue);
System.out.print(stringValue);
}
}
This code works properly. But now try running the same code by changing the value of variable ‘replaceValue’ as:
String replaceValue = "$100";
This would result in an exception of type ‘IndexOutOfBoundException’. This is because the ‘$’ symbol is used to identify a group from the regular expression which is the first parameter of ‘replaceAll’ or ‘replaceFirst’ method. We can solve this problem by:
- Using ‘replace’ method: This would be the good choice if you want to replace a string literal and not a pattern.
- Escaping ‘$’ symbol: If you need to a use regular expression, and your pattern has no groups identified, then you can escape any group identification symbols from your replace string as shown below:
String replaceValue = java.util.regex.Matcher.quoteReplacement("$100");
Comment » | Programming, Tips