Archiv der Kategorie: Allgemein

Alles Gute für 2019

Optimistisch bleiben, den Augenblick genießen und einfach Spaß an den kleinen Dingen im Leben haben… (Bildnachweis: Damedeeso, Istockphoto)

Ich wünsche allen Lesern dieses Blogs ein frohes neues Jahr. Man darf gespannt sein, was ein Jahr 2019 bringen wird. Während die Aussichten für die Industrie und damit das Wachstum in Deutschland offenbar nicht ganz so rosig sind wie in den letzten Jahren, bin ich grundsätzlich wie immer optimistisch. Wer als Software-Entwickler tätig ist, dürfte sich über einen Mangel an Arbeit und damit hoffentlich auch an fair bezahlten Aufträgen nicht beklagen dürfen, trotz zunehmender Konkurrenz aus den „Billiglohnländern“.

Zu den Themen, die für mich 2019 ganz oben stehen, gehört natürlich das Auswerten von Daten in großem Stil. Dafür werden längst nicht mehr die traditionellen Programmiersprachen wie C++, Java oder C# verwendet, sondern „neumodische“ Programmiersprachen wie Python (stammt zwar bereits aus den 90er Jahren, hat für mich aber erst in den letzten Jahren enorm an Fahrt aufgenommen) und R.

Zu Python, meiner neuen „Lieblingsprogrammiersprache“, werde ich in naher Zukunft einiges an dieser Stelle schreiben. Wer sich als C#-Entwickler in die Sprache einarbeiten möchte, dem empfehle ich das sehr gute Buch „Python – der Grundkurs“ von Michael Kofler (Rheinwerk Verlag).

Wer sich für das Thema „Data Sciences“ interessiert, dem empfehle ich die folgende Webseite, auf der man u.a. (teilweise kostenlos) Online-Kurse zu diesem Thema belegen kann:

https://www.datacamp.com/

Noch eine Aufmunterung für alle, die bereits seit Jahren das Gefühl haben, dass sie der ganzen Entwicklung nicht mehr folgen können oder wollen und die bei Themen wie Container, Cloud oder dem neusten JavaScript-Framework der Woche nur genervt die Augen rollen. In „meinem“ Programmierprojekt, bei dem ich seit einigen Jahren als Entwickler involviert bin, geht es weder um JavaScript noch spielen irgendwelche „neumodischen“ Themen wie Microframeworks oder die ominösen Container eine Rolle. Es geht in erster Linie um die gute, alte Desktop-Entwicklung mit C# und mit einer relationalen Datenbank im Mittelpunkt. Wichtiger als ein breitgestreutes Wissen sind daher für mich nach wie vor solide Kenntnisse der Kernthemen (nach wie vor SQL) und so viel Praxis-Erfahrung wie möglich.

Chilkat – eine erstaunliche Library für „alles Mögliche“ rund um das Thema Internet

Chilkat ist ein Begriff, über den ich in den letzten Jahren bei endlosen Suchen nach einem Codebeispiel zum Thema Signierung oder Umgang mit Zertifikaten schon oft „gestolpert“ bin, ohne mich aber dann im Detail mit dem Thema zu beschäftigen.

Als vor ein paar Tagen die Anforderung aufpoppte, ein Word-Dokument per Programm zu signieren, war es wieder einmal soweit.

Chilkat ist eine klassische Programmierbibliothek, die eine Fülle an Funktionalitäten enthält, die alle mehr oder weniger direkt etwas mit dem Thema Internet-Programmierung zu tun haben. Neben den klassischen Themen (POP3, SMTP, SCP, SSH usw.) geht es natürlich auch um „moderne“ Themen wie JSON, AWS S3, Twitter und natürlich den Umgang mit Signaturen.

Faszinierend ist die Fülle an Programmiersprachen, für die funktionsfähige Beispiele angeboten werden.

Die Chilkat-Bibliothek ist nicht kostenlos, mit aktuell 289 USD (alle Preisangaben ohne Gewähr) aber in einer Preisregion, die eine Anschaffung möglich machen sollte. Vor allem angesichts des enormen Zeitgewinns, der mit den meisten Funktionen einhergeht.

Das PowerShell-Skript, das eine Pdf-Datei signiert, hatte nach kleinen Anpassungen (in erster Linie Pfade und Kennwort für den privaten Schlüssel) auch mit der 30-Tage-Testversion auf Anhieb funktioniert. Ich kann nur empfehlen, sich die Beispiele einmal anzuschauen. Danach sollte jedem Entwickler klar sein, welche enorme Funktionsfülle in einer einzigen Datei untergebracht ist.

Alles weitere unter http://www.chilkatsoft.com/

Lernen an Beispielen – programcreek.com zieht Beispiele aus OpenSourcen-Projekten

Auf diese Idee muss man auch erst einmal kommen. Das Portal programcreek.com (engl. creek =  „Bach“) zieht automatisiert Codesequenzen aus OpenSource-Projekten und stellt sie als Beispiele zur Verfügung, anhand der man die Funktion einer bestimmten Methode oder API lernen soll.

Grundsätzlich eine gute Idee, da das Lernen an Beispielen auch meine bevorzugte Methode ist (und das seit nun mehr über 40 Jahren;). Allerdings wirkt die Site auch etwas leblos. Kein Vergleich zu StackOverflow, bei dem viele solcher Beispiele eine lebhafte DIskussion auslösen würden.

Interessant ist das Projekt eines sich selbstständig aktualisierenden Know-how-Portals aber in jedem Fall: https://www.programcreek.com/

Zum Tod von Paul Allen

Am 15.10.2018 verstarb Paul Allen an den Folgen seiner Krebserkrankung, die bereits in jungen Jahren (er war damals 29 Jahre alt) diagnostiziert wurde. Wem der Name nichts oder nur wenig sagt. Paul Allen gründete 1975 zusammen mit seinem Schulfreund Bill Gates die Firma Microsoft, die in wenigen Jahren zu einem Weltkonzern wurde und heute einen Jahresumsatz von 110 Milliarden Dollar erwirtschaftet und über 120.000 Mitarbeiter beschäftigt. Paul war einer der drei Programmierer die damals einen BASIC-Interpreter, auf dem allerersten Heimcomputer, den Altair 8080, implementierten. Ihnen stand dafür lediglich 4.096 Speicherzellen zur Verfügung (die anderen beiden Programmierer waren Bill Gates und Monte Davidoff, der für die Implementierung der zur damaligen Zeit sicher sehr anspruchsvollen Fließkommaartihmentik zuständig war).

Paul Allen verließ die Firma bereits relativ früh. Teils aufgrund seiner frühen Krebsdiagnose, teils weil er mit der Geschäftspolitik seines Freundes Bill Gates nicht mehr einverstanden war. Er stand damals vor der Entscheidung, seine Anteile an seinen Partner für einen festen Betrag zu verkaufen oder zu behalten. Er entschied sich für Letzteres und wurde ein paar Jahre später unfreiwilig zu einem Multimilliadär, der nie mehr hätte arbeiten müssen. Er setze sich aber nicht zur Ruhe, sondern versuchte mit <I>Asymmetrix</I> eine neue Softwarefirma zu starten. Deren einziges Produkt war das Entwicklungssystem <I>Toolbook</I> das Menschen mit geringen Programmierkenntnissen die Entwicklung von Windows Programmen ermöglichen sollte (ich erinnere mich noch ganz gut daran wie ich einige Male daran scheiterte mit dem Programm irgendwas halbwegs vernünftiges zu produzieren).

Auch wenn Toolbook bei der Vorstellung von Windows 3.0 einen prominenten Platz erhielt, konnte es sich nicht durchsetzen. Es war seiner Zeit voraus und hätte eine deutlich leistungsfähigere Hardware benötigt. Als sich Bill Gates dann noch für Visual Basic entschied, war das Thema durch und Toolbook Geschichte.

Paul Allen zog sich danach aus der Software-Branche zurück und investierte seinen Reichtum in den Folgejahren in die unterschiedlichsten Projekte. Er gründete eine Firma mit dem Namen Vulcan (welcher Trekkie hätte das nicht gemacht?), finanzierte in seiner Heimatstadt Seattle den Bau der beindruckenden Experience Music Project-Ausstellungshalle (EMP, heute heißt es Museum of Pop Culture) am Fuß der Space Needle und kaufte das ortsanssässige Football Team Seahwaks, um die Abwanderung des Teams in eine andere Stadt zu verhindern.

In der Seattle Times erschien am letzten Sonntag eine sehr liebenswerte „Karikatur“ über einen bedeutenden Sohn der Stadt, der seine wichtigsten Eigenschaften sehr schön auf den Punkt bringt.

https://www.seattletimes.com/opinion/paul-allens-legacy/

Was zeichnete das Leben von Paul Allen aus – außer, dass er als Mitbegründer von Microsoft innerhalb weniger Jahre zu einem der reichsten Männer der Welt wurde? Für mich war es sein Glaube, dass wenn sich Menschen zu einem gemeinsamen Ziel zusammentun, sie alles erreichen können und damit die Lebensgrundlage von sehr vielen Menschen auf dieser Welt verbessern können. Er machte das möglich, was in vielen Fernsehserien und Kinofilmen immmer nur Fiktion bleibt. Er war ein Mensch, der seinen Reichtum größtenteils zum Wohl seiner Mitmenschen eingesetzt und damit viele Menschen, vor allem sicherlich junge Menschen, inspiriert hat sich für das eigene Leben hohe Ziele zu setzen.

Für mich und für viele andere Menschen wäre es überhaupt keine Frage, das eigene Vermögen so zu investieren, dass es die Lebensbedingungen von vielen Menschen verbessert. Insofern hat Paul Allen den Traum sehr vieler Menschen gelebt. Leider verstarb er viel zu früh und es ist unklar, ob und in welchem Umfang sein Werk fortgeführt wird.

Wer sich für das Leben von Paul Allen interessiert, dem sei das Buch „Idea Man“ empfohlen, wenn möglich die Originalversion. Vor allem die ersten ca. 200 Seiten sind sehr lesenswert, da es hier auch noch einmal um die Umstände geht, die zur Gründung von Microsoft führten. Danach flacht das Buch zwar etwas ab, was aber nichts daran ändert, dass es absolut lesenswert ist.

Idea Man von Paul Allen

Wie kundenfreundlich ist Microsoft – Visual Studio 2017 auf die harte Tour installieren

Kundefreundlichkeit bzw. Kundennähe sollte für große Konzerne eigentlich selbstverständlich sein. Auch bei Microsoft hört man allzu oft ein „We love our customers“ oder „We listen to our customers“. „Customer first“ oder „Developer first“ heißt die Devise sicher nicht, sondern eher „Cloud first“ und wer nicht mitzieht, den lassen wir früher oder später im Regen stehen.

Bei Visual Studio habe ich den Verdacht, dass es wohl etwas früher passieren wird. Kurze Release-Zyklen, Updates mit Fehlern (etwa ein ATL-Assistent, der einfach nicht startet oder gleich nach dem Start abstürzt) und vor allem eine gigantische Installation, da von C++ für Linux, Spielentwicklung für Unity, Android rauf und runter und jede Menge anderer Projekttypen, die 90% aller Entwickler niemals benötigen wird.

Das Ergebnis ist, dass der Installationsumfang von Visual Studio 2017 inzwischen auf gigantische 50 GB anstiegen sind. Da die IDE normalerweise über einen Webinstalliert installiert, der einem suggeriert man hätte einen echten Einfluss auf den tatsächlichen Umfang der Installation (unter 20 GB scheint es nicht zug ehen), fällt dieser Umstand bei einer schnellen Internet-Verbindung im Allgemeinen nicht auf.

Als ich vor ein paar Tagen Visual Studio 2017 in einer VM installieren wollte, da mir das Einrichten des Remote Debuggers zu umständlich war, da die zu debuggende Anwendung durch eine andere Anwendung zuerst gestartet wird und ich den Debugger an diesen Prozess hätte anhängen müssen, kam ich schnell dahinter, dass es eine ISO für VS 2017 nicht mehr gibt. Die offizielle Begründung klingt auch pausibel: Der Installationsumfang wäre einfach zu groß. Eine 50 GB große ISO will man nicht zum Download zur Verfügung stellen.

Auf die Idee, den Installationsumfang zu verkleinern oder ein „Visual Studio Core“ anzubieten, das wirklich nur die erforderlichen Komponenten für die gute, alte Entwicklung von Desktop-Anwendungen in C# enthält, kam man offenbar nicht. Das wäre vermutlich zu viel Kundennähe.

So bleiben nur zwei Optionen:

>Den offziell empfohlenen Weg über den Download aller Dateien in ein Verzeichnis

>Die Verwendung von VS 2015, das nach wie vor als ISO-Datei enthalten ist.

Auch wenn der folgende Befehl nach gefühlt ca. 2 Stunden zum Ergebnis geführt hat:

.\vs_community.exe –layout E:\VS2017\ –add Microsoft.VisualStudio.Workload.ManagedDesktop

habe ich mich doch für Variante 1 entschieden.

Kundenfreundlichkeit heißt für mich, dass der Hersteller auf seine Kunden hört und bei echten Anforderungen eine Lösung anbietet. Wie groß das Interesse an einer ISO-Datei nach wie vor ist, macht die Diskussion im UserVoice-Forum eindrucksvoll deutlich:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/17541385-please-make-iso-files-for-visual-studio-2017

Wer der Meinung ist, dass es eine ISO-Datei geben sollte, sollte hier abstimmen. Da das „we are listening“ noch vom März 2017 stammt und in ca. 15 Monaten nichts passiert ist, glaube ich allerdings nicht, dass es eine Einsicht geben wird (die zumal mit erheblichem Aufwand verbunden sein dürfte – wie beschäftigt das Visual Studio-Team mit allen möglichen Erweiterungen ist, macht die offizielle Roadmap eindrucksvoll deutlich: https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2018-roadmap).

Schade, dass die Entwicklung von SharpDevelop eingestellt wurde. Eine schlanke IDE mit integriertem Debugger wäre in einigen Fällen äußerst praktisch (wobei mir gerade einfällt, dass die letzte freigegebene Version 5.0 eventuell mein Problem lösen könnte;)

Dauert ewig, führt aber zum Erfolg – die Offline-Installation von Visual Studio 2017

Die ersten elf Mitarbeiter von Microsoft

Als ich vor kurzem dabei war für eine Konferenz einen kurzen Lebenslauf zu verfassen, fiel mir wieder einmal auf, dass ich mich etwa zur selben Zeit mit dem Thema Programmierung beschäftigt hatte als die Firma Microsoft in Albuquerque/New Mexico von Bill Gates und Paul Allen gegründet wurde. Eine kurze Internet-Recherche führte mich wieder zu dem Foto der ersten 11 Mitarbeiter von Microsoft, das eher per Zufall entstanden war (einer der Mitarbeiter hatte einen Preis in einem Radio-Quiz gewonnen, der darin bestand, sich in einem Fotostudio fotografieren lassen zu können – ansonsten wäre das Gruppenfoto vermutlich nie zustande gekommen). 2008, also 30 Jahre später, hatte sich die Gruppe noch einmal zu einem Gruppenfoto zusammengefunden.

https://www.businessinsider.de/microsoft-1978-photo-2016-10?op=1&r=US&IR=T

Wie sich alles für Bill Gates und Paul Allen entwickelt hat, wird sicher jeder wissen. Und das OS/2-Buch von Gordon Letwin dürfte bei vielen Windows-Entwicklerveteranen noch im Regal stehen. Das Schicksal der anderen verlief recht unterschiedlich. Die meisten haben das Unternehmen ein paar Jahre später verlassen. Wir werden alle älter und irgendwann kommt der Punkt, an dem man auf sein Leben mehr oder weniger kritisch zurückblickt. Man hat es selber in der Hand, dass die Bilanz dann einigermaßen positiv ausfällt.

SQL lernen im Jahr 2018

Wie war das noch einmal mit den SQL-Joins? Es gibt Left und Right Inner Joins und dann einen „normalen“ Join, der offenbar einem Left Inner Join entspricht. Wer wie ich SQL nur alle paar Jahre benötigt (ich habe den subjektiven Eindruck, dass das klassische SQL im Jahr 2018 wieder stark gefragt ist) kann nicht alle Details im Kopf behalten. Früher hätte man eines der zahlreichen SQL-Bücher zu Rate ziehen (und in der Regel erst einmal käuflich erwerben müssen, wie z.B. SQL in 21 Tagen oder SQL Queries for Mere Mortals (bei dem es zu jeder SQL-Anweisung auch eine Abbildung gibt).

Seit Jahren lernt man SQL wie vieles andere auch aus dem Internet konkret man findet die Lösung bei Stackoverflow. Ich nutze SO seit vielen Jahren, doch als ich nach dem Stichwort „SQL Left Outer join compare regular join“ suchte, war selbst ich überrascht angesichts der Fülle an Antworten, die fast keine Wünschen offen lassen und die teilweise mit Illustrationen versehen sind, die so manches Fachbuch für Hochschulen qualitativ aufwerten würden.

Hier ist der Link:

https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join#38578

Besonders faszinierend ist der Umstand, dass die Frage lediglich „What is the difference between “INNER JOIN” and “OUTER JOIN”? lautet. Ohne weitere Erläuterungen oder einem „schon einmal vielen Dank für eure Antworten“. In jedem anderen Forum wäre die Antwort, wenn der Fragesteller glimpflich davon kommen würde, ein „LMGTFY“ (die passenden Sticker gibt es hier: https://lmgtfy.com/stickers.html?s=p&v=16). In der Regel wäre die Antwort in fast jedem anderen Forum eine mehr oder weniger explizite Form von Sarkasmus gepaart mit der einen oder anderen Belehrung oder gar Schmähung. Ganz anders bei SO. Nicht nur, dass die Frage in epischer Länge von den unterschiedlichsten Autoren beantwortet wird, auch die Frage selber wird hochbewertet und besitzt über 4000 (Punkte?).

Ich kann es nur immer wieder wiederholen, Stackoverflow ist ein Phänomen, das nicht nur enorm zur Wissensererwerb unter Entwicklern beigetragen hat, sondern, dass auch die Umgangsformen auf ein bis dahin nie erreichtes Niveau gebracht hat. Alleine dafür muss es eines Tages Weltkulturerbe werden.

Genial was man alles mit JavaScript machen kann (wenn man ein so fähiger Entwickler ist)

Über die Seite bin ich sehr per Zufall gestoßen als ich nach einem HTML-Ersatz für PowerPoint gesucht hatte (wieder einmal):

https://hakim.se/

Auch wenn ich in den letzten Jahren schon einige beeindruckende Browser-Apps gesehen haben, die Beispiele, die der Entwickler hier zusammengestellt hat, verdienen das Prädikat genial.

Irgendwie genial: Ein Bilderbuch erklärt das Web und die Funktionsweise eines Browsers

Auch wenn ich beim Blättern das Gefühl hatte, das alles schon einmal vor 10 Jahren oder länger in ähnlicher Form (was das Blättern angeht) gesehen zu haben, ist das kleine Bilderbuch, das mit einfachen Worten die Funktionsweise des Webs und eines Browsers erklärt, einfach genial:

http://www.20thingsilearned.com/de-DE/home

Ich bewundere Menschen, die so kreativ sind und etwas mit einer solchen Leichtigkeit und dem gewissen Extra auf den Punkt bringen können.

Word-Dokumente als Markdown speichern – mit Pandoc und einem kleinen VBA-Makro

Markdown ist eine attraktive Alternative zu HTML, da es sich auf das Wesentliche beschränkt: Die Auszeichnung von Textdokumenten ohne Extras und Formalitäten.

Auch für Buchautoren und allgemein für Autoren technischer Dokumentation ist Markdown eine Alternative. Das macht z.B. die Dokumentation auf GitHub eindrucksvoll deutlich.

Auch wenn man Markdown mit jedem Editor schreiben kann, z.B. auch mit Visual Studio Code, die meisten Autoren schreiben nach wie vor mit Word (Winword). Da Word in der Version 2016 Markdown nicht als Format anbietet (ich bin mir sicher, dass dies mit einer kommenden Version nachgeholt wird), ist aktuell noch etwas Bastelarbeit erforderlich.

Am einfachsten ginge es mit dem Word-Add-In Writage, das als Msi-Datei heruntergeladen und als klassisches COM-Add-In registriert wird. Die Erweiterung befindet sich offenbar immer noch in der Entwicklung. Aktuell ist sie daher kostenlos, sollte es irgendwann eine Version 1.0 geben, könnte sich das eventuell ändern. Writage verwendet den universellen Dokumentkonverter Pandoc, von dem noch die Rede sein wird. Wurde Writage installiert, sollte beim Abspeichern eines Dokuments Markdown als weiteres Format angeboten werden.

Leider hat die Installation bei mir nicht funktioniert, auch wenn sie glatt durchlief. Ein Abspeichern im Markdown-Format war nicht möglich. Das COM-Add-In wurde zwar registriert, aber offenbar kein Programm eingetragen, so dass auch nichts gestartet werden konnte.

Anstatt mich auf die Fehlersuche zu begeben habe ich ein kleines VBA-Makro erstellt, was nichts anderes macht als das aktuelle Dokument mit dem vielseitigen Dokumentkonvertierer Pandoc.exe zu konvertieren. Damit das Makro funktioniert, muss die Windows-Version von Pandoc zunächst von der folgenden Webseite heruntergeladen werden:

https://pandoc.org

Auf der Webseite gibt es zahlreiche Beispiele für den Aufruf von Pandoc in der Befehlszeile.

Das folgende Makro geht weiterhin davon aus, dass sich Pandoc.exe im Verzeichnis C:\Program Files (x86)\Pandoc befindet.

Die Idee ist, dass aus dem Dateinamen des aktuellen Word-Dokuments der Name der Md-Datei gebildet wird, die im selben Verzeichnis abgespeichert wird. War die Konvertierung erfolgreich, wird eine Meldung ausgegeben.

Wer VBA kennt, weiß, dass diese „Programmiersprache“ ihre Eigenheiten besitzt. Aber man kommt zum Ziel und darauf kommt es an. Man darf sich lediglich noicht von diversen Eigenheiten davon abbringen lassen oder gar entnervt aufgeben (auch zu VBA enthält Stackoverflow jede Menge Fragen mit teilweise sehr ausführlichen Antworten – ehrlich gesagt, sehr viel einfacher kann bei SO nichts für seine Reputation tun;)

Das folgende kleine Makro konvertiert das aktuelle Dokument per Paradoc in das Md-Format. Es wird in ein Modul eingegeben, das zur Dokumentvorlagendatei hinzugefügt wurde.