• 4Developers conference in Warsaw

    I will be speaking at the 2014 4Developers conference in Warsaw, Poland. In a matter of fact I have not one session but two! Tja, it’s actually THE one. But divided into two parts. Nevertheless a great deal of .NET continuous integration goodness comes into your direction. Watch out! For details see the conference website (Polish only). 4Developers conference .NET Track. April 4th 2014 at the Gromada Hotel Airport in Warsaw. Don’t miss it!

  • Classification of automatic software build methods

    Here is the online version of my article that was published in a chapter of a book at Opole University of Technology (ISBN 978-83-63015-10-7). Classification of automatic software build methods Summary: The process of creating working software from source code and other components (like libraries, database files, etc.) is called “software build”. Apart from linking and compiling, it can include other steps like automated testing, static code analysis, documentation generation, deployment and other. All that steps can be automated using a build description of some sort (e.g. script). This article classifies the automatic software build processes beginning at build script and reaching the various types of continuous integration. Keywords: software…

  • Standalone portable IIS with your site

    Let’s say you have a following task: your small ASP.NET (MVC) website needs to be run on a computer that does not (necessarily) IIS have installed. How to make it possible? You can do it using IIS Express. It is a small version of IIS server that Microsoft ships for free with at http://www.microsoft.com/download/en/details.aspx?id=1038. It is shipped with Visual Studio 2010 SP1 too (so there is a chance you already got it in C:\Program Files (x86)\IIS Express). They say it’s not xcopy deployable (meaning you cannot run it without installation) but it kinda is. You have to simply install it on one machine and take out what the files you…

  • Continuous Integration in Munich

    Hardy Erlinger, the head of .NET Developers Group München, has just confirmed my session in Munich, Germany. I will be speaking about Continuous Integration in .NET at January 17th. The meeting will take place probably as usual in Firma TESIS at Baierbrunner Str. 15, 81379 München. Start 18:00. Details will be available at the group website www.munichdot.net. Acha, the talk will be in German!

  • Continuous Integration in .NET book MEAP update

    There are two new chapters available at Manning MEAP site. The third one about build process automation (with MSBuild) and the forth one about choosing the right CI server (covering CCNet, TeamCity and TFS 2010). And wow the book is third on this weeks bestselling early access titles. Juhu!

  • Everyone is entitled to broad opinion

    I had an interesting dispute with my colleague weather to use only qualified type names in code or not. He insisted that we should not use the using directive to introduce a namespace but to write the fully qualified name every time it is necessary. I had quite opposite opinion but I agreed to give it a try. So I started to write public class MyClass { public static void Main() { System.Console.WriteLine("Foo"); } } instead of using System; public class MyClass { public static void Main() { Console.WriteLine("Foo"); } } Unfortunately over time it proofed no value to me. I was not happy with this rule, but I thought…

  • MTS 2008, Warsaw, Poland

    Microsoft Technology Summit 2008 (8th and 9th November), the biggest  Microsoft technology event in Poland went quite well. It was my first MTS and I was trying not to expect anything special. And indeed I haven’t experienced anything  earth shaking but altogether it was quite interesting and a good investment of time. I surely learned a few new things and meet interesting people there. I was astonished by the sheer number of attendees that gathered in there. I presume the old communist “castle” in the center of Warsaw the “Palace of Culture and Science” was the only place to accommodate this whole crowd, but it is not a cushy place.…

  • What null smaller than 0? Adventures with nullable types in .NET

    Lets say we have two nullable integers like this: int? i = null; int? j = 0; Is null smaller than 0 Console.WriteLine(i < j); False – no it is not. So probably null is greater than 0 Console.WriteLine(i > j); False – no it is not greater as well. All right! So null is equal 0. It has to be, JIT has no other choice, right? Console.WriteLine(i == j); Well False too! This two little fellows are not equal too. What? Is it raining frogs and we about to experience Armageddon? No! We have to use Nullable.Compare() and we will by back in normal world: switch (Nullable.Compare(i, j)) {…

  • Enum Factory

    I have a little tip for you. Let’s say you have an enumeration. You need a enumeration constant out of string variable. simply use System.Enum.Parse(). Here a small Snippet Compiler source code. using System; using System.Collections.Generic; public class MyClass { public enum FooBar { Foo, Bar, FooBar } public static void Main() { WL(FooBarFactory("Foo")); RL(); } public static FooBar FooBarFactory(string init) { try { return (FooBar)System.Enum.Parse(typeof(FooBar), init); } catch { // Do something throw; } } #region Helper methods private static void WL(object text, params object[] args) { Console.WriteLine(text.ToString(), args); } private static void RL() { Console.ReadLine(); } private static void Break() { System.Diagnostics.Debugger.Break(); } #endregion }

  • Aiding your work with Visual Studio Code Snippets

    I’ve bin writing //TODO comments in my code every time wondering what pattern have we agreed upon in our team. Was it a // TODO Recipient Priority Sender, Message or // TODO Priority Sender Recipient, Message or something else. Today I thought: who am I to remember all those dentils? Do I have something to help me with this burning problem? Well I have. The name is Visual Studio Code Snippet. It in a XML file that describes a quickly insertable text. With such XML description I will by able to write only a word “todo” in my VS and everything else will happen automagically. There will by a nicely…