Blog & Artikel

Artikel

Smart Contracts in Rust

Ethereum ist die erste öffentliche Kryptoplattform, die das Konzept der Smart Contracts popularisiert hat, und auch immer noch die erfolgreichste. Doch die gängige Programmiersprache Solidity leidet unter einer ganzen Reihe von systematischen Problemen, die des Öfteren zu spektakulären Sicherheitslücken führen. Eine neue Generation von Sprachen schickt sich an, diese Mankos auszugleichen. Besonders interessant ist dabei die – derzeit noch experimentelle – Möglichkeit, WebAssembly als Bytecode-Format für Smart Contracts zu benutzen. Passend dazu eignet sich Rust als Hochsprache, die WASM-Code erzeugen kann. Wir schauen uns an, wie das intern funktioniert und solche Verträge implementiert werden können.

Artikel

Die VENOM Story

Sie erfahren anhand eines (komplett anonymisierten), realen Beispiels, wie die inkrementelle Modernisierung eines historisch gewachsenen Systems funktionieren kann. Das riesige, gewucherte System VENOM von >2 Mio Lines-of-Code zu modernisieren oder komplett neu zu schreiben - vor dieser schweren Entscheidung stand die (fiktive, aber sehr realitätsnahe) Firma SAMM Inc.

Blog-Post

Tests Granularity

Artikel

MLOps: You train it, you run it!

Data Science, Machine Learning (ML) und Artificial Intelligence haben in den letzten Jahren einen wahren Hype ausgelöst und viel Aufmerksamkeit in der Industrie bekommen. Man versucht mit Machine Learning Methoden entweder die Produktivität der Nutzer oder die Interaktivität der Applikation zu steigern. Zahlreiche Data Science Teams verbringen ihre Zeit damit Machine Learning Modelle zu trainieren. Allerdings beobachten wir zwei Arten von Problemen, die in der Praxis entstehen. Entweder schafft es die Mehrheit der ML Modelle nicht in ein Softwareprodukt eingebunden zu werden oder das Model Deployment nimmt zu viel Zeit in Anspruch.

Artikel

Software Reviews

Die initiale Architektur und Infrastruktur eines Systems wird üblicherweise kompetent und sorgfältig geplant und umgesetzt, bei der iterativen Weiterentwicklung auf Clean Code und Code Reviews geachtet. Viele kleine über die Jahre getätigte Änderungen an der Software ergeben dann aber nicht immer ein in sich schlüssiges Gesamtbild. Spätestens wenn sich die Time-To-Market verschlechtert und eine Anwendung nicht mehr alle notwendigen Qualitätsanforderungen erfüllt sollte ein umfassendes Software Review in Erwägung gezogen werden.

Blog-Post

Good arguments for SPA frameworks

When to use an SPA framework and when maybe not

Artikel

Gut gesiebt

Für die komplexe Infrastruktur großer Microservice-Umgebungen versprechen Service Meshes eine einfache Lösung. Aber nur mit dem Blick für die richtigen Eigenschaften lässt sich der beste Ansatz für die eigene Architektur finden.

Artikel

Modernes funktionales Programmieren in Java

Erfahrene Java-Entwickler*innen können viele der Entwurfsmuster des „Gang of Four“-Buches aus dem Stand zitieren, identifizieren und anwenden. Trotzdem stehen diese praktisch seit der Erscheinung des Buches unter Kritik: da sie teils vage definiert sind, strotzen „moderne“ Codebasen nur so von Singletons, Factories und Buildern. Auf der anderen Seite stehen die Anhänger*innen der funktionalen Programmierung, die sich gerne über die objektorientierten Patterns lustig machen. Die Wahrheit liegt wie so oft in der Mitte: seit Version 8 lassen sich auch in Java die cleveren Gedanken aus der funktionalen Welt effektiv und komfortabel benutzen, ohne die Objektorientierung aufzugeben.

Blog-Post

Anatomy of a Good Test

Artikel

Unbekannte Besonderheiten von Java

So gut wie jede Programmiersprache, die ich kenne, besitzt Dinge, die so erstaunlich sind, dass ich oft denke „Was? Das geht?“. In dieser Kolumne wollen wir uns acht solche Besonderheiten von Java anschauen und verstehen, wieso diese funktionieren und wozu sie gut sein können.

Artikel

Developers are Irresponsible and Childish!

If you don’t babysit developers, they’ll do nonsense all day long. How should you deal with them?

Blog-Post

Why you should write automated tests

Blog-Post

Visualizing the progress of a refactoring into a hexagonal architecture using jQAssistant

In my last project, we decided to refactor the inner structure of one of our services into a Hexagonal Architecture. It was clear that this was no task that could be done within a couple of days. During this long-running refactoring, we wanted to make our progress visible. Where are we now? What did we already have achieved? What do we still have to do? In this blog post, I describe the approach we took and how it helped us with our task.

Blog-Post

Ganz sichere Verbindungen

Artikel

Images für Java-Anwendungen bauen

Das Runde muss ins Eckige

Blog-Post

Ganz sichere Verbindungen

Blog-Post

Cookie-based Spring Security Session

If you need authentication within your Spring Boot web application, the natural choice is to use Spring Security. It’s easy to use and, as long as you stick close to the defaults, it’s also quite easy to configure. But, by sticking to those defaults, you will automatically get a session that is persisted on the server-side. That’s a problem.

Blog-Post

Does “Broken” Agility Help?

Why Broken Might Be Good Enough

Blog-Post

Happy without a Service Mesh

It does not always have to be a service mesh. Even microservices are not a good idea per se. For good decisions we have to get a deep understanding of the problem first.

Artikel

Mit offenen Augen und offenem Geist

In Deutschland leben ca. 7,8 Mio. schwerbehinderte Menschen. Hierbei handelt es sich um eine enorme Zahl potenzieller künftiger Kunden. Software, die unter Missachtung ihrer Accessibility entwickelt wurde, schließt diese Menschen als Nutzer aus. Und nicht nur diese: Die barrierefreie Gestaltung von Softwareprodukten birgt häufig übersehene Vorteile sowohl für Unternehmen als auch für sämtliche Nutzer.

Artikel

Machine Learning Daten in den Griff bekommen

Mehrdimensionale Arrays für Machine Learning

Blog-Post

Sicher vernetzte Remote-Arbeit

Remote Arbeit ist in der aktuellen Situation opportun. In der digitalen Arbeitswelt bieten sich dafür eigentlich eine optimale Möglichkeiten. Ein Problem kann allerdings sein, dass essentielle Systeme, welche für die Arbeitsvorgänge notwendig sind, nicht im Kontext einer Remote-Arbeit verwenden werden können. Es haben bisher noch nicht alle Unternehmen ihre Infrastruktur nach dem Zero Trust Model aufgesetzt, so dass zentrale Systeme nur über ein - meist von der Außenwelt abgeschottetes - internes Netzwerk erreichbar sind. Existiert die Möglichkeit sich über eine VPN Verbindung einzuwählen, steht diese meist nur einer Handvoll Mitarbeitern zur Verfügung, oder ist durch die Leistungsfähigkeit eines zentralen Einwahlknotens beschränkt.

Blog-Post

Automating Dependency Updates with GitHub Actions

This describes setting up a GitHub Actions workflow from scratch to schedule automated dependency updates.

Blog-Post

Wenn Customizing zur Legacy wird

Analyse eines ERP-Systems mit Wardley Maps und strategischem Domain-driven Design

Artikel

Das Ammenmärchen der Verschlüsselung

Immer wieder liest man, wie stark die Verschlüsselung von Bitcoin und wie sicher dadurch die Nutzung der Kryptowährung sei. Aber was ist denn nun in Bitcoin tatsächlich verschlüsselt? Dieser Artikel soll etwas Licht ins Dunkel bringen.