Label Cloud

Showing posts with label Tools. Show all posts
Showing posts with label Tools. Show all posts

Monday, August 31, 2009

Source Control Management 201 - Repository Design for efficient code management using any source control

Source control management is an essential part of the development. It should be just as critical part of the developer’s toolbox as a good text editor. There is no project that is small enough not to deserve one. There is no such thing as bad source control management system. While there are probably hundreds SCM systems out there, some are more user developer friendly then others. Some of the more common ones you hear about today are Subversion, CVS, Git, Visual SourceSafe, Rational ClearCase.

A goal of a source control system is to answer the following questions:

  • What code is currently running in production?
  • What is the latest code a developer should be looking at?
  • What code was used to compile version X.XX.XXX?
  • How can a developer make changes without affecting other developers?
  • What changed between version X.XX.XXX and X.XX.XXY?
  • How can a developer incorporate changes between X.XX.XXX and X.XX.XXY to make X.XX.XXZ?
  • How can a developer rollback changes from X.XX.XXY to get back to X.XX.XXX?

All source control versions that I’ve worked with can answer all of the above questions. It does take some organizational skills on the developer to allow it to do so. SCM system stores code in a repository. It is up to the developer and SCM team to organize the layout of the repository. Some of the more common strategies are Trunk Focused


All development is done on the trunk. When the code is stable enough to be ready for QA/Production Testing it is brunched into a Beta/Release Candidate branch. The trunk version is incremented. The RC branch should have only minor bug fix related changes applied to it. All major changes are done in the trunk. As bugs are fixed in the RC branch, the changes are migrated into the trunk. When a version is released, the RC branch is moved into a Release branch. CHANGES ARE NEVER MADE IN THE RC BRANCH. IT IS READ ONLY! If a bug fix must be made to the already released version, a branch is created, and a change is done on the branch. The fix is then merged into the trunk.

This repository allows to easily answering developer’s question

  • What is the latest code I should develop from: Trunk
  • What code is currently running in production: Latest Read Only branch
  • How to make changes to version X.XX.XXX: Make a new branch from the version X.XX.XXX. After finishing your changes, merge them into the trunk.

Another strategy is to organize the repository around production version.


Main trunk has the currently released production version. The trunk IS READ ONLY! For development, a branch is created, and development is done on the branch. After the version is released to production, the trunk is replaced with the copy of the released branch, and is again made read only. To develop the next version, another branch is created. If a fix has to be made to the production release, a branch for the fix is created. Once fix is released, a new trunk is created from the fix branch. The changes are merged into the branch under current development.

This layout answers the same questions slightly differently:

  • What code is currently running in production: Trunk
  • What is the latest code I should develop from: Latest branch
  • How to make changes to version X.XX.XXX: Make a new branch from the version X.XX.XXX. After bug fix is released into production, the branch is copied and becomes the new trunk. Changes are merged into the latest development branch.

There are other repository layouts available, and / or your team might make design changes around above structures.


Thursday, March 26, 2009

Subversion 1.6 is released

Subversion 1.6 (And so is TortoiseSVN 1.6 and Subclipse 1.6) is released.

New Functionality includes

TortoiseSVN includes a completely rewritten Revision Graph

Get it while its hot


Tuesday, February 03, 2009

The Social Processional Network (Twitter, Friendfeed, Facebook, Linkedin, etc..)

I guess the original idea behind a social network is to socialize – communicate to others. The idea of group communication is not new at all. Some people might remember Bulletin Boards from 15-20 years ago, Compuserve / AOL (Still alive somewhat) / NNTP News groups (still available but are very different). Social networks got popular with MySpace and FaceBook. They were originally discarded as “play time” activities and are even now often restricted from access through corporate networks. However their professional use is increasing rapidly.

Stack Overflow

Even though I’ve been using social networking in my professional day-to-day for a wile, I’ve recently started to get a lot more engaged. Some of the dynamics of the site are astounding. I wrote a few comments on my experience. I’ve been using the site as a public forum for development related questions. It is amazing how fast other developers respond to the questions asked. if a question in well phrased, it can get multiple answers within minutes (sometimes even seconds)


Another tool is my network arsenal is my LinkedIn. The network grows exponentially as you start adding contacts. At this point, I have 185 direct connections. However, my total network is more then 2.2 million people. Considering that I only add people that I’ve been communicating with into my contacts list, that’s 2.2 million people that I can be pretty comfortable in asking for an introduction to. Until recently, I’ve used LinkedIn to do some background research on potential candidates. However, recently, I’ve started to get involved in the professional groups and ask questions. Unlike StackOverflow, LinkedIn has a very broad range of people that use it to connect to each other. This allows me to tap into the pool of resources and information that is wider then any one area of expertise. At the same time, since this is not a pure “social” network, all communication is professional.


StackOverflow and LinkedIn are great places to ask for information. Blog on the other hand is a great way to share it. There are blog networks that will provide you not only a place to host your blog, but as a community of readers that are interested in the contents. That will get you feedback on the topics you write.


Micro Blogging with Twitter is relatively new (from October 2006). However it is hard to understate the extend of the idea, the importance (and simplicity) of the technology and the reach of the network. There is a lot of talk about twitter on the web

Twitter can be used for anything from saying “I am bored” or “I am having lunch” to a more professional “Listening to so-and-so at the conference” or “Found this great article at http://www…” the short statement you make is broadcasted to all subscribers. You can include a subscribers' @name and the message (though still public) will be flagged on his screen so it is noticed. The whole interaction feels like room full of people with multiple conversation going on. You focus on a conversation with one or two people, but you can still overhear others. If you hear something interesting, you join in.


FriendFeed is an interesting service that takes information push to the next level. It creates one channel for sharing all your information. It connects to over 30 networks including Twitter, Blogs, Facebook, LinkedIn, Flickr, Del.ici.os, and others. It allows to setup friends and will follow their feeds as well. You can even setup an “imaginary” friend to organize someone’s information if they are not participating in FriendFeed.

Importance of Information Push

One thing to notice, is that I am putting a lot of emphasis on pushing the information to others. That is the important aspect of having a social network. Google does excellent job in providing an ability to search and access public information. However, it is the ability to interact by asking questions, by publicizing your ideas is what makes social networks really useful in professional atmosphere.


Saturday, January 31, 2009

Kids on the Net (KidZui review)

The internet age now starts much earlier. My got my first computer when I was 10 and it was Radio-86RK built by my father.

My kid’s computer experience is much different: desktop and two laptop computers are basically always available for them to us.

We got a few computer games as presents, but none of them were as good as the kids websites that we found. Here’s some of  the more favorite ones

Check out my full list of kids related sites at

One of my latest finds was . KidZui is a browser specifically designed for kids. Instead of working as a filer and preventing kids from going to restricted sites, it is designed to be the one and only application that the kids will interact through. The User Interface is great, very kids friends. Every page is hand picked by KidZui and verified to be Child Safe. This is really a Closed System browser.

Downloading the application from is straight forward. I had to install the application, and register myself as a parent. My KidZui account allows full monitoring of what my son views through the program. It will also send me a daily activity report with screenshots of the sites that he visited.

My son was able to pick and character, not only give him the name, but also select what the character would look like. The browser looks excellent. Very interactive, colorful, easy to navigate. KidZui folks did a truly remarkable job. I’ve put some screenshots of the UI below.

My son loves the browser. He can get around to all his favorite sites by himself. The search bar on top allows to quickly look through all available content.

We still try to limit the amount of time my kids spend at the TV and the computer. But while he’s on it, he is totally loving it.



Technorati Tags: ,,


Monday, December 22, 2008

Rebuilding my PC – And thank you Mozy for the backup

I’ve finally rebuilt my PC. The installation Vista install was relatively painless, except for one minor snag. When I booted from the DVD Drive, and deleted my old partition, Vista refused to install with a message: “Windows is unable to find a system volume that meets it's criteria for installation.” Ohh Sh*t… Well a quick search on Google (using a laptop), provided a solution. Removing USB from the boot-up sequence in BIOS settings resolved this problem.

Before rebuilding the machine, I’ve spent a few hours backing up data from my desktop to DVDs. However, after reinstallation, I found out that I missed to backup my music collect. I don’t have that much, only 8 gigs or so, but it is still not something that I would want to miss. So here’s were Mozy comes in. I subscribe to Mozy’s online backup solution ( For 4.95 a month, it provides a complete “Set it and Forget it” backup solution. After my machine was back up and running. I logged into the Mozy website. Selected “Restore using Web”, and chose my music folder. In about an hour, Mozy sent me an email notifying my that my restore files was ready. The email contained 3 links to file downloads: 3, 3, and 2GB files. About 1 hour for download, simple extract to the c:\ and I am back having my full music collection restored.

Mozy provides a pretty neat interface, very simple, yet pretty powerful. Ability to create multiple backup sets, bandwidth throttling, explorer integration (for Backup and Restore functions). Professional version provides even more functionality. And if all that didn’t get you excited, guess this: All that functionality is available FREE for up to 2GB of space. Yep. Completely Free. So check it it out:

Technorati Tags: ,,,


Tuesday, December 09, 2008

Hard Drive Defragmentation

Recently my laptop had been spinning its hard drive a bit too much and I thought to my self "when was the last time I defragmented?" Apparently too long ago:


  • 36% fragmented files
  • 5% Free Space
  • Very red looking picture
  • Very slow drive access

I have Diskeeper Lite (a free version) - and ran that overnight. The picture became slightly better, but not quite what I wanted:


Its very hard to defragment the harddrive with less then 20% free space available. So after removing some old files, and freeing up some space, 2nd run was much better:


Running it for 3rd time did not help much, so for now I am leaving it at that.


Overall.... The machine definitely seems faster. Lesson: Defragment regulargly. I'll update the post in a few days to note if the performance stayed good.

Technorati Tags:


Monday, December 08, 2008

Incremental Shortcuts in Eclipse

I am fairly new to Eclipse, but the more I use it, the more I like it.

My latest discovery is how efficient it is to use of shortcuts to find "stuff" in Eclipse. The lookups are incredibly fast and are very useful.

There is Open Type (CTRL+SHIFT+T) and start typing


Open Method (CTRL+O) and start typing


The typing part is critical. It is available even in preferences setup.


I really wish this functionality would exist out of the box in Visual Studio.


Thursday, August 21, 2008

Google Maps Mobile Rocks!

I am using GoogleMaps on my blackberry curve. I don't have a GPS, however, I find the tower based location pretty usefull. Now I am in Paris, and for kicks I tried to use the future here. Well, to my surprise, Google Maps correctly found me in the middle of Paris with accuracy of 1700 meters. That's pretty damn close. This app rocks!!! If you still don't have it, get it at


Thursday, June 26, 2008

Dropping Visual Studio Unit Testing for NUnit

Continuing with my adventures in porting java code to .Net, I am dealing with moving JUnit unit tests to .NET. My first move thought was to convert to Microsoft Unit Testing framework. However, after spending quite a bit of time to get it to work, I gave up and switched to NUnit.

Two things that are NOT supported by the Microsoft framework and forced me to switch

    • Per-Test StartUp/TearDown functions. [TestInitialize] and [TestCleanup] are not called for every [Test]. They are called when the Test class is initialized. That means its very hard to have a good Initialization and Cleanup routines for every test.
    • Lack of Test Inheritance. I a set of unit tests that test different implementations of an interface. The core test of the interface must be the same to make sure that all implementations handle the core identically. However, There might be special additional tests to validate extended functionality. Currently, you can not accomplish that with Inheritance.

Both are fully supported by NUnit.

Technorati Tags: , ,


Thursday, February 14, 2008

Firefox 3 Beta 3

Firefox team released a public Beta 3 of the new version of Firefox 3 browser. Here are some first impressions

  • Pretty stable, didn't have any stability issues yet. Beta 2 would crash on some very basic pages
  • It is FAST. As in like really, noticeably faster then Firefox 2 and IE. Complex pages like iGoogle, MSDN, etc... show up instantly
  • The URL dialog is nicely improved. You now get a dropdown with recommended URLs based on both URL and page title.
  • It passes the acid2 test

Some minor annoyances

  • Old add-ins and themes do not work

Technorati Tags: , ,


Friday, January 25, 2008

WCFTestClient - a testing utility from Visual Studio 2008

I stumbled upon an excellent utility for WCF Testing that comes with Visual Studio 2008 - WCFTestClient.

The tool is an simple way to test WCF clients HTTP and TCP bindings. Some things are not supported, however, for basic WCF Testing, this definitely beats the old ASMX test page.

Note: Also check out the WCFSvcHost utility from Visual Studio to host an arbitrary WCF Service.


Saturday, January 12, 2008

Query ExPlus is released

I finally got a chance to release a binary of the latest Query ExPlus v.

I didn't put time into the project for a while, however, some developers in the community did, and I'd like to extend my appreciation to those guys.

The new functionality since last version is:

  • Handle result sets with NULL primary keys
  • Select All for the grid
  • MRU implemented using Genghis library
  • OleDB Support
  • Fixing Order by in Oracle Browser

The project is still a one executable 172KB in size. The only prerequisite is the .NET 2.0 framework

You can access the project homepage on Source Forge

The direct download link for the release is

The download is available as either compressed executable or compressed source


Technorati Tags: , ,


Tuesday, December 04, 2007

Chat with me

Something new I've just added to my blog webpage, the "Chat with me" link. It is in the right top corner of the site.


You can implement this functionality by


Thursday, November 29, 2007

Google Maps for Mobile - Impressions Day 2

I just took a 60 mile trip and was checking My Location on the Google Maps for Mobile. To my surprise, it was pretty accurate during the whole trip. The map would place me on the highway or within a 50 yards of the highway along the route.

Another interesting detail, I didn't have to request the location all the time, the position would adjust as the car was moving - very much like the it does on the GPS.

That brought an interesting thought - Now Google has not only the locations where their devices are being used, but the movement patterns as well. That's a lot of information that can be used for both good and not ...

Technorati Tags: , , ,


Wednesday, November 28, 2007

Google Maps for Mobile - now with My Location

Today, Google made a new Google Maps for Mobile available on their site. The new beta version includes a My Location functionality that places your location on the map based on the information received from the cell phone towers.

I've installed the app on my Blackberry Curve. The My Location function is great, even though it is not as good as a GPS. While in my office, Google Maps placed my location within around 100m of my real location. That was great. The neat trick is that positioning works even when you are inside a building, something that GPS can not do.

However, near my house, it around 1 mile off (1.5 Km). Still good, considering makes it easier to request directions since its a lot easier to select the source point on the map.

I am sure they will be improving the app as time goes on as well.

Get the application from

Technorati Tags: , , ,


Thursday, November 22, 2007

Subversion pre-commit hooks

I am using a wonderful source control product Subversion. More information is available on

A great future of subversion is an ability to run a server script before the check-in is committed . The script has the ability to rollback the check-in. We are using this functionality to enforce comments for every check-in.

To create a script, place any executable file into a hooks folder in the repository. You can start with a pre-commit.tmpl template file that is located there already. The template is a perl script that accomplishes exactly that functionality.

Our subversion runs on a windows system, so we converted the perl script into a batch file

"c:\Program Files\Subversion\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
echo "Commit Comments are Required" >&2
exit 1
exit 0

Place the code into a pre-commit.bat batch file in the hooks directory.

Technorati Tags: ,,,


Monday, November 19, 2007

VS 2008 Wait is over

VS 2008 is RTM on November 19th

Get it now...

Technorati Tags: , ,


Wednesday, November 07, 2007

Windows Live Writer is out of Beta

The excellent tool that I am using to write blog entries is finally out of beta. Get it now.

Technorati Tags: , ,


Tuesday, October 23, 2007

Removing (Uninstalling) ClickOnce Web deployed application from Application Cache

I keep looking up a command to completely uninstall a ClickOnce application form the Application Cache. If the application is deployed using "Run from the Web" method, it is not available in the "Add/Remove Programs" control panel. To remove it, you have to clear the application cache. An important note: this will remove ALL applications from the cache. That is usually not a problem, since the next time you run them, they  will be downloaded.

To clear the cache, run the command "mage.exe -cc" from the Visual Studio command prompt.

Mage is using an API call to accomplish this functionality

CleanOnlineAppCache from Dfshim.dll

You can achieve the same functionality by using a command line tool RunDll32.exe

rundll32 %windir%\system32\dfshim.dll

Or create a batch file with the above command

Technorati Tags: , , ,


Friday, August 24, 2007

Update to the Scott Hanselman's 2007 Ultimate Developer and Power Users Tool List for Windows

Scott Hanselman updated his excellent tool list. For those who never saw it, I highly recommend to go through the list to see what they have been missing. For those who know about it, see what's new.