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.

Mein Besuch auf dem Microsoft Tech Summit 2018 in Frankfurt am Main

Vom 21. bis 22. Februar 2018 fand in Frankfurt am Main der Microsoft Tech Summit 2018 statt.

Alle Infos dazu gibt es hier: https://www.microsoft.com/de-de/techsummit/frankfurtAuf der Webseite stehen auch alle Vorträge zur Verfügung. Allerdings nicht bezogen auf den Summit in Frankfurt, sondern, wie könnte es heutzutage im Zeitalter durchoptimierter Firmenveranstaltungen anders sein, in einem globalen Kontext.

Der Tech Sumnmit 2018 ist oder besser war leider nicht die Neuauflage des sehr guten Technical Summits, der die letzten beiden Jahre jeweils zu Jahresende in Darmstadt stattfand. Der Tech Summit ist eine globale Veranstaltung, die in verschiedenen Städten auf der Welt durchgeführt wird. Leztes Jahr fand er unter dem Namen „Azure Summit“ statt (ich habe darüber berichtet – http://codeinsel.de/?p=130).

Wer die Veranstaltung in Frankfurt verpasst hat (oder wem es so gut gefallen hat, dass er alles noch einmal erleben möchte), könnte in diesem Monat noch in Amsterdam oder Paris teilnehmen. Oder in San Francisco. Warum nicht?

Die Teilnahme am Tech Summit ist kostenlos, das Marketingbudget der Office 365-Abteilung dürfte es möglich gemacht haben. Das wirkt sich natürlich nicht nur auf Getränke und Verpflegung aus (beides war aber gut, wenngleich kein Vergleich zum üppigen Buffet auf dem Technical Summit in Darmstadt), sondern leider auch auf die Inhalte. Diese sind etwas zu stark produktorientiert. Im Mittelpunkt standen daher Themen rund um Office 365 und „the new workplace“. Die Vorträge selber waren aber dann doch auch gutem bis hohem Niveau. Jedenfalls jene, die ich besucht hatte. Am zweiten Tag wurden zahlreiche Workshops angeboten, die sich über einen halben Tag erstreckten. Da ich am ersten Tag erst gegen späten Nachmittag eintraf, hatte ich das meiste bereits verpasst. Der Vortrag zum Thema Verbesserungen bei Windows 10 in Bezug auf Sicherheit war sehr gut.

Die Veranstaltung fand in der Halle 3 der Frankfurter Messe statt. In der großen Halle waren ca. 12 große, runde Zeltkapseln aufgestellt, in denen jeweils ca. 100 Personen Platz hatten. Der Vorteil war, dass jede Veranstaltung einen in sich geschlossenen Bereich darstellte und man in der Halle nichts von den Vorträgen mitbekam und sich an einem der zahlreichen runden Tische entspannt unterhalten oder mit Laptop und Smartphone beschäftigen konnte (es gibt bekanntlich ja immer etwas zu tun). Ein Nachteil war, dass es in den Zelten relativ laut war und wer in der Nähe eines Gebläses saß bereits sehr genau hinhören musste.

Am Abend gab es eine Art „Happy hour“ mit belegten Broten und Getränken. Gegen 20 Uhr war Schluss.

Alles in allem war der Tech Summit informativ. Es gab eine relativ breite Palette von Vorträgen zum Thema Azure Cloud, Office 365 sowie „Randthemen“ wie Windows 10 oder .NET Core. Mit knapp 3.000 Besuchern (die Zahl muss nicht stimmen), war er eher durchschnittlich besucht.

Ein Fazit ist, dass auch wenn es viele vielleicht nicht wahr haben möchten, zu Office 365 und Techniken wie OneDrive oder OneDrive for Business (die Unterschiede kann niemand besser erklären als Hans Brender) auch bei uns nahezu alternativlos sein werden bzw. bereits sind. Wer im Microsoft-Umfeld mit dem Anbieten von Dienstleistungen seinen Lebensunterhalt verdient, tut gut daran sich mit den Themen in naher Zukunft zu beschäftigen. Alleine dafür war der Tech Summit die ideale Gelegenheit.

Bye, bye LightSwitch – ein paar Alternativen (to be continued)

LightSwitch war eine gute Idee, die leider nicht gut genug umgesetzt wurde und am Ende aus mehreren Gründen scheiterte. An der Nachfrage kann es nicht gelegen haben. Im Gegenteil. Wenn ein Entwicklerwerkzeug von Microsoft kommt, besitzt es automatisch einen höheren Stellenwert als wenn der Hersteller eine unbekannte Softwarefirma ist. Es wird automatisch darüber auf allen Kanälen berichtet, Buchverlage kündigen Bücher an bevor das Produkt offiziell erhältlich ist, es gibt Schulungen, es gibt die ersten MPVs, es ist ein Thema auf Konferenzen – kurz, es gibt jede Menge kostenloser Werbung.

Eine Erfolgsgarantie geht damit aber nicht automatisch einher (wer erinnert sich noch an Quick Pascal, mit Microsoft Ende der 80er Jahre für eine kurze Zeit versuchte Turbo Pascal ein wenig Konkurrenz zu machen).

LightSwitch war bis VS 2015 noch ein offizieller Bestandteil von Visual Studio. Sogar als Teil der Community Edition. Beim aktuellen VS 2017 ist es leider nicht mehr dabei.

Kurzer Exkurs: Das Attribut „tot“ besitzt in der Softwarebranche bekanntlich eine eigene Bedeutung. Ich habe des Öfteren die Erfahrung gemacht, dass „tot“ gesagte Produkte eine eigene Dynamik entwickeln (der Brotkasten C64 ist das beste Beispiel. Erst nachdem die Produktion offiziell eingestellt wurde, ging es erst richtig los in der Zubehörszene).

LightSwitch kann also nach wie vor für die Entwicklung von Anwendung verwendet werden, man benötigt aber VS 2015. Wie es mit der kostenlosen Community Editon funktioniert beschreibt (Ex-) LightSwitch-Guru Michael Washington auf seiner Webseite:

http://lightswitchhelpwebsite.com/Blog/tabid/61/EntryId/3286/How-To-Get-Visual-Studio-LightSwitch-For-Free.aspx

Ein Heise-News-Beitrag von Alexander Neumann beschreibt zwar, dass Microsoft die Entwicklung von LightSwitch eingestellt hat, ich konnte aber bei Microsoft selber nichts finden:

https://www.heise.de/developer/meldung/Microsoft-beerdigt-Visual-Studio-LightSwitch-3354139.html

Schade, denn LightSwitch hatte Potential. Gerade für Entwickler. Ich habe sogar zwei (?) Schulungen zu LightSwitch durchgeführt und ein kleines Programmierprojekt umgesetzt. Bei diesem Projekt wurden mir aber auch die Grenzen des Tools deutlich vor Augen geführt oder es lag an mir, dass ich mir einiges vielleicht zu einfach vorgestellt hatte (auch wenn es vielleicht so aussah als müssen man sich nur durch einen Assistenten hindurchklicken, die Umsetzung von m:n-Beziehungen sollte man in einer GUI abbilden können).

Da der Bedarf nach einem RAD-Tool unter Windows immer noch groß sein dürfte, werde ich in diesem Blog-Eintrag verschiedene Alternativen vorstellen, auf die ich oft nur durch Zufall stoße, da sie von kleinen Firmen stammen, die man leicht übersehen kann. Der Blog-Eintrag wird über die kommenden Monate immer mal wieder aktualisiert.

Gleich vorweg: Den 1:1 Ersatz für LightSwitch gibt es nicht. Das ist aber auch nicht weiter tragisch, da der von LightSwitch am Anfang verfolge Ansatz ohne eine Zeile Code zu einer fertigen Anwendung zu kommen ohnehin nur für einen kleinen Teil der LightSwitch-Anwender attraktiv war.

Keine der Alternativen ist kostenlos was ebenfalls positiv ist. Kostenlose Community Editions anzubieten, in der alle Features enthalten sind, kann sich nur ein Konzern mit einem üppig gefüllten Bankkonto leisten.

Xojo


Umfangreiches RAD-Tool mit einer an Visual Basic angelehnten Programmiersprache. Das Tool startete eins unter dem Namen RealBasic und wurde im Laufe seiner Geschichte ein paar Mal umbenannt.

https://www.xojo.com/

RadZen


Interessantes Werkzeug, das auf dem JavaScript-Framework Angular basiert. Auch Michael Washington (der erwähnte LightSwitch-Experte) ist von dem Tool sehr angetan, so dass ich es mir in naher Zukunft einmal anschauen werde:

https://www.radzen.com

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.

Frohe Weihnachten

Ich wünsche allen Lesern meines Codeinsel-Blogs frohe und gesegnete Weihnachten und die Zeit und vor allem innere Ruhe, um die Feiertage für die wichtigen Dinge im Leben nutzen zu können, weit weg vom Alltag mit seinen zahlreichen Verpflichtungen und Nebensächlichkeiten.

Peter Monadjemi

Weihnachten 2017 vor dem Reichtstag in Berlin (auch ohne konstituierte Regierung ein schöner Anblick)

(Quelle: Fotalia.com/Urheber: sborisov)

Moderne VB-Programmierung – Teil 3 (String-Interpolation)

Eine praktische Neuerung ist die String-Interpolation. Sie ermöglicht es, in eine Zeichenkette einen beliebigen Ausdruck einzusetzen, dessen Wert bei der Ausgabe der Zeichenkette eingesetzt wird. Die Zeichenkette muss dazu lediglich mit einem $ eingeleitet werden, der Ausdruck wird in geschweifte Klammern gesetzt. String-Interpolation erspart den Aufruf der Format-Methode der String-Klasse und macht den Quelltext etwas besser lesbar.

Hier ein kleines Beispiel, bei dem zwei Eigenschaften eines Document-Objekts ausgegeben werden.

Mit Visual Basic und .NET Core 2.0 zu neuen Ufern aufbrechen – leider nur begrenzt

Mit .NET Core, der Open Source-Implementierung des .NET Framework, ist ab der aktuellen Version 2.0 auch Visual Basic dabei. Damit laufen VB-Programme unter allen Plattformen, auf denen .NET Core 2.0 installiert werden kann. Neben den wichtigsten Linux-Distributionen ist dies Mac OS. Auch ein Raspian Pi-Kleincomputer mit Raspian Linux als Betriebssystem gehört inzwischen dazu: https://blogs.msdn.microsoft.com/david/2017/07/20/setting_up_raspian_and_dotnet_core_2_0_on_a_raspberry_pi/.

Leider wird die theoretisch grenzenlose Freiheit für VB durch die Entwickler bei Microsoft künstlich eingeschränkt, denn es stehen nur Vorlangen für Konsolenprogramme und Klassenbibliotheken zur Verfügung. Die strategische Überlegung dahinter ist, dass damit das Auslagern von VB-Code aus einer WinForms- oder WPF-Anwendung in eine .NET-Standard-Klassenbibliothek ermöglicht wird. Die Klassenbibliotheken können dann z.B. in eine Universal Windows Platform-Appp eingebaut werden, so dass die die „Geschäftslogik“ einer VB-Anwendung ohne sie in C# neu schreiben zu müssen übernommen werden kann.

Theoretisch lassen sich auch ASP.NET-Core-Anwendungen in VB programmieren, doch ohne Vorlagen und „Tooling“ in Visual Studio 2017 wird das Ganze unnötig mühsam.

Schade, ich finde ein Open Source-Projekt wie .NET Core sollte nicht zu stark durch strategische Überlegungen eines Herstellers eingeschränkt werden (auch wenn dieser das Projekt komplett finanziert). Allerdings gibt es offenbar auch sehr wenige Aktivitäten in der VB-Community. Anders als bei F#.

Dennoch gibt es auch für VB-Entwickler einen direkten Draht zu Microsoft in Gestalt des UserVoice-Forums zu Visual Studio:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide

Hier wird u.a. bereits gefordert, VB.NET in V# umzubenennen oder den Quellcode von VB6 Open Source zu machen. Jeder kann Vorschläge einreichen und über vorhandene Vorschläge abstimmen.

Mein Besuch auf der Basta! 2017 Viele, viele Schlagworte, enorme Themenvielfalt

Vom 25.9 bis zum 29.9.2017 fand die alljährliche Basta!-Konferenz wie üblich im schönen Mainz statt. Nach ein paar Jahren „Abstinenz“ war ich wieder einmal dabei und mit einem Vortrag mit dem Thema „Moderne VB-Programmierung“ vertreten. Es ist klar, dass Visual Basic nicht mehr das ganz große Thema ist (um es nett zu umschreiben), aber da die Basta! einst als „BASIC-Tage“ begann und dieses Jahr bereits das 20-jährige Jubiläum gefeiert wurde, für die Branche eine Ewigkeit, durfte auch ein Vortrag zu Visual Basic nicht fehlen. Fand ich und der Veranstalter sah es zum Glück auch so, so dass ich am Dienstag um 14 Uhr 30 im Watford A Saal auch tatsächlich einige VB-Entwickler begrüßen konnte.

Insgesamt fiel mir auf, dass die Basta! längst keine reine .NET-Konferenz mehr ist. Es wird ein vielseitiger Themenmix angeboten, der auch reine Webthemen umfasst, die nichts mit .NET zu tunhaben. Viele Schlagworte gab es vor 5 Jahren schlicht nicht, einige sagen mir auch heute noch nichts. Von Ionic hatte ich zum ersten Mal gehört als ich den jungen Mann, der auf der Fahrt zur „VIP-Reception“ am Montagabend im Bus neben mir saß fragte, welche Themen er denn vortragen würde.

Hier ist eine „kleine“ Kostprobe aus dem reichhaltigen Repertoire an Schlagworten und Abkürzungen aus der Konferenzagenda: Microservices, TypeScript, Angular, Angular Router, Docker, Universal Windows Apps, Flexbox CSS, Ionic, Iot-Services, npm, Yarn5, Hadoop, DevOps, Hololens, Hateoas, CQRS, Xamarin, Webpack, RxJS, Alexa, Git, Seneca, Electron, Kubernetes, Cognitives Services, Jekyll, Bitcoin usw. usw.

Keine Frage, die IT-Branche ist in den letzten Jahren enorm gewachsen (und für alle diese Themen werden offenbar Spezialisten gesucht was ja grundsätzlich positiv ist). Eine Konferenz wie die Basta! bildet alle diese Themen ab. Schön, dass es noch Vorträge mit für mich auf Anhieb verständlichen Titeln wie „Neues bei C# 7.0“ gab. Stark vertreten sind nach wie vor Vorträge zum Thema Projektmagenment. Ein sehr guter Vortrag, den ich eher zufällig besucht hatte, war „Auf zum Mond! Agilität und DevOps vor fünfzig Jahren – und heute?“ von Thomas Buch, in dem dieser die Lehren, die in Bezug aus dem großen Projekten der Weltraumbehörde NASA in den 70er Jahren gezogen werden können, auf Software-Entwicklungteams übertrag.

Dienstag-Abend wurde die Rheingold-Halle zum Oktoberfest-Festzelt umkonfiguriert – es gab natürlich Bier (allerdings nicht aus Bayern, der Gerstensaft stammte vielmehr aus dem ca. 160 Km entfernten Bitburg), die obligatorischen Haxen, jede Menge Brezeln und andere Zutaten, die in jedes Festzelt passen. Der Höhepunkt des Abends war die Verlosung eines nagelneuen Strandkorbs. Auch das hat Basta!-Tradition, Teilnehmer der Anfangsjahre werden sich erinnern. Die Finalisten auf der Bühne mussten anhand von vorgespielten Modemtonfolgen erkennen, ob es sich um ein 14.4, 33.6 oder 56 K-Modem handelt. Die Älteren werden sich erinnern. Eigentlich eine schwer bis unlösbare Aufgabe, da sich für mich alle Tonfolgen gleich anhörten (dabei war ich bereits 1981 stolzer Besitzer eines 300 Baud-Modems) dennoch gab es einen Gewinner: Ein Entwickler aus Aurich und damit aus einer Gegend, in der Strandkörbe aufgrund der Nähe zu verschiedenen Nordseestränden ein vertrauter Anblick sind, war der glückliche Gewinner. Nach eigener Aussage hatte er sich schon immer ein solches Möbelstück für den Garten gewünscht – von daher hätte es nicht besser passen können.

Das Programm der Basta! 2017 in Mainz findet ihr hier: https://basta.net/programm/

Die nächste Basta! findet vom 19. bis 23.2.2018 in Frankfurt statt (übrigens zeitgleich zum Microsoft Technical Summit, der am 21. und 22.2.2018 ebenfalls in Frankfurt stattfinden wird).

Abschließend noch ein paar von mir geschossene Schnappschüsse von der Basta! 2017.

Moderne VB-Programmierung – Teil 2 (Tuples)

In diesem Teil meiner kleinen Einführungsserie zum Thema „Moderne VB-Programmierung“ geht es um die mit der Version 15.0 (VB 2017) eingeführten Tuples.

Tuples werden im neuen Microsoft-Dokumentationsportal docs.microsoft.com hier ausführlich vorgestellt:

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/tuples

Eigentlich könnte ich mir weitere Erläuterungen sparen, da der Hilfetext alles sehr schön beschreibt. Die folgende Erklärungen sind daher eher für jene Entwickler, die aus Prinzip keine Dokumentation lesen;)

Es gibt Doubles, Triples und Quadruples und es gibt Tuples, die eine beliebige Anzahl an Elementen in einer Menge zusammenfassen. In der Programmierung ist ein Tuple eine bequeme Alternative zu einer Liste, die das Zusammenfassen mehrerer Werte sehr einfach macht.

Die Ausgangssituation für das folgende Beispiel ist eine Liste mit Documents-Objekten:

Bislang alles ganz einfach und überschaubar. Jetzt wird eine Function gesucht, die ein Document-Objekt anhand seiner Id zurückgibt:

Auch das ist alles nichts Neues. Übersehen wir außerdem für einen Moment, dass es kein guter Stil ist, aus einer Function auf eine Variable zuzugreifen, die auf Modul- bzw. Klassenebene definiert ist (und natürlich, dass die Function selber komplett überflüssig ist, da es dafür LINQ gibt).

Jetzt kommt der Entwickler auf die Idee, neben dem Document-Objekt einen Boolean-Wert mitzuliefern, der True ist, wenn ein Document-Objekt gefunden wurde, ansonsten False. Früher hätte der Entwickler dazu per Structure-Befehl einen neuen Typ anlegen und diesen zurückgegeben müssen. Etwa so:

Keine Frage, nicht besonders elegant. Dank den neuen Tuples sparen wir uns die Structure:

Ein Tuple wird nicht deklariert, sondern einfach als Klammerausdruck hingeschrieben. Die einzelnen Elemente werden über die Standardnamen Item1, Item2 usw. angesprochen. Da das natürlich nicht ganz optimal ist, gibt es die Möglichkeit, jedem Tuple-Element einen Namen zu geben. Dieser wird bei einer Function beim Rückgabewert angegeben – beim zurückgegebenen Wert ändert sich nichts.

Fazit: Tuples sind eine praktische Erweiterung, die sich in vielen Situationen einsetzen lässt. Sie sind immer dann praktisch, wenn mehrere Werte zusammengefasst und als „namensloses“ Ganzes weitergegeben werden sollen.