February 2012
2 posts
2 tags
October 2011
1 post
7 tags
March 2011
1 post
Was wir eigentlich gemacht haben...
Wer sich die ganze Zeit fragt, was wir hier eigentlich tun, hier das Thema des letzten Sprints als Lyrik. Man singe es zur Melodie eines bekannten Songs von Deep Purple:
We both came here for coding At the coast of Koserow Hacking some new features And refactoring where we go
Our planning algorithm Is a tricky thing to rewrite But we are proud to announce that There are other goodies...
February 2011
9 posts
Stand der Dinge
Nach dem “Warmlaufen” (DB-Anpassung, …) am Wochenende haben wir für die erste Hälfte unsere Aufgaben gut 3 Tage benötigt. Gesten haben wir (nach einem erfrischenden Bad in der Ostsee) mit dem zweiten Teil begonnen. Also sind wir derzeit recht optimistisch, dass alles wie geplant fertig wird.
WPF - Ein einziges Rätsel →
Kohlenhydrate
sind ja nun wirklich wichtig für uns Programmierer, weshalb wir gelegentlich mal eines der örtlichen Cafés aufsuchen. Aber irgendwie mache ich mir nun Gedanken über den Altersunterschied zwischen meinem Kollegen und mir.
Ich habe nämlich gerade diese leckere Waffel verspeist:
Und hier die Wahl meines Kollegen:
Das Wetter
lässt sich fotografisch derzeit kaum dokumentieren, weil dabei Kamera und Mensch entschieden zu nass würden. Von der malerischen Schnee- und Eiswüste letzten Jahres ist leider nichts zu sehen. Dafür halt Dauerregen und Sturm.
Vorteil (für unseren Arbeitgeber): wird trauen uns nicht raus. Und da wir die extra bestellten DVDs (IT Crowd, u.A.) leider im Büro liegengelassen haben, bleibt uns nichts...
January 2011
1 post
Es geht wieder los...
Wir stecken in den Vorbereitungen für einen weiteren “Inselcamp”-Einsatz. In einer Woche geht es los.
November 2010
1 post
1 tag
Es geschah an einem Mittwoch...
Wenn man heutzutage eine neue Programmiersprache lernen will, ist in den meisten Fällen nicht die Sprache selbst das Problem, sondern die dazugehörigen Bibliotheken und Frameworks.
Offenbar benötigte bei unserem Outsourcing Projekt einer der Entwickler den Dezimal-Separator. Entweder war nicht bekannt, dass das .NET Framework Klassen dazu bereitstellt, oder die Lösung wurde aus irgendeinem Grund...
June 2010
2 posts
1 tag
Genau das war mit unserem Programm passiert →
Wir haben die Nägel jetzt rausgezogen, wodurch es natürlich des öfteren in sich zusammensackt. Aber so langsam päppeln wir es wieder auf.
Alles Sauber
Gestern Abend wurde der Raum, in dem wir seit 13 Wochen hausen, das erste Mal gereinigt.
Ich bin zwar Programmierer, sehe aber trotzdem einen Unterschied :-)
Ob sich das wohl im Velocity-Indicator im TFS niederschlägt?
May 2010
1 post
Vor zwei Wochen sind wir von Subversion+Mantis nach TFS migriert. Das hat natürlich etwas Zeit gekostet, aber insgesamt ging es doch recht schnell und schmerzlos. Schnell allerdings auch, weil wir darauf verzichtet haben, die komplette Historie aus SVN zu übernehmen.
Unser Vorteil jetzt: der TFS liefert ohne größeren Aufwand nette Statistiken und Grafiken, so dass man das Management damit gut...
April 2010
2 posts
Aufräumarbeiten
Nachdem uns aus Zeitgründen nichts anderes übrig blieb, als den Großteil der dubiosen Fehlerbehandlungskonstrukte automatisch zu entfernen, gilt es nun, die Funktionen im Programm zu finden, die nur funktionierten, weil eigentliche Programmierfehler unter den Teppich gekehrt wurden.
Hierzu haben wir (in Ermangelung automatisierter GUI-Tests) leider keine Möglichkeit zur Automatisierung. Will...
2 tags
Und wieder mal Ausnahmen
Das Aufräumen der Try/Catch Blöcke ist wie schon erwähnt durch.
An einer Stelle haben wir aber bisher sogar die “Old Style” Fehler-Nicht-Behandlung mittels On Error Resume Next dringelassen: in Dispose() Methoden. Der Grund, dass diese Anweisung dort benutzt wurde, ist, dass in unseren Fenstern viele Controls und Daten lazy - also erst wenn sie wirklich gebracht werden - initialisiert...
March 2010
6 posts
3 tags
Oh, Du Sch... Sommerzeit
Der Wechsel zwischen Normal- auf Sommerzeit erinnert mich jedes mal an die Ärgernisse, das für die Softwareentwicklung mit sich bringt. Datumsfunktionen scheinen ja schon kompliziert genug zu sein - mit schöner Regelmäßigkeit wiederholen sich auch bei großen Herstellern immer die gleichen Bugs in echten Schaltjahren oder solchen, die entfernt danach aussehen.
Ein Schaltjahr-Problem hatte unsere...
Pasta
Hier mal ein Stück echter Quellcode aus dem Programm:
''' <summary>
''' Get PAVO Pasta
''' </summary>
''' <returns>ObservableCollection(Of ComboIntegerEntity)</returns>
''' <remarks></remarks>
Public Function GetPAVOPasta() As ObservableCollection(Of ComboIntegerEntity)
Try
Dim listPavoPasta As New...
2 tags
Startup-Modus gegen Büro-Modus
In den ersten 1 1/2 Wochen haben wir in einem Ferienhaus einige hundert Kilometer vom Firmensitz entfernt gearbeitet. Jetzt sitzen wir in einem getrennten Büro in einem anderen Stockwerk des Bürohauses. Wie groß sind die Unterschiede in der Effektivität? Kurze Antwort: es kommt darauf an, um welche Tätigkeiten es sich handelt. Längere Antwort:
Die Arbeitsweisen sind ziemlich unterschiedlich....
1 tag
Ernüchternde Statistik
Das Programm ist gespickt mit überflüssigen bis gefährlichen, weil Ausnahmen verschluckenden, Try-Catch Statements. Praktisch alle mit Catch ex As Exception, so dass z.B. kein Unterschied zwischen Speicher voll und verschiedenen Formen von Programmierer hat Mist gebaut gemacht wird.
Vor unserer Aktion gab es gut 11000 solcher Statements. Inzwischen sind es “nur” noch ca. 8000.
Update...
1 tag
Glasperlen der Programmierkunst
Diese Codezeile
Dim isSave As Boolean = (_obj.RSave = "J")
kann man auch so schreiben
Dim isSave As Boolean = CBool(IIf(_obj.RSave = "J", True, False))
Wie man allerdings darauf kommen kann, das zu tun, erschließt sich mir nicht.
Abgesehen von möglichen Performanceeinbußen empfinde ich es als Körperverletzung, solchen Code auch nur ansehen zu müssen (sollte ich eine Gefahrenzulage...
Es geht weiter
Nach einer Woche Pause setzen wir das Projekt fort, allerdings in einem Büro etwas näher der Heimat.
February 2010
32 posts
Wieder zuhause
Wir sind sicher, und trotz eines Staus recht schnell, wieder zuhause angekommen. Sehr seltsam hier: kein Schnee und +10°.
Vielen Dank an alle, die diese Unternehmung logistisch oder sonstwie unterstützt haben!
Geschafft!
Wir sind mit dem Ergebnis hochzufrieden.
Fertig:
Anpassungen an strukturelle Änderungen der Daten in Stammdaten, Logik, Druck.
Stammdatenfenster für einige neue Hilfsdatentabellen.
Migrationsskript direkt von der am häufigsten eingesetzten Version, unter Umgehung der Zwischenversionen.
Skript zur optionalen Datenkonsolidierung.
Diverse Performanceverbesserungen beim Datenbankzugriff.
...
2 tags
Die Antwort: Microsoft Visual Studio 2008.
Ich hoffe doch, dass niemand an ein bestimmtes anderes Programm gedacht hat. Falls doch, Schande über Euch!
Kleines Ratespiel
Was ist das:
es ist ein Computerprogramm
es läuft unter Windows
es braucht ziemlich viel Speicher
bei intensiver Benutzung steigt der Speicherverbrauch an, und das Programm wird langsamer
irgendwann wird es dann unbenutzbar langsam, oder stürzt sogar ab
Um welches Programm handelt es sich wohl?
1 tag
Nebenbei das Problem gelöst, dass im Setup mal brauchbare Debug-Symbole enthalten waren, und mal nicht. Die Dateien mussten von Hand in ein bestimmtes Verzeichnis gelegt werden, bevor das Setup erstellt wurde! Dabei gibt es im Setup extra einen Menüeintrag, um die Debug-Symbole eines Projekts einzubeziehen. Das wurde jetzt korrigiert, so dass es ab jetzt immer Stack-Traces mit Zeilennummern geben...
Man soll das Schicksal nicht herausfordern. Natürlich fing es kurz nach unserer Schneeschipp-Aktion an zu schneien. Bis jetzt hat es nicht wieder aufgehört…
2 tags
Die Rache des bösen ByRef
Eigentlich ist es ja ein nettes Feature, dass VB.NET (und C#), im Gegensatz zu Java, out Parameter erlaubt. Das kann den Code manchmal wirklich vereinfachen, z.B. wenn mehrere Werte zurückgegeben werden sollen (z.B. bei IDictionary.TryGetValue).
Dummerweise hatte sich in der Anfangsphase der Entwicklung unserer Applikation (“damals”, so gegen Ende der 90’er) unter den VB6...
Tumblr vs. Posterous →
Programmierernahrung
So langsam kommen wir richtig in Fahrt, was sich unter anderem darin äußert, dass die mitgebrachten Süßigkeiten (danke, Ilka!) schnell zur Neige gehen. Was tun? Weitermachen bis der Blutzucker zu sehr abfällt, oder vorher zum nächsten Laden? Welch ein Dilemma…
Halbzeit
Nach 4 Tagen ist fast die Hälfte unserer Zeit um. Von den internen Änderungen an der Datenzugriffsschicht ist klar mehr als 50% fertig. Anpassungen an der Oberfläche haben wir noch nicht vorgenommen. Insgesamt ist also vorsichtiger Optimismus angesagt.
Insgesamt arbeitet man hier deutlich produktiver und angenehmer als im Büro. Dafür aber auch länger ;-)
2 tags
1 tag
Bourne again
Inzwischen bin ich dazu übergegangen, einige Massenänderungen am Quellcode unserer Software mit UNIX Shell Skripten durchzuführen. Bei der Masse an Fenstern sehr praktisch (250 Geschäftslogik-Klassen in 1 Sek. geändert). Natürlich gibt es immer die Gefahr, dass das Skript nicht ganz das Richtige tut, aber wir Programmierer leben ja gerne gefährlich. Und außerdem werden die KundenTester die Fehler...
1 tag
Oracle Features (not bugs)
Ab Oracle 11gR2 werden wir die alten exp und imp Befehle nicht mehr benutzen können. Aufgrund einer Optimierung werden leere Tabellen nicht mehr exportiert, und fehlen nach vollem export/import in der Datenbank. Klarerweise mag unsere Applikation das nicht sonderlich.
Kein Problem, sagt Oracle: es gibt ja expdp und impdp - das sind seit Jahren die empfohlenen Tools und haben dieses Problem nicht.
Der Application Server benötigte auch noch ein paar Anpassungen. Jetzt ist er zumindest soweit, dass das gute alte Benchmark-Skript wieder läuft.
Ich hasse Events. Echt jetzt. Wer hat sich das ausgedacht? Warum kommen sie entweder, wenn man sie nicht gebrauchen kann, oder nicht, wenn man sie eigentlich erwartet? Und vor allem, warum kommt das Event plötzlich nicht mehr, obwohl ich nichts geändert habe?
On Error Goto Work
Das Programm wurde im letzten Jahr von VB6 nach VB.NET portiert. Von Hand natürlich, da bei einem Projekt dieser Größe die automatische Migration völlig versagt.
Zu den unangenehmeren, aber für die Qualität absolut nötigen, Änderungen an dem Programm gehört daher jetzt auch die Entfernung von VB6-ismen, wie die Verwendung der untypisierten Microsoft.VisualBasic.Collection und insbesondere...
Nach viel Arbeit funktioniert jetzt auch der Druck im erwähnten Fenster. Es gibt lediglich noch ein kleines Performanceproblem (hüstel…)
Fortschritt
Sieht ganz gut aus: ein beliebtes Fenster (PXXX) zeigt korrekte Daten; Neuanlage und Speichern funktionieren.
Migrationsskripte sind ebenfalls schon recht weit.
1 tag
Feierabend
Das rumstochern in den SQL Statements, die unsere SW ach so dynamisch zusammenbastelt, ist reichlich zäh. Selbst wenn’s nur darum geht, simple Kundeninformationen anzuzeigen. Aber genug für heute - jetzt ist erst mal Feierabend.
Datenbanken klar - Leinen los
Endlich haben wir ein paar Datenbanken auf die neuen Strukturen gebracht. War vielleicht etwas sportlich, gleich eine der größeren Kunden-Datenbanken zu benutzen, aber wir wollen ja mit realistischen Datenmengen arbeiten.