Reflektion KW 43

Image courtesy of "marcolm" / FreeDigitalPhotos.net

Image courtesy of „marcolm“ / FreeDigitalPhotos.net

Wie schon die beiden Wochen zuvor reflektiere ich die vergangene Arbeitswoche.

Diese Woche waren zuerst Ergänzungsarbeiten für den vorherigen Release zu leisten. Da sich die Komponenten der vorgegebenen und erwarteten Architektur entsprachen und auch beim anzusprechenden Gerät keine Überraschungen auftraten konnte ich diese Arbeiten schneller als geplant erledigen.

Dadurch konnte ich früher als erwartet wieder an den neuen Funktionalitäten arbeiten. Bei der Umsetzung machten wir auch wieder eine eintägige intensive und fruchtbare Pair-Programming-Session.

Reflektion KW 42

Image courtesy of "marcolm" / FreeDigitalPhotos.net

Image courtesy of „marcolm“ / FreeDigitalPhotos.net

Nachdem ich letzte Woche mit der ersten Reflektion der Arbeitswoche gestartet habe folgt nun die zweite Reflektion.

Da meine Arbeitswoche verkürzt war (einen Tag frei genommen) und diese Woche ein Sprint fertig wurde und ein neuer startete ist die Reflektion geprägt von der Retrospektive des Sprints.

Kommunikation zwischen Projekt-Teams
Als ein Problempunkt hat sich die Kommunikation zwischen den zwei Projekt-Teams herausgestellt. Ein Grund für die schwierige Kommunikation dürfte beim Auslassen des Kickoff-Meetings liegen. Dies wird nun so bald als möglich nachgeholt.

Planung des Reviews
Beim Review des zu Ende gegangenen Sprints konnten keine Änderungen an der Software gezeigt werden, da hauptsächlich technische Aspekte behandelt wurden. Dadurch war es für nicht-technische Stakeholder schwierig, Feedback geben zu können.
Beim Planning des neuen Sprints wurde diese Problematik berücksichtigt und die Stakeholder in der Einladung zum Review bereits über die geplanten Resultate vor-informiert.

Reflektion KW 41

Image courtesy of "marcolm" / FreeDigitalPhotos.net

Image courtesy of „marcolm“ / FreeDigitalPhotos.net

Ich habe mir zu Ziel gesetzt, jede Woche hier im Blog kurz zu reflektieren. Diese Woche starte ich und versuche, dies zumindest bis Ende Jahr durchzuziehen.

Pair Programming
Diese Woche habe ich an zwei Tagen mit zwei verschiedenen Team-Mitgliedern im Pair Programming an zwei Tasks gearbeitet. Es waren zwei intensive Tage, die aber zu guten Ergebnissen in kurzer Zeit geführt haben.

Halbwertszeit des Wissens
Obwohl ich selbst über das Problem mit den Namespaces in XML gebloggt hatte bin ich gut zwei Jahre später wieder in dieselbe Falle getappt. Aber wenigstens ist mir schnell eingefallen, dass ich dieses Problem schon einmal hatte.

Binäre Werte in C#

Image courtesy of "Stuart Miles" / FreeDigitalPhotos.net

Image courtesy of „Stuart Miles“ / FreeDigitalPhotos.net

Da ich mich wieder einmal in die Tiefen eines Protokolls herab wagen musste war ich auch mit Bitmasken konfrontiert. Da merkte ich, dass ich nicht mehr wusste, wie binäre Werte in C# anzugeben sind. Also kurz Dr. Google gefragt und die Antwort bei StackOverflow gefunden: Geht nicht!

Mit der neuen Compiler-Platform „Roslyn“ (C# 6) waren „binary literals“ geplant (Das Feature war für C# im Status „planned“, für VB.NET schon „done“), sind nun aber nicht mehr für den nächsten Release vorgesehen.

Ein paar Vorschläge, wie man sich behelfen kann sind bei StackOverflow auch noch zu finden:

Ein anwendbarer Weg, wenn nicht zu viele Werte nötig sind, ist der Vorschlag von Markus Johnsson:

Man kann die Werte als Konstanten definieren, die mit b… beginnen:

const int b001 = 1;
const int b010 = 2;
const int b011 = 3;
// etc ...
Debug.Assert((b001 | b010) == b011);

Eine andere Variante (von Marc Gravell) ist, mit Strings zu arbeiten und diese zu Parsen:

int i = Convert.ToInt32("01101101", 2);

Sahuagin vertritt in seiner Antwort die Meinung, dass man gefälligst mit hexadezimalen Werten rechnen lernen soll…

Aber der Vorschlag von Dmitry Tashkinov dürfte mehr Ärger verursachen als helfen, wenn er angewendet wird:

long bitMask = 1011001;
// And later
int bit5 = BitField.GetBit(bitMask, 5);
// Or
bool flag5 = BitField.GetFlag(bitMask, 5);`

// Helper class
public static class BitField
{
    public static int GetBit(int bitField, int index)
    {
        return (bitField / (int)Math.Pow(10, index)) % 10;
    }

    public static bool GetFlag(int bitField, int index)
    {
        return GetBit(bitField, index) == 1;
    }
}

Entsprechend auch der Kommentar dazu: Using int thousand to mean 1-0-0-0 is just asking for trouble.

Piwik 2.5.0

Logo Piwik 2

Logo Piwik 2

Beim Release 2.5.0 von Piwik wurde der Fokus auf das API gelegt. Die Änderungen sind nun im neu eingeführten Changelog ersichtlich.

Die insgesamt 87 geschlossenen Tickets umfassen unter anderem folgende Änderungen:

  • Es werden nun weitere Suchmaschinen als Referer erkannt
  • Verbesserungen bei der Anzeige der erkannten Browser
  • Verbesserung beim Schutz der Privatsphäre der Besucher
  • Code wurde aufgeräumt und unbenutzter Code entfernt

NSIS Tutorial in c’t 16/2014

Die c’t-Ausgabe 16/2014 enthält ein Tutorial zu NSIS. Es wird darin neben den Grundlagen auch mit Custom Pages gearbeitet.

Der Artikel ist leider nicht frei verfügbar, auf der Webseite des Verlages kann aber der Artikel einzeln (oder das ganze Heft) erworben werden. Als Alternative verweise ich natürlich gerne auf mein eigenes NSIS-Tutorial (Teil 1, Teil 2 und Teil 3).

Auch bei NSIS selber tut sich wieder etwas: Seit dem Mai ist NSIS 3.0 als Beta-Release erhältlich.

Piwik 2.4.1 / Tickets bei GitHub

Logo Piwik 2

Logo Piwik 2


Die Version 2.4.1 von Piwik ist ein Minor Release, in dem ein paar Bugs behoben wurden. Es wurden dabei insgesamt 18 Tickets bearbeitet.

Die Tickets werden neu bei GitHub verwaltet. Weitere Informationen sind im Piwik-Blogeintrag „Piwik is now using Github issues as our Issue Tracker!“ zu finden.