I'm a coder - Grafiken sagen mehr als Texte

Obwohl ich aktuell eigentlich viel im Coding Bereich zu sagen hätte, komme ich zurzeit leider nicht wirklich dazu umfangreiche I’m a coder Beiträge zu erstellen. Doch heute nehme ich mir, bei entspannten 32°, einfach mal wieder etwas Zeit.
Thema ist heute die Erstellung von Grafiken und Diagrammen zur Erklärung von Konzepten oder Abläufen innerhalb von Software. Denn wer kenn es nicht, man hat Software entwickelt, verschiedene Konzepte und Ansätze angewendet und dann vergehen einige Monate und vieles gerät in Vergessenheit oder aber ein neues Teammitglied möchte eingearbeitet werden. Bei mir trifft aktuell beides zu, denn bei meinen privaten Projekten vergesse ich durch häufige Kontextwechsel gerne Dinge und auf der Arbeit versuche ich gerade neue Kollegen in mein aktuelles Projekt einzubinden.
Stack Overflow Developer Survey 2019

Stack Overflow ist der de facto Standard wenn es um Programmierfragen geht. Quasi jede Google Suche zu einem Softwareentwicklungsproblem liefert unter den ersten drei Ergebnissen mindestens einen Stack Overflow Beitrag. Entsprechend gibt es eine sehr große Community, mit welcher jährlich eine große Umfrage durchgeführt wird. Diese soll helfen Tendenzen, Entwicklungen und Trends zu erkennen.
In den Related Links habe ich das aktuelle Ergebnis des Developer Survey 2019 hinterlegt. Dieser zeigt z.B. das Python derzeit am schnellsten wächst, JavaScript am populärsten ist und passend dazu jQuery und Node.js in den Bereichen Web Frameworks und allgemeine Frameworks auf den ersten Plätzen liegen. Der Datenbanksektor wird weiterhin von SQL dominiert und nach MySQL und PostgreSQL, folgt erst auf Platz 5 mit MongoDB eine NoSQL Lösung. Linux, Windows und Docker sind die Top drei Plattformen, gefolgt von Android.
Wenn es um die Zufriedenheit geht liegt Rust auf dem ersten Platz bei den Sprachen, React.js bei den Web Frameworks und .NET Core bei den allgemeinen Frameworks. Hier belegt übrigens Flutter den dritten Platz, ohne allzu großen Abstand vom ersten Platz. Bei den Datenbank liegt Redis vorn, bei den Plattformen Linux und bei den Entwicklungstools Visual Studio Code. Vor allem letzteres kann ich sehr gut verstehen, denn abseits von Android und Java bin auch ich sehr gerne mit VS Code unterwegs. Falls euch die komplette Auswertung interessiert schaut doch einfach in die Related Links, ich fand es auf jeden Fall spannend sich das Ganze mal etwas genauer anzusehen.
Flutter - Android Platform Tools Version 29 Probleme

Solltet ihr Flutter Apps für Android entwickeln und selbiges unter Windows tun, wäre es aktuell eine gute Idee nicht auf die Android Platform Tools Version 29 zu aktualisieren. Hier gibt es zurzeit Build Probleme (Error retrieving device properties for ro.product.cpu.abi), welche das Ausliefern der App aufs Smartphone oder den Emulator verhindern. Solltet ihr bereits vom Problem betroffen sein, hilft ein Downgrade auf die Version 28.0.2 open_in_new oder aber ein Wechsel vom Flutter Stable, auf den Flutter Master Branch. Für letzteres navigiert via Konsole in den Flutter Ordner, nicht in euren Projekt Ordner und führt git pull aus. Durch den Befehle flutter channel master wechselt ihr dann auf den Master Branch und mittels flutter doctor könnt ihr prüfen ob alles funktioniert hat. Dadurch dass das Problem auf dem Master Branch bereits behoben ist, hoffe ich das bald ein Fix für die Stable Version erscheint.
Flutter Google I/O Talks

Sollte euch Flutter interessieren, dürften einige Talks der letzten Google I/O durchaus interessant für euch sein. Denn das Cross-Platform Framework für die Entwicklung von Apps wurde im Rahmen von Googles jährlicher Konferenz mit neuen Informationen versorgt. Fünf Videos mit direktem Flutter Content gibt es.
Falls ihr euch für neue Widgets und Funktionen interessiert, schaut euch mal Material Design, Adaptable UIs, and Flutter open_in_new an, denn genau dies ist dort das Thema. Solltet ihr nicht nur für Android entwickeln, was bei Flutter ja durchaus wahrscheinlich ist, dürfte Building for iOS with Flutter open_in_new und Building Flutter Apps for iOS, Android, Chrome OS, and Web open_in_new vermutlich etwas für euch sein.
Solltet ihr euch für tiefergehende Informationen interessieren sind Dart: Productive, Fast, Multi-Platform - Pick 3 open_in_new und Pragmatic State Management in Flutter open_in_new unter Umständen von Relevanz für euch. Ich selbst habe bis dato die beiden zuerst genannten Talks gesehen und finde sie durchaus gut. Allem voran um auf dem Laufenden und im Bereich der Best-Practices am Ball zu bleiben, finde ich derartige Talks sehr hilfreich. Zusätzlich ist ein schneller Überblick bezüglich Änderungen und Anpassungen natürlich auch immer praktisch.
Flutter Fehler - Dart VM: Wrong full snapshot version

Während ich mal wieder an einem meiner Flutter Projekte weiter arbeiten wollte, stolperte ich nach einem flutter upgrade über app Error while initializing the Dart VM: Wrong full snapshot version. Der Fehler trat interessanterweise nicht beim Installieren auf, sondern erst beim initialen Starten der App. Selbige stürzte dann mit dem genannten Fehler ab.
Beheben konnte ich ihn durch das Entfernen des ~/flutter/bin/cache Ordners. Es scheint nämlich so als hätte sich das Flutter Upgrade-Tool verschluckt, was zu diesem Fehler führt. Andere Nutzer mit ähnlichen Problemen berichten davon das git clean –xffd, direkt im Flutter Ordner ausgeführt, das Problem löst. Dabei ist anzumerken das der Root Flutter Ordner selbst ein Git Repository ist. Weitere Informationen findet ihr im dazugehörigen GitHub Issue, welchen ich in den Related Links hinterlegt habe.
Lohnen sich neue Programmiersprachen?

Durch meine Besuche in der Flutter Welt bin ich in der letzten Zeit offener für neue Sprachen, neue Ansätze und Versuche selbige bei meinen aktuellen Projekten einzusetzen. Entsprechend baue ich gerade ein kleines privates Projekt in Flutter und sammle dabei Ideen für eine Tutorial / How To Reihe zu Flutter und der Entwicklung mit Googles Cross-Platform Framework.
Doch nicht nur Dart, was die Basis von Flutter ist, ist aktuell ein Thema für mich. Auch Go ist ein sehr wichtiges Thema für mich, denn ich schreibe gerne Microservices. Entweder für meinen Blog oder für andere Projekte die ich noch plane oder bereits umsetze. Und für diese Art von Projekten ist Go extrem praktisch. Ideen habe ich viele, Zeit leider eher wenig.
Doch durch einige lange Wochenenden hatte ich in den letzten Wochen etwas Zeit, mir vor allem Go mal etwas näher anzusehen und war sehr angetan. Denn vieles von dem was ich plane kann Go, teilweise von Haus aus und ohne zusätzliche externe Abhängigkeiten. Ein Umstand der kein Muss ist, aber durchaus praktisch sein kann. Alles in allem freue ich mich auf jeden Fall die Zeit investiert zu haben, denn insgesamt bin ich glaube ich auf längere Sicht schneller und kann bessere Software schreiben, als ich mit Java umsetzen könnte.
Boehrsi.de Version 8.2 - Dark-Mode und Design Update

Dem häufigeren Besucher ist es vielleicht schon aufgefallen, es gab ein kleines Design Update. Dieses bringt die Version meiner Website auf 8.2 und ist seit gestern Abend aktiv. Geänderte Hauptfarben, ein angepasster Header und Footer, sowie Anpassungen an den einzelnen Cards, welche den Content der Seite beinhalten, stellen die Basis für die Änderungen da. Ergänzt wird das Ganze durch leichte Abrundungen bei allen Bildern, diverse kleine Fehlerbehebungen und Optimierungen der Lesbarkeit.
Ein wirklich neues Feature ist der Dark-Mode (nutzbar durch das Sonne- / Mond-Symbol in der Navigation), welchen ich persönlich sehr mag und z.B. bei diversen Tools und auch Webseiten nutze. Unter anderem Twitter nutze ich nur im Dark-Mode. Das Ganze ist relativ simple implementiert und durch meinen Wechsel von CSS zu SCSS war der Aufwand sogar noch etwas geringer. Gespeichert wird euer Setting im Local Storage open_in_new eures Browsers, wodurch es an selbigen gebunden ist. Es wird nicht weiter an meinen Server weitergeleitet. Lediglich etwas JavaScript wird beim Laden der Seite bei euch lokal ausgeführt und prüft ob ihr den Dark-Mode aktiviert habt. Falls ja ändert es entsprechend eine CSS Klasse und ansonsten passiert einfach nichts. Inspiriert wurde ich zum genannten Vorgehen durch diesen Blogbeitrag auf flaviocopes.com open_in_new (englisch).
Ich hoffe die Änderungen kommen gut an und vielleicht findet der eine oder andere sogar gefallen am Dark-Mode. Über Feedback freue ich mich wie immer sehr. Selbiges darf gerne direkt in die Kommentare geworfen werden.
Android Development - Was gibt es Neues

Auch wenn ich viel über Flutter und die App-Entwicklung mit Dart schreibe, so ist Android und Java natürlich weiterhin ein wichtiges Thema für mich. Aus diesem Grund wollte ich mal kurz anreißen was es in Sachen Android-Entwicklung in den letzten Wochen so neues gab. Allem voran ist in diesem Bereich natürlich die Beta von Android Q open_in_new zu erwähnen, welche für Pixel Geräte verfügbar ist. Hier könnt ihr einen ersten Eindruck der neuen Android Version gewinnen und schon einmal testen ob eure Apps mit den neuen Dingen der nächsten Android Iteration klarkommen. Wichtige Themen sind hier bessere Kontrollmöglichkeiten für die Abfragen von Locations durch Apps, generell mehr Privatsphäre-Optionen, einfacheres Sharing und ein neues Overlay für Systemeinstellungen, welches direkt aus eurer App heraus gestartet wird. Zusätzlich könnt ihr nun mehr Interaktionen mit der Connectivity-API durchführen, die Kamera liefert tiefen Informationen, eine Native MIDI API wird zur Verfügung gestellt und der experimentelle Graphics Abstraction Layer ANGLE wird aktiviert. Die Neural Networks API 1.2 und eine bessere ART Performance dürften auch für viele spannend sein. Ein weiteres wichtiges Thema ist meiner Meinung nach AndroidX open_in_new. Der Nachfolger der Support Libraries vereint diverse extrem hilfreiche Abhängigkeiten, die man aus besagten Support Libraries kannte, bringt aber auch einiges an neuen Dingen. Es wird immer mehr zur rundum Lösung für diverse alltägliche Aufgaben im Android Ökosystem. Meiner Meinung nach etwas was durchaus wünschenswert ist, denn auch wenn man für alles Libraries findet, so sind gewisse Standards und vor allem die Abwärtskompatibilität für die Kernkomponenten durchaus wünschenswert.
Flutter Developers Youtube Channel

Durch meine Arbeit grabe ich mich aktuell immer tiefer ins Flutter Universum ein und ich muss sagen es gefällt mir bis dato sehr gut. Ich überlege eine umfangreichere Newsreihe zu erstellen, in welcher ich Erfahrungen, Beispiele, Lesson Learned und weitere Dinge mit euch teilen möchte. Dafür muss ich allerdings erst einmal grundlegend in meinem Hirn kramen, diverse Sachen notieren und schauen ob in Sachen Qualität und Quantität ausreichend viel vorhanden wäre.
Bis ich aber selbst mit Content starte, kann ich euch den offiziellen Youtube Kanal für Flutter-Entwickler empfehlen. Hier gibt es neues zu Releases, Tutorials und generelle Informationen rund um das Framework für Cross-Plattform Entwicklung. Der Channel selbst ist noch recht neu, doch es gibt durch Verlinkungen, z.B. auf den Google Developer Youtube Channel, bereits einigen Content. Zusätzlich gibt es häufig neue Videos auf dem Channel selbst. Wollt ihr also auf dem Laufenden bleiben schaut doch mal vorbei, ihr findet ihn in den Related Links.
VSCode Shortcuts + Keymaps + Cheat Sheet

Egal wie gut ein neuer Editor oder eine neue IDE ist, neue Shortcuts sind immer problematisch. Denn eben diese machen die meisten Programmierwerkzeuge erst wirklich performant in der täglichen Nutzung. Doch meistens unterscheiden sie sich in den verschiedenen Tools und können so für die eine oder andere Verwirrung sorgen.
Ich habe bekanntlich vor kurzem angefangen VSCode zu nutzen und interessiere mich entsprechend für die dort genutzten Shortcuts. Selbige unterscheiden sich wie erwartet teils stark von IntelliJ Idea, bzw. Android Studio. Aus diesem Grund freue ich mich sehr das es einen übersichtlichen Cheat Sheet gibt, welchen ich für ebenfalls interessierte in den Related Links hinterlegt habe. Es ist darüber hinaus natürlich auch möglich Shortcuts in den Einstellungen zu ändern, dies ist mir persönlich aber meist zu aufwendig.
Was allerdings sehr spannend ist, ist die Möglichkeit komplette Keymaps aus dem Marketplace einzubinden. Dies geht direkt in VSCode oder aber über die Marketplace Website (siehe Related Links). Ein extrem praktisches Feature, da man sich den Editor entsprechend der eigenen Gewohnheiten anpassen kann.

