tag:blogger.com,1999:blog-157862332024-03-13T21:36:44.254+01:00IT and more (a.k.a. Doing-IT-Right)Statements on information technology and software engineering topics, maintained by Dr. Gernot Starke.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comBlogger299125tag:blogger.com,1999:blog-15786233.post-33632740105674297612018-11-15T12:57:00.001+01:002018-11-16T10:21:34.301+01:00neue arc42 Website...Wir haben <a href="https://arc42.de">https://arc42.de</a> nach langer Zeit auf eine neue technische Plattform umgestellt, seit ein paar Tagen ist's live.
<br><br>
Das haben wir gefeiert:
<br><br>
Mit arc42 bekommen Sie neben guten Softwarearchitekturen, zufriedenen Stakeholder und sparsam/pragmatischer Dokumentation sogar die Adventsgeschenke früher:
<br><br>
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...
<br><br>
DANKE für Euer enormes Interesse.
<br><br>
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.
<br><br>
Über Feedback zum Knigge - oder zu arc42 - freuen wir uns immer.
<br><br>
Gernot Starke (und Peter Hruschka)
Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-27938593011885247962018-05-05T14:24:00.001+01:002018-05-05T14:24:55.107+01:00Migrating plain-http Github-Pages to httpsSince early May 2018, <a href="https://blog.github.com/2018-05-01-github-pages-custom-domains-https/">Github allows https for
github-pages with custom domains</a> - which was a longstanding requirement of many users.
It was made possible by a cooperation between <a href="https://github.com">Github</a>
and <a href="https://letsencrypt.org">LetsEncrypt</a>.
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).
<h3>Github Pages with custom domains</h3>
Up to now, the procedure to serve these sites via
Github with a custom domain was the following:
<ol type="a">
<li>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)</li>
<li>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.</li>
<li>commit, push and done.</li>
</ol>
<h3>How to Migrate to https</h3>
To migrate this to the new https system, follow these steps:
<ol>
<li>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.</li>
<li>Remove the old CNAME file from your repository, commit and push this deletion to Github.</li>
<li>Open the Github repository settings page and manually enter the domain name.</li>
<li>Wait a few minutes until your certificate is generated - invisible for you.</li>
<li>If you're using Jekyll to generate your site, it's a good idea to change your
<code>_config.yml</code> 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.</li>
<li>Now you can check the "enforce https" checkbox - which was disabled until this
very last step</li>
</ol>
That's it. Thanx again Github for making this possible!
<h3>Appendix: Why should I do that?</h3>
As of July 2018 (with the release of Chrome v68), Google will clearly mark
plain-http sites as insecure. See their <a href="https://security.googleblog.com/2018/02/a-secure-web-is-here-to-stay.html">announcement</a>.
<a href="https://www.computerworld.com/article/3180690/security/its-time-to-turn-on-https-the-benefits-are-well-worth-the-effort.html">Computerworld</a> has written up a few arguments (speed being one of them).
Some sources (<a href="https://www.bluecorona.com/blog/reasons-to-have-https-website">this one, for example</a>) claim that search engines (especially Google)
favour https over http, so your page rank might decrease (!) if you stick with http
much longer. Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-45572766199189802312017-09-17T15:33:00.001+01:002018-05-05T14:23:58.130+01:00Wie man Onboarding NICHT machen sollte<h2>Gute Idee...</h2>
Bike-Sharing - eine gute Idee. Anbieter gibt's mittlerweile viele, insbesondere in Berlin.
Wir haben uns für <a href="https://www.lidl-bike.de/de/soeinfachgehts">Lidl-Bike</a> 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 <a href="https://www.lidl-bike.de/de/registrieren">registriert</a>...
<h2>... netter Anfang...</h2>
Tarif auswählen - wobei die Unterschiede zwischen
den vier Optionen leider unklar bleiben:
<img style="display:block; margin-left:auto; margin-right:auto;" src="https://lh3.googleusercontent.com/-ZDby8wnUDmM/Wb6BeMRgliI/AAAAAAAACI0/iR_rV_GgncEIuZzOzRkwyfc0KBLDOiCLQCHMYCw/NewImage.png?imgmax=1600" alt="NewImage" border="0" width="596" height="155" />
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."
<h2>... Security? Scheint nicht nötig!</h2>
Ja, Mail + SMS erhalte ich pronto.
Und in der Mail steht, im Klartext (!!) ein für mich erzeugtes Passwort.
<strong>In der Mail. Ein Klartext-Passwort.
</strong>
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.
<h2>Peinlich + gefährlich</h2>
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.
<h2>tl;dr</h2>
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 <em>kapern.</em>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-89590729561468888662017-01-25T13:54:00.001+01:002017-01-25T13:56:33.384+01:00arc42 - Version 7 (for DE see below)
<h2>English Version</h2>
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 (<a href="http://docs.arc42.org">docs.arc42.org</a>
and <a href="http://faq.arc42.org">faq.arc42.org</a>).
For a more detailed intro, see <a href="https://www.innoq.com/de/blog/arc42-die-siebte/">this post </a>on the <a href="https://www.innoq.com/de/blog/arc42-die-siebte/">innoQ blog</a>.
<h2>Deutsche Version:
</h2>
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 ((<a href="http://docs.arc42.org">docs.arc42.org</a>
and <a href="http://faq.arc42.org">faq.arc42.org</a>).
Mehr Infos in <a href="https://www.innoq.com/de/blog/arc42-die-siebte/">diesem Post </a>(im <a href="https://www.innoq.com/de/blog/arc42-die-siebte/">innoQ Blog</a>).
Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-85707569389576366292016-10-06T21:22:00.001+01:002016-10-09T13:12:00.825+01:00Bauen versus Basteln<h3>Vorsicht: Nestbeschmutzung</h3>
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.
<h3>TL;DR (aka Zusammenfassung)</h3>
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 "<a href="http://www.handelsblatt.com/12503190.html?">Ramponierte IT</a>" auf den Punkt gebracht:
<blockquote>"Die schlechten Computersysteme werden für viele Effizienzprobleme verantwortlich gemacht" (<a href="http://www.handelsblatt.com/12503190.html?">Handelsblatt</a>)</blockquote>
<h3>Software "entwickeln" klingt systematisch...</h3>
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.
<h3>"basteln" trifft es oft besser</h3>
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.
<h3>Same Stupid Mistakes</h3>
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:
<ul>
<li><strong>Mangelhafte Anforderungen:</strong> 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.</li>
<li><strong>Unklare Qualitätsanforderungen:</strong>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.</li>
<li><strong>Arbeit unter Zeitdruck: </strong>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".</li>
<li><strong>Kein Abbau technischer Schulden:</strong> 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". </li>
<li><strong>Mangelhafte Entwicklungsprozesse:</strong> 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." </li>
<li><strong>Lokale statt globale Optimierung: </strong>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". </li>
<li><strong>Wenig Verständnis für Zusammenhänge im Großen: </strong>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.</li>
</ul>
<h3>Bin ich zu pessimistisch?</h3>
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.
<h3>Abhilfe: Systematische Verbesserung</h3>
Unsere Grundthese bei der Verbesserung lautet:
<blockquote>"Reduktion technischer Schulden führt zu Kostensenkung in der Entwicklung neuer Features."</blockquote>
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:
<ul>
<li><strong>Innere Qualität </strong>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.</li>
<li><strong>Äußere Qualität </strong>der Systeme. Anders ausgedrückt: Business-Wert,
die Menge fachlicher Features, fachliche Leistung, Performance, Benutzerfreundlichkeit, Skalierbarkeit, Menge der erfüllten Kundenwünsche.</li>
</ul>
Argumentieren Sie gegenüber Ihrem Management, dass bei systematischer Verbesserung
(d.h. Steigerung der inneren Qualität) die fachlichen Features <strong>wirtschaftlich günstiger</strong> ("preiswerter") werden - und
wir zukünftig damit bessere <em>time-to-market</em> 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.
<img style="display:block; margin-left:auto; margin-right:auto;" src="https://lh3.googleusercontent.com/-hVp4QIiMQok/V_ayjyQgQhI/AAAAAAAACEE/bF-56T4_E5w/Velocity-mit-ohne-Verbesserung.png?imgmax=1600" alt="Velocity mit/ohne Verbesserung" border="0" width="599" height="386" />
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 <a href="http://aim42.org">aim42</a> (architecture improvememt method) stellt für die systematische Verbesserung fast 100 "good practices" zusammen,
etablierte und bewährte Vorgehensmuster.
<h3>Fazit: Das klappt wirklich!</h3>
<blockquote>Vorsicht - Eigenwerbung: Sie können systematische Verbesserung lernen - wir bieten dazu den <a href="http://www.arc42.de/improve.html">dreitägigen Workshop "IMPROVE"</a> an.
</blockquote>
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.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-47018729589628689882016-09-27T20:40:00.001+01:002016-09-27T20:40:03.491+01:00FAQ for Software Architecture Documentation (with arc42)I'm currently working hard on translating our German book (see this <a href="http://it-and-more.blogspot.de/2016/09/praktische-tipps-fur-arc42.html">post</a>) - which will be named "<strong>Communicating Software Architectures - lean, effective and painless documentation</strong>"). It's already on <a href="https://leanpub.com/arc42inpractice/">Leanpub</a>, my favorite eBook publishing platform.
<h3>FREE in various formats</h3>
<img src="https://lh3.googleusercontent.com/-Kwmzyn1BWUM/V-rLEH98O2I/AAAAAAAACDk/Addu6VxKXE0/arc42-faq-cover.png?imgmax=1600" alt="Arc42 faq cover" border="0" width="200" height="275" style="float:right;" />
As arc42 is deeply rooted in open-source, I decided to extract the FAQ-section (frequently asked questions) from that book and make it <a href="https://leanpub.com/arc42-faq/read">available for free</a>.
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.
<h3>Many categories of questions</h3>
I organized the (currently more than 100) questions
in the following categories:
<ul>
<li>A General questions</li>
<li>B Questions on methodology</li>
<li>C Questions on arc42 sections</li>
<li>D Questions on modeling</li>
<li>E Questions on arc42 and agile methods</li>
<li>F Questions on tools for arc42</li>
<li>G Questions on arc42 and versions / variants</li>
<li>H Questions on arc42 and Traceability</li>
<li>J Questions on managing documentation</li>
<li>K Questions on customizing arc42</li>
</ul>
<h3>Your input is welcome</h3>
If you encounter questions around architecture documentation in general or arc42 in particular, let my know: DM me on our new <a href="https://twitter.com/arc42Tipps">@arc42Tipps</a>
Twitter account or email me on info-at arc42.de.
By the way: I'm very grateful to <a href="https://www.innoq.com/de/">innoQ</a> for supporting arc42.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-85702374461737233152016-09-06T21:39:00.001+01:002016-09-06T21:39:32.799+01:00arc42 in Software-Engineering Radio PodcastMy innoQ-fellow-colleague, <a href="https://www.innoq.com/de/staff/eberhard-wolff/">Eberhard Wolff</a>, interviewed me
about arc42 for the well-known podcast "<a href="http://www.se-radio.net/2015/12/se-radio-episode-244-gernot-starke-on-architecture-documentation-using-arc42/">Software Engineering Radio</a>"...
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.
Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-63582421702592027492016-09-04T09:49:00.001+01:002016-09-04T09:49:29.945+01:00Praktische Tipps für arc42 <a href="http://arc42.de">arc42</a> 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 <a href="https://twitter.com/rotnroll666?lang=de">Michael Simons</a> und Stefan Zörner <a href="https://leanpub.com/arc42byexample">dazu ein eBook</a> veröffentlicht (als LeserIn dieses Blogs erhalten Sie bis Ende 2016 ganze <a href="https://leanpub.com/arc42byexample/c/itandmore42">42% Rabatt</a>!).
<br/>
<img src="https://lh3.googleusercontent.com/-zOcViwPVH5Y/V8vdXNG2PTI/AAAAAAAACBw/erHaUBvNOV8/arc42-in-Aktion.jpg?imgmax=1600" alt="Arc42 in Aktion" title="arc42-in-Aktion.jpg" border="0" width="200" style="float:left;" />
<h3>...in Aktion
</h3>
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 <a href="https://www.amazon.de/arc42-Aktion-Praktische-Tipps-Architekturdokumentation/dp/3446448012">gesammelter Form</a> (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.
<br/>
<h3>... Advent kommt bestimmt</h3>
Auf <a href="http://arc42.de">arc42</a> 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 <a href="https://twitter.com/arc42Tipps">arc42-Twitter Account</a> zu folgen).
<h3> one last thing</h3>
Übrigens schreibt gerade auch Ralf Müller (einer der Committer bei arc42 und langjähriger Nutzer!) ebenfalls gerade ganz aktiv einen <a href="http://rdmueller.github.io/">Blog zum praktischen Einsatz von arc42</a>.
Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-2498582826128959162015-11-06T13:56:00.001+01:002015-11-06T15:47:22.534+01:00Langlebigkeit und Wartbarkeit<p> </p>
<p>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).</p>
<h3><span style="font-size: 1.17em;">Eigentlich...</span></h3>
<p>... 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.</p>
<p> </p>
<h3>Dennoch...</h3>
<p>... 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: </p>
<ul>
<li>Wartungs- und Änderungskosten steigen unaufhaltsam auf ein schier unerträgliches Maß an. </li>
<li>Intransparenz wohin man nur schaut. Kaum jemand überblickt noch die Konsequenzen von Änderungen. Selbst kleine Erweiterungen werden zum technischen Vabanquespiel.</li>
<li>Arbeit an solchen Systemen wird zur Qual – obwohl Softwareentwicklung an sich zu den interessantesten Tätigkeiten überhaupt gehört. ☹</li>
</ul>
<p>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:</p>
<p> </p>
<p><img src="https://lh3.googleusercontent.com/-Mefbtru-KeA/VjyjO2OWs7I/AAAAAAAAB-g/59lNhQRgVPw/KPI-Features%25252BFeature-Kosten.png?imgmax=800" alt="rotting software" width="599" height="304" border="0" /></p>
<p> </p>
<h3>Endlich...</h3>
<p>... bricht Carola Lilienthal mal <em>explizit</em> 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:</p>
<ul>
<li>Auftraggeber von Systemen freuen sich, weil sich die hohen Investitionen in Erstellung und Wartung lohnen und weitere Änderungen kostengünstig sind.</li>
<li>Anwender und Fachabteilungen freuen sich, weil Änderungen am System schnell und mit hoher Zuverlässigkeit erfolgen können. </li>
<li>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.</li>
</ul>
<p> </p>
<h3>Prima</h3>
<p>... 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!</p>
<p> </p>
<p>Mehr dazu im <a href="http://www.amazon.de/Langlebige-Software-Architekturen-Technische-analysieren-begrenzen/dp/3864902924">Buch selbst</a> (die Website zum Buch ist noch in Arbeit…)</p>
<p> </p>
<p>History:</p>
<p>Nov.07: fixed typos (thx, @stilkov)</p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-24251384027252180762015-05-22T09:25:00.001+01:002015-05-22T09:25:26.841+01:00On Morality: Not-Just-A-Consulting-Monkey<p>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:</p><p> </p><p>* 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.</p><p>* Spying on their own citizens without specific warrant violates our constitution, I support <a href="http://www.spiegel.de/politik/deutschland/bnd-affaere-katrin-goering-eckardt-droht-mit-verfassungsklage-a-1032897.html">appropriate initiatives</a> (reference in German).</p><p>* Helping other nations’ intelligence agencies to spy on our own citizens and companies is a serious crime and should be prosecuted. </p><p>* In light of recent and not-so-recent eventy, including everything around heroic whistleblower Ed Snowdon, supporting these organizations is morally doubtful or debatable.</p><p>* 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.</p><p>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).</p><p>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).</p><p>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.</p><p> </p><p>(I re-used the term from the inspiring <a href="https://www.youtube.com/watch?v=Z8aECe4lp44">Martin-Fowler keynote from OOP-Conference 2014</a>)</p><p> </p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-51275414899124478962015-03-18T20:47:00.001+01:002016-08-30T18:11:14.409+01:00IT-Systeme systematisch verbessern...Software <b>neu</b> erstellen - das lernen wir alle in Ausbildung und Studium.<br />
<br />
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...<br />
<br />
<h3>
Neuer Lehrplan zum Thema</h3>
<br />
Seit kurzem hat der iSAQB e.V. einen <a href="http://www.isaqb.org/wp-content/uploads/2015/02/isaqb-Lehrplan-advanced-IMPROVE-1.41.pdf">entsprechenden Lehrplan namens IMPRVOVE</a> aufgenommen (Disclaimer: Ich habe den entworfen und eingereicht).<br />
<br />
Dessen Name ist Programm: Sie können ab sofort lernen, wie Verbesserung, Evolution oder Weiterentwicklung systematisch funktioniert, mit balancierten betriebswirtschaftlichen, fachlichen und technischen Zielen.<br />
<br />
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.<br />
<br />
<br />
<h3>
Was Sie zum systematischen Verbessern brauchen</h3>
<a href="https://aim42.github.io/">aim42</a> verrät Ihnen schon ziemlich viel, aber ganz praktisch sollten Sie folgende Fähigkeiten mitbringen, wenn Sie Systeme verbessern möchten:<br />
<br />
<ul>
<li> Systematische Problemanalyse betreiben, sowohl auf Makro- (z.B. bei Querschnittsthemen, externen Schnittstellen, Entwicklungsprozessen) wie auch auf Mikroebene (z.B. im Code)</li>
<li>systematisch Verbesserungsvorschläge für die gefundenen Probleme entwerfen.</li>
<li>sowohl Probleme wie auch Lösungsoptionen aus betriebswirtschaftlicher Sicht bewerten (d.h. in Geldeinheiten!). Dieser Punkt fällt Softwareentwicklern erfahrungsgemäß besonders schwer.</li>
<li>Langfristiges Vorgehen bei Verbesserung planen, ihre "Evolutionsstrategie" festlegen.</li>
<li>Kurzfristige Verbesserungen planen und durchführen, beispielsweise Refactorings, Einführung interner Schnittstellen, Verbesserung von Modularisierung, Kohäsion und/oder Kopplung.</li>
<li>Sich durch betriebswirtschaftlich fundierte Argumentation gegen kurzfristige Widerstände durchsetzen.</li>
</ul>
<br />
<br />
In diesem Sinne - viel Spaß beim Verbessern Ihrer Systeme.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-54100972723816403952014-07-26T02:38:00.001+01:002014-07-26T02:38:49.186+01:00Connect your Kindle® to password-protected WiFiJust 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.
<img src="http://lh6.ggpht.com/-e-v3qtbP6MU/U9MGpnawXYI/AAAAAAAAB4Q/YbXAqvJqH5o/Window.jpg?imgmax=800" alt="Window" title="Window.jpg" border="0" width="447" height="219" />
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 :-)Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-64008932908841612912014-05-13T05:55:00.001+01:002014-05-13T05:55:29.663+01:00Open-Close-Principle considered (practically) useless<h2>Underlying Goal Considered Valuable</h2>
In a recent <a href="http://blog.8thlight.com/uncle-bob/2014/05/12/TheOpenClosedPrinciple.html">blogpost</a>, the honorable Uncle Bob once again discussed the merits of the famous Open-Close-Principle. Quote:
<blockquote>You should be able to extend the behavior of a system without having to modify that system.
</blockquote>
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.
<h2>The Nature of Changes in Practice</h2>
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)
<ul>
<li>"aargh - we didn't mean it THAT way, please correct it to THIS way".</li>
<li>"Make it faster, whatever it takes."</li>)
<li>"We need some new attributes in the view"</li>
<li>"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)
</ul>
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.
<h2>Is Open-Close Applied in Real Systems?</h2>
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 <a href="http://aim42.org">aim42</a> - to systematically improve (and hopefully help spread OCP application..).
@Uncle Bob: Thanx for your design principles - they make this (software) world a better place... Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-46660961933600885692014-02-16T16:08:00.001+01:002014-02-16T16:08:10.250+01:00Software 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.
<h3>Sample 1: Gold-Plated System</h3>
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.
<h3>Sample 2: Overly Complex Solution</h3>
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.
<h3>Sample 3: Horrible User Experience</h3>
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.
<h3>Software Quality is MORE than Code Quality</h3>
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...
<h3>Analyze Problems From Bird's Eye Perspective</h3>
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:
<ul>
<li>Qualitative Analysis (e.g. ATAM)</li>
<li>Runtime Analysis, e.g. performance and resource monitoring</li>
<li>Analysis of Development Process</li>
<li>Data Analysis - find improper structures and content</li>
<li>Issue-Tracker Analysis</li>
<li>Static Code Analysis</li>
</ul>
<h3>Clean Code is Important...</h3>
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...
<h3>Methodical Improvement to the Rescue</h3>
What's needed to systematically improve software is an iterative approach to find *many* problems, not only within code.
<a href="http://aim42.org">aim42</a> 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.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-6616540512791621312014-02-05T18:47:00.001+01:002014-02-16T16:07:11.625+01:00aim42 - Systematic Approach to Software MaintenanceDuring the OOP-Conference 2014, Stefan Tilkov and myself released <a href="http://aim42.org">aim42</a> - the systematic approach to software maintenance and improvement.
<br />
<img src="http://lh5.ggpht.com/-GsmelyLXREo/UvJ4bCQK0-I/AAAAAAAABv4/5yosaUJN53o/aim42-logo.png?imgmax=800" alt="Aim42 logo" title="aim42-logo.png" border="0" width="200"/>
<br />
We named it "aim", short for "<strong>A</strong>rchitecture <strong>I</strong>mprovement <strong>M</strong>ethod".
<a href="http://aim42.org">aim42</a> is a free and open-source project, a community approach to collect practices and patterns.
<h2>Why Do We Need Software Architecture Improvement</h2>
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:
<br />
<img src="http://lh4.ggpht.com/-KYu7fi2tg_Q/UvJ4jiWnx5I/AAAAAAAABwA/ryY0o-F90Ys/cost-of-change.jpg?imgmax=800" alt="Cost of change" title="cost-of-change.jpg" border="0" width="400" />
<h2>aim4 Phases</h2>
It consists of three distinct phases:
<ol>
<li><strong>Analyze</strong>: search and collect problems, issues, deficiencies and technical debt within your system and your development process.</li>
<li><strong>Evaluate</strong>:understand root-causes of problems, determine their „value“ and cost/effort of their remedies.</li>
<li><strong>Improve</strong>: systematically improve code and structures, reduce technical debt, remove waste and optimize.</li>
</ol>
<h2>Community Approach</h2>
Currently we host the (AsciiDoc) source of the aim42 guidebook on Github, one of the best-known open-source communities.
<br />
<code>
https://github.com/aim42/aim42
</code>
<br />
Find some further information (oops - currently in German only) within our <a href="https://speakerdeck.com/aim42/aim42-architecture-improvement-method">initial presentation (on Speakerdeck)</a> or the upcoming YouTube channel.
<h4>Changes</h4>
* Feb. 16th: Changed URL from Bitbucket to <a href="https://github.com/aim42/aim42">Github</a>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-15924999160215468272013-11-26T08:49:00.001+01:002013-11-26T08:49:55.747+01:0022-Digit IBAN Considered HarmfulWhoever decided to replace the old-fashioned 9-10 digit<br />bank account numbers by the 22-digit IBAN clearly favors<br />machines over humans.<br /><br />It's cruel to force humans to fill 22-digit numbers into money transfer statements.<br /><br />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.<br /><br />Banks of the world - this decisions does NOT make me love you. <br /><br />"Der Spiegel" has a nice article about it, titled<br />"<a href="http://www.spiegel.de/spam/satire-bei-spiegel-online-verleumdung-iban-die-schreckliche-a-924363.html">IBAN Die Schreckliche</a>"Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-36785553308045348622013-11-04T09:36:00.001+01:002013-11-04T09:36:45.984+01:00Java JDK on OS-X (here: 10.9, Mavericks)<p>Boredom warning: This post describes some commands to configure Java-7 on Mac OS-X. Now fun to read.</p><p> </p><p>After my recent upgrade to 10.9, I had to install Java again (Apple seems to be regarding Java as something evil…)</p><p>The Apple-Java is still 1.6 - if you’re happy with that: use the proposed download from Apple and you’re all set.</p><p>If, e.g. for software development, you want something a bit more recent...</p><p> </p><p>Downloading from Oracle, running the installer… but still, 1.6 is the active JDK.</p><p>(Simple) solution: In any shell (e.g. Terminal, iTerm):</p><pre>sudo ln -sf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK</pre><p> </p><p>On your system, the PATH to java might be set at three different locations:</p><pre> ~/.profile</pre><pre> /etc/paths</pre><pre> /etc/paths.d</pre><p>If you happen to have / need a JAVA_HOME environment variable:</p><pre>export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"</pre><p>Make sure, JAVA_HOME is set in one of the abovementioned locations. I suggest you get rid of it… (delete it from ~/.profile)</p><p> </p><p> </p><p> </p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-63394815713327514682013-09-22T20:18:00.001+01:002013-09-22T20:18:54.062+01:00Deutschland wählt totale Überwachung - Ade digitale BürgerrechteDemokratie == das Volk herrscht.<br /><br /><br />Heute (22. September 2013) hat das deutsche Volk sich entschieden, auf Privatsphäre im Internet auch zukünftig weiträumig zu verzichten.<br /><br />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.<br /><br />Ich glaube, die Tatsache der verlorenen digitalen Privatsphäre ist für Normalbürger schlicht zu kompliziert. Oder wird vom alltäglichen Ärger überlagert.<br /><br />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.<br /><br /><br />(Politik-)Frust auf ganzer Linie.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-78266040375452956722013-09-22T12:42:00.001+01:002013-09-22T12:42:03.772+01:00Why I Still Read Books<h3>Are Books Old-Fashioned?</h3><br />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.<br /><br />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… <br /><br /><h3>Books have Higher Quality in Content and Structure</h3><br />My argument pro-books is quite simple: Usually the authors have intensively thought about two issues:<br /><ol><li>the topic itself and </li><li>ways of describing content to their readers. <br /></li></ol><br /><br />Furthermore, reviewers and publishers have provided feedback - which invariably leads to higher quality in content and structure.<br /><br />Arguments are easier to follow, language more concise (and not restricted to 140 characters), overly long sentences are (often) replaced by understandable "lightweigt" alternatives…<br /> <br /><br /><h3>Others Have Read for You</h3><br />Amazon-reviews often help me to find appropriate books on a topic. Enthusiastic reviews are no guarantee, but an indicator. <br /><br /><br /><h3>E-Books as Compromise</h3><br />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.<br /><br /><br /><br /><h3>Great Examples</h3><br />Let me give you only a few of the great examples I encountered recently:<br /><br /><br /><ul><li>Al Sweigart: <a href="http://inventwithpython.com/">Hacking Secret Ciphers with Python</a>. 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.</li><li>Venkat Subramaniam: <a href="http://www.amazon.com/Programming-Groovy-Productivity-Developer-Pragmatic/dp/1937785300">Programming Groovy-2</a>. Great for everybody working on the Java platform.</li><li>Steve Freeman, Nat Pryce: <a href="http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627/ref=sr_1_1?s=books&ie=UTF8&qid=1379847576&sr=1-1&keywords=growing+object-oriented+software+guided+by+tests">Growing Object-Oriented Software guided by Tests.</a> Very interesting approach to software design - based upon feedback through tests.</li><li>Learn You Some (<a href="http://learnyousomeerlang.com/">Erlang</a> or <a href="http://learnyouahaskell.com/">Haskell</a>) for Great Good. Two extraordinary programming books for two off-the-mainstream languages.</li></ul><br /><br />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. <br /><br /><br />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. <br />Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-22566037180228406982013-09-09T11:11:00.001+01:002013-09-09T11:11:48.217+01:00Emacs on Mac-OS: Configuration for Alt- and Meta-Key<p>Oh what a nuisance, having to configure key-bindings so that Emacs becomes usable on Mac-OS...</p><h3>The Problem</h3><ul><li>You need a proper META-key to use Emacs.</li><li>With non-US keyboards, you need the ALT-key to type characters like [, ], { or }. </li></ul><p> </p><h3>Command-as-Meta? No way...</h3><p>People discuss wether to configure the COMMAND-key (aka "apple-key" or CMD) as META. </p><p>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.</p><p> </p><h3>Escape-as-Meta? Your Fingers Run Marathon...</h3><p>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.</p><p> </p><h3>Left-ALT-as-Meta, Right-Alt-for-Special-Characters</h3><p>Whow - that's clever: Using the left-Alt key for something different than the right-Alt key...</p><p>Simple put the following line in your emacs configuration file (~/emacs.d/user.el or similar):</p><pre style="margin: 0px; font-size: 14px; font-family: Consolas; background-color: #eeeeee;">(setq ns-right-alternate-modifier nil)</pre><p>That works fine for me...</p><p> </p><p>Of course, I have CAPS-Lock mapped to CTRL (in Mac-OS system settings under keyboard)</p><p> </p><h3>Some more Emacs Links</h3><p><a href="https://speakerdeck.com/pschirmacher">@pschirmacher</a> pointed me to <a href="http://www.braveclojure.com/basic-emacs/">http://www.braveclojure.com/basic-emacs/</a>, which contains both a nice setup and pragmatic introduction.</p><p>I use the "<a href="http://emacsformacosx.com/">vanilla Emacs</a>" - of course the key config from above also works in terminal-Emacs. </p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-41063186963792818862013-08-09T14:04:00.001+01:002013-08-09T14:04:26.521+01:00The Privacy Tragedy or NDA Considered Impossible<br />The classic tragedy is a sad story - as protagonists usually suffer from serious losses.<br /><br />The last few weeks have shown that our privacy had been lost years ago - without us (protagonists) realising it.<br /><br />Now, with the heroic help of guys like <a href="http://en.wikipedia.org/wiki/Edward_Snowden">Ed Snowden</a>, the magnitude of this privacy-loss became visible:<br /><br />* Governments (especially from the US, Germany, UK and maybe several others) violate fundamental privacy rights (like the American Constitution and the German Grundgesetz).<br /><br />* Companies trying to keep their users' data private are forced by governments to either shut down their operation or violate privacy rights.<br /><br />* All Internet traffic is systematically monitored by government agencies - without users' consent. They are reading ALL our communications.<br /><br /><h3>The Root of All Evil: Yes - We Scan!</h3><br />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!<br /><br />Ok - you probably already knew that. And you knew Obama's slogan "Yes, We Scan"?<br /><br /><h3>The Tragedy</h3><br />We cannot do a single thing about it - without giving up the comfort zone:<br /><br />* 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.<br /><br />* 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!<br /><br />* Many <it>convenience</it> services are located in the US (Dropbox, Evernote, GoogleDrive, Microsoft-SkyDrive). Despite their claims to keep our data private, they all cooperate with Governments.<br /><br />* 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)). <br /><br />* 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)?<br /><br /><h3>We Are Lost</h3><br />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!<br /><br />We lost privacy in digital life. No (comfortable) way out of this!<br /><br /><br /><h3>NDA Considered Impossible</h3><br />I earn my money with software and computer stuff. It involves private and sometimes even secret information.<br /><br />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.<br /><br />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!<br /><br /><br /><h3>Hope In Small And Painful Doses</h3><br />Yes - you can encrypt your email (PGP, GPG or S/Mime). All of these solutions require a considerable investment in software and organizational infrastructure. <br /><br />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.<br /><br />And - what will be a trustworthy compiler? Is the backdoor already build into your hardware (which is most likely driven by US-designed chips…)<br /><br />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.<br /><br />Despite myself trying some of these steps - tragedy struck. We're lost our privacy.<br /><br />Thanx, Ed, for making this clear.Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-17134703158592382752013-07-20T12:04:00.001+01:002013-07-20T12:04:54.354+01:00How to get a custom map onto your Garmin GPS deviceThis directions are for people using Garmin(™)GPS devices - but need special or customized maps on it.<br /><br />Geocachers, bikers, hikers, mountaineers - read on.<br /><br />I'll describe the following things:<br /><br /><ol><li>where to get a (free) map</li><li>how to create a custom map</li><li>how to get the map onto your Garmin device</li><li>how to convince your Garmin device to use your new map</li></ol><h4>Disclaimer</h4><br />I'm not associated with <a href="http://www.garmin.com/en-US">Garmin Ltd.</a> - and might not work with<br /><br /><br /><h3>Why should I want all this?</h3><br />You want (custom, specialized) maps on your GPS device as you:<br /><ul><li>like outdoor activities in unknown locations,</li><li>own a Garmin device for GPS navigation,</li><li>sometimes need *current* and free maps</li></ul><h3>Where to get a (free) map</h3><br />Of course the <a href="http://www.openstreetmap.org/">OpenStreepMap</a> would be the first place to go, unfortunately it is quite clumsy to get their data transformed into something legibly by a Garmin device.<br /><br />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!)<br /><br /><h3>How to create a custom map</h3><br />Point your browser to <a href="http://garmin.openstreetmap.nl/">garmin.openstreetmap.nl</a> -<br />a free service from Lambertus.<br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9324151625" title="View 'Free_worldwide_Garmin_maps_from_OpenStreetMap' on Flickr.com"><img border="0" alt="Free_worldwide_Garmin_maps_from_OpenStreetMap" width="500" src="http://farm4.staticflickr.com/3737/9324151625_0e1860b862.jpg" height="458"/></a><br /><br />You stick with the default "generic routable" selection but enable the "manual tile selection".<br /><br />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.<br /><br />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.<br /><br />You need to enter an email address, so that they can send you a download link… They won't spam you!<br /><br /><br /><h3>How to get the map…</h3><br />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:<br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9326933938" title="View 'download-gpx-map' on Flickr.com"><img border="0" alt="download-gpx-map" width="500" src="http://farm6.staticflickr.com/5513/9326933938_0096b811a0.jpg" height="211"/></a><br /><br />It's called "osm_generig_gmapsupp.zip" - ignore the strange name. Download and unpack to a folder of your choice.<br /><br />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".<br /><br />You're close - but not finished yet. Have your Garmin device ready?<br /><br /><h3>… onto your Garmin device</h3><br />Plugin your USB cable or otherwise connect your Garmin.<br />Usually it is shown as disk.<br /><br />You need to respect the Garmin directory name - it's "Garmin" spelled with capital "G"…<br /><br />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… <br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9324531879" title="View '_Volumes_NO_NAME' on Flickr.com"><img border="0" alt="_Volumes_NO_NAME" width="500" src="http://farm8.staticflickr.com/7449/9324531879_4f3e7e91cd.jpg" height="112"/></a><h3>How to convince your Garmin device to use your new map</h3><br /><br />Turn on your Garmin device and navigate to the "Maps" screen (shown here for a GPSmap 62s). Select "Menu":<br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9327399308" title="View '96' on Flickr.com"><img border="0" alt="96" width="" src="http://farm8.static.flickr.com/7355/9327399308_f6b7fff039.jpg" height=""/></a><br /><br />Select the "Setup Map" (on the screenshot above you see German version, "karte einrichten"):<br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9327399426" title="View '109' on Flickr.com"><img border="0" alt="109" width="" src="http://farm4.static.flickr.com/3780/9327399426_74ae3b3808.jpg" height=""/></a><br /><br />You now need to select the appropriate maps:<br /><br /><a href="http://www.flickr.com/photos/gernotstarke/9324604073" title="View '129' on Flickr.com"><img border="0" alt="129" width="" src="http://farm4.static.flickr.com/3795/9324604073_ac1d6f9fd2.jpg" height=""/></a><br /><br />Your Garmin now display a list of all available maps. Usually all the OpenStreetMap maps are called "OSM generic".<br />It's advisable to deselect many (or all) of the other maps - as Garmin gets confused if several maps cover the same GPS coordinates…<br /><br />(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")<br />Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-33295559122156169422013-06-26T05:57:00.001+01:002014-01-03T16:11:54.604+01:00innoQ und arc42 machen (wieder) Unmögliches möglichmit unserer coolen Sommer-Aktion, gegen Langeweile und schlechte Laune:<br />
Wir lösen den Widerspruch zwischen "gedruckt" und "eBook" (zur CPSA-F Zertifizierung) auf!<br />
Unser kleines eBook über die iSAQB Prüfung zum <em>Certified Professional for Software Architecture</em> (Foundation Level) gibt es ausschliesslich in digitaler Form - zumindest können Sie es nur so kaufen.<br />
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 <strong>verschenken</strong>!<br />
<br />
<blockquote class="tr_bq" style="text-align: center;">
<span style="color: #cc0000; font-size: x-small;"><b>Update, Januar 2013: Die Aktion ist ausgelaufen - wir haben jetzt KEINE Exemplare mehr übrig, sorry!</b></span><span style="color: #cc0000; font-size: x-small;"><b><br /></b></span></blockquote>
<div style="text-align: center;">
<br /></div>
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.<br />
Garantiert zu kurz, um <em>non-geeks</em> das Bestehen der Prüfung zu ermöglichen, aber als kompakte Wissensauffrischung für Softwareentwickler und -architekten hoffentlich hilfreich.<br />
<img alt="ISAQB Shortcut" border="0" src="http://lh5.ggpht.com/-gcKzm77zuy4/UUlPUuppWwI/AAAAAAAABoE/RZW95IIgiog/iSAQB-Shortcut.jpg?imgmax=800" width="200" /><br />
<strike>Einfach eine Email an <a href="mailto:gernot.starke@innoq.com?subject=GS-Sommer-13&body=bitte%20die%20POSTADRESSE%20einf%C3%BCgen,%20an%20die%20ich%20Ihnen%20das%20gedruckte%20B%C3%BCchlein%20senden%20kann">gernot.starke@innoq.com</a> senden, als Promotion-Code "GS-Sommer-13" und <strong>die Postadresse nicht vergessen</strong>, an die wir Ihr persönliches Exemplar senden dürfen...</strike>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-70306784270312273462013-06-25T09:07:00.001+01:002013-06-25T11:55:18.307+01:00Letter to Our Governments: Germany, GB and US are Surveillance States<p>Dear Mrs Merkel, Mr Cameron and Mr Obama,</p><p>in <strong>transforming your countries to surveillance states</strong> 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.</p><p>Now you spy on your own fellow, consciously <strong>violate privacy</strong> and the secrecy of (formerly) private communication over public networks. Mrs Merkel called for similar surveillance in Germany...</p><p>You accuse those who informed the public and media about <strong>you spying on citizens</strong><strong> </strong>- although they deserve to become public heroes (read what <a href="http://www.theatlantic.com/politics/archive/2013/06/what-we-dont-know-about-spying-on-citizens-scarier-than-what-we-know/276607/">Bruce Schneier says about it</a>)</p><p>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 <a href="http://en.wikipedia.org/wiki/PRISM">Prism</a>, <a href="http://www.haaretz.com/news/world/report-british-spy-agency-taps-fiber-optic-cables-to-access-to-world-s-communications-1.531317">Tempora</a> and potentially others. </p><p>Liberty of speech, thought and communication is one of the <strong>pillars of democracy</strong> - and I personally see those <strong>violated by YOU</strong>.</p><p>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!</p><p> </p><p>Bruce Schneier impressively <a href="http://www.theatlantic.com/politics/archive/2013/06/what-we-dont-know-about-spying-on-citizens-scarier-than-what-we-know/276607/">summarizes</a>:</p><p>"You governments are putting your own self-interest ahead of the interests of the country. That needs to change!"</p><p>Just in case you ever considered calling me a friend - forget it. </p><p> </p><p>From today, I'll be actively sponsoring and using privacy networks like <a href="https://www.torproject.org/">Tor</a>. I will at least try to <a href="http://prism-break.org/">break out of surveillance</a>!</p><p> </p><p>deeply troubled,</p><p>Gernot Starke</p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.comtag:blogger.com,1999:blog-15786233.post-15141334957003546742013-05-30T12:08:00.001+01:002013-05-30T12:08:31.981+01:00Patterns-kompakt, die Vierte...<p><span style="font-family: Verdana; font-size: 14px;">Gerade frisch aus der Druckerpresse kommt die vierte Auflage von Patterns-kompakt, der kurzen und hoffentlich kurzweiligen Einführung in Entwurfsmuster.</span></p><p><span style="font-family: Verdana; font-size: 14px;"><br /></span></p><blockquote><p style="font-size: 13px;"><span style="font-family: Verdana; font-size: 14px;">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. </span></p></blockquote><p><span style="font-family: Verdana; font-size: large;">Neu zur vierten Auflage sind jede Menge Codebeispiele, die zum Experimentieren mit den Mustern einladen… siehe <a href="http://patterns-kompakt.de/">hier</a>.</span></p><p><span style="font-family: Verdana; font-size: large;">Mehr zum Inhalt, viele Extrakte und jede Menge zugehörigen Sourcecode finden Sie auf der <a href="http://patterns-kompakt.de/">Website zum Buch</a>… (danke an Karl Eilebrecht, dem PK-Helden!)</span></p><p><a title="View 'PK4-Cover-XL' on Flickr.com" href="http://patterns-kompakt.de/"><img src="http://farm6.staticflickr.com/5332/8889269032_217efec0ae_m.jpg" alt="PK4-Cover-XL" width="160" height="240" border="0" /></a></p><p> </p><p>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 :-)</p><p><a title="View 'pk1-cover' on Flickr.com" href="http://www.flickr.com/photos/19243203@N00/8889277454"><img src="http://farm4.staticflickr.com/3682/8889277454_1421aa6827_t.jpg" alt="pk1-cover" width="65" height="100" border="0" /></a> <a title="View 'pk2-cover' on Flickr.com" href="http://www.flickr.com/photos/19243203@N00/8888654991"><img src="http://farm4.staticflickr.com/3833/8888654991_387c31fd6b_t.jpg" alt="pk2-cover" width="67" height="100" border="0" /></a> <a title="View 'PK3-Cover' on Flickr.com" href="http://www.flickr.com/photos/19243203@N00/8888652103"><img src="http://farm6.staticflickr.com/5441/8888652103_acb7e492f5_t.jpg" alt="PK3-Cover" width="67" height="100" border="0" /></a></p><p> </p><p>Übrigens hat auch der Verlag eine Evolution hinter sich - von Spektrum über Spektrum-Elsevier zu Springer zu Springer-Vieweg…. </p>Dr. Gernot Starkehttp://www.blogger.com/profile/04395266267293141818noreply@blogger.com