15 November 2018

neue arc42 Website...

Wir haben https://arc42.de nach langer Zeit auf eine neue technische Plattform umgestellt, seit ein paar Tagen ist's live.

Das haben wir gefeiert:

Mit arc42 bekommen Sie neben guten Softwarearchitekturen, zufriedenen Stakeholder und sparsam/pragmatischer Dokumentation sogar die Adventsgeschenke früher:

Wir haben einige Exemplare des neuen “Knigge für Softwarearchitekten (3. Auflage)” verschenkt - innerhalb eines einzigen Tages haben sich über 100 Interessenten bei uns gemeldet - und unser Vorrat ist leider schon aufgebraucht...

DANKE für Euer enormes Interesse.

Wir gratulieren allen, die unter den ersten 100 waren und hoffen, dass Euch das Buch neben Spaß beim Lesen vielleicht zur einen oder anderen (positiven) Änderung in Euren Projekten verhilft.

Über Feedback zum Knigge - oder zu arc42 - freuen wir uns immer.

Gernot Starke (und Peter Hruschka)

05 May 2018

Migrating plain-http Github-Pages to https

Since early May 2018, Github allows https for github-pages with custom domains - which was a longstanding requirement of many users. It was made possible by a cooperation between Github and LetsEncrypt. I'm operating a few sites via github pages, so far all of those lacked https (aim42.org, docs.arc42.org, faq.arc42.org, patterns.arc42.org, venom-story.org, esabuch.de).

Github Pages with custom domains

Up to now, the procedure to serve these sites via Github with a custom domain was the following:
  1. create an A-record in the domain providers' DNS (that's independent of Github) containing Github's IP addresses (they provided two different for availability / scalability reasons)
  2. create a CNAME file in the Github repo containing the domain name in uppercase (oftentimes that was created automatically by the appropriate Github repository settings dialogue.
  3. commit, push and done.

How to Migrate to https

To migrate this to the new https system, follow these steps:
  1. change the DNS A-record(s) at your domain provider to the new Github https address (now they provide four different IP's instead of the previous two) - e.g. 185.199.108.153, 185.199.109.153 etc.
  2. Remove the old CNAME file from your repository, commit and push this deletion to Github.
  3. Open the Github repository settings page and manually enter the domain name.
  4. Wait a few minutes until your certificate is generated - invisible for you.
  5. If you're using Jekyll to generate your site, it's a good idea to change your _config.yml configuration from "http://yourdomain" to "https://yourdomain". That's not absolutely required, but will ensure that Jekyll will use the more secure https protocol for all cross-references on your site.
  6. Now you can check the "enforce https" checkbox - which was disabled until this very last step
That's it. Thanx again Github for making this possible!

Appendix: Why should I do that?

As of July 2018 (with the release of Chrome v68), Google will clearly mark plain-http sites as insecure. See their announcement. Computerworld has written up a few arguments (speed being one of them). Some sources (this one, for example) claim that search engines (especially Google) favour https over http, so your page rank might decrease (!) if you stick with http much longer.

17 September 2017

Wie man Onboarding NICHT machen sollte

Gute Idee...

Bike-Sharing - eine gute Idee. Anbieter gibt's mittlerweile viele, insbesondere in Berlin. Wir haben uns für Lidl-Bike entschieden - eine Marke der Deutsche Bahn Connect GmbH. Seriöser Name, dachte ich, schick gemacht Website, und vor allen Dingen sind viele (!) Räder überall in der Stadt verfügbar. Soweit super. Dann schnell registriert...

... netter Anfang...

Tarif auswählen - wobei die Unterschiede zwischen den vier Optionen leider unklar bleiben: NewImage Naja, nehmen wir mal Basis... Jetzt Name, Adresse Email + Kontaktdaten angegeben, inklusive Zahlungsdaten. Kein Kennwort. Aber Zahlungsdaten? Naja, ich will ein Fahrrad mieten, und zwar sofort. Also - meine Kreditkarte angegeben. Dann folgt ein freundliches: "Danke für Ihre Registrierung - Sie erhalten eine Mail."

... Security? Scheint nicht nötig!

Ja, Mail + SMS erhalte ich pronto. Und in der Mail steht, im Klartext (!!) ein für mich erzeugtes Passwort. In der Mail. Ein Klartext-Passwort. 2017. Da sollte jeder Softwerker schon mal was von Security gehört haben. Insbesondere, keine Passworte per Mail zu versenden. Schon gar nicht an nicht-verifizierte Adressen. Und schon überhaupt gar nicht inklusive aller weiteren Informationen, die ein Angreifer zum Kapern von Accounts benötigt.

Peinlich + gefährlich

Wer diesen Onboarding-Prozess konzipiert respektive entwickelt hat, benötigt dringend Nachhilfe in Sachen Security. Die beteiligten Dienstleister (die sich auf der Lidl-Bike Website auch noch kräftig selbst loben) haben sich damit gründlich disqualifiziert. Aber die Räder sind prima, Verleih- und Rückgabeprozesse großartig, und Berlin ist bei schönem Wetter eine tolle Stadt.

tl;dr

Lidl-Bike verschickt beim Onboarding Passworte plus Kundennummer im Klartext an nicht-verifizierte Mailadressen. Finde ich nicht gut - Angreifer könnten damit den neu angelegten Account kapern.

25 January 2017

arc42 - Version 7

(for DE see below)

English Version

Finally, after extensive discussions with users and our committers we released a new version of arc42. Fully compatible with prior versions, preserving the established template structure, v7 has become even more pragmatic and compact. That makes using the new version simpler and more efficient than ever before. For v7 we vastly improved documentation and explanation of arc42 - creating two extensive sites (docs.arc42.org and faq.arc42.org). For a more detailed intro, see this post on the innoQ blog.

Deutsche Version:

Endlich, nach langer Diskussion mit Nutzern und Comittern haben wir eine neue Version von arc42 veröffentlicht. V7 ist vollständig kompatibel mit früheren Versionen. Wir haben die bewährte Struktur komplett erhalten, sämtliche Erklärungen und Hilfetexte jedoch gründlich überarbeitet und noch pragmatischer und einfacher gestaltet. Die Nutzung dieser neuen Version wird damit noch einfacher, als das bisher war. Insbesondere gibt es nun zwei umfangreiche Websites mit praktischer Hilfestellung ((docs.arc42.org and faq.arc42.org). Mehr Infos in diesem Post (im innoQ Blog).

06 October 2016

Bauen versus Basteln

Vorsicht: Nestbeschmutzung

Tut mir ja wirklich leid, aber ich möchte an dieser Stelle mal ein wenig IT-Bashing betreiben - und mich über die teilweise grotesken Zustände der Softwareentwicklung beklagen.

TL;DR (aka Zusammenfassung)

Wir basteln oft, statt (systematisch) zu bauen. Das liegt manchmal weniger an uns Techies (Entwicklern, Architekten etc), sondern an negativen Wechselwirkungen vieler Parameter, die häufig miserabel gemanaged werden - und auf Dauer dann zu unwartbaren, unflexiblen und unverhältnismäßig teuren IT-Landschaften führen. Ziemlich drastisch hat das renommierte "Handelsblatt" es zuletzt unter dem Titel "Ramponierte IT" auf den Punkt gebracht:
"Die schlechten Computersysteme werden für viele Effizienzprobleme verantwortlich gemacht" (Handelsblatt)

Software "entwickeln" klingt systematisch...

Wir sagen fast alle "Softwareentwicklung" zu unseren Jobs - das klingt systematisch, fast so wie "Engineering". Wir erfreuen uns an Entwurfsprinzipien, verwenden etablierte Architekturmuster und arbeiten iterativ-agil. Stets streben wir nach Innovation und Verbesserung, und dauernd kommunizieren uns Blogs, Zeitschriften und Konferenzredner coole "Success Stories": Systeme in denen (scheinbar) alles richtig entschieden und ordentlich implementiert wurde.

"basteln" trifft es oft besser

In Wirklichkeit hat das so genannte "Entwickeln" von Software meiner Erfahrung nach in vielen Fällen deutlich mehr mit "Basteln" als mit systematischem Vorgehen zu tun. Die oben genannten "Erfolgsgeschichten" passieren oftmals "woanders", in ganz speziellen Situationen oder halten einer näheren Überprüfung nicht stand. Viele unserer mittleren bis großen Systeme sind "hysterisch gewachsen", man könnte auch "gewuchert" dazu sagen. Viele meiner aktuellen und ehemaligen KollegInnen können in ihren eigenen Systemen mehr Antipatterns aufzeigen, als Stellen, auf die Teams auch nach längerer Zeit noch stolz sind. Diese Probleme treten völlig unabhängig von (oder sogar trotz der...) so genannten Vorgehens- oder Reifegradmodellen auf.

Same Stupid Mistakes

Dabei wissen wir (SoftwerkerInnen) doch ziemlich genau, welche typischen Fehler auf lange Sicht zu übermässig komplexen Systemen führen - die wir im Team nicht mehr effizient weiter bearbeiten können... Aus meiner Sicht sind dabei folgende Themen besonders schlimm:
  • Mangelhafte Anforderungen: Garbage in, garbage out. Wenn uns Product-Owner oder Fachbereiche unscharfe oder schwammige Anforderungen geben, werden wir möglicherweise stark konfigurierbare Systeme liefern, damit alle möglichen Interpretationen dieser Anforderungen noch erfüllbar sind. Uns allen ist aber klar, dass Konfigurierbarkeit mit hoher Komplexität einhergeht - und zu mehr Code führt, als wenn wir stärker abgrenzen und uns in Systemen stärker fokussieren.
  • Unklare Qualitätsanforderungen:Teams haben immer "implizite" Vorstellungen, welche Qualitätsanforderungen ein System denn erfüllen müsste. Leider unterscheiden sich diese impliziten Annahmen manchmal gravierend von denen der Fachabteilungen, Auftraggeber oder sonstigen Systemverantwortlichen.
  • Arbeit unter Zeitdruck: Es gibt im Durchschnitt immer mehr Arbeit als Zeit dafür. Daher gehen wir während der Arbeit an Systemen lauter kleine Kompromisse ein, die einzeln kaum auffallen, in ihrer Summe dann aber zu fatalen Mängeln der inneren Qualität führen - ein anderer Begriff dafür sind "technische Schulden".
  • Kein Abbau technischer Schulden: Zu viele Abhängigkeiten, schlechte Modularisierung, geringe Konsistenz, übertriebene Inhomogenität, Nutzung veralteter Frameworks oder Technologie, unzureichende automatische Tests (um nur einige aufzuzählen) - das könnten wir ja alles bereinigen oder zumindest drastisch verbessern - sofern wir dafür etwas Zeit zugestanden bekämen. Aber: Der Abbau dieser technischen Schulden hat für unser Management kaum Priorität, ist mancherorts sogar als "nutzlose Zeitverschwendung" verschrien, die, so wörtlich, "ja keine neuen Features liefere".
  • Mangelhafte Entwicklungsprozesse: Auch heute, im Jahre 2016, weigern sich Organisationen noch beharrlich, auf flexiblere und schnellere Entwicklungsprozesse zu setzen. DevOps und Continous-Integration werden als "funktioniert hier sowieso nicht" abgetan. Klar, das funktioniert ja wirklich nur, wenn Organisationen bereit sind, an ihren Prozessen als Ganzes zu arbeiten - also auch Anforderungen, Test, Deployment/Release und Betrieb zu optimieren. Einer meiner Kunden aus der Finanzbranche hat das letztens mal prägnant formuliert: "Da müsste mal von ganz oben jemand durchregieren - um den Silo-Fürsten die Macht über ihre Teilprozesse zu beschneiden."
  • Lokale statt globale Optimierung: Entwickler besitzen einen fast unbändigen Drang zur Verbesserung, den sie gerne in Form von Refactorings oder kleinen lokalen Veränderungen ausleben. Solange umfassende und komplett automatisierte Tests diese Veränderungen auf mögliche Nebenwirkungen überprüfen, ist das gut. Manchmal verlieren Entwicklern jedoch den Überblick über die negativen Konsequenzen ihrer lokalen Änderungen auf andere Teile des Systems... Wir sollten Verbesserungen stets in etwas größerem Kontext betrachten - also über den Tellerrand einzelner Personen hinweg schauen. Das ist meiner Ansicht nach eine klassische Aufgabe für die Rolle "Softwarearchitektur".
  • Wenig Verständnis für Zusammenhänge im Großen: Ich bekomme in realen Projekten oftmals zu hören: "Wir können ja die Wechselwirkungen auf andere Systemteile gar nicht mehr genau beurteilen".... Solange Projekte das Thema "Übersichtsdokumentation" weiter vernachlässigen, wird mangelnde Übersicht auch ein Problem bleiben.

Bin ich zu pessimistisch?

Klar, wir können auch "gut": Homogene Teams, ohne Fluktuation, über viele Sprints hinweg mit ausreichend Zeit und Budget ausgestattet, denen verständige und kundige Managerinnen den Rücken freihalten, und denen exzellente Product-Owner ordentliche und konsistente Anforderungen geben. Ich arbeite seit fast 30 Jahren in der Softwareentwicklung, habe praktisch alle Branchen von innen erlebt. Meine Teams reichten von 3 bis zu mehr als 200 Personen, Informationssysteme, Embedded-Systeme, Business-Intelligence, moderne und ziemlich alte Technologie, große und kleine, arme und reiche Auftraggeber... und die stets wiederkehrende Konstante all dieser Situationen ist die massive Unordnung. Nein - ich selbst glaube nicht, dass ich hier zu pessimistisch schreibe.

Abhilfe: Systematische Verbesserung

Unsere Grundthese bei der Verbesserung lautet:
"Reduktion technischer Schulden führt zu Kostensenkung in der Entwicklung neuer Features."
Sie müssen mit Ihrem Management über systematische Verbesserung sprechen, über zielgerichtete und gesteuerte Modernisierung und Evolution. Dabei müssen Sie zwischen "Features-liefern" und "Schulden abbauen" abwägen, denn Sie können einerseits niemals für längere Zeit auf neue Fachlichkeit verzichten, und müssen andererseits garantiert mit beschränktem Budget zurecht kommen. Als zentral erweisen sich dabei zwei Parameter:
  • Innere Qualität der Systeme, die sich in Themen wir niedriger Kopplung, hoher fachlicher Kohäsion, hoher Codequalität, Konsistenz (Homogenität) der Implementierung und Verständlichkeit äussern.
  • Äußere Qualität der Systeme. Anders ausgedrückt: Business-Wert, die Menge fachlicher Features, fachliche Leistung, Performance, Benutzerfreundlichkeit, Skalierbarkeit, Menge der erfüllten Kundenwünsche.
Argumentieren Sie gegenüber Ihrem Management, dass bei systematischer Verbesserung (d.h. Steigerung der inneren Qualität) die fachlichen Features wirtschaftlich günstiger ("preiswerter") werden - und wir zukünftig damit bessere time-to-market erreichen! Ihr Management kennt sicherlich den traurigen Normalfall: Über die Zeit werden bei (vielen) Systemen Features immer teurer, bzw. die Entwicklung immer langsamer (in der folgenden Abbildung die rote Linie). Ihr Management benötigt einen Überblick, welche Probleme es bei Systemen gibt- und wie "schlimm" diese wirklich sind, am besten in Geldeinheiten ausgedrückt. Damit werden verschiedene Probleme miteinander vergleichbar. Wenn Sie unsicher sind, geben Sie diese Problemkosten in Intervallen an, oder beschränken Sie sich auf die Angabe von Größenordnungen. Dazu stellen Sie Ihrem Management vor, welche Abhilfen es für welche Probleme gibt - am besten jeweils mehrere Alternativen. Hüten Sie sich davor, von der "einzigen Möglichkeit" zu sprechen, die angeblich ein Problem löst: Normalerweise gibt es zu jedem (!!) Problem nämlich eine Vielzahl möglicher Abhilfen. Velocity mit/ohne Verbesserung Erklären Sie, dass systematische Verbesserung längerfristig angelegt ist, und durchschnittlich sowohl den "business value" der Systeme verbessert (also für die Anforderungs-/Fachseite den Wert der Systeme steigert), gleichzeitig (!) aber auch die technischen Schulden reduziert. Das (Open-Source) Projekt aim42 (architecture improvememt method) stellt für die systematische Verbesserung fast 100 "good practices" zusammen, etablierte und bewährte Vorgehensmuster.

Fazit: Das klappt wirklich!

Vorsicht - Eigenwerbung: Sie können systematische Verbesserung lernen - wir bieten dazu den dreitägigen Workshop "IMPROVE" an.
An dieser Stelle möchte ich Ihnen Mut zusprechen: Hartnäckigkeit und Systematik lohnt sich: Ich habe in unterschiedlichen Branchen IT-Systeme verschiedener Größe und Komplexität "systematisch verbessert". Mit Teams zusammen habe ich time-to-market deutlich verkürzt, Test- und Entwicklungsaufwände gesenkt, Performance verbessert und in praktisch allen Fällen die Zufriedenheit der Teams signifikant erhöht. Ich habe (skeptische) Manager überzeugen können, dass Verbesserung sich wirtschaftlich lohnt. In diesem Sinne - bleiben Sie "am Ball". Erklären Sie, wie schlimm ihre Probleme sind, und welche direkten und indirekten Kosten sie verursachen. Update 9. Oktober 2016: Fixed typos.

27 September 2016

FAQ for Software Architecture Documentation (with arc42)

I'm currently working hard on translating our German book (see this post) - which will be named "Communicating Software Architectures - lean, effective and painless documentation"). It's already on Leanpub, my favorite eBook publishing platform.

FREE in various formats

Arc42 faq cover As arc42 is deeply rooted in open-source, I decided to extract the FAQ-section (frequently asked questions) from that book and make it available for free. As mentioned above - translation is not yet finished, and many of the questions in the FAQ collection have a "t.b.d" tag attached... but I'm quite positive I'll have the whole stuff translated until December 31st 2016.

Many categories of questions

I organized the (currently more than 100) questions in the following categories:
  • A General questions
  • B Questions on methodology
  • C Questions on arc42 sections
  • D Questions on modeling
  • E Questions on arc42 and agile methods
  • F Questions on tools for arc42
  • G Questions on arc42 and versions / variants
  • H Questions on arc42 and Traceability
  • J Questions on managing documentation
  • K Questions on customizing arc42

Your input is welcome

If you encounter questions around architecture documentation in general or arc42 in particular, let my know: DM me on our new @arc42Tipps Twitter account or email me on info-at arc42.de. By the way: I'm very grateful to innoQ for supporting arc42.

06 September 2016

arc42 in Software-Engineering Radio Podcast

My innoQ-fellow-colleague, Eberhard Wolff, interviewed me about arc42 for the well-known podcast "Software Engineering Radio"... We discuss how documenting architecture fits into agile processes and how to find the right amount of documentation for a system. I briefly explain the different parts of the arc42 template covering requirements and the context of the system and the solution structure, including building blocks, runtime, and deployment. Finally, we cover tooling, versioning, testing documentation, and how to keep documentation up to date.

04 September 2016

Praktische Tipps für arc42

arc42 hat sich als de-facto Standard für die Dokumentation von Softwarearchitekturen etabliert, zumindest in der D-A-CH Region. Schon länger gab es online diverse Beispiele, seit März diesen Jahres habe ich gemeinsam mit Michael Simons und Stefan Zörner dazu ein eBook veröffentlicht (als LeserIn dieses Blogs erhalten Sie bis Ende 2016 ganze 42% Rabatt!).
Arc42 in Aktion

...in Aktion

Aber DAS wollte ich hier gar nicht in den Fokus rücken - vielmehr sollen konkrete Tipps zur Anwendung von arc42 zur Sprache kommen: Schon seit Jahren unterstütze ich Unternehmen unterschiedlicher Branchen und Größen beim Einsatz von arc42 in Entwicklungs- und Wartungsprojekten. Dabei konnte ich eine Vielzahl von Tipps und Ratschlägen sammeln - die nun endlich mal in gesammelter Form (als Buch) verfügbar sind. Peter Hruschka hat aus seiner vielfältigen Erfahrung, häufig aus Embedded und RealTime Umfeldern, kräftig beigesteuert, so dass wir auf insgesamt 200 Tipps rund um den Einsatz von arc42 gekommen sind. Ob es um arc42 in agilen Umfeldern geht, oder um die Anwendung in besonders großen (oder besonders kleinen) Systemen - stets liegt der Fokus auf praktischer Anwendbarkeit und Angemessenheit.

... Advent kommt bestimmt

Auf arc42 veranstalten wir ja regelmässig Aktionen, bei denen wir unseren LeserInnen kleine Geschenke versprechen. So viel sei hier verraten: Die Advents-Aktion 2016 hat etwas mit diesen Tipps und dem obigen Literaturhinweis zu tun... Es lohnt sich daher, gegen Jahresende ab-und-zu mal auf der Website vorbei zu schauen (oder dem noch jungen arc42-Twitter Account zu folgen).

one last thing

Übrigens schreibt gerade auch Ralf Müller (einer der Committer bei arc42 und langjähriger Nutzer!) ebenfalls gerade ganz aktiv einen Blog zum praktischen Einsatz von arc42.

06 November 2015

Langlebigkeit und Wartbarkeit

 

In diesem Post möchte ich das alte Dilemma der steigenden Wartungskosten von Software ansprechen - und auf ein dazu passendes Buch (von Carola Lilienthal) hinweisen. Ich habe ihn für dieses Buch als Geleitwort geschrieben (bin damit sozusagen parteiisch).

Eigentlich...

... wissen Softwareentwickler(innen) und –architekt(innen) ganz genau, worauf sie bei Entwicklung und Änderung von Software achten sollten: Einsatz etablierter Architektur- und Entwurfsmuster, saubere Modularisierung, lose Kopplung, hohe Kohäsion und Durchgängigkeit (Konsistenz und innere Ordnung), dazu eine große Portion sinnvoller weiterer Entwurfsprinzipien. Haben wir alle gelernt, geübt und erfolgreich genutzt.

 

Dennoch...

... geht in den Tücken der Praxis so einiges schief: Viele Softwaresysteme erkranken über kurz oder lang an der IT-Seuche Nr. 1 – der „generellen Verrottung“: Folgen dieser Malaise: 

  • Wartungs- und Änderungskosten steigen unaufhaltsam auf ein schier unerträgliches Maß an. 
  • Intransparenz wohin man nur schaut. Kaum jemand überblickt noch die Konsequenzen von Änderungen. Selbst kleine Erweiterungen werden zum technischen Vabanquespiel.
  • Arbeit an solchen Systemen wird zur Qual – obwohl Softwareentwicklung an sich zu den interessantesten Tätigkeiten überhaupt gehört. ☹

Der folgenden Abbildung liegt kein reales System zugrunde, spiegelt aber meine Erfahrung in Dutzenden mittlerer und großer Systeme aus unterschiedlichen Branchen und Technologien wider:

 

rotting software

 

Endlich...

... bricht Carola Lilienthal mal explizit die Lanze für die beiden (in der Praxis allzu oft vergessenen) Qualitätsmerkmale Langlebigkeit und Wartbarkeit. Diese beiden bilden eine wesentliche Grundlage der inneren Qualität von Software. Niemand kann sie einer Software von außen ansehen – aber alle Stakeholder von Systemen möchten sie haben:

  • Auftraggeber von Systemen freuen sich, weil sich die hohen Investitionen in Erstellung und Wartung lohnen und weitere Änderungen kostengünstig sind.
  • Anwender und Fachabteilungen freuen sich, weil Änderungen am System schnell und mit hoher Zuverlässigkeit erfolgen können. 
  • Entwickler und Softwarearchitekten freuen sich, weil Arbeit an sauberen Systemen viel produktiver ist. Niemand braucht mehr Angst vor bösen Nebenwirkungen einer kleinen Änderung zu haben.

 

Prima

... dass Carola dieses Buch geschrieben hat: Ihre langjährigen Erfahrungen auf dem Gebiet der Architekturanalyse von Systemen unterschiedlicher Technologien sind einzigartig. Dadurch stellt sie in jedem Winkel dieses Buches den nötigen Praxisbezug her.Ich durfte als einer der Ersten das Manuskript lesen – und habe sehr davon profitiert!

 

Mehr dazu im Buch selbst (die Website zum Buch ist noch in Arbeit…)

 

History:

Nov.07: fixed typos (thx, @stilkov)

22 May 2015

On Morality: Not-Just-A-Consulting-Monkey

In lieu of the recently uncovered scandals involving the German (US, British etc) secret services - and the respective government officials, I reflected upon my (consulting) engagements:

 

* I deeply mistrust government organizations that keep too many things hidden from their own government. The current „review boards“ (German: Untersuchungsausschuss) are systematically boycotted by the „agencies“ and will surely not lead to any significant result or changed behavior. Documents are destroyed or blackened - officials show no interest whatsoever to uncover wrongdoing.

* Spying on their own citizens without specific warrant violates our constitution, I support appropriate initiatives (reference in German).

* Helping other nations’ intelligence agencies to spy on our own citizens and companies is a serious crime and should be prosecuted. 

* In light of recent and not-so-recent eventy, including everything around heroic whistleblower Ed Snowdon, supporting these organizations is morally doubtful or debatable.

* Investigating or preventing violent crime is required police work, but must under no circumstances be unconditionally extended to the private sphere of all (!) individuals and organizations of a country.

I believe that consultants/architects and developers like myself should start to stand up for morality and *real* compliance to our constitution - and refuse all kind of support for the „secret organizations“ and those parts of our government that is related to them (e.g. the German Kanzleramt).

For myself I therefore decided to refrain from doing ANY WORK for the „secret organizations“, until all of the currently open issues have been clarified (but I doubt that will ever happen, as long as we have to endure political puppets that act as cohorts to foreign governments).

The only exception that I regards morally acceptable would be support for changing-these-organizations-for-the-better, e.g. creating transparency, investigate and uncover previous crimes or supporting reviews.

 

(I re-used the term from the inspiring Martin-Fowler keynote from OOP-Conference 2014)

 

18 March 2015

IT-Systeme systematisch verbessern...

Software neu erstellen - das lernen wir alle in Ausbildung und Studium.

Die Evolution, Weiterentwicklung oder Verbesserung von Softwaresystemen systematisch zu betreiben, müssen wir uns mühevoll in "Training on the Job" selbst beibringen - bisher zumindest...

Neuer Lehrplan zum Thema


Seit kurzem hat der iSAQB e.V. einen entsprechenden Lehrplan namens IMPRVOVE aufgenommen (Disclaimer: Ich habe den entworfen und eingereicht).

Dessen Name ist Programm: Sie können ab sofort lernen, wie Verbesserung, Evolution oder Weiterentwicklung systematisch funktioniert, mit balancierten betriebswirtschaftlichen, fachlichen und technischen Zielen.

IMPROVE hilft Ihnen, kurzfristige Budgetvorgaben und langfristige Architektur- und Produktqualität in Einklang zu bringen. Sie vermeiden Verletzungen der konzeptionellen Integrität und kurzfristige Behelfslösungen. Es zeigt systematische Auswege aus inkonsistenter Implementierung und riskanter Technologiediversifizierung.


Was Sie zum systematischen Verbessern brauchen

aim42 verrät Ihnen schon ziemlich viel, aber ganz praktisch sollten Sie folgende Fähigkeiten mitbringen, wenn Sie Systeme verbessern möchten:

  • Systematische Problemanalyse betreiben, sowohl auf Makro- (z.B. bei Querschnittsthemen, externen Schnittstellen, Entwicklungsprozessen) wie auch auf Mikroebene (z.B. im Code)
  • systematisch Verbesserungsvorschläge für die gefundenen Probleme entwerfen.
  • sowohl Probleme wie auch Lösungsoptionen aus betriebswirtschaftlicher Sicht bewerten (d.h. in Geldeinheiten!). Dieser Punkt fällt Softwareentwicklern erfahrungsgemäß besonders schwer.
  • Langfristiges Vorgehen bei Verbesserung planen, ihre "Evolutionsstrategie" festlegen.
  • Kurzfristige Verbesserungen planen und durchführen, beispielsweise Refactorings, Einführung interner Schnittstellen, Verbesserung von Modularisierung, Kohäsion und/oder Kopplung.
  • Sich durch betriebswirtschaftlich fundierte Argumentation gegen kurzfristige Widerstände durchsetzen.


In diesem Sinne - viel Spaß beim Verbessern Ihrer Systeme.

26 July 2014

Connect your Kindle® to password-protected WiFi

Just in case you need to connect your Amazon-Kindle® to a password-protected WiFi network - and it does not work... That often happens in hotels, at airports or other locations with protected WiFi access. An unconfortable but working solution is the following: You need a real computer (or tablet or smart smartphone) to find out the IP address of the WiFi router... If you don't know what that is - this solution is not for you, sorry. 1.) Use a computer to find out the IP address of the router of the protected WiFi. Window 2.) On your Kindle®, enter this IP address as browser URL. 3.) Your Kindle® browser will display the appropriate login or registration page. It won't look nice, and typing username and password won't be comfortable. But it will work! 4.) nothing more to do :-)

13 May 2014

Open-Close-Principle considered (practically) useless

Underlying Goal Considered Valuable

In a recent blogpost, the honorable Uncle Bob once again discussed the merits of the famous Open-Close-Principle. Quote:
You should be able to extend the behavior of a system without having to modify that system.
I like and strongly support that idea. It's realization by plugin-architectures is useful in some cases, it's foundation in object-orientation is one of the few useful applications of inheritance. I teach the OCP in classes and advice people inhale it like oxygen in their daily life. It's a beautiful theoretical concept. In practice, it's mostly useless - sigh.

The Nature of Changes in Practice

Since more than 20 years I work with teams changing, enhancing or optimizing software systems. I've seen code in financial industry, insurance and banking systems, logistics, telecommunications, embedded systems and, of course, the web. Changes were often corrections to previous requirements: (I quote real customers and product-managers in the following lines)
  • "aargh - we didn't mean it THAT way, please correct it to THIS way".
  • "Make it faster, whatever it takes."
  • )
  • "We need some new attributes in the view"
  • "You have to integrate the XYZ system urgently into our processing" (replace XYZ by SAP(c), Oracle(c) or any huge commercial software suite that you cannot integrate by just calling a simple API)
Too bad those requirements cannot be met by simply creating a new plugin to a nice-and-beautiful plugin architecture. Too bad those requirements often invalidate yesterdays' assumptions and code. The open-close-principle does not help me in those cases. Those cases are the rule, the standard, normal. Even if I (or other software engineers) had implemented plugin architectures - those wouldn't help with new attributes in some strange old-school UI or some backend insurance database.

Is Open-Close Applied in Real Systems?

Most productive systems I met (and I met many many dozens of them) don't have the notion of clear extension points. Many have been implemented by teams under severe cost or time restrictions without freedom to apply design principles - sigh again. That's one reason we founded aim42 - to systematically improve (and hopefully help spread OCP application..). @Uncle Bob: Thanx for your design principles - they make this (software) world a better place...

16 February 2014

Software Quality is More Than Just Code Quality

I'm astonished how many people in our software business try to improve systems by JUST looking at source code - and ignoring loads of other aspects. Especially vendors of code analysis tools tend to equate "software quality" with "code quality" - which ignores major parts of quality issues. Let me illustrate my point with some examples.

Sample 1: Gold-Plated System

The team has created features above features, all highly configurable with a good-looking user interface. There's a button here, a menu there, some choices and a lot of functions... all stuff adding no business value, not useful for the end-user. By the way - all written in clean-code. In my opinion, this team produced *waste* - and the resulting system will more expensive to maintain than it needs to be - more lines of code, more configuration, more difficult to understand.

Sample 2: Overly Complex Solution

Data from a relational database is selected, then transformed into Java objects, then into an XML representation. This XML is processed into a pdf document, which is send via smtp-mail to the user. User prints the pdf, fills out some fields, scans the pdf. The system performs OCR (optical character recognition) and transforms back to xml. The xml is converted to Java objects, which are used to update the relational database. Sounds crazy? Is crazy - but describes an existing system. All written in nice and clean code. In my opinion this sample describes a conceptual disaster, where refactoring code alone wouldn't help - re-architecting the overall process would be the right approach.

Sample 3: Horrible User Experience

A company opened their impressive and useful backend services to customers by adding a web-frontend. Both back- and frontend code was written by expert programmers, adhering to many clean-code principles. Unit and integration tests supported the system. But the user interface has a nightmare. Layout, colors and screen flow had been created by programmers, not by usability-experts. Sidenote: I'm quite sure you have experienced similar situations... programmers-as-designers seems to be a common anti-pattern in development.

Software Quality is MORE than Code Quality

The examples above hopefully illustrate the point that even with well-written code a system can *fail* for its users or developers. Quality attributes like performance, understandability, maintainability, understandability, security or compliance might be neglected despite good source code...

Analyze Problems From Bird's Eye Perspective

In exiting business systems you should approach *improvement* or system evolution from different perspectives, not only by counting code-violations or code-metrics. For example the following perspectives provided valuable input for some of my own practice experiences:
  • Qualitative Analysis (e.g. ATAM)
  • Runtime Analysis, e.g. performance and resource monitoring
  • Analysis of Development Process
  • Data Analysis - find improper structures and content
  • Issue-Tracker Analysis
  • Static Code Analysis

Clean Code is Important...

I'm convinced of the importance of understandable code. I will actively promote refactoring towards cleaner code whenever appropriate. The principles of clean code need to be taught and practiced throughout our industry. But hopefully you see my argument - there's some more to do: we need to create understandability on a higher level, need to design appropriate technical and business concepts, need to design appropriate data structures and interfaces and so on...

Methodical Improvement to the Rescue

What's needed to systematically improve software is an iterative approach to find *many* problems, not only within code. aim42 collects practices and patterns to achieve exactly that - the foundation for systematic improvement. Think about it when some manager demands compliance to some code metric or coding-convention... you might be better off by optimizing or improving something completely different.

05 February 2014

aim42 - Systematic Approach to Software Maintenance

During the OOP-Conference 2014, Stefan Tilkov and myself released aim42 - the systematic approach to software maintenance and improvement.
Aim42 logo
We named it "aim", short for "Architecture Improvement Method". aim42 is a free and open-source project, a community approach to collect practices and patterns.

Why Do We Need Software Architecture Improvement

Software maintenance is a major issue, because over time many systems degrade massively: Understandability (and with it, maintainability) goes down, and cost-of-change grow. See the diagram below:
Cost of change

aim4 Phases

It consists of three distinct phases:
  1. Analyze: search and collect problems, issues, deficiencies and technical debt within your system and your development process.
  2. Evaluate:understand root-causes of problems, determine their „value“ and cost/effort of their remedies.
  3. Improve: systematically improve code and structures, reduce technical debt, remove waste and optimize.

Community Approach

Currently we host the (AsciiDoc) source of the aim42 guidebook on Github, one of the best-known open-source communities.
https://github.com/aim42/aim42
Find some further information (oops - currently in German only) within our initial presentation (on Speakerdeck) or the upcoming YouTube channel.

Changes

* Feb. 16th: Changed URL from Bitbucket to Github

26 November 2013

22-Digit IBAN Considered Harmful

Whoever decided to replace the old-fashioned 9-10 digit
bank account numbers by the 22-digit IBAN clearly favors
machines over humans.

It's cruel to force humans to fill 22-digit numbers into money transfer statements.

Everybody has heard of the 7 +/- 2 rule, the number of things a human can usually keep in short-term memory. 22 is clearly out of this range.

Banks of the world - this decisions does NOT make me love you.

"Der Spiegel" has a nice article about it, titled
"IBAN Die Schreckliche"

04 November 2013

Java JDK on OS-X (here: 10.9, Mavericks)

Boredom warning: This post describes some commands to configure Java-7 on Mac OS-X. Now fun to read.

 

After my recent upgrade to 10.9, I had to install Java again (Apple seems to be regarding Java as something evil…)

The Apple-Java is still 1.6 - if you’re happy with that: use the proposed download from Apple and you’re all set.

If, e.g. for software development, you want something a bit more recent...

 

Downloading from Oracle, running the installer… but still, 1.6 is the active JDK.

(Simple) solution: In any shell (e.g. Terminal, iTerm):

sudo ln -sf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

 

On your system, the PATH to java might be set at three different locations:

 ~/.profile
 /etc/paths
 /etc/paths.d

If you happen to have / need  a JAVA_HOME environment variable:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"

Make sure, JAVA_HOME is set in one of the abovementioned locations. I suggest you get rid of it… (delete it from ~/.profile)

 

 

 

22 September 2013

Deutschland wählt totale Überwachung - Ade digitale Bürgerrechte

Demokratie == das Volk herrscht.


Heute (22. September 2013) hat das deutsche Volk sich entschieden, auf Privatsphäre im Internet auch zukünftig weiträumig zu verzichten.

Da unsere großartigen Faselpolitiker ja lieber über Autobahn-Maut-für-Ausländer streiten, oder so genannte systemrelevante Betrüger mit Geld bewerfen - kann das "Neuland" Internet ja ruhig von den Kumpels der anderen Geheimdienste weiter kontaminiert werden. Vor den eigenen "Diensten" braucht man sich ja kaum zu fürchten - die können ja nicht mal richtig Verbrecher fangen.

Ich glaube, die Tatsache der verlorenen digitalen Privatsphäre ist für Normalbürger schlicht zu kompliziert. Oder wird vom alltäglichen Ärger überlagert.

Ich zumindest markiere mir den Tag als trauriges Ereignis im Kalender: Mitbevölkerung hat's nicht kapiert. Politiker interessiert's nicht. Für Medien nicht cool, weil weder Sex noch Blut. Und wir paar (entsetzten) Informatiker zählen nicht genug.


(Politik-)Frust auf ganzer Linie.

Why I Still Read Books

Are Books Old-Fashioned?


In times of everything-online it might sound old-fashioned to favor printed books over online sources: They are usually more expensive, cannot directly be forwarded via email and there's no chance to get free updates.

I very often research (technical) topics online, which is great to get a quick overview. But where to dive in? Even to minor topics you easily find hundreds of sources, blog-posts, reports, rants and forum discussions…

Books have Higher Quality in Content and Structure


My argument pro-books is quite simple: Usually the authors have intensively thought about two issues:
  1. the topic itself and
  2. ways of describing content to their readers.


Furthermore, reviewers and publishers have provided feedback - which invariably leads to higher quality in content and structure.

Arguments are easier to follow, language more concise (and not restricted to 140 characters), overly long sentences are (often) replaced by understandable "lightweigt" alternatives…


Others Have Read for You


Amazon-reviews often help me to find appropriate books on a topic. Enthusiastic reviews are no guarantee, but an indicator.


E-Books as Compromise


Searchable pdf's (or other e-book formats) provide a great compromise - at least when they've been proofread and copyedited. I tried quite a number of self-published e-books, with mixed results.



Great Examples


Let me give you only a few of the great examples I encountered recently:




These are only a few examples where you immediately recognize the amount of blood, sweat, tears (and, of course, love for the topic) these authors invested.


Disclaimer: I write books myself. I spend hours thinking about details, asking colleagues and friends for feedback. I write "prototypes" and later replace them away with complete re-writes.

09 September 2013

Emacs on Mac-OS: Configuration for Alt- and Meta-Key

Oh what a nuisance, having to configure key-bindings so that Emacs becomes usable on Mac-OS...

The Problem

  • You need a proper META-key to use Emacs.
  • With non-US keyboards, you need the ALT-key to type characters like [, ], { or }. 

 

Command-as-Meta? No way...

People discuss wether to configure the COMMAND-key (aka "apple-key" or CMD) as META. 

Imho impossible, as in *all* other Mac applications, CMD plays a central role (new, open, duplicate, quit, minimize etc.). No way I can unlearn these key combinations.

 

Escape-as-Meta? Your Fingers Run Marathon...

Some people use ESC as Meta. For every of the numerous Meta-commands in Emacs, send your little pinky finger all the way up north-east to Escape-country… no, that feels like an unhealthy amount of movement to me.

 

Left-ALT-as-Meta, Right-Alt-for-Special-Characters

Whow - that's clever: Using the left-Alt key for something different than the right-Alt key...

Simple put the following line in your emacs configuration file (~/emacs.d/user.el or similar):

(setq ns-right-alternate-modifier nil)

That works fine for me...

 

Of course, I have CAPS-Lock mapped to CTRL (in Mac-OS system settings under keyboard)

 

Some more Emacs Links

@pschirmacher pointed me to  http://www.braveclojure.com/basic-emacs/, which contains both a nice setup and pragmatic introduction.

I use the "vanilla Emacs" - of course the key config from above also works in terminal-Emacs. 

09 August 2013

The Privacy Tragedy or NDA Considered Impossible


The classic tragedy is a sad story - as protagonists usually suffer from serious losses.

The last few weeks have shown that our privacy had been lost years ago - without us (protagonists) realising it.

Now, with the heroic help of guys like Ed Snowden, the magnitude of this privacy-loss became visible:

* Governments (especially from the US, Germany, UK and maybe several others) violate fundamental privacy rights (like the American Constitution and the German Grundgesetz).

* Companies trying to keep their users' data private are forced by governments to either shut down their operation or violate privacy rights.

* All Internet traffic is systematically monitored by government agencies - without users' consent. They are reading ALL our communications.

The Root of All Evil: Yes - We Scan!


The root of this evil is located in the USA and its villains (Germany and the UK as prime examples). Storing and processing (private) data and communication via companies located in these countries has from now on to be considered unsafe, sometimes harmful!

Ok - you probably already knew that. And you knew Obama's slogan "Yes, We Scan"?

The Tragedy


We cannot do a single thing about it - without giving up the comfort zone:

* Our operating systems are designed (sometimes well, sometimes worse) in the USA. I personally find it *very* likely that modern operating systems already contain backdoors for governments.

* Most communication and social networking services are located in the US (Facebook, Twitter, Google, Yahoo, LinkedIn) or Germany (Web.de, GMX, Telekom) - and actively cooperate with governments! They freely give away your private data!

* Many convenience services are located in the US (Dropbox, Evernote, GoogleDrive, Microsoft-SkyDrive). Despite their claims to keep our data private, they all cooperate with Governments.

* The fundamental infrastructure for large portions of software development is tightly connected to US companies (Java -> Oracle, C# and dotNet -> Microsoft, VMWare (SpringSource), JavaScript (Apple, Google)).

* OpenSource is only better in theory: For larger systems (like Linux, Firefox, BSD, Gnome, KDE, MySQL) it is simply not viable to inspect the source code for potential security or privacy issues. How can I keep my trust in systems like TrueCrypt or the EncFS (encrypted file system)?

We Are Lost


I have never in my life been more frustrated with politics and these so called "democratic" governments (this incompetent morons that failed in protecting our Grundgesetz or the US constitution). They value secret agencies higher than our rights to keep private information private!

We lost privacy in digital life. No (comfortable) way out of this!


NDA Considered Impossible


I earn my money with software and computer stuff. It involves private and sometimes even secret information.

I usually sign privacy agreements (NDA, non-disclosure-agreement). I promise in this legally binding documents not to give away *any* private or secret data.

From now nobody in our business can keep such a promise! Somebody gives me digital data - some rogue government will be able to read it!


Hope In Small And Painful Doses


Yes - you can encrypt your email (PGP, GPG or S/Mime). All of these solutions require a considerable investment in software and organizational infrastructure.

Yes - you can move to self-compiled Linux kernels and window drivers. If you're willing to invest days to get the most fundamental system up-and-running. None of the sexy software packages run on your exotic system. It's not nearly as comfortable as the commercially available alternatives.

And - what will be a trustworthy compiler? Is the backdoor already build into your hardware (which is most likely driven by US-designed chips…)

Yes - you can move away from *all* the comfortable network and cloud-based services. No Google or Bing searches, no tweets, no Facebook, no Dropbox, LinkedIn or Xing any longer.

Despite myself trying some of these steps - tragedy struck. We're lost our privacy.

Thanx, Ed, for making this clear.

20 July 2013

How to get a custom map onto your Garmin GPS device

This directions are for people using Garmin(™)GPS devices - but need special or customized maps on it.

Geocachers, bikers, hikers, mountaineers - read on.

I'll describe the following things:

  1. where to get a (free) map
  2. how to create a custom map
  3. how to get the map onto your Garmin device
  4. how to convince your Garmin device to use your new map

Disclaimer


I'm not associated with Garmin Ltd. - and might not work with


Why should I want all this?


You want (custom, specialized) maps on your GPS device as you:
  • like outdoor activities in unknown locations,
  • own a Garmin device for GPS navigation,
  • sometimes need *current* and free maps

Where to get a (free) map


Of course the OpenStreepMap would be the first place to go, unfortunately it is quite clumsy to get their data transformed into something legibly by a Garmin device.

Their data is awesome - but other people thankfully solved the issue of transforming it to appropriate formats… (kudos to Lambertus Ijsselstein for his incredible work!)

How to create a custom map


Point your browser to garmin.openstreetmap.nl -
a free service from Lambertus.

Free_worldwide_Garmin_maps_from_OpenStreetMap

You stick with the default "generic routable" selection but enable the "manual tile selection".

Now you can choose whatever locations you need on the map. In the example above, I selected three rectangles (called tiles in geo-map-speak) for Cyprus.

Click on the "Download map now" link! Your custom map will now be generated (in the background) for you - that may take up to 24h, depending on the load they currently have.

You need to enter an email address, so that they can send you a download link… They won't spam you!


How to get the map…


After a while you'll receive a friendly mail containing a download link. For Garmin devices, you only need to download a single (zipped) file:

download-gpx-map

It's called "osm_generig_gmapsupp.zip" - ignore the strange name. Download and unpack to a folder of your choice.

There will be one single file in this archive. "gmapsupp.img". I recommend to rename the (unpacked) file to something you can remember - in my example I called it "cyprus.img".

You're close - but not finished yet. Have your Garmin device ready?

… onto your Garmin device


Plugin your USB cable or otherwise connect your Garmin.
Usually it is shown as disk.

You need to respect the Garmin directory name - it's "Garmin" spelled with capital "G"…

Every "*.img" file you copy into this directory can be used as a map… Too bad your Garmin device does not pick those up automatically…

_Volumes_NO_NAME

How to convince your Garmin device to use your new map



Turn on your Garmin device and navigate to the "Maps" screen (shown here for a GPSmap 62s). Select "Menu":

96

Select the "Setup Map" (on the screenshot above you see German version, "karte einrichten"):

109

You now need to select the appropriate maps:

129

Your Garmin now display a list of all available maps. Usually all the OpenStreetMap maps are called "OSM generic".
It's advisable to deselect many (or all) of the other maps - as Garmin gets confused if several maps cover the same GPS coordinates…

(just in case you're adventurous: You can patch the "img" file to contain a better name - fire up a (hex/binary) editor and just replace the characters "OSM generic routable" by a name of your choice")

26 June 2013

innoQ und arc42 machen (wieder) Unmögliches möglich

mit unserer coolen Sommer-Aktion, gegen Langeweile und schlechte Laune:
Wir lösen den Widerspruch zwischen "gedruckt" und "eBook" (zur CPSA-F Zertifizierung) auf!
Unser kleines eBook über die iSAQB Prüfung zum Certified Professional for Software Architecture (Foundation Level) gibt es ausschliesslich in digitaler Form - zumindest können Sie es nur so kaufen.
In Absprache mit dem Verlag und mit tatkräftiger Unterstützung von innoQ haben wir (Peter Hruschka und ich) eine limitierte Auflage gedruckt - die wir für kurze Zeit auf fcfs-Basis (first come first serve) gerne an Interessenten verschenken!

Update, Januar 2013: Die Aktion ist ausgelaufen - wir haben jetzt KEINE Exemplare mehr übrig, sorry!

Es erwartet Sie ein Überblick über den iSAQB Lehrplan, eine kurze Auffrischung der relevanten Themen, eine Vorstellung der Prüfungsmodalitäten sowie Hinweise zu den Arten von Prüfungsfragen.
Garantiert zu kurz, um non-geeks das Bestehen der Prüfung zu ermöglichen, aber als kompakte Wissensauffrischung für Softwareentwickler und -architekten hoffentlich hilfreich.
ISAQB Shortcut
Einfach eine Email an gernot.starke@innoq.com senden, als Promotion-Code "GS-Sommer-13" und die Postadresse nicht vergessen, an die wir Ihr persönliches Exemplar senden dürfen...

25 June 2013

Letter to Our Governments: Germany, GB and US are Surveillance States

Dear Mrs Merkel, Mr Cameron and Mr Obama,

in transforming your countries to surveillance states you let them win - those terrorists and scoundrels of all kinds. That surely was one of THEIR plans - planting seeds of mistrust in our western democratic societies.

Now you spy on your own fellow, consciously violate privacy and the secrecy of (formerly) private communication over public networks. Mrs Merkel called for similar surveillance in Germany...

You accuse those who informed the public and media about you spying on citizens - although they deserve to become public heroes (read what Bruce Schneier says about it)

I hereby declare my high esteem to those we nowadays call "whistleblowers", the Snowdens and Mannings, the heroes of our time. They sacrifice a life in freedom, so that all others know about Prism, Tempora and potentially others. 

Liberty of speech, thought and communication is one of the pillars of democracy - and I personally see those violated by YOU.

I signed every petition website I could get hold of in favor of Ed Snowden - and very much hope he never needs to regret what he did for us! Kudos to him and other truth-tellers - that's what whistleblowing is about!

 

Bruce Schneier impressively summarizes:

"You governments are putting your own self-interest ahead of the interests of the country. That needs to change!"

Just in case you ever considered calling me a friend - forget it. 

 

From today, I'll be actively sponsoring and using privacy networks like Tor. I will at least try to break out of surveillance!

 

deeply troubled,

Gernot Starke

30 May 2013

Patterns-kompakt, die Vierte...

Gerade frisch aus der Druckerpresse kommt die vierte Auflage von Patterns-kompakt, der kurzen und hoffentlich kurzweiligen Einführung in Entwurfsmuster.


Das Buch fasst die wichtigsten Entwurfsmuster zusammen, die Sie für Software-Entwicklung benötigen. Software-Entwickler, -Architekten und -Designer finden darin effektiv anwendbare Lösungen für tägliche Entwurfsprobleme. 

Neu zur vierten Auflage sind jede Menge Codebeispiele, die zum Experimentieren mit den Mustern einladen… siehe hier.

Mehr zum Inhalt, viele Extrakte und jede Menge zugehörigen Sourcecode finden Sie auf der Website zum Buch… (danke an Karl Eilebrecht, dem PK-Helden!)

PK4-Cover-XL

 

Rein aus historischen Gründen hier mal die Evolution der Cover (links mit der ersten Auflage beginnend) - wobei wir uns für das Aussehen der ersten Auflage ja fast bei unseren Lesern entschuldigen müssen :-)

pk1-cover pk2-cover PK3-Cover

 

Übrigens hat auch der Verlag eine Evolution hinter sich - von Spektrum über Spektrum-Elsevier zu Springer zu Springer-Vieweg…. 

07 May 2013

a little proud...

 

673 Teilnehmer JAX 2013 2 

Es war schon sehr beeindruckend, vor dieser riesigen Kulisse sprechen zu dürfen - danke allen Teilnehmern!

(unabhängiger) Artikel über arc42-Einsatz

In der dotnetPRO erschien vor einiger Zeit "Nie wieder planlos" - ein ausführlicher Überblick zum arc42-Template und dessen Einsatz in der Praxis - aus der Feder von André Krämer.

 

Seit heute ist dieser kostenfrei als download erhältlich - dank einer Sondergenehmigung der dotnetPRO-Crew :-)

 

 

09 April 2013

arc42 now has open source repositories

At Bitbucket you now find our arc42.org open source code repositories. They are independent of the arc42 architecture template (will someday maybe serve as examples for the latter).
I just comitted two small utilities for Pdf manipulation (PdfStamper and PdfUtil) - both are not "finished" but working...
Pdfstamper logo
Issue trackers are live and actively monitored.

The third project, DupeDetect, handles duplicate entries in your geocaching logs… In case you don't know what that is, don't mind. Geocachers *will* know. Hopefully we make this available as a cloud-based service soon, parallel to the source code.
(did I ever mention that I absolutely *love* the Atlassian guys…)

Software Architecture "Summer" in Berlin

Summer-Summit in Berlin - or is it Summit-Summer?

I'm proud to be part of a new conference in Berlin, June 5.-7th 2013. A number of top-notch software architects (aahm - plus myself…)  present current topics in interactive sessions.

Simon Brown, Neal Ford, Phillip Ghadir,  Dr. Venkat Subramaniam, Stefan Tilkov and Vaughn Vernon should be reason enough to join...

 Topics include evaluation and estimation, concurrency, delivery, domain-driven-design and others - check the website for details

My topic will be software interfaces - you'll get examples of horrible, good and excellent interfaces, plus numerous practices and tips to improve your own interfaces…  Would be great to meet you in Berlin!

 

240x180 en 17525 v2

Postbank's neues Onlinebanking: Security-Desaster

Na, welch' eine Freude für Freunde von DoS-Angriffen:

Da führt die Postbank mit viel Aufwand ein neues Onlinebanking ein - und kehrt zur alten Kontonummer-PIN Authentication zurück...

Nach dreimaliger falscher Eingabe einer PIN wird das gesamte Konto für Onlinebanking gesperrt.

 

Schlecht für mich als Benutzer - weil jeder x-beliebige Angreifer meine Kontonummer natürlich auf jeglicher Geschäftskorrespondenz findet - und meine (online-) Transaktionen damit sehr einfach torpedieren kann.

 

Bislang konnte ich beim Online-Portal der Postbank einen (beliebig langen) kryptischen Usernamen vergeben, und ebenfalls ein beliebig langes Kennwort… 

 

Hat bei denen noch niemand was von IT-Security gehört?

puzzled...

 

Update Mai 2013: Heute verkündete eine Rundmail an Kontoinhaber der Postbank, dass es "zukünftig" eine erweiterte Anmeldung geben wird - bei dem ein selbst gewählter Benutzername plus Passwort die Anmeldung erlaubt. Leider bleibt die Kontonummer immer noch als paralleler Zugangsweg erhalten - also nur ein sehr kleines Trostpflaster :-(

 

 

 

 

20 March 2013

how simple things can go awfully wrong

You know programming languages? At least one or two?

A two-liner, without any regular expression, should not be a too-great adventure...

Try the following in your favorite language:

i = 1
i += ++i + ++i

A simple assignment to an integer variable, some forms of add-operators.

They're evil - believe me. Things go wrong from here:

Let's analyse the expression in a functional way:

  • With i set to 1, the first ++i should yield 2.
  • Calculate the two of them one-after-the other, the second one yields 3.
  • Calculate the two of them in parallel, both yield 2.

So - the result should be something between 5 and 6.

Let's try Ruby first:

ruby-fails

Slightly off any sensible calculation. Consider it "failed".

Move on with Java:

java funny expression

Believe me, C# and JavaScript and some other JVM languages come to the same conclusion.

But we're not finished here. Fire up your command line and type:

awk 'BEGIN {i=1; i+= ++i + ++i; printf i}'

Puuh - yields 8. Eight. Seems a bit off for me, but awk might have reasons.

We'll check that with php in a second:

 

NewImage

 

Eight again. So many commercial websites are build with php - and they all calculate like that? re-consider your e-commerce behaviour...

Now, if you happen to have one of those wonderful GNU-C compilers installed - try out the objective-C variant of this expression: You will see eight again. Two more than with Java.

 

Finally, the mother of all programming languages, the common ground of all platforms, the C programming language:

#include <stdio.h>
int main(int argc, const char* argv[]) {
int i = 1;
i += ++i + ++i;
printf("i+= ++i + ++i liefert %i\n", i);
return 0;
}
==> 9

I have to declare it the winner of this informal competition. At least numerically the winner: Nine. 9. Three times three.

Three times what Ruby calculates. 30% more than Java and C#. Btw, compiled with the same GNU compiler that found 8 to be the answer for Objective-C. 

 If you check that with Perl, fine: Nine again:

#!/usr/bin/perl
$i=1;
$i += ++$i + ++$i;
print "i = ".$i."\n";
print "\n\n";
==> 9

I personally stopped laughing here: If we stumble upon two-liners, what about real programs, with memory, sync/async, concurrency and UI issues? With changing requirements?

 

Eventually, thinking (!) about your software might help, so instead of "test driven" or "behavior driven" or "nerd driven", what about "thought driven development" (as Rich Hickey pointed out in his famous speech "Hammmock Driven Development"

 

As a sidenote: Cobol outputs 6. I did not find any solution less than 3, nor one greater than 9.

PS: Thanx to Franz Antesberger for this nice riddle!

19 March 2013

Herr Rösler und die Dummheit...

… sagte unser junger Herr Rösler und zZt Vizekanzler bezüglich der Diskussion um das Verbot
der rechtsradikalen NPD: Dummheit kann man nicht verbieten.

Für mich gehören die Unterstützung von Terroranschlägen, die Verbreitung rechtsradikaler
Gedanken und Gebräuche, Diffamierung und Bedrohung von Minderheiten und weitere NPD Untaten keinesfalls in die Kategorie Dummheiten, sondern Untragbarkeiten.

Und die müssen wir meiner Meinung nach verbieten - mit allen Mitteln unseres Rechtsstaates.

Dummheit hingegen sollten wir nach dem Motto shit happens tolerieren, aber bei Bedarf abwählen. Oder die Betroffenen sollten aus ihrer Dummheit lernen - aber das scheint in der Politik selten zu geschehen.

16 March 2013

Locking your Mac with YubiKey and TokenLock

Sometimes I need to securely "lock" my Mac at work - and one geeky way is the combination of a YubiKey (an awesome tiny USB crypto device) and TokenLock (a *very* useful Mac-OS utility).

These two allow for:

  • locking the Mac if the Yubikey is removed
  • unlocking it, if the Yubikey is inserted again


Configure Yubikey


Start the YubiKey personalisation tool and edit the following settings:


Yubikey-Serial-Nr-Readout.jpg




Now write that configuration to "configuration slot 2" of your Yubikey.

Configure TokenLock


Second, you need to configure TokenLock to accept the Yubikey only, if it has the correct serial number.

Enter the TokenLock settings dialog:

TokenLock-Check-Serial-Nr-Setting.jpg

Great. You're nearly done, one little thing…

Make your Yubikey your primary USB device for TokenLock


Select the USB tab and make sure, your Yubikey is marked "Has serial number".

Select a USB Device.jpg

You're done!

Btw: The guys from Map-Pin software provide GREAT support for TokenLock - which can monitor
bluetooth devices to lock/unlock your Mac… give it a try :-)

18 February 2013

pragmatic Enterprise-Architect(™) template for arc42

I just released a slender version of the arc42 template in Enterprise-Architect(™) format.

Deliberately the template contains only four packages, although the full arc42 template contains several others:

SHORT arc42 EA template.jpg


Use it to model (construct, design or document) all structural aspects of your system, and use any other (text-oriented) tool for non-graphical information.

As with all arc42 artifacts, the template is absolutely free to use, no hidden fees or restrictions. It'd be nice though if you mentioned arc42...

Download


Download the template (with a very brief documentation) here.

Documentation


Even newcomers to Enterprise-Architect will be able to use the template within EA - nevertheless we provide a brief documentation for it within the arc42-confluence.

Restrictions


The template does contain a report generator, therefore it is currently not suited for complete software or system architecture documentation - just for the graphical information.


Disclaimer:


You are allowed to use this template in all situations you like – but we do not provide any (ANY!) kind of guarantee for it. It might crash your EA, or inflict your mind – we cannot possibly exclude such incidents. So please give us feedback, but please don’t blame us for any issues with EA, the template or your project.


Thanx


Thanx to my colleagues from innoQ Deutschland for supporting this work, thanx to Axel-N for productive discussion about modeling in general and especially applying EA.

06 February 2013

Parallels, Windows, Enterprise-Architect and Retina

in principle, a great combo. With Win-7, Parallels works like a charm, nicely integrated with my Mac, no issues with the high Retina display resolution.

When I used EnterpriseArchitect for some UML modeling, I encountered serious display
issues: diagrams were suddenly scattered with overly large fonts and became utterly unreadable.

So back to virtual machine configuration: Shutdown the VM instance and open the Parallels configuration "graphics" tab. Choose "optimized for retina" mode, as shown below:


parallels-vm-graphic-config-retina.jpg





Not that difficult... boot Windows again.

Open the "display preferences" page and try the following screen resolution:



Windows Screen Resolution Config (Win 7).jpg

That completely solved the issue for me.

15 January 2013

Camp mit zwei Trainern

Vorsicht: Der nachfolgende Post enthält einen (kleinen) Anteil Eigenwerbung:

Für 2013 bieten mein geschätzter innoQ-Kollege Phillip Ghadir und ich einige interaktive Schulungen (a.k.a. Camps) zu Softwarearchitektur an, bei denen wir gleichzeitig unterrichten: Über die gesamten vier Tage werden wir beide immer dabeisein - um dem jeweils Anderen scham- und schonungslos ins Wort zu fallen und dessen Ausführungen durch unsere eigene Erfahrung zu ergänzen, abzurunden oder zu kontrastieren.

Wir sind der Meinung, dass die "War Stories", also die (anonymisierten) Berichte aus realen Projekten die wahre Würze der Schulungssuppe ausmachen - und dass wir wesentlichen Lerneffekt besser durch Beispiele denn durch theoretische Konzepte erreichen. Solche realen Erfahrungen können wir zu zweit intensiver und vielseitiger vermitteln, als das ein einzelner Trainer alleine vermag!

Für uns (und die Entwickler-Akademie als Veranstalter) bedeuten zwei Trainer erheblichen Mehraufwand - Koordination, Abstimmung, Vereinheitlichung der Unterlagen und so weiter... All das nehmen wir aber gerne in Kauf, weil wir (Phillip und ich) fundamental von dem Konzept "Ein Camp, zwei Trainer" überzeugt sind!

Vom 19.-22. Februar finden Sie uns in München, im Mai dann in Berlin. Sie können im Anschluss die iSAQB e.V. Zertifizierungsprüfung zum "Certified Professional for Software Architecture - Foundation Level" ablegen. Dafür (und noch wichtiger, für Ihr weiteres Leben als Softwarearchitekt) machen wir Sie fit - versprochen!



Apropos - das Konzept verfolgen Peter Hruschka und ich mit den arc42-Workshops "Mastering Software Architectures" schon seit einigen Jahren mit großem Erfolg.



SAC_Banner_430x70_15399.gif













Update (nach dem Workshop) - einige Stimmen von Teilnehmern, aus Kommentaren
in Phillip Ghadir's Blog.

28 November 2012

Beispiele für Qualitätsanforderungen

Ich habe begonnen, beispielhafte Qualitätsanforderungen an Software zu sammeln - und eine erste Version davon (als docx-Dokument) online gestellt.

Eingeteilt habe ich nach den Qualitätsmerkmalen:


  • Änderbarkeit

  • Benutzbarkeit

  • Effizienz (Performance)

  • Sicherheit

  • Skalierbarkeit

  • Zuverlässigkeit

  • Betreibbarkeit

  • Sonstige



Die Liste ist momentan ein Draft - enthält aber immerhin mal > 30 typische Szenarien. Mehr sind unterwegs...

Sie wird in naher Zukunft Bestandteil von arc42.

20 November 2012

arc42 Template available as confluence-space

Yesterday, motivated by a friendly client, I finally managed to export the English (EN) and German (DE) versions of the arc42 software architecture template directly from their confluence spaces (at confluence.arc42.org).

In case you're using the Atlassian Confluence Wiki in version 4.2.x, you may grap the zipped xml files from the arc42.org download section.

Experience reports are highly welcome :-)

Update Nov 25th 2012: The current arc42.org template has been exported with our production version (4.2.x). In 2013 we accidently have no capacity to upgrade our confluence instance to 4.3.x. We apologize - but we therefore cannot provide a template export for the confluence 4.3.x branch. Hopefully this issue will be solved in early 2013.

15 November 2012

Neue Bücher zur iSAQB Foundation-Level Zertifizierung

Mehrere gute Nachrichten für Interessenten am iSAQB Foundation-Level Zertifikat:

Im November 2012 erscheinen gleich zwei neue Bücher zum Thema:
(disclaimer: an beiden habe ich mitgeschrieben!)











  • Gemeinsam mit Peter Hruschka habe ich einen kleinen Wegweiser zur erfolgreichen Zertifizierungsprüfung geschrieben - der aktuell bei Entwickler.Press als E-Book erscheint. Der genaue Titel lautet: Zertifizierung für Softwarearchitekten - Ihr Weg zur iSAQB CPSA-F Prüfung. Inhaltlich stellen wir dort genau die Themen des Foundation-Level Lehrplans vor. Dieser shortcut ist eine Auffrischung für alle, die einen kompakten Überblick über die behandelten Themen und einen leicht lesbaren Einstieg suchen.
    (update, 19.Nov 2012: Hier gibt's die Kindle-Version.


Shortcut_iSAQB_200px



  • In der Viererbande mit Mahbouba Gharbi, Arne Koschel und Andreas Rausch haben wir nach zwei Jahren Arbeit endlich das "Basiswissen für Softwarearchitekten fertiggestellt. Dieses Buch eignet sich prima als Prüfungsvorbereitung - aufgrund seiner Kürze mussten allerdings viele für die praktische Architekturarbeit relevante Themen aussen vorbleiben (aber dafür gibt's ja den praktischen Leitfaden für effektive Software-Architekturen)



Basiswissen für Softwarearchitekten



10 November 2012

Solution to "MacBook takes too long to wake up issue"

Problem:


After I upgraded to Mac OS Mountain Lion: My MacBook suddenly took much longer to become operational again after I opened its lid...

Solution:


In terminal or iTerm enter the following:

sudo pmset -a standbydelay 50000


Explanation:


This sets the delay from the default 4200 seconds up to 50.000 (more than 13 hours)

The OS has two different hibernation / sleep modes: one preserves the whole RAM content during sleep (which makes wakeup a breeze), the other stores RAM content on disk or SSD (which, in case of several GByte RAM, will need 10 secs and more to wake).

References:


Thanx to some discussion on apple.stackexchange


In case you want to learn more about hibernation and power management - consult the reference documentation.

25 October 2012

VirtualBox: Cannot register (hdd/dvd ..) because UUID already exists

just in case you're using VirtualBox for virtualisation and you run into this issue
(might happen if you copy or clone your vm's):

Strategy is quite simple:


  1. Write down the problematic uuid!

  2. generate new uuid for the problematic device

  3. manually replace old uuid by new in vbox file



Now for the details:

1.) copy the problematic uuid from virtualbox error message

2.) Bradley Schacht published the first steps of a solution on his blog:

He wrote the solution for windows, in MacOS you have to cd into the Contents of the Virtualbox.app directory:

/Applications/VirtualBox.app/Contents/MacOS


Now issue the magic command:

VBoxManage internalcommands sethduuid PathOfYourHD



  • On MacOS, watch for lower- and uppercase.

  • The PathOfYourHD should be your existing VDI-file.



Output of the vboxmanage tool should be:
UUID changed to: 3518e10a-64f2-405a-afa7-437643af08f4


3.) Open the corresponding vbox-file (which contains the xml-definition of your vm) in any decent text editor and search for the problematic uuid (for example HardDisk uuid="{3518e10a-64f2-405a-afa7-437643af08f4})

Manually change ALL occurances of the OLD uid to the newly generated one.

That's it.





24 September 2012

two reasons to run for the iPhone-5

my (old) iPhone 4 still works like a charm, battery life is ok, no scratches, reliable.

So - what reasons did I come up with to convince my wife (aka Ministress of Finance) that I really need the new model? None, obviously.

So I ordered it without any particular reason, signed up for somewhat cheaper monthly plan (save approx 5 Euro/month) and got the fancy gizmo on Friday, premier-day here in Germany.

After using it for two days now, I found two reasons for *really* loving it:

1.) the new form factor, its slender and lighter design feels perfect for me!

2.) the panorama camera - (available in options menu when taking a picture), automagically stitches together images to terrific results - without the slightest manual step required.

See this 180 degrees example, taken in our (small!) garden:
panorama-of-small-garden

imho this is great - deformed perspective, but what do you expect from 180 degree images?

THIS has high addiction potential!

23 September 2012

screenshots with skitch - but beware of 2.0 version!

I'm very (!) fond of the free screenshot utility Skitch - it helps me to capture nearly everything, convenently annotate it with text and light graphic elements. See example below:

screenshots with skitch - but beware of 2.0 version!



Creating crosshair shots by hitting the hotkey is quick and easy. Uploading to Flickr or Evernote works great.

Now - what am I whining about: The just-released Version 2 of Skitch breaks nearly everything: It does not sit in the menubar any longer, hotkey doesn't work, upload is havoc.

Please- fellow Skitch users: help me to convince the skitch guys to give us the fancy features back…

16 August 2012

Architektur auf Tour

Ich bin sehr froh, bei der kleinen, aber feinen Jax-on-Tour 2012 mitwirken zu dürfen.
Die Veranstalter hat einen guten Themenmix und klasse Sprecher zusammengestellt, unter anderem Ted Neward, Stefan Tilkov, Wolfgang Keller, Phillip Ghadir und Matthias Bohlen… Erwarten Sie geballte Erfahrung und spannende Vorträge.

Disclaimer: Ich spreche auch…

JAX_On_Tour_430x70_V1b.jpg

05 June 2012

Architektur mit Nachdruck

hah - der Titel dieses Eintrags ist miss- bis unverständlich… in voller Absicht:

Es handelt sich um (schamlose) Eigenwerbung - nämlich für mein Buch "Effektive Software-Architekturen", das ja seit letztem Jahr in der fünften Auflage vorliegt.

Nun - diese Auflage ist praktisch ausverkauft, darum hat der Hanser-Verlag das Buch jetzt nachgedruckt (cool - second printing) - und dabei gleich einige Fehlerchen beseitigt, insbesondere im Index.

Es eignet sich hervorragend zur Vorbereitung auf die Zertifizierungsprüfung des iSAQB e.V. zum Certified Professional for Software Architecture (Foundation Level).



978-3-446-42728-0_21171513282-77.jpeg

30 March 2012

Großartiges Beispiel für Architektur und ihre Dokumentation

Stefan Zörner hat seine Open-Source Schach-Engine DokChess bei Sourceforge veröffentlicht und die aus meiner Sicht beste Architekturdokumentation aller OpenSource Projekte überhaupt geschaffen - Chapeau! Er verwendet dazu übrigens arc42 - freiwillig!










(lang andauernder Beifall meinerseits…)


Und wo ich schon beim Lob bin: Sein Buch (in dem er unter anderem das coole DokChess-Beispiel erklärt) durfte ich schon vorab lesen und möchte es jedem Software-Architekten empfehlen!



29 March 2012

Subversion 1.7 centralized metadata format loosely resembles git's

so - when the subversion guys finally adopted the great idea of centralized metadata instead of the year-long .svn-hell… they came a great leap closer to the DVCS like git or mercurial.

Just in case you use Enterprise Architect for modeling purposes, make sure you update ALL of your subversion clients at once, otherwise EA will likely start screaming at you in full voice.

And try to append "git" to "subversion" and shorten the (spoken, not written) result to your favorite 4-letter word :-)

happy versioning (alas - I still use mercurial for my private and out-of-client stuff).

04 March 2012

Herr Wulff - Sie sind mir XXL-peinlich !

in der Regel verzichte ich in meinem IT-orientierten Blog ja auf politische Stellungnahmen - aber der aus meiner Sicht peinlichste Politiker der letzten Jahre lässt mir keine Ruhe.

Nach seiner peinlichen Ich-gebe-nur-zu-was-bereits-herausgekommen-ist Taktik, seiner krassen Bürger- und Menschenferne und seines an alte Adelszeiten erinnerndes Herrschaftsgehabe fordert (und erhält leider auch) er einen *Ehrensold*. Für welche Ehre denn? Die peinliche Ehre, der schlechteste, skandalöseste Präsident überhaupt gewesen zu sein? Welch eine peinliche Fehlbesetzung. Was für ein schlechter Witz der Politik.

Und nun, krasser kann's kaum kommen, fordert Herr bevorteile-mich-vor-allen-anderen-Wulff auch noch ein bezahltes Büro mit Angestellten auf Lebenszeit.

Ich gönne meinen Mitmenschen wirklich nichts Schlechtes. Herrn Wulff gönne ich weder seinen Sold noch sein Büro. Möge irgendwer gegen diese schreiende Ungerechtigkeit klagen - sie wird der ohnehin grassierenden Politikverdrossenheit Wasser auf die Mühlen sein.

Vielleicht sollten wir das Exil wieder einführen. Sibirien, jetzt frisch unter Putins Herrschaft, wäre ein schöner Ort für Herrn Wulff, finde ich. Da würde Herr Wulff mit seiner Erfahrung in Halbwahrheit, Verdrehung und Verblendung sicher gut ankommen.

25 February 2012

Artikel zu "Quality Driven Software Architecture"

Mein Artikel zu QDSA ist im Business&Technologie Magazin erschienen.

Demnächst gibt's den auch als pdf - bis dahin finden Sie einige der Kernthesen auch unter qdsa.org.

16 February 2012

Knigge für Softwarearchitekten...



ist erschienen!

Wir erläutern darin typische Verhaltensmuster von Softwarearchitekten, gute und schlechte. Sie finden Erfolgsmuster und erfahren Abhilfen gegen schlechte Architekturmanieren (Anti-Patterns).


Aus dem Inhalt:











































+-
Der VielsehendeDer Diktator
Strukturierte FaulheitEntwurf mit Scheuklappen
Blick in den RückspiegelNotationskrieger
MultilinguistCodeheld
Die JongleuseDer Perfektionist
Der VereinfachungskoboldDer Prozessprediger
Die LektorinHauptsache, es läuft
Ständig lernenToolistan
Der VermarkterDer Verschätzer


Gibt's bei Amazon und direkt beim Verlag (entwickler.press)