Creating ClickOnce installers with native registration free COM objects (with Paket and F#AKE)

    I haven’t found any good intro to this online (only parts of it), so I will give my best to describe the process I took here.

    The goal is, to create a ClickOnce installer for a .NET project, which contains a dependency to a COM object. The quirk here is, that we have to deploy this COM object with the project and we have no control over it. We just have been given a DLL, which in turn is a native COM object.

    SoCraTes 2015 - or how to be catmatic

    This year for the first time, I attended the SoCraTes (stands for Software Craftsmanship and Testing Conference) in Soltau, Germany.

    It is organized by the Softwerkskammer, the Software Craftsmanship Communities in Germany.

    I’m a member of this community since over 2 years now and heard a lot of good things about this conference. This year I finally had the time and was also lucky enough to grab a ticket (yes you have to hurry, as the number of participants is limited).

    So let me give you some impressions of this awesome event:

    TL;DR it was really (yeah REALLY) awesome

    Temenos

    Yesterday at the last meeting of my local software craftsmanship group, Olaf Lewitz from Berlin held a short introduction to Temenos.

    This was as quite interesting experience, so here is a little braindump from me.

    Why

    In many companies a huge amount of time is wasted by fear and politics. That can range from fear about the own job, the position to things like “watermelon reporting” (all green on the outside, but don’t look inside). All this interferes an open communication.

    Effective teamwork needs trust and trust brings saftey which leads to a more open and therefore efficient communication, because if you trust each other, there is no more any need to question everything oneself or the others have to say, there is no need for politics and fear. This saves time, increases bandwith (by exchanging meaning and not just information). You also have more options in situations where you have to decide about things, because one knows about the otherwise hidden knowledge and skills of the other team members.

    Screencast: FizzBuzz kata

    This week, at the meetup of my local software craftsmanship group, we did a mini code retreat with the FizzBuzz kata. In advance I had a discussion with Benjamin, that this Kata could be a bit to easy for a code retreat. My point was here, that IMHO is not done completely. Most people stop on a function like this:

    public string Translate(int value)
    {
        var result = string.Empty;
    
        if (value % 3 == 0)
            result += "Fizz";
    
        if (value % 5 == 0)
            result += "Buzz";
    
        if (value % 3 != 0 && value % 5 != 0)
            result += value.ToString();
    
        return result;
    }

    This is fine, as long you don’t want to extend the kata with different rules.

    Imagine you got up to this point and now you get a new requirement:

    Extend the Translation function so it prints

    • Bang” for all values divisible by 7
    • FizzBang” for values divisible by 3 and 7
    • BuzzBang” for values divisible by 5 and 7 and
    • FizzBuzzBang” for values divisible by 3, 5 and 7

    Surely you could just add another if statement but how ugly is that. This is the point, where the TDD-Part of the kata converts to a refactoring kata.

    Here you can see my take on this kata.

    It features a solution completely free of if statements and is quite good extendable. The resulting Translator class must never been touched anymore. All you have to do for different rules is to write a different RuleFactory. If you want to play you could even implement a RuleFactory which reads its rules from an XML file.

    The project for Xamarin Studio can be found here.

    You can get the music under http://www.jamendo.com/de/track/259936/scherzo-no.-4-in-e-major-op.-54-1843

    Have Fun

    YouTube Link for mobile viewers

    Screencast: Gilded Rose kata

    This is the Gilded Rose refactoring kata (see http://iamnotmyself.com/2011/02/13/refactor-this-the-gilded-rose-kata/).

    The project for MonoDevelop can be found here.

    You can get the music under http://www.jamendo.com/de/list/a49686/lunar-light

    Have Fun

    YouTube Link for mobile viewers

    Screencast: Coin changer kata

    This is the coin changer kata (see http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata).

    You can get the music under http://www.jamendo.com/de/list/a49686/lunar-light

    Have Fun

    YouTube Link for mobile viewers

    The Monty Test - A revised Joel Test

    Screencast: Roman Numerals kata

    This is the Roman Numerals refactoring kata (see http://codingdojo.org/cgi-bin/wiki.pl?KataRomanNumerals).

    You can get the music under http://www.jamendo.com/de/list/a49686/lunar-light

    Have Fun

    YouTube Link for mobile viewers

    Screencast: Video store refactoring kata

    This is the video store refactoring kata from the book “Refactoring: Improving the Design of Existing Code” by Martin Fowler, Kent Beck, John Brant and William Opdyke.

    The project file for IntelliJ IDEA resides on http://github.com/magicmonty/videostore

    You can get the music under http://www.jamendo.com/de/track/72960/w.-a.-mozart-1756-1791-sonata-in-c-major-k.-521-for-piano-four-hands

    Have Fun

    YouTube Link for mobile viewers

    I’m attending BlackBerry DevCon Europe – 7-8 February 2012, Amsterdam

    BlackBerry® DevCon Europe is the premier developer event where BlackBerry® enthusiasts will come together for sessions, demonstrations, keynotes, and more — all focused on creating mobile applications for the powerful BlackBerry platform.

    I’ll be attending! Join me so you can also get the value from the conference content, including previews and demonstrations of the latest innovations and breakthroughs with BlackBerry technology. I’m looking forward to discovering tools that can help me make apps more profitable, technologies that lead to developing more engaging Super Apps, and hot topics such as the BBM™ Social Platform, BlackBerry® 7, Adobe®Flash® and Adobe® AIR®, BlackBerry® WebWorks™, and more.

    I hope to see you there. Find out more about the conference at http://www.blackberrydevcon.com/europe.

    Visit the archives!