I will be speaking at .NET Developer Days 2014 in Wrocław, Poland. The conference will be held between 14th and 16th October 2014 at the City Stadium in Wrocław. The topic is “Continuous integration and deployment in .NET with Jenkins CI and Octopus Deploy”. Here is the conference website: http://developerdays.pl/.
At my company CODEFUSION we are working with bigger and bigger customers. We are getting hit by terms that were little known to us until now. Last time we did get a contract to sign with a term (literal translation from Polish) software “illness”. The word illness was in quotation marks. The term was new for me, so I started to dig. It turned out that what was meant here was probably “software decay” (called also software rot, code rot, bit rot, software erosion or software entropy). It was something we all software developers are fighting with. Sometimes without knowing it has a name. Software does not change, bits don’t rot, programs are not getting ill. But the environment in which they are executed often changes. New hardware is being installed, dependent software changes (for example database engine is being updated). So the software slowly deteriorates. Faults are being discovered that were never seen before, performance drops, the overall stability decreases. We see it everywhere: websites are “old” after a year or two, windows applications written for windows without tiles look “funny” in Windows 8. From experience I know environments where some ancient technologies are still used to develop the software because every one it afraid to touch a running system. So: software rots.
It was quite funny how quickly I discovered a decayed piece of software that was written partly by myself. I work with Visual Studio. For various reasons I’m deep into addins development for Visual Studio. To my surprise one of my addins stopped working suddenly. I haven’t done anything with it since a year or so. What I did I’ve done is I installed a new version of Visual Studio and unknown number of updates for both the old and the new one. Maybe it was what rotted my addin. So I quickly spin up the debugger and found that this line of code
1: _toolWindow = _applicationObject.Windows.CreateToolWindow(
6: ref docObj);
rises an exception. ProgId seems to be wrong. No matter it was all right a year ago. Now it is wrong. Google seemed to know nothing about it. So I fiddled around. _toolWindow is a custom window for my addin. It’s “Windows” type. Visual Studio API is not the cleanest part of the code I’ve seen. Not surprisingly there was a “Window2” type. With a method “CrateToolWindow2” that produces an object of “Window” (of course not “Window2”). But it was exactly what I need. So I’ve changed the implementation slight to:
1: Windows2 windows2 = (Windows2)_applicationObject.Windows;
2: _toolWindow = windows2.CreateToolWindow2(
8: ref docObj);
And voila! It magically worked. I have no idea why the class name is better than ProgID. Maybe it is an SDK update, maybe something else. But what ta heck! I will let it work until it rots again.
This year I was once again an invited speaker at the Developer Week conference in Nuremberg, Germany. I was speaking (in German of course) about the basics of hardware programming in .NET. Developer Week is biggest developer conference in Germany: 250 session, 150 speakers. It consists of .NET Developer Conference (DDC), Web Developer Conference (WDC) and Mobile Developer Conference (MDC). Here are some pictures from the conference.
I’m very proud to be a Subject Matter Expert at CompTIA in Chcicago, USA. I was invited to participate in a Software Engineering and Networking for Programmers workshops in their headquarters at Downers Grove (west Chicago suburbs). The first day of Software Engineering workshop went by and was quite intensive. I’m working in a small international (Canada and USA) group of professionals from institutions like IBM or Illinois State University. We are creating and asserting items for a new set of certifications that CompTIA is developing. We are basically writing the questions for the exams the candidates will have to pass to get the certification. It’s quite intensive but it is a lot of fun with interesting people. I’m very glad that I was chosen to be Subject Matter Expert (SME) by CompTIA.
I’m a “bits sculptor”! I work with bits to create beautiful software. I have done it myself for years and now I’m running a software development company to create “better software”. But I was always jealous of people creating more tangible items than software. Not that I ever thought about software as a lesser creation then physical objects. Oh, no! Creating good software takes the same amount of effort and talent as creating for example a good car. But still. But you cannot “touch” the software you are creating. So I decided to go a bit into hardware. And what is the better way for .NET software developer than to go programming .NET based electronics?!?!
Yesterday I’ve added a talk about the basics of .NET hardware programming to my repertoire. It’s basically the material I’ve worked on while writing the two articles published by dotnetpro Magazin in Munich, Germany. The first one was about Netduino and it was published in 08/2012 issue and the second one was about Tinkerforge from the 12/2013 issue. I’ve added a bit information and a demo for Raspberry Pi and Mono. I gave a talk at the meeting of .NET Developers Group München (17.12.2013). It went quite well. Despite the technical versatility I had to manage (and believe me the table was crowded with electronics!).
And here are two photos from the talks I gave last week (11.12.2013) at the Opole University of Technology. The topic was: testing mobile software and I showed (among other things) our RoboTouch project.
Last week was quite eventful. I’ve talked about Continuous Integration in .NET and about how do we use it at my company CODEFUSION at the IT Academic Day 2013 at the Opole University of Technology (OUTech). It was an event organized by the .NET Group from the OUTech and Microsoft Poland. The auditorium nearly full! Of course I’ve showed my funny CI gadget "Great Integrator Helmet". It connects wirelessly to the CI server and transfers a feedback about failing build by blinking and hauling. As usual it was very well noticed by the auditorium
And since we are at the topic of tinkering with electronics: I’ve described how to build such a thing using Tinkerforge and .NET and together with Bernhard Kord written an article about it. It went “live” this week in the 11th 2013 issue of dotnetpro Magazin in Munich, Germany. If you are keen in German language (the article is written in German) take a look at http://www.dotnetpro.de/articles/onlinearticle4689.aspx for more details!
I was invited speaker at this years Developer Week – .NET Developer Conference in Nuremberg, Germany. It was quite nice event and I was speaking about “Continuous Integration in .NET”. You can find Post-Event Report in this document (German only!). If you look carefully you will surely find my picture there!
I have recently participated in the “ENASE – Evaluation of Novel Approaches to Software Engineering” conference. This year (2013) it was held in Angers, France. I have learned a lot during this conference! I have presented a short-paper I’m coauthoring called “Continuous Test-Driven Development — A Novel Agile Software Development Practice and Supporting Tool”. Presentation wen well – here are the slides.
What is the paper about? Lets read the abstract:
“Continuous testing is a technique in modern software development in which the source code is constantly unit tested in the background and there is no need for the developer to perform the tests manually. We propose an extension to this technique that combines it with well-established software engineering practice called Test-Driven Development (TDD). In our practice, that we called Continuous Test-Driven Development (CTDD), software developer writes the tests ﬁrst and is not forced to perform them manually. We hope to reduce the
time waste resulting from manual test execution in highly test driven development scenario. In this article we describe the CTDD practice and the tool that we intend to use to support and evaluate the CTDD practice in a real world software development project.”
So basically we’ve named a technique that combines Continuous Testing (CT) and Test-Driven Development (TDD) and came with a Continuous Test-Driven Development (CTDD).
2 pictures instead of 2000 word? TDD looks like this:
CTDD looks like this:
Herzlichen Dank an alle die Teil in mein Vortrag wahrend Developer Week / Dotnet Developer Conference 2013 in Nürnberg genommen haben! Das war eine Hervorragende Stunde! Ich hoffe Ihr etwas über „Continuous Integration in .NET“ gelernt habt. Herrlichen Dank an Organisatoren für die Einladung. Danke an Kollegen Referenten. Danke an alle 1500 (?!) DWX 2013 Teilnehmer!
Und als Bonus – CiInDotNet_Dwx
Another conference is coming. I will be speaking at ENASE (Evaluation of Novel Approaches to Software Engineering) conference in Angers, France. I’m coauthoring a paper about new technique in software engineering that involves test driven development and continuous testing. I will publish the paper after the conference on this blog. If you are interested in new approaches in software engineering please take a look at http://www.enase.org/ and it you happen to be near Angers between 4th and 6th of July – visit!