Software-Update für Kobold VR100

Vor einem halben Jahr haben wir uns eine kleine Haushaltshilfe zugelegt: einen Staubsauger-Roboter der Marke Vorwerk. Da das Nachfolgemodell bereits in den Startlöchern stand, haben wir ihn vergünstigt gekauft. Er leistet wirklich gute Dienste (man kann unterschiedliche Startzeiten zu verschiedenen Wochentagen definieren) und wir sind sehr zufrieden damit. Einziges Manko: Es staubt sehr, wen man den Filter leert.

Auf der Vorwerk-Webseite habe ich gesehen, dass ein Software-Update zur Verfügung steht:

Auf der Webseite (http://kobold.vorwerk.de/de/service/software-updates/saugroboter/vr100/) gibt es zum Download die Kobold VR-Updater Software als auch die neue Firmware.

Die Anleitung als PDF-Datei (http://kobold.vorwerk.de/fileadmin/data/de/pdf/Roboter_Anleitung_Software/Anleitung_Saugroboter_SoftwareUpdate.pdf) ist wirklich gut und bebildert beschrieben.

Ich habe also die Software heruntergeladen und installiert:

Nach dem Starten präsentiert sich die Software wiefolgt:

Und man wird Schritt-für-Schritt durch das Update geführt.

Ich wollte mal einen Blick in die Release Notes der Firmware werfen, doch die ZIP-Datei ist verschlüsselt(?):

Ich bin gespannt, ob und wie gut der Kobold VR100 nach dem Software-Update saugt.

Continuous Lifecycle 2013 – Rückblick

Die Continuous Lifecycle 2013 ist zu Ende gegangen: zwei Tage vollgepackt mit interessanten Vorträgen vorwiegend zum Thema Continuous Delivery / Continuous Deployment.

Der erste Konferenztag: 11.11.2013

Die Keynote hielt Mirko Novakovic, seines Zeichens Entwickler und Vorstand der codecentric AG, zum Thema „Lean Startups Eat the World“. Er zeigte eindrucksvoll, wo die Reise (vor allem für das Web-Business) hingehen kann und dass man keine andere Wahl hat, als schnell reagieren zu müssen. Er hat dabei einige gute Buchempfehlungen gegeben: „The Lean Startup“ (http://theleanstartup.com/) von Eric Ries. Auch hier ging es um das Umsetzen einer Idee, Entwicklung, schnelles Feedback und „Go Live“, um schnell aus der Idee Kapital schlagen zu können. Ein guter Vortrag, um auf das Thema einzustimmen.

Für mich ging es dann weiter mit dem Thema „Puppen und Marionetten in der Deploy Pipeline“ von Thomas Gelf. Dabei wurde ein Tool namens „Puppet“ (http://puppetlabs.com/) vorgestellt, das helfen soll, für Test- und Produktivsysteme Software einzuspielen und diese aufzusetzen. Dabei geht es vor allem um das Management dieser Software und wie diese Daten mithilfe einer Domain Specific Language synchronisiert. Sehr beeindruckend, doch leider alles sehr Linux-lastig, was mich in meinem Daily-Business nicht so wirklich unterstützt. Einen Blick über den Tellerrand wert war es allemal.

Im Anschluss habe ich „Continuous Delivery – für jeden geeignet“ gehört. Herrmann Lacheiner hat die (qualitativen) Voraussetzungen für Continuous Delivery bedeutet und klargestellt: ohne bestimmte Prozess-Reife inkl. Requirements-Engineering, Tests usw. sollte man kein Continuous Delivery machen. Erst wenn die Grundlagen sauber sind, sollte man sich an dieses Thema wagen.

Der Vortrag „DevOps – Kultur- oder Technikfrage“ von Mathias Münch zeigte das Zusammenleben und die Zusammenarbeit von Development und Operations auf. Im Nachhinein hätte ich mir lieber „Git, Mercurial und Bazaar im Vergleich“ angehört, nachdem ich in der Pause viele hab von dem Vortrag schwärmen gehört.

Eindrucksvoll war der Vortrag von André von Deetzen und Oliver Wehrens (Principal Developers) bei der ePost zum Thema „Von einem Release alle sechs Monate zu täglichen kleinen Rollouts – ein Erfahrungsbericht“. In diesem Vortrag wurde erzählt, wie es die ePost geschafft hat, von relativen langen Release-Zyklen zu Continuous Delivery geschafft hat – ein wahrer Kraftakt. Für mich ist es immer noch fast ein Wunder, wie man sowas innerhalb so kurzer Zeit (2 Jahre) schaffen konnte, die Entwicklung u.a. auf Scrum und TDD zu trimmen, um dann Continuous Delivery umsetzen zu können. Hut ab!

Matthias Kainer hat in einer Präsentation „Getting your features out – verschiedene Ansätze, neue Features iterativ zu releasen“ u.a. das Feature Toggle Pattern und Feature Branches näher beleuchtet. Dabei hat er ein paar Anekdoten aus seinem Entwickler-Leben bei Autoscout24 / Werkstattportal erzählt.

Den Abschluss der Vortragsreihe machte Thorsten Maier mit seinem Vortrag zu „Schneller, Billiger, Besser – effektiver Einsatz von Code-Reviews“. Neben den manuellen Offline-Reviews (bevorzugte Variante) hat er noch kurz den Technologie-Stack von Atlassian (Stash und Crucible) vorgestellt. Mir persönlich sind die Tools lieber, da ich offline jederzeit Code-Reviews machen kann. Aber geht vor allem um das Zwischenmenschliche bei Code-Reviews und den Lernfaktor. Fehler zu finden ist auch wichtig, aber man sollte vor allem mit einem guten Gefühl aus einem Code-Review Meeting herausgehen.

Die Panel-Diskussion am Abend des ersten Konferenztages war recht polarisierend: auf der einen Seite das Thema „Web“ und „Continuous Deployment“ und auf der anderen Seite der Handwerker, der seinen IT-Service von einem Fachmann machen lassen muss. Letztlich konnte diese Frage nicht endgültig geklärt werden, da die Zeit leider schon vorbei war. Im Anschluss daran gab es noch ein „Get Together“ mit allen Teilnehmern bei einem gemütlichen Glas Bier.

 

Der zweite Konferenztag: 12.11.2013

Der zweite Konferenz-Tag begann mit einem sehr unterhaltsamen Vortrag von Simon Wiest, seines Zeichens aktiver Comitter beim Jenkins Projekt und Prof. für Informatik an der HdM in Stuttgart. Jenskins ist ein Continuous Integration System (aka Build Server), der in Java geschrieben ist. Die Oberfläche gefällt mir und der Funktionsumfang ist durch die Plugins mehr als ausreichend.
Anschließend ging es im Vortrag „Continuous Deployment so einfach wie möglich“ von Dr. Malte Clasen um einen Erfahrungsbericht, der zeigte wie er in seiner Firma Continuous Deployment anhand einer ASP.NET basierten Webseite umgesetzt hat. In der .NET Umgebung habe ich mich gleich heimisch gefühlt, aber viel Neues war für mich jetzt nicht dabei.

Die zweite Keynote war von Alexander Grosse (Soundcloud) zum Thema „DevOps, Continuous Delivery, Agile ALM – Hype over Substance?“. Wow! Was für ein Vortrag! Kritisch wurden aktuelle Trends beäugt und die Arbeit bei Soundcloud vorgestellt. Nach dem Jenkins-Vortrag hat mir dieser Vortrag als zweitbestes gefallen. Erzählungen aus dem „Nähkästchen“ bei Soundcloud waren sehr inspirierend.

Nach dem Mittagessen war ich an der Reihe mit meinem Vortrag zum Thema „Build Patterns – Patterns und Best Practices für den Build Prozess„. Der Raum war ganz gut gefüllt und die zahlreichen Fragen sehr interessant. Hat mir Spaß gemacht 🙂

Das Thema „Build und Projektautomatisierung mit Gradle“ von Joachim Baumann und René Gröschke hat einen guten Überblick in den Stand der Dinge bei Gradle gebracht. Gradle ist eine DSL für Buildprojekte und ist eine Alternative zu Systemen wie Ant, NAnt und Maven, die eher XML-basiert sind. Interessant war, dass jetzt vor allem C++-Projekte nativ unterstützt werden sollen. Sobald .NET-Projekte nativ unterstützt werden, schaue ich mir die Sache nochmals an.

Oliver Stamm hat sehr eindrucksvoll in seinem Vortrag „Wie Behaviour Driven Development den Weg zu Continuous Delivery freimacht“ gezeigt, wie Otto seinen Katalog selbst neu entwickelt hat, und dabei auf BDD gesetzt hat. Interessant war vor allem die Vorgehensweise und das selbst geschriebene BDD-Framework. Da werde ich einiges für mein Produkt mitnehmen können.

Den Abschluss der Konferenz machte für mich „Juristische Herausforderungen über den Lebenszyklus von Software“ von Tobias Haar. Die Gesetze lt. BGB unterscheiden in 4 verschiedene Vertragsformen (Dienstvertrag, Kaufvertrag, Werkvertrag und Mietvertrag), in die die Software-Entwicklung auch eingegliedert wird. Sehr viele kleine und große Stolperfallen, Vor- und Nachteile der jeweiligen Vertragsart wurden vorgestellt. Am besten, man nimmt sich für solche Vertragsfragen wirklich einen Anwalt. Trotzdem war es echt gut, sich die Sachen mal anzuhören.

Hier noch ein paar Bilder und Impressionen von der Konferenz:

Der zweite Konferenztag

Die Location: Die IHK in Karlsruhe

Meine Eintrittskarte als Referenz 🙂

WordPress: Für kurze Zeit nicht verfügbar, um eine regelmäßige Instandhaltung durchzuführen. Prüfe in einer Minute erneut.

Heute hab ich meinen WordPress-Blog auf die neue Version 3.7.1 geupdated. Kurz nach dem Start hat sich Chrome entschieden, die Seite neu zu laden. Seitdem erscheint beim Aufruf meines Blogs die folgende Fehlermeldung:

Glücklicherweise konnte ich nach einer kurzen Google-Suche eine potentielle Lösung im Blog von Dennis Koray finden:

Man muss ich per FTP verbinden, um dann die .maintenance-Datei im Root-Verzeichnis zu löschen. Anschließend sollte das Problem gelöst sein.

Besuch bei der dotnet cologne 2010

WillkommensbannerAm 28. Mai 2010 war ich auf der dotnet cologne 2010 in Köln. Das Programm war wirklich abwechslungsreich und sehr interessant.

Das Event fand im Holiday Inn in Köln statt. Die Organisation war wirklich klasse! Ich bin ja morgens gegen 4.50Uhr zuhause gestartet, um dann mit den öffentlichen Verkehrsmitteln und der Bahn nach Köln zu fahren.

Nach Ankunft im Holiday Inn konnte ich mich mit einem köstlichen Frühstück und Kaffee stärken. Genau das, was ich brauchte!

Los gings bei mir mit der Session “Give Your Application a Triple Boost with Windows 7, Microsoft .NET 4.0, and Intel Multi-core” vom Rami Radi von Intel. Neben den Folien zu Prozessorarchitekturen und Multi-Core-Programmierung von Intel zeigte er an einem Irrgarten-Programm(“Maze”) wie man mithilfe von vTune Performance-Bottlenecks auffinden kann.

Anschließend kam dann der sehr unterhaltsame Vortrag von Dariusz Parys zum Thema “Windows Workflow 4.0”. Endlich weiß ich auch, wofür man den WF-Designer brauchen kann.

Der Vortrag “Von 0 auf MSBuild 4.0 in 45 Minuten” von Thorsten Hans gab einen Überblick über MSBuild 4.0. Besonders interessant waren für mich die Neuerungen in MSBuild 4.0, die er wirklich sehr anschaulich an Beispielen gezeigt hat. Supi!

Gewinner der TypeMock Isolator Lizenz In der Lunch-Session “TypeMock Isolator, Mock-Framework für Brownfield und mehr” von Stefan Lieser habe ich doch tatsächlich eine TypeMock Isolator-Lizenz gewonnen. Yeah! 🙂

Darüber hab ich mich natürlich riesig gefreut! 🙂

Der Vortrag “Debugging in Deep mit VS2010 und WinDbg” von Gregor Biswanger war für mich etwas enttäuschend. An sich war er schon gut gemacht. Er hat auch Beispiele usw. gezeigt, doch irgendwie hatte ich mir mehr erhofft. Vielleicht lag es auch daran, dass ich das Buch “Debugging .NET Applications” von John Robbins gelesen hab und schon viele der Tipps & Tricks kannte.

Ein weiteres Highlight war für mich die Session “Parallelprogrammierung mit der TPL” von Bernd Marquard. Wahnsinn, was da alles mit .NET 4.0 bezüglich Parallelisierung geht! Wirklich toll gemacht!

Den Abschluss machte die Session “Managed Extensibility Framework (MEF)” von Christoph Wille, seines Zeichens Entwickler von #develop, einer Open Source Entwicklungsumgebung für .NET. Das war für mich eine Spur zu heftig, sodass ich nicht immer folgen konnte.

An dieser Stelle möchte ich mich nochmals bei den Organisatoren für das tolle Event bedanken. Es hat wirklich Spaß gemacht und ich freue mich schon auf das nächste Jahr.

Hier sind noch ein paar Bilder von Event:

Rami Radi's "Give Your Application a Triple Boost with Windows 7, Microsoft .NET 4.0, and Intel Multi-core" Dariusz Parys: "Windows Workflow 4.0" Thorsten Hans bei der Session zu MSBuild 4.0 Stefan Lieser bei der TypeMock-Session: Ich liebe dieses Bild zu Brownfield :-) Bernd Marquard bei der TPL-Session

Weitere Fotos vom Event: http://blog.typemock.com/2010/06/dotnet-cologne-2010-winners.html

Der leidenschaftliche Programmierer

imageMitte Februar hatte ich Geburtstag und das Buch “Der leidenschaftliche Programmierer” von Chad Fowler geschenkt bekommen.

Das Buch ist echt Klasse! Chad Fowler, eigentlich Musiker, hat es in der Welt der Software-Entwicklung weit gebracht. Seine Erfahrungen und Tipps sind in dem Buch beschrieben.

Es geht in dem Buch um die Weiterentwicklung persönlicher Fähigkeiten als Entwickler. Die Karriere sollte man sehen wie ein Produkt, das man entwickelt. Wie sieht es mit der Marktauswahl für das Produkt aus? In welche Programmiersprachen sollte ich investieren und in welche nicht? Letztere Frage wird im Probekapitel (http://www.it-fachportal.de/5885) angesprochen.

Man soll sich einfach nicht mit dem Mittelmaß zufrieden geben! Nur wer das beste anstrebt, erreicht auch das beste.

Fazit

Das Buch macht Lust auf mehr! Es liest sich einfach und flüssig und besteht aus 54 kleinen Kapiteln, die mit Übungen das “Gelernte” umsetzen lassen oder zum Nachdenken anregen.

Was hast Du vor 10 Jahren programmiert?

Ich möchte aus Dariusz Aufruf folgen und schreiben, was ich vor 10 Jahren so getrieben hab.

Vor 10 Jahren habe ich meine Bundeswehrzeit hinter mich gebracht. Die Zeit zwischen Studium und Bund habe ich damit verbracht, Visual Basic 6 zu programmieren.

Ich hatte damals die Idee, ein Programm zur Registrierung von Webseiten in Suchmaschinen zu schreiben. Damals konnte man sein Taschengeld als “Webdesigner” oder “Webmaster” noch aufbessern. HTML war damals eben voll angesagt:

Code_HTML_For_Food

Heute hingegen kann man kaum jemanden hinterm Ofen damit hervorlocken. Ich brauchte also ein Tool, mit dem ich die Webseiten meiner Kunden in Suchmaschinen bekannt machte. Konkurrenzprodukte wie HelloEngines oder Promoware gibt’s sogar heute noch. Aber in Zeiten von google und bing .. wer braucht dann noch so Tools?

Ein früher Entwicklungsstand meines Tools “Suchmaschinen-Autopilot” sah so aus:

image

Jaja .. das Thema Quellcodeverwaltung war damals auch was dolles .. meist hab’ ich mit ZIP-Dateien die jeweiligen Arbeitsstände weggesichert. Backups wurden damals auf ZIP-Laufwerke gemacht! Hab meinen Paps gebeten, mal das alte ZIP-Laufwerk rauszukramen und per Parallelport an den alten Rechner zu verbinden. Per TeamViewer (sehr empfehlenswert!) hab ich dann die Daten ausgelesen und violá .. hier ist ein Teil des (Spaghetti-)Codes in VB (leider ohne Syntax Highlight):

Private Sub Start_Button_Click()
    If Label70.Caption = „Offline. Bitte stellen Sie eine Dfü-Verbindung zum Internet her!“ Then
    MsgBox „Bitte stellen Sie zuerst eine DFÜ-Verbindung zum Server her!“, vbCritical, „Wichtiger Hinweis!“
    ElseIf WebSite_Titel.Text = „“ Then
    MsgBox „Bitte geben Sie den Titel der WebSite an“, vbCritical, „Fehler“
    ElseIf WebSite_URL.Text = „“ Then
    MsgBox „Bitte geben Sie die URL der WebSite an“, vbCritical, „Fehler“
    ElseIf WebSite_Beschreibung_kurz.Text = „“ Then
    MsgBox „Bitte geben Sie eine Kurzbeschreibung Ihrer Homepage ein!“, vbCritical, „Fehler“
    ElseIf WebSite_Beschreibung_lang.Text = „“ Then
    MsgBox „Bitte geben die eine ausführliche Beschreibung Ihrer WebSite an!“, vbCritical, „Fehler“
    ElseIf Sprache.Text = „“ Then
    MsgBox „Bitte wählen Sie die Sprache Ihrer WebSite aus!“, vbCritical, „Fehler“
    ElseIf Frames.Text = „“ Then
    MsgBox „Bitte geben Sie an, ob Ihre WebSite Frames verwendet!“, vbCritical, „Fehler“
    ElseIf Javascript.Text = „“ Then
    MsgBox „Bitte geben Sie an, ob Ihre WebSite JavaScript beinhaltet!“, vbCritical, „Fehler“
    ElseIf K.Text = „“ Then
    MsgBox „Bitte wählen Sie eine Kategorie aus, die Ihrer WebSite entspricht“, vbCritical, „Fehler“
    ElseIf WebMaster_Name.Text = „“ Then
    MsgBox „Bitte geben Sie den Namen des Webmasters an!“, vbCritical, „Fehler“
    ElseIf WebMaster_EMAIL = „“ Then
    MsgBox „Bitte geben Sie die e-Mail-Adresse des Webmasters an!“, vbCritical, „Fehler“
    ElseIf WebMaster_Passwort = „“ Then
    MsgBox „Bitte geben Sie das Passwort des Webmaster für Suchmaschinen ein (frei wählbar)“, vbCritical, „Fehler“
    ElseIf Firma_Name = „“ Then
    MsgBox „Bitte geben Sie den Firmennamen ein“, vbCritical, „Fehler“
    ElseIf Firma_Straße.Text = „“ Then
    MsgBox „Bitte geben Sie die Straße, in der die Firmen ihren Sitz hat, an!“, vbCritical, „Fehler“
    ElseIf Firma_Nr = „“ Then
    MsgBox „Bitte geben Sie die Hausnummer an“, vbCritical, „Fehler“
    ElseIf Firma_Ort = „“ Then
    MsgBox „Bitte geben Sie den Ort an, in der die Firma ihren Sitz hat, an!“, vbCritical, „Fehler“
    ElseIf Firma_Telefon = „“ Then
    MsgBox „Bitte geben Sie die Telefonnummer der Firma ein!“, vbCritical, „Fehler“
    ElseIf Firma_EMAIL = „“ Then
    MsgBox „Bitte geben Sie die e-mail-adresse der Firma an“, vbCritical, „Fehler“
    ElseIf Land = „“ Then
    MsgBox „Bitte geben Sie das Land an, für die Ihre WebSite gemacht ist!“, vbCritical, „Fehler“
    Else
    TAB1.Visible = False
    TAB2.Visible = False
    TAB3.Visible = False
    TAB4.Visible = True
    ‚Abfrage, ob bereits eine Eintragung vorgenommen wurde
    If OK.ListCount = 0 Then
    AutoAnmeldung.Show
    End If
    End If
End Sub

In mühevoller Kleinarbeit habe ich dann die Anmeldeseiten der Suchmaschinen studiert und jede einzeln hart kodiert ins Programm aufgenommen. Was für ne Arbeit! Objektorientierung war damals auch noch kein Thema (gab’s das überhaupt schon 😉 ). Ich habe mich immer gewundert, was die Leute denn mit diesen Klassenmodulen wollten. Komisches Zeug.