IT and more (a.k.a. Doing-IT-Right)
Statements on information technology and software engineering topics, maintained by Dr. Gernot Starke.
15 November 2018
neue arc42 Website...
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
Github Pages with custom domains
Up to now, the procedure to serve these sites via Github with a custom domain was the following:- 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)
- 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.
- commit, push and done.
How to Migrate to https
To migrate this to the new https system, follow these steps:- 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.
- Remove the old CNAME file from your repository, commit and push this deletion to Github.
- Open the Github repository settings page and manually enter the domain name.
- Wait a few minutes until your certificate is generated - invisible for you.
- 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. - Now you can check the "enforce https" checkbox - which was disabled until this very last step
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: 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
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.
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)
FREE in various formats
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
04 September 2016
Praktische Tipps für arc42
...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:
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...
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
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)
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
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
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:aim4 Phases
It consists of three distinct phases:- Analyze: search and collect problems, issues, deficiencies and technical debt within your system and your development process.
- Evaluate:understand root-causes of problems, determine their „value“ and cost/effort of their remedies.
- 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 Github26 November 2013
22-Digit IBAN Considered Harmful
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
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:
- the topic itself and
- 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:
- Al Sweigart: Hacking Secret Ciphers with Python. One of the best programming books I've read (believie me, I read many…). Even if you don't like Python - Al's way of teaching a language is awesome.
- Venkat Subramaniam: Programming Groovy-2. Great for everybody working on the Java platform.
- Steve Freeman, Nat Pryce: Growing Object-Oriented Software guided by Tests. Very interesting approach to software design - based upon feedback through tests.
- Learn You Some (Erlang or Haskell) for Great Good. Two extraordinary programming books for two off-the-mainstream languages.
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
* 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
Geocachers, bikers, hikers, mountaineers - read on.
I'll describe the following things:
- where to get a (free) map
- how to create a custom map
- how to get the map onto your Garmin device
- 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.
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:
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…
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":
Select the "Setup Map" (on the screenshot above you see German version, "karte einrichten"):
You now need to select the appropriate maps:
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
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!
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.
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!)
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 :-)
Ü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...
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
I just comitted two small utilities for Pdf manipulation (PdfStamper and PdfUtil) - both are not "finished" but working...
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!
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:
Slightly off any sensible calculation. Consider it "failed".
Move on with Java:
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:
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...
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
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:
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:
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".
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
Deliberately the template contains only four packages, although the full arc42 template contains several others:
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
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:
Not that difficult... boot Windows again.
Open the "display preferences" page and try the following screen resolution:
That completely solved the issue for me.
15 January 2013
Camp mit zwei Trainern
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.
Update (nach dem Workshop) - einige Stimmen von Teilnehmern, aus Kommentaren
in Phillip Ghadir's Blog.
28 November 2012
Beispiele für Qualitätsanforderungen
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
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
Im November 2012 erscheinen gleich zwei neue Bücher zum Thema:
(disclaimer: an beiden habe ich mitgeschrieben!)
|
|
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
(might happen if you copy or clone your vm's):
Strategy is quite simple:
- Write down the problematic uuid!
- generate new uuid for the problematic device
- 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
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:
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!
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
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…
05 June 2012
Architektur mit Nachdruck
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).
30 March 2012
Großartiges Beispiel für Architektur und ihre Dokumentation
(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
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 !
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"
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 Vielsehende | Der Diktator |
Strukturierte Faulheit | Entwurf mit Scheuklappen |
Blick in den Rückspiegel | Notationskrieger |
Multilinguist | Codeheld |
Die Jongleuse | Der Perfektionist |
Der Vereinfachungskobold | Der Prozessprediger |
Die Lektorin | Hauptsache, es läuft |
Ständig lernen | Toolistan |
Der Vermarkter | Der Verschätzer |
Gibt's bei Amazon und direkt beim Verlag (entwickler.press)