Boehrsi.de - IT und Gaming Blog

I'm a coder - Fail Fast Fail Often vs. Bug freie User Experience

Erstellt am event 28.03.2020 - 09:00 Uhr von account_circle Boehrsi in label Boehrsi
I'm a coder - Fail Fast Fail Often vs. Bug freie User Experience Bild

Es ist schon wieder etwas her das ich eine News in diesem Bereich geschrieben habe, doch nun wird’s mal wieder Zeit. Denn aktuell grübele ich bezüglich einem Thema, bei welchem ich nicht zu einem optimalen Entschluss komme. Es geht um die Menge der zu verwendenden Guards bzw. Sicherheitsmechanismen, um eine fehlerfreie User Experience zu gewährleisten.
Generell sind wir Softwarenentwickler uns bestimmt einig, dass das User Interface und alles was der Nutzer darin zu sehen bekommt, eher robust sein sollte und entsprechend Fehler gut abfangen muss. Doch wie weit soll man gehen, wenn es darum geht die UI und Logik gegen fehlerhafte APIs zu schützen, die man selber mehr oder weniger unter Kontrolle hat. Ich rede hier von Schnittstellen die auf dem Gerät in Form von Bibliotheken vorhanden sind, nicht von externen APIs, die z.B. auf entfernten Servern liegen (letztere sollten definitiv umfangreich und effektiv abgesichert werdern). Denn auch selbstverwaltete Bibliotheken, welche vielleicht von einem Kollegen der aktuell keine Zeit hat gepflegt werden, können hin und wieder Fehler beinhalten.
Ich bin ein Fan von Fail Fast & Fail Often, denn meiner Meinung nach gehen ansonsten zu viele Fehler unter. Doch wie geht man mit mehr oder weniger bekannten Issues um, welche in darunterliegenden Ebenen vorhanden sind, die teilweise zum eigenen Code gehören.
Baut man Guards ein - vielleicht auch nur temporär - können selbige in Vergessenheit geraten und später das Debugging massiv erschweren. Lässt man die Fehler zu, kann es zu sichtbaren UI Fehlern kommen, was natürlich zu vermeiden ist. Ich persönlich sehe hier eine Zwickmühle, welche ich zwar nicht perfekt, aber für mich für den Moment passend lösen konnte.

Weiterlesen…

Software kann Gutes tun

Erstellt am event 24.03.2020 - 22:00 Uhr von account_circle Boehrsi in label Development
Software kann Gutes tun Bild

Als Software-Entwickler kann man in diesen Zeiten nicht nur etwas Hardware für einen guten Zweck zur Verfügung stellen, man kann auch versuchen anderen das Leben etwas leichter zu machen. Denn ein kleines bisschen Entwicklungsarbeit kann hier und dort Dinge für verschiedene Leute einfacher und praktikabler machen.
Ebendies habe ich versucht, indem ich einen kleinen Webservice schrieb. Selbiger erlaubt es dem Verein, in welchem meine bessere Hälfte aktiv ist, zu planen wer das Gelände wann betritt. Dies ist wichtig, um zu verhindern dass eine größere Gruppe von Personen gleichzeitig da ist. Denn wie mittlerweile jedem klar sein sollte, ist dies ein sehr relevanter Schritt, um die Verbreitung von Corona zu verlangsamen.
Der Aufwand war für mich ca. ein Wochenende, inklusive Deployment und ich habe dabei noch einiges gelernt. Denn ich nutzte zufällig das Framework, welches ich ohnehin weiter ausprobieren wollte (Javalin) und Kotlin als Programmiersprache. Somit konnte ich helfen, gleichzeig etwas lernen und am Ende macht es das Leben einiger Nutzer vielleicht ein kleines bisschen weniger kompliziert, in diesen komplizierten Zeiten.
Warum ich das schreibe fragt ihr euch vielleicht, nicht um Lob einzusammeln, sondern eher um zu motivieren. Vielleicht könnt auch ihr, durch welche Fähigkeit auch immer, den Leuten helfen. Oft sind auch Kleinigkeiten eine Hilfe und auch nicht physische Hilfe dürfte für viele relevant sein. Die digitale Welt ist Fluch und Segen zu gleich, lasst uns doch versuchen noch etwas mehr Segen zu verteilen.

Flutter Widget of the Week Youtube-Reihe

Erstellt am event 14.03.2020 - 16:30 Uhr von account_circle Boehrsi in label Development
Flutter Widget of the Week Youtube-Reihe Bild

Falls ihr gerne neues lernt und im Flutter-Universum unterwegs seid, kann ich euch eine Videoreihe der Flutter-Entwickler ans Herz legen. Die Videos sind wenige Minuten lang und erklären jeweils ein Widget. Widgets open_in_new sind Flutters View-Komponenten, welche ihr nutzt um das User Interface zu bauen.
Dabei gibt es High-Level-Widgets, welche quasi vollwertige Inhalte darstellen, z.B. gemäß dem Material Design Konzept open_in_new oder aber Low-Level-Widgets, welche genutzt werden, um darauf aufbauend eigene Strukturen zu erstellen.
Die Flutter Widget of the Week Youtube-Reihe open_in_new bietet Einblicke in beide Ebenen. Dies geschieht wie erwähnt kurz und knapp, aber sehr hilfreich erklärt. Alleine das Wissen das bestimmte Widgets existieren ist manchmal Gold wert. In der Video-Reihe gibt es alles vom Expanded open_in_new Widget, bis hin zum StreamBuilder open_in_new und auch komplexe Dinge wie ClipRRect open_in_new oder DraggableScrollableSheet open_in_new werden gezeigt.
Ich habe hier zuletzt das generische Builder open_in_new Widget kennen gelernt, welches im Prinzip nur eine weitere Ebene in Bezug auf den BuildContext etabliert. Klingt nach unnötiger Schachtelung, aber gerade im Zusammenhang mit dem Provider Package open_in_new oder InheritedWidgets open_in_new generell ist dies extrem praktisch und erspart die Erstellung unnötiger neuer Widget-Strukturen.
Mittlerweile gibt es fast 75 Videos in der Playlist, welche einen schönen Überblick über verfügbare Widgets und generelle Ansätze des Frameworks liefert. Meiner Meinung nach auf jeden Fall einen Blick wert.

Related Links

JARs bauen mit Gradle und Kotlin

Erstellt am event 28.02.2020 - 20:00 Uhr von account_circle Boehrsi in label Boehrsi
JARs bauen mit Gradle und Kotlin Bild

Ich entwickle Java und Kotlin open_in_new Anwendungen in IntelliJ Idea open_in_new und aufgrund meines Android Backgrounds habe ich eine sehr positive Haltung gegenüber Gradle open_in_new als Build-Tool.
Ein Problem über welches ich bei dieser Kombination allerdings immer wieder stolpere, ist das Bauen der finalen Anwendung als JAR Datei. Diese benötige ich logischerweise zur Nutzung der Anwendung, z.B. auf meinem Server.
Bis dato setzte ich hier auf Idea und die dortige Erzeugung der Artifacts open_in_new. Dies funktionierte leider nur unzuverlässig, teils aufwendig und war mit viel Trail and Error verbunden. Vor allem hatte ich bei jedem neuen Projekt die gleichen Probleme und auch mein neues Kotlin Projekt war von selbigen Problemen betroffen.
Ich habe mich heute aus diesem Grund nach Alternativen umgeschaut und bin mit Gradle selbst auf eine extrem gute gestoßen. Denn Gradle bietet mit dem Application Plugin open_in_new eine funktionale und einfache Möglichkeit lauffähige Anwendungen Ready-To-Deploy zu bauen.

Weiterlesen…

I'm a coder - Minimalismus für die Website Erstellung

Erstellt am event 25.02.2020 - 13:00 Uhr von account_circle Boehrsi in label Boehrsi
I'm a coder - Minimalismus für die Website Erstellung Bild

In den letzten Tagen habe ich mich mal wieder mit der Erstellung von Webseiten beschäftigt und dort vor allem mit der Gestaltung. In diesem Bereich habe ich in der letzten Zeit wenig getan, denn mein Blog ist aktuell in einem guten Zustand und ich habe mit Flutter und Kotlin verschiedene andere Projekte. Allerdings wollte ich mal ausprobieren mit wieviel HTML und CSS + gegebenenfalls ein wenig JavaScript ich eine ordentliche Grundstruktur und einige wiederverwendbare Komponenten erstellen kann.
Grund dafür ist unter anderem dieser Beitrag meinerseits, in welchem ich mich etwas darüber aufrege das in der heutigen Zeit, welche uns das Flex Layout open_in_new bietet und diverse andere schöne HTML5 + CSS3 Komponenten, alles mit teils extrem umfangreichen UI-Libraries gelöst werden muss. Dies fällt nicht nur in die Kategorie mit Kanonen auf Spatzen schießen, auch die Ladezeit und die Individualität einer Webseite kann dadurch leiden.
Ich will hier nicht gegen Bootstrap open_in_new und ähnliche Libraries wettern. Sie sind meistens extrem gut und bieten für viele Einsatzzwecke genau was man braucht, aber die kleine Firmenseite von Nebenan muss vielleicht nicht unbedingt damit gebaut werden. Hier sollte gelten, dass man nicht immer den einfachsten Weg für den Entwickler nimmt, sondern vielleicht den optimalen allgemeinen Weg. Etwas mehr Aufwand für den Entwickler, dafür mehr Kontrolle, mehr Individualität und auch mehr Flexibilität z.B. bei Kundenwünschen.

Weiterlesen…

Flutter Web Support ausprobiert

Erstellt am event 19.02.2020 - 09:00 Uhr von account_circle Boehrsi in label Development
Flutter Web Support ausprobiert Bild

Flutter ist aktuell sehr präsent bei mir, wenn es um die Entwicklung von Software geht. Aus diesem Grund habe ich mir nun auch die Flutter Web Integration angeschaut, welche aktuell auf dem Flutter Beta Channel verfügbar ist.
Nebenbei sei übrigens erwähnt, dass dies mein letztes Projekt war, welches meiner Flutter App Development Newsreihe im Wege steht. Doch nun zu meinen Erfahrungen mit dem Flutter Web Support. Generell funktionieren die meisten Dinge der bekannten App-Entwicklung auch im Web-Kontext, allerdings sollte man vor allem bei Third-Party-Libraries open_in_new darauf achten das Web-Support gegeben ist. Doch selbst dann sollte man lieber noch einmal konkret testen.

Weiterlesen…

Related Links

Flutter App Development - Was entwickeln wir?

Erstellt am event 22.01.2020 - 22:00 Uhr von account_circle Boehrsi in label Development
Flutter App Development - Was entwickeln wir? Bild

Meine Flutter Newsserie geht endlich weiter oder sollte man sagen sie startet nun wirklich? Nachdem ich vor einigen Monaten angefangen habe, schlief das ganze Projekt aus Zeitgründen leider sehr schnell ein. Nun geht es weiter, die Pläne sind geschmiedet und selbige werde ich heute mit euch teilen.
Voraussetzung für die App, die ich entwickeln und für Tutorial-Zwecke nutzen möchte, ist das sie einen Nutzen haben soll. Ich möchte nicht To-Do App 1337 entwickeln und da ich nur begrenzt Zeit zur Verfügung habe, möchte ich bei der Entwicklung Spaß haben. Anders könnte ich nicht ausreichend Motivation aufbringen.
Doch nun zum Thema, entwickelt wird ein RSS Reader, mit moderner leichtgewichtiger Persistenz, ordentlicher Architektur die zum Flutter Framework passt und einer flexiblen UI, welche sich im Rahmen des Projekts entwickeln wird. Vor allem im Bereich Animationen möchte ich das eine oder andere ausprobieren.

Weiterlesen…

Related Links

Meine Kotlin Planung - Erstes Projekt steht fest

Erstellt am event 12.01.2020 - 15:30 Uhr von account_circle Boehrsi in label Development
Meine Kotlin Planung - Erstes Projekt steht fest Bild

Auch wenn mein Plan bis Ende des Jahres 2019 in Kotlin produktiv arbeiten zu können nicht wirklich aufging, so starte ich nun langsam mit konkreten Projekten. Nebenbei lerne ich weiter die Eigenheiten der Sprache, was bei mir am besten Anhand von konkreten Projekten funktioniert.
Da ich aktuell im mobilen Bereich zum Großteil auf Flutter setzte, beziehen sich meine Java und nun Kotlin Projekte eher auf den Server / Desktop Bereich. Mein Kotlin Projekt wird eine Serveranwendung in Form eines Microservices. Nachdem ich bereits Erfahrungen mit Spark open_in_new (Java Microservice Framework) sammeln konnte, werde ich nun auf Javalin open_in_new setzen. Hierbei handelt sich um ein initial auf Spark basierendes Framework, welches aber teils stark abgewandelt und erweitert wurde. Es wird sehr aktiv weiterentwickelt und sieht nach ersten Tests sehr praktisch aus.
Zusätzlich werde ich auf die Exposed Library open_in_new der Kotlin Entwickler setzen, um Datenbankanbindungen zu realisieren. Für den Payload-Transport setze ich auf JSON, wobei ich vermutlich die Jackson Library open_in_new für die konkrete Nutzung integriere. Weitere optionale Komponenten könnten Java Webtokens (JWT) und eine Dokumentation via OpenAPI + Swagger open_in_new sein. Diese Art der Dokumentationserstellung wird von Javalin direkt unterstützt, wodurch ich einfach, schnell und mit für mich bekannten Tools eine gute Dokumentation erstellen kann.
Sofern das erste Projekt grundsätzlich funktioniert, werde ich vermutlich meine Suche und meinen Kommentardienst, welche beide hier im Blog aktiv sind, als Kotlin Version 2.0 neu schreiben. Es sind ohnehin einige Änderungen und Anpassungen geplant, sodass sich der Aufwand hier durchaus lohnen könnte.
Nachdem dies bereits für meine Java Microservices geplant war - auch wenn es leider nicht wirklich umgesetzt wurde - wird es zu meinen Kotlin Microservices wesentlich mehr Informationen hier im Blog geben. Bei Interesse werde ich auch über eine Open Source Veröffentlichung nachdenken. Bei eventuellen Fragen, Ideen oder ähnlichem, meldet euch gerne in den Kommentaren.

Related Links

I'm a coder - Review rejected

Erstellt am event 20.12.2019 - 21:00 Uhr von account_circle Boehrsi in label Boehrsi
I'm a coder - Review rejected Bild

Es wird mal wieder Zeit für eine I’m a coder News und das heutige Thema werden Reviews sein. Selbige sind extrem wichtig für die Qualität einer Software, welche mitunter maßgeblich durch die eigentliche Codequalität definiert wird. Denn vor allem über längere Zeit ist Software mit guter Codequalität besser wartbar, erweiterbar und erlaubt einen einfacheren Einstieg für neue Entwickler. Reviews sind wichtig, doch auch schwierig und zeitaufwendig. Entsprechend gehen sie manchmal unter, werden nur halbherzig gemacht oder sind zu streng bzw. zu nachsichtig. Hier einen guten Mittelweg zu finden ist schwer, aber extrem wichtig. Nachdem man die eigentlichen Änderungen verstanden und die Funktionalität überprüft hat, folgt der meiner Meinung nach schwerste Teil. Denn nun muss man die Validierung bezüglich der Einhaltung von Coding Guidelines und Naming Vorgaben durchführen.

Weiterlesen…

I'm a coder - Code-Klarheit vs. Boilerplate Minimierung

Erstellt am event 01.12.2019 - 14:00 Uhr von account_circle Boehrsi in label Boehrsi
I'm a coder - Code-Klarheit vs. Boilerplate Minimierung Bild

In der letzten Zeit Wechsel ich oft zwischen Programmiersprachen, Projekten und Frameworks hin und her. Grund dafür ist unter anderem Flutter open_in_new als neues Framework für professionelle und private Projekte, aber auch Kotlin open_in_new als moderner Ersatz für Java. Nun hat man aber auch aktive Projekte (auch wenn ich mein Projekt FileSize gerade beendet habe) und entsprechend puren Java Code oder Android Projekte mit Java Basis. Bedenkt man nun noch Libraries die z.B. Annotation Processing betreiben, also z.B. Lombok open_in_new oder ObjectBox open_in_new, so gibt es einiges zu beachten.
Daraus ergibt sich häufiges umdenken und öfters auch Fehler, denn gerade wenn man in ein laufendes, aber nicht so aktiv gepflegtes Projekt schaut, welches viele spezielle Dinge benutzt, optimiert man gerne mal Code aus Unwissenheit weg. So passierte es bei mir, dass ich Default-Konstruktoren entfernte, da sie nicht genutzt wurden, ObjectBox diese aber für den generierten Code und die Initialisierung der Objekte in selbigem brauch. Entsprechend werde ich für mich versuchen für nicht implizit klare Dinge wieder mehr auf Kommentare zu setzen. Normalerweise schreibe ich quasi keine Kommentare und sorge dafür dass der Code für sich selbst spricht, doch nutzt man mehrere komplexe Libraries die Boilerplate Code entfernen, kann häufig die Klarheit des Codes leiden.
In einem solchen Fall hat man also einen Vorteil durch weniger Code, aber auch einen Nachteil durch weniger klare Codestrukturen. Kommentare können hier hilfreich sein und ohne viele unnötige Zeilen Code diese Wissenslücke füllen. Mich würde interessieren, wie ihr derartige Dinge löst. Verzichtet ihr generell auf Tools, die zu viel Codestruktur abstrahieren bzw. verbergen oder nutzt ihr andere Ansätze, bzw. schreibt ihr lieber mehr Boilerplate Code, solange selbiger dann besser verständlich ist?

format_list_numbered  Seite 1 Nächste navigate_next