Suche und Kommentare - Kotlin all the way

Nachdem ich in der letzten Zeit eher wenig Raum für Kotlin hatte und entsprechend wenig entwickelt und auch wenig hier im Blog berichtet wurde, versuche ich selbiges nun zu ändern. Der Hauptgrund dafür ist ein geplanter Umbau von Produktiv-Komponenten meines Blogs, also der Suche und der Kommentare. Dort wird es Zeit für Optimierungen und die Suche hätte gerne ein paar Bugfixes.
Generell will ich außerdem mein aktuelles Setup mit expliziten Micro-Services etwas aufweichen. Grund dafür ist allem voran ein hoffentlich geringerer Speicherverbrauch und eine vereinfachte Verwaltung von allgemeineren Code-Teilen meiner Services. Denn während große Seiten hochskalierbare Services brauchen, reicht bei mir ein simpleres Setup. Trotzdem mag ich die Unabhängigkeit und werde definitiv nicht zurückkehren zum Monolithen des Grauens.
Neben der Entwicklung der neuen Kotlin Komponenten plane ich Blog Beiträge zum eigentlichen Code und Hintergrundinformationen zum eigentlichen Prozess mit euch zu teilen. Wie gut das Ganze funktioniert werden wir sehen, aber generell gilt natürlich wie immer, falls ihr Fragen oder Anregungen habt, meldet euch gerne in den Kommentaren.
Material Design Blog geht live

Material Design war schon öfters Thema hier im Blog und auch heute ist es mal wieder soweit. Denn auch wenn es eine Dokumentation zum Thema gibt und zusätzlich Informationen via z.B. Twitter, gab es keinen offiziellen Kanal für ausführlichere Dinge.
Hin und wieder wurde im Android Kontext berichtet, allerdings nicht über Material Design im Großen und Ganzen. Dies ändert sich nun, denn der Material Design Blog ist live gegangen. Ihr findet den Link in den Related Links.
Der Blog soll generelle Ideen, Konzepte und Material Design im Allgemeinen weiter beleuchten, sowie interessante Dinge zum Thema zusammentragen und weiterleiten. Sofern ihr also im Android, Flutter oder Web-Bereich unterwegs seid und euch Material Design als Konzept interessiert, ist dieser Ort vielleicht ein guter Punkt zum Vorbeischauen.
Nutzt Git, es lohnt sich

Sobald man in der Softwareentwicklung unterwegs ist, ist SVN oder eher Git quasi ein selbstverständliches Tool und das aus gutem Grund. Ich persönlich nutze Git mittlerweile für quasi alles was ich tue. Dabei muss nicht immer ein Remote Server vorhanden sein, auch ein lokales Git kann schon diverse Aufgaben erfüllen und bei Problemen helfen.
Denn egal ob es darum geht zu wissen wann man welche Änderung an Dokumenten oder Code vorgenommen hat oder ob man vielleicht einen alten Stand eines Dokuments braucht, Git hilft. Vielen ist es vielleicht gar nicht bewusst, aber hierfür reicht es lokal Git zu installieren. Natürlich hat man im Falle eines Festplatten-Crashs dann kein Backup und gemeinsam versioniert an Dateien arbeiten geht auch nicht, aber das ist nun einmal auch nicht immer gefragt.
Hat man nun noch einen Server zur Hand, kann man unter anderem auch noch die genannten Punkte abdecken. Doch worum es mir in diesem Beitrag eigentlich geht, ist die Einfachheit von Git, sofern man den generellen Einstieg geschafft hat. Man kann Datenverlust verhindern, Datenkonsistenz und die Nachvollziehbarkeit von Änderungen ohne viel Aufwand gewährleisten und das ohne diverse verschiedene Softwarelösungen zu installieren. Auch wenn das eine oder andere zusätzliche Git GUI Tool open_in_new sicherlich nicht schadet.
Ich kann jedem, auch Nicht-Software-Entwicklern, nur raten sich mal mit Versionskontrolle durch Git auseinanderzusetzen. Lasst euch nicht vom initialen Overhead entmutigen, das Ergebnis lohnt sich. So zumindest meine persönliche Erfahrung.
Falls ihr darüber hinaus auch einen Remote Server nutzen wollt, schaut euch doch mal GitHub open_in_new oder GitLab open_in_new an, beide Plattformen sind dabei vor allem für die Softwareentwicklung gedacht.
FlutterFire - Updates für die Firebase Plugins

Auch wenn ich immer noch nicht zu meinem Flutter - The Good, the Bad and the Ugly Beitrag gekommen bin, gibt es heute etwas aus dem Flutter + Ugly Kontext, allerdings mit sehr positiven Entwicklungen.
Eine der Sachen die mich im Flutter Bereich stört, ist der teilweise nicht qualitativ hochwertige Support für First-Party-Plugins. Speziell habe ich hier die Firebase Plugins im Auge. Auch Google war scheinbar der Meinung, dass es keine gute Idee ist diese Plugins - für eine so relevante Platform wie Flutter - nur nebenbei zu pflegen und so schloss man sich mit Invertase zusammen. Invertase ist eine Consulting-Firma mit viel Flutter und Dart Knowhow, welche nun seit einiger Zeit an neuen Versionen der meisten Firebase Plugins für Flutter arbeitet.
Ein erstes Ergebnis zeigt sich bereits, denn überarbeitete Versionen des FlutterFire Core, Cloud Firestore und Authentication Plugins stehen nun zur Verfügung. Alle überarbeiteten FlutterFire Plugins werden auf dem neuen Core basieren und somit ein einheitliches Setup und einheitliche APIs bereitstellen.
Ebenfalls Fortschritte gibt es im Bereich Crashlytics, Cloud Storage und Cloud Functions. Hier ist man entweder gerade dabei den Rewrite voranzubringen oder aber man ist bereits in der Review-Phase angekommen.
Cloud Messaging (FCM) und Realtime Database erhielten bis dato erste Updates, um mit dem neuen FlutterFire Core zu funktionieren. Der Rewrite dieser beiden Komponenten steht allerdings noch aus. Für mich ist besonders FCM relevant, um ordentliche und stabile Push-Nachrichten bereitstellen zu können.
Falls ihr mehr Informationen zum Thema erfahren wollt, folgt einfach den Related Links. Dort habe ich sowohl die Blog-Beitrag, wie auch das Repository und den Übersichts-Issue verlinkt.
MarkUp - Kollaborativ Website Updates planen

Egal ob man alleine oder gemeinsam an einer Website arbeitet, Notizen bezüglich Änderungen und Ideen sollte man irgendwo hinterlegen. Hier kann man natürlich einen extra Issue Tracker nutzen, vielleicht bietet die vorhandene Git Lösung auch dergleichen an oder aber man nutzt zusätzlich MarkUp.
Letzteres habe ich in der letzten Zeit für meinen Blog ausprobiert und werde es auch mal gemeinsam mit einem Kollegen für unsere Webprojekte testen. MarkUp erlaubt euch direkt auf einer Website oder einem Bild Notizen zu hinterlassen, Diskussionen zu führen und somit Ideen direkt visuell zu verknüpfen.
Ich habe z.B. die letzten Änderungen meines Blog insofern geplant, dass ich die verschiedenen Stellen die überarbeitet werden sollen grundsätzlich mit einer ersten Idee verknüpft habe. In weiteren Kommentaren habe ich das Ganze dann verfeinert und mit dem Release des aktuellen Updates konnte ich alles entsprechend abhaken.
MarkUp ist dabei kostenlos, solange ihr keine umfangreichen Team oder Enterprise Features braucht. Konkret bedeutet dies ihr bekommt ohne Kosten Unlimited Collaborators, Unlimited Projects, Live Support und No Commenting Limitations. Für viele dürfte dieser Funktionsumfang absolut ausreichen.
Die Plattform wird außerdem aktiv weiterentwickelt und die entsprechende Roadmap kann in den Related Links eingesehen werden. Ich werde für kommende Projekte vermutlich weiterhin MarkUp nutzen, denn vor allem für meine kleineren Projekte im privaten oder im kleinen Team ist die Lösung sehr hilfreich. Falls ihr euch die Lösung auch mal näher ansehen wollt, im unteren Teil der News findet ihr ein kleines Video, welches die Plattform näher vorstellt.
Flutter Architektur Dokumentation

Ein Cross-Platform-Setup für Anwendungen zu nutzen bedeutet immer abzuwägen, wie sinnvoll eine solche Lösung im Vergleich zur nativen Implementierungen ist. Dafür ist es natürlich gut grundlegende Abläufe und Strukturen der jeweiligen Cross-Platform-Lösung zu kennen.
Für Flutter gibt es in diesem Bereich ein sehr umfangreiches Dokument. Dort könnt ihr mehr zu den verschiedenen Architektur-Layern erfahren und so z.B. lernen wie die Einbettung der Engine und des Frameworks selbst auf den eigentlichen Hostsystemen funktioniert.
Zusätzlich gibt es Informationen zum Reactive User interface Konzept, welches Flutter verfolgt. In diesem Kontext gibt es unter anderem mehr zum Thema State Management und wie der State eines Widgets eigentlich funktioniert.
Ebenso kann man sich bezüglich den Widgets selbst und dem Rendering- und Layouting-Flow informieren. Hier gibt es z.B. Erklärungen zum Ablauf der eigentlichen UI Erstellung in Bezug auf die Grafikkarte und wie das ganze System generell funktioniert.
Ein weiterer Baustein ist die Kommunikation mit dem Hostsystem. Hier gibt es mit Platform Channels und das Foreign Function Interface (FFI) verschiedene Wege, um mit verschiedenen Komponenten eines Systems zu kommunizieren. Dieser Bereich ist vor allem wichtig, wenn ihr komplexere Apps mit speziellen Funktionen implementieren wollt, denn in diesem Bereich seid ihr häufig auf APIs o.ä. angewiesen, die nur auf dem Hostsystem direkt genutzt werden können.
Ich habe das Dokument zum Teil überflogen, bestimmte Teile genauer gelesen und einiges sehr tiefgehend angeschaut, je nach aktuellem Wissensbedürfnis. Solltet ihr im Flutter Bereich aktiv sein, kann ein grundlegender Blick in diese Dokumentation denke ich nicht schaden.
Iconfinder - Finde deine Icons
Für verschiedene Projekte die ich aktuell plane oder bereits umsetze benötige ich Icons. Meist bin ich mit den Material-Icons gut bedient, denn diese sehen gut aus und bieten eine ordentliche Auswahl. Doch was wenn ich mal andere Icons benötige?
Ich bin durch Zufall über Iconfinder gestolpert. Eine Website die Millionen von Icons anbietet, teilweise kostenlos und teilweise kostenpflichtig. Die Seite ist sehr übersichtlich gemacht, man sieht sofort was etwas kostet und vor allem welche Dinge durch die Lizenzen erlaubt sind. Dabei wir sowohl für kostenlose Inhalte (Creative Commons), wie auch für Bezahlinhalte (eigene open_in_new, aber sehr klare Lizenz) eindeutig klargestellt was möglich ist und das mit wenigen Worten.
Die Auswahl ist wie erwähnt groß, diverse Filter sind vorhanden, ebenso wie eine Suchfunktion. Grundlegende Bearbeitungsaufgaben können bereits auf der Platform erledigt werden, denn ein Online Icon Editor steht ebenfalls zur Verfügung. Sofern man Interesse an kostenpflichten Inhalten hat, kann man einzeln zuschlagen oder bei häufigem Bedarf ein Abo abschließen. Alle kostenpflichtigen Icons werden unter anderem in Vector Formaten geliefert.
Falls ihr übrigens selber Icons erstellen und vertreiben wollt, könnte auch für euch die Platform sehr interessant sein. Ich habe bis dato noch nicht zugeschlagen, prüfe aber gerade was ich konkret brauche und werden dann wohl mal shoppen gehen. In diesem Kontext übrigens noch ein Hinweis. In Zeiten des Internets erwartet fast jeder alles gratis und selbst 5 Dollar für ein gutes Icon-Pack sind plötzlich zu viel. Das ist meiner Meinung nach ein extrem falscher Gedankengang, denn an diesen Icons haben Designer gearbeitet und einiges an Zeit investiert. Sofern ihr also nicht nur ein paar Icons zum Spaß braucht, sondern damit erwartet etwas zu verdienen, scheut euch nicht den Leuten die zu eurem Erfolg beitragen den definierten Betrag zu zahlen.
Flutter Version 1.20 erschienen

Gestern erschien eine neue Flutter Version und selbige bringt einige durchaus interessante Verbesserungen mit sich. Unter der Haube befindet sich nun Dart 2.9, wodurch unter anderem massive Verbesserungen beim UTF-8 Decoding gegeben sind. Diverse weitere Verbesserungen wurden ebenfalls in dieser neuen Dart Version vorgenommen, Null-Safety ist aber leider noch nicht verfügbar.
Im Performance Bereich können Animationen beim ersten Start der App nun flüssiger dargestellt werden, indem die Skia Shader Language Warm Up Funktion open_in_new genutzt wird. Die Größe eurer Apps wurde ebenfalls verringert, indem nicht genutzte Icons automatisch aus der App entfernt werden.
Für die Desktops wurde das Handling der Maus verbessert, sodass z.B. angepasste Cursor beim Hover über einem Textfeld integriert werden konnten. Auf den mobilen Plattformen wird nun Autofill unterstützt. Beide genannten Punkte waren sehr oft gewünschte Funktion und dürften bei der Community auf Anklang stoßen.
Sichtbare Änderungen sind vor allem die neuen und aktualisierten Widgets (InteractiveViewer, MaterialSlider, RangeSlider, TimePicker und DatePicker). Zusätzlich wurde der AboutDialog überarbeitet und ist nun responsive.
Für die Entwickler gibt es darüber hinaus noch Anpassungen im Bereich der pubspec.yaml Datei, vor allem wenn ihr Plugins entwickelt. Hier ist nun das neue Definitionsformat open_in_new. Es gibt außerdem eine Preview der neuen Dart DevTools in Visual Studio Code, verbessertes Network Tracking / Debugging, aktualisierte Importpfade beim Umbenennen von Dateien (Visual Studio Code) und viele weitere Änderungen.
Alle Änderungen, eventuelle Breaking Changes, sowie weiterführende Informationen könnt ihr den Related Links entnehmen. Dort findet ihr auch den Download. Wer bereits auf 1.20 ist sollte vielleicht noch ein weiteres Mal flutter upgrade bemühen, denn mit Version 1.20.1 ist bereits ein Bugfix Update verfügbar.
Rainbow Six Siege - Community Video

Es ist lange her das ich etwas auf meinem Youtube Kanal hochgeladen habe, aber es wurde mal wieder Zeit. Denn ich zocke bekanntlich mit einigen Freunden diverse Spiele und darunter auch Rainbow Six Siege. Hier sind wir als Team schon einige Jahre dabei, wenn auch nur Just for Fun.
In diesem Rahmen habe ich ein kleines Community Video erstellt, welches nun auf Youtube verfügbar ist. Ihr findet es direkt in dieser News, im unteren Teil oder aber über die Related Links. Es ist kein extrem umfangreiches Editing vorgenommen worden, allerdings wurde schon etwas Aufwand in Timing und Schnitt gesteckt, insofern hoffe ich es gefällt.
I'm a coder - Das erste Mal Team-Lead

Über die letzten eineinhalb Jahre habe ich mein erstes professionelles Projekt geleitet und heute möchte ein kleines Fazit ziehen. Vielleicht ist für den einen oder anderen ein hilfreicher Tipp dabei oder vielleicht habt ihr Tipps, wie man in diesem Bereich noch besser werden kann. Über Kommentare freue ich mich wie gewohnt sehr.
Ich bin gerne ein Entwickler, soll heißen ich schreibe wirklich gerne Code, doch auf der anderen Seite koordiniere und plane ich tatsächlich auch recht gerne. Letztes ist glaub ich extrem wichtig wenn es darum geht ein Team und ein Projekt zu leiten. Denn sofern man keine Ambitionen in diesen Bereichen hat, sollte man lieber bei der reinen Entwicklung bleiben. Grund dafür ist die massive Verschiebung der Aufgaben und die entsprechend veränderte Zeitverteilung. Sofern einem dann der Verwaltungsteil gar nicht gefällt, wird man vermutlich schnell unzufrieden sein.
Wie erwähnt finde ich aber durchaus Gefallen daran und war froh mit dem genannten Team arbeiten zu dürfen. In Retrospektive denke ich damit steht und fällt generell alles, also ob das Team allgemein und menschlich funktioniert. Erst darauf kann man dann auf professioneller Ebene etwas aufbauen. Wir hatten das Glück das es passte und mit einer recht guten Wissensverteilung (2x Android, 2x iOS, 1x Testing) konnten wir eine Flutter App entwickeln, welche mit genügend Platform-Background versorgt wurde.

