This work is licensed under the

Creative Commons License.

Esquire Theme by Matthew Buchanan
Social icons by Tim van Damme

18

Apr

OpenFlow is a controller based network where the routing and forwarding decisions are made by the OpenFlow controller for higher scalability, centralized management and advanced services. I strongly believe the OpenFlow Protocol will provide innovative, elegant and unexpected solutions to the networking industry by leveraging open source development methodologies, and soon we will be seeing more and more startups that are revolutionizing the networking industry as a whole.

10

Apr

iDev Recipes: Recreate interesting features of iOS apps

Here is a great site exploring interesting features and user interfaces of various iOS apps.

“Everyone’s An “Innovator””  on  The Joy of Tech

07

Feb

Don't make me steal: Digital Media Consumption Manifesto

I stumbled upon this earlier today and was really excited by its message. This is the point I have been so desperately trying to make. Criteria need work as they are flawed for various reasons and strayed from its focus, but the overall message is there.

03

Feb

How to: Update Assembly Version Numbers with TeamCity

Here is a quick and dirty hack to keep your assembly version numbers synchronized with the TeamCity build number.

Set your build number format in your Build Conguration to a combination of the following configuration parameters.

Build number format = %MAJOR%.%MINOR%.{0}.%REVISION%

Create a new Command Line build runner and feed it with the following PowerShell script and reorder the build steps so that the PowerShell script runs before any MSBuild runners.

Command executable = powershell.exe
Command parameters = "(gc AssemblyInfo.cs) |
  ForEach-Object 
  { (($_ 
      -replace \"^(.*AssemblyVersion.{1}).*(.{2})$\", '$1\"%ASSEMBLYVERSION%\"$2') 
      -replace \"^(.*AssemblyFileVersion.{1}).*(.{2})$\", '$1\"%ASSEMBLYFILEVERSION%\"$2')
      -replace \"^(.*AssemblyInformationalVersion.{1}).*(.{2})$\", '$1\"%ASSEMBLYINFORMATIONALVERSION%\"$2'
  } | sc AssemblyInfo.cs"

Finally, create the following Configuration Parameters in Properties and Environment Variables and Build your project.

%ASSEMBLYFILEVERSION% = %env.BUILD_NUMBER%
%ASSEMBLYINFORMATIONALVERSION% = "%MAJOR%.%MINOR% %REVISIONSTRING% %env.BUILD_VCS_NUMBER_Hg_test%"
%ASSEMBLYVERSION% = %MAJOR%.%MINOR%.0.0
%MAJOR% = 0
%MINOR% = 3
%REVISION% = 203
%REVISIONSTRING% = "Beta II"

And viola! Here is what your checked-out copy of the AssemblyInfo should look like before building your assemblies.

[assembly: AssemblyVersion("0.3.0.0")]
[assembly: AssemblyFileVersion("0.3.1.203")]
[assembly: AssemblyInformationalVersion("0.3 Beta II 5558fffc26f6")]

Please note that, in this example, I’m using Mercurial as my VCS so 5558fffc26f6 is the Mercurial changeset hash. Your AssemblyInformationalVersion would look similar when Git is used as your VCS. So the %REVISION% number above is just a numerical representation of the value of %REVISIONSTRING%, and for obvious reasons, not the incremental revision number from the local DVCS node.

For Subversion and other centralized version control systems, you could set your %REVISION% number to the incremental revision number since the revision numbers are identical across each machine.

%REVISION% = %env.BUILD_VCS_NUMBER_SVN_test%