Developer's Resources

by Jig 12. November 2010 22:00

I have sticky notes and print-outs pined on my work wall for all those good stuff we all developers use all the time. Well, I thought it will be a good idea to put them together so that they are easily accessible. Following is a comprehensive list of regularly used cheat sheets and references. 


If you all know any other cheat sheet that I might have missed, please let me know and I will include it as well.


Cheat Sheets:



MCTS-ified :)

by Jig 12. November 2010 10:02



I have been planning to give my certification exams since a long time. Finally, I decided to appear for my exam on last Saturday and now I am Microsoft Certified Technology Specialist in Web Applications Development using .Net Framework 4.0!


There are not many books available on C# 4.0 yet. None released from Microsoft Press yet. I referred to MSDN for most of the study material. There is a very nice blog by NIALL MERRIGAN, on study guide for this exam. In my opinion, real life experiences are the best way to learn. So if you are working on .Net Framework 3.5 for a while now, just need to brush up some of the new stuff of .Net 4.0 and you should be good to go for the exam!


Enhancements made by Microsoft to its certification program make them more meaningful and practical than ever, helping companies recruit the best candidates. Microsoft Certification enable you to keep skills relevant, applicable, and competitive. Being a Microsoft Certified Professional, you get several benefits, some of which are:


  • MCP only access to community
  • Special offers and events from Microsoft
  • Discounts on MCPeStore
  • MCP Career Center



Plus, Cool Logo & Business Card:





Three more exams to go for MCPD in .Net 4.0.





Automated Builds and Continuous Integration

by Jig 28. September 2010 15:17

What is the difference between Automated builds and Continuous integration?


Most of the people have a common misunderstanding of minor differences between the two. People working in Agile world would surely know the importance of these terminologies. I have been following Agile Methodologies for a while now and actively looking for a build automation tool, but I have not completely satisfied with any of them yet. May be because I don't know core flavors of each one yet.


Build Automation:

There are various build automation tools available, which are used to automate the build process, instead of doing it manually. These tools include:


Continuous Integration:

These tools are the triggers that listen to "events" in the network (a check-in to source control, could be a trigger). We can configure these tools to do a few simple things when an event happens.

Some of the tools include:

What should we use?

I really don't know yet and open for discussion on this. I am looking for something easier to configure and which is not a maintainability nightmare!


How to obtain IP Address of a Client

by Jig 22. June 2010 11:25

I have been working on this since last few days so thought of making a note of it. It may be useful for many others as well who are in same boat. One of our application would like to know the IP address of user/visitor. It is used for authentication based on IP addresses but I am not going in details regarding that functionality in this blog. User may or may not come through proxy server. Here, I would like to provide a general method to fetch client's IP address through ASP.Net and give an explanation on the result in terms of different hardware conditions.


[C# Code]

private string getIPAddress()


        string strIpAddress;

        strIpAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (string.IsNullOrEmpty(strIpAddress))

            strIpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

        return strIpAddress;



In above sample code, HTTP_X_FORWARDED_FOR is used to detect if client is using proxy server or not. If client uses proxy server, then the above method will try to obtain IP address behind the proxy server. In many situations, the IP addresses we get are probably the addresses of proxy server.


1. Not Use Any Proxy Server:

REMOTE_ADDR = IP address of client
HTTP_X_FORWARED_FOR = No value of no display


2. Use Transparent Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_X_FORWARED_FOR = Real IP address of client


3. User Normal Anonymous Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_X_FORWARED_FOR = IP address of proxy server


Another important fact that may affect the result of above code is the configuration of router. If the router of local network enables NAT (network address translation), then the IP address obtained is the address used by the router or load balancer to access external network. 

Before using above co de, it is necessary to consider the real product environment and then use it accordingly.


Happy coding!

Agile Methodologies

by Jig 30. March 2010 15:07

Well I have been going through Agile training in my company, and whole atmosphere is Agile-oriented here these days, so I thought let me speak about it as well. There are several projects going on here, but they decided to migrate couple of projects (including mine) to adapt Agile techniques.


Agile software development process is basically another fancy word for dynamic software development or lean software development. It is an iterative way of developing where requirements and solutions evolve through self organizing cross functional teams. Agile mainly focuses on "timeboxing" concept, which means all tasks are narrowed down to smaller time frames. Few of the popular agile methodologies include, Scrum, Extreme Programming, AUP, etc.


Scrum is a process skeleton, or a work flow, or a framework, which contains a set of practices and roles. There are three basic roles in Scrum:

1. Scrum Master - Who maintains the processes, conduct meetings, etc

2. Product Owner - These are the stakeholders, customers or actual business people

3. "Team" - Cross-functional team who do the actual analysis, design, implementation, testing, etc.


Another good concept came up in the meeting which I really liked. It's called "Muscle Memory". Good example of "muscle memory" is - if I am a tennis player, I am used to one particular kind of swing. Now If I want to play Racket Ball I need to learn a different kinda of swing. Tennis swing will not work for the game of Racket ball. So to play good game of Racket ball I will have to overcome my "muscle memory" and learn new swing. This is the core concept in adapting Agile Techniques in real life!


Well, there are lot of other stuff I would like to include in Agile discussion. Stay tuned!

Window to My Mind!

by Jig 24. March 2010 09:00

So yes, there are all these random thoughts that cross my mind a few times each day, I thought I should pen them down. I have asked myself several times why don't I start my own blog. Frankly I didn't have the time. (Well thats not entirely true, I am just lazy writer ;)) Let's see how often I can get myelf to scribble here. I realize that there is so much information that I come across that is truely useful and I don't always have the time to write an article. In many cases the ideas don't require an entire article anyway. Blogging seems to make a lot of sense for all those scenarios.


I owned my website since 2003 but never actually updated it for a long time. When I was deciding couple of months ago what will be the main topic of my new website, I definitely told myself that it must be a blog, besides the sandbox for my all day-to-day released Softwares (hopefully there will be around 2 or 3 per year). Then, I was thinking whether to create a blog on some existing site like MSDN or Wordpress, etc., but I finally decided to use my own solution that keeps me with a possibility of doing various customizations or implementing other web extensions.


I don't know what I might be writing here at this point. Do expect something vaguely related to the technology, for sure! Do expect something vaguely related to my work and hobbies.


Thanks for reading my first post. All your comments/suggestions are really appreciated.


Stay tuned for more stuff.

Hi, I'm Jignesh

My name is Jignesh Panchal and I am a Sr Software Engineer, UI Designer and system architect. I follow and practice Software Craftsmanship principals, clean code, lean startup methodology.


Besides this, in my free time I love to play tennis, cricket, PC and PS3\Xbox One games, dig in web development and design. Hardware hacking using Raspberry Pi, Arduino.

Page List