Writing, Articles, Podcasts

Three weeks in Sri Lanka (Part 4)

We spent our 2025 holidays in Sri Lanka, going for a hike, culture, and beaches. In this fourth and final part, we are travelling along the coast from Mirissa to Colombo.

Published on .

Digitisation is process optimisation

Digitisation works best when it is built on top of boring, proven technology. And when you don’t skip the actual work.

Published on .

Three weeks in Sri Lanka (Part 3)

We spent our 2025 holidays in Sri Lanka, going for a hike, culture, and beaches. In this third part, we are checking out Batticaloa and Sigiriya.

Published on .

Three weeks in Sri Lanka (Part 2)

We spent our 2025 holidays in Sri Lanka, going for a hike, culture, and beaches. In this second part, we will continue with the Pekoe Trail until Hatton, and go to Ella after.

Published on .

Three weeks in Sri Lanka (Part 1)

We spent our 2025 holidays in Sri Lanka, going for a hike, culture, and beaches. In this first part, follow along for our adventures on the Pekoe Trail, starting from Kandy.

Published on .

BibLaTeX incompatibility on arXiv

When submitting a manuscript to arXiv, the preferred way is to upload the LaTeX source files. arXiv’s infrastructure will then build everything from source. For me, this process has been going smoothly, since typically, LaTeX packages are compatible across versions. However, while updating a draft, I stumbled–for the second time–over...
Published on .

What's the yield on my stonks

I invest a chunk of my earnings into a portfolio, largely comprising ETFs. I don’t reshuffle the portfolio often and I mostly hold on to them. At some point I wondered what the actual yearly interest of the portfolio is? Let’s figure it out.

Published on .

Der digitale Euro: Elektronisch, aber offline-fähig

Die beabsichtigte Offline-Funktion eines digitalen Euro ist die vielleicht aufwändigste, aber für viele Beobachter auch eine der wichtigsten Funktionen einer CBDC. Aber was genau lässt sich darunter vorstellen, wie sehr „offline“ kann digitales Zahlen überhaupt sein und welche Rolle spielen hier die „Secure Elements“, also konkrete Hardware?

Veröffentlicht in eFin & Demokratie am .

Korrektheit durch formale Methoden

In der neuesten Episode des Software Testing Podcasts feiern wir die World Quality Week. Ich spreche mit mit Lars und Bianca darüber, wie man Fehlerfreiheit in Software mathematisch beweisen kann und welche Tools dabei helfen. Bianca erklärt uns anhand von Beispielen aus der Finanz- und Automobilbranche, warum bestimmte Systeme absolute Fehlerfreiheit benötigen. Lars ergänzt das Gespräch mit Einblicken in formale Methoden und wie sie in der Praxis angewendet werden. Ein besonders interessantes Thema war, wie KI uns bei der Beweisführung unterstützen kann.

Veröffentlicht in Software Testing Podcast am .

Living with eosinophilic esophagitis

About two years ago (late 2022) I was diagnosed with a rare allergic condition that affects the esophagus. As far as I can see, there are not a lot of experience reports written by patients, so I’m contributing mine here. The allergy is not deadly, but has some annoying symptoms. (You should not read this post if you do not like hearing about endoscopies and/or medical emergencies.)

Published on .

Making research papers more accessible

Research papers, at least of the computer science variety, are famously written in LaTeX and published as PDF. This used to make a lot of sense in the times of print volumes, but not so much any more. Reading PDFs on mobile screens is cumbersome, especially when using a two-column...
Published on .

Meeting the need for offline digital payments

Around a third of the world lack reliable internet access and among the two thirds that have access, disruptions and restrictions are far from unknown. Ensuring that digital payments solutions are reliable and have the broadest reach possible requires that they can function offline. Though the need is well understood, the challenges of meeting it remain. Lars Hupel, G+D’s chief evangelist, joins OMFIF’s Digital Monetary Institute editor Lewis McLellan to discuss how offline capabilities enhance the effectiveness and convenience of online payment methods and share G+D’s experience in this field.

Published in OMFIF Podcast on .

Spreading the word: meet the chief evangelist

How can you prepare yourself for being the voice of a global company in a cutting-edge field? Find something you can believe in, break it down to its core message, and network like you mean it, says Dr. Lars Hupel, Munich-based chief evangelist at G+D.

Published in G+D Spotlight on .

How I offset carbon emissions

I have been on a lot of flights in my life, and I continue to fly. This page is to make transparent my efforts to offset the carbon emissions caused by those flights. I am aware that reducing carbon emissions is vastly better than offsetting them, which is why I...
Published on .

How I became a gardener

About one and a half years ago, we moved to a place with a decently-sized garden. Initially confused about whether to do anything with it, let alone what to do with it, I somehow ended up slowly becoming a gardener. Despite my total and utter cluelessness, now we have raised beds.

Published on .

Why accounts do not solve double-spending

Admittedly, this is a catchy title. In my previous article, I explained how secure CBDC wallets work, in particular, hardware wallets. One of their chief purposes is to prevent double-spending in offline situations. Now, I would like to focus on the technical details: what is double-spending, how it can be exploited, and how it can be prevented.

Published in The Paypers on .

Secure wallets for CBDC: how do they work?

Everybody knows that to keep CBDC, you need a wallet. Those wallets can come in different shapes, be they physical devices, such as smartphones or smartcards, or virtual, i.e., managed by a financial institution. Wallets are used to perform transactions between users and at the point of sale. For a tool so crucial, little thought is spent on how they can be secured. Many CBDC security requirements are focusing purely on the backend system, such as the ledger. Of course, the ledger is important too. But the user will interact with the ecosystem primarily through wallets. Let us take a look and understand how to build secure wallets.

Published in The Paypers on .

A road trip through Scandinavia (Part 2)

My summer holidays in 2023 took me through Sweden, Denmark and Norway. This is the second part of my trip report. In the first part, I have covered the preparations, me getting from Berlin to Oslo via Malmö and Copenhagen, and the first two days of my road trip through...
Published on .

A road trip through Scandinavia (Part 1)

My summer holidays in 2023 took me through Sweden, Denmark and Norway. After a late-July conference in Berlin, I embarked on a trip where I would use rail, boat, cycle, car, and plane transport (in that order). Exciting, no? To make it even more exciting: I only booked hotels one...
Published on .

WebAssembly: faster code for the web

JavaScript is the established lingua franca for dynamic websites. But a new competitor has been on the rise for a few years now: WebAssembly complements the repertoire of browser features and is particularly suitable for computationally intensive tasks. This article explains how the technology works.

Published on .

Was ist gute #SoftwareArchitektur

Bis Weihnachten beantwortet täglich eine Person die Frage „Was ist eine gute Software Architektur“? Folge 13: Lars Hupel

Veröffentlicht in Softwarearchitektur im Stream am .

Innovation in Corporate Banking

Mit welchen Herausforderungen sieht sich das Corporate Banking konfrontiert? Was sind die neusten Trends und wie tragen Innovationen dazu bei, die Business-Ziele zu erreichen? Welche Anwendungsfälle für künstliche Intelligenz lassen sich bereits heute im Corporate Banking umsetzen und was bedeutet die Entwicklung von „Digital Money“ für das Corporate-Geschäft? Diese und andere Fragen hat unser Panel in diesem Late Afternoon Talk diskutiert.

Published in Zühlke Late Afternoon Banking Talk on .

Demystifying Central Bank Digital Currency: The Technical Breakdown

The emergence and development of cryptocurrencies and Blockchain technology has increased interest in cashless societies and digital currency. As a result, governments and central banks throughout the world are considering the use of government-backed digital currencies. John Davies and Lars Hupel explore the distinctiveness of CBDC compared to cryptocurrencies. They emphasize the technical underpinnings, architecture, and practical applications of CBDC, focusing on its potential to facilitate offline payments, enhance security, and ensure efficient, instantly settled transactions. The conversation underscores the flexibility of CBDC and its coexistence with existing payment methods, making it a compelling topic for tech-savvy individuals. This discussion offers technical audiences valuable insights into CBDC’s technical foundations and its transformative potential in the digital payment landscape.

Published in Gotopia on .

Wenn Software-Testing nicht ausreicht

Das Schreiben von Tests ist heutzutage gängige Praxis. Wie würde man sonst sicherstellen, dass der Code das tut, was man erwartet? Manche Software ist jedoch geschäftskritisch und das bloße Testen einiger Beispiele reicht nicht aus. (Dieser Artikel wurde ursprünglich im t3n-Magazin, Ausgabe 71, veröffentlicht.)

Veröffentlicht am .

The CBDC Broadcast Session #16: CBDC Offline Capabilities

CBDC’s Offline capabilities is a crucial topic that holds significant implications for the future of digital payments and financial systems worldwide. As digital transformation rapidly reshapes the way we conduct transactions, it is imperative that we ensure inclusivity, accessibility, and privacy for every individual and business. CBDCs have emerged as a powerful tool in this transformative landscape, revolutionizing the way we think about money. However, we must address a critical question: How can we ensure that CBDC systems work for everyone in society, regardless of their location or connectivity? The answer lies in exploring and understanding the offline capabilities of CBDCs. The ability to conduct transactions offline not only provides a layer of resilience but also supports crucial objectives, such as financial inclusion, accessibility, and privacy. To discuss the intricacies of CBDC offline capabilities, guests Beju Shah (BIS Innovation Hub) and Dr Lars Hupel (Giesecke+Devrient) joined FNA to explore the technologies, security threats and risks associated with offline payments and delve into the CBDC design criteria that enable privacy, inclusion and resilience.

Published in The CBDC Broadcast on .

Ressourcen über Property-based Testing

Hat man das Prinzip des Property-based Testing (oder „eigenschaftsbasiertem Testing“) einmal verstanden, steht man oft vor einer neuen Herausforderung: Es ist gar nicht so einfach, von spezifischen Testfällen auf Eigenschaften umzudenken und die bisherigen Tests zu verallgemeinern. In diesem Post sammle ich als Begleitmaterial zu meinem Vortrag verschiedene Ressourcen, die...
Veröffentlicht am .

When testing just doesn't cut it

Writing tests is common practice these days. How else would you ensure that the code does what you expect? However, some software is business-critical and simply testing a few examples is not enough.

Published on .

Property-based Testing with “fast-check”

It isn’t exactly news that developers have to write not only code but also tests. Nevertheless, many find this to be burdensome and monotonous work. Plus, it is far from guaranteed that unit tests actually cover all the border and non-border cases. A modern approach is property-based testing, which consists of specifying an abstract condition that is then automatically checked by the test framework.

Published in INNOQ on .

New polyglot programming on the JVM

Many people in the Java environment have heard of it: the legendary GraalVM. This “magical” new virtual machine for Java is supposed to ensure sheer performance by compiling Java bytecode into native code. It eliminates the start-up overhead in particular, since large parts of the initialization are already handled by the compiler. This and similar statements can be read in many places. But this is by far not the only feature Oracle has given GraalVM. It also has the potential to usher in a new era of polyglot programming on the JVM. We are talking about the Truffle API, a generic framework for implementing interpreters. (This article has been originally published in devmio Volume 2, based on a German version published in late 2019.)

Published on .

Blueprints: How objects work in JavaScript

Blueprints

JavaScript’s approach to object orientation is different from other languages. This hasn’t been changed by the introduction of classes, even if it looks that way at first glance. Read on to learn how this unusual system works.

Published in INNOQ on . Image credits: xresch/Pixabay.

What does a Chief Evangelist do?

3 questions to Dr. Lars Hupel, Chief Evangelist (CBDC) at G+D

My new job title is “Chief CBDC Evangelist”, but what does that mean? To explain, my employer has published a brief interview with me.

Published on . Image credits: Giesecke+Devrient.

Importance of offline payments for CBDCs and financial inclusion

One feature that is often required of a CBDC for financial inclusion is the ability to make payments offline. This ensures that payments can be made even if there is no connection to the Internet, e.g. in remote locations. The panel considered some potential solutions for offline transactions for CBDC and discuss considerations for technical standards that may be needed.

Published in DC³ Conference on .

Eigenschaftsbasiertes Testen mit „fast-check“

Dass man als Entwickler:in nicht nur Code, sondern auch Tests zu schreiben hat, ist ein alter Hut. Trotzdem ist es für viele eine lästige und monotone Arbeit. Außerdem ist es noch lange nicht garantiert, dass Unittests auch wirklich alle Grenz- und Nicht-Grenz-Fälle abdecken. Ein moderner Ansatz ist eigenschaftsbasiertes Testen, bei dem eine abstrakte Bedingung spezifiziert und dann vom Testframework automatisch überprüft wird.

Veröffentlicht in JavaSPEKTRUM 1/2023 am .

Transaction validation and privacy implications

Headshot of me with the quote: “In order to be widely accepted, a CBDC must protect the privacy of users while still fulfilling government compliance requirements. G+D Filia is designed to be a secure and trusted CBDC.”

CBDC in the world opened a huge discussion about the role of the different stakeholders intervening in the validation of transactions of a digital currency when a payment is operated. According to different design choices, different validation mechanisms can be used. How a transaction can be validated and by which actor if a distributed architecture is chosen instead of a centralized one? What is the difference between a bearer-based and an account-based solution is implemented? Moreover, in case the amount of digital currency in circulation is limited via a threshold or a tier approach, how those requirements can be technically enforced while respecting privacy of the different parties involved in the transaction? And what about in case of offline systems that involves secure hardware solutions? How to avoid the possibility to “create money” and/or fake transactions? In particular, the panel will analyze in depth the privacy implications and the maturity of the privacy enhancing technologies that can support these processing operations.

Published in IPEN Webinar on central bank digital currency on . Image credits: G+D.

Parsen statt validieren? Der Leserbrief

Bei der Absicherung von Web-Anwendungen sind Input Validation und Output-Encoding Pflicht. Aber geht das noch besser? Lars meint ja und hat kurzerhand einen Leserbrief geschrieben. Seine These: Parsing ist das bessere Validieren. Wie das funktioniert, was Parsing anders macht und ob sich die Methoden am Ende sogar ergänzen, darum geht’s in dieser Folge des Security-Podcasts.

Veröffentlicht in INNOQ-Security-Podcast am .

Blaupausen: Wie Objekte in JavaScript funktionieren

Blueprints

JavaScripts Art der Objektorientierung ist anders als die anderer Sprachen. Daran hat auch die Einführung von Klassen nichts geändert, obwohl es auf den ersten Blick so aussehen mag. So funktioniert das ungewöhnliche System.

Veröffentlicht in c't am . Bildnachweis: xresch/Pixabay.

Dokumentation technisch umsetzen. Das Tooling macht‘s aus

„Selbst eine Word-Doku ist besser als gar keine Doku“ – Dokumentation von Software ist oft ein leidiges Thema mit noch leidigeren Werkzeugen. Lucas und Lars schauen sich in dieser Folge mal die vorhandenen Tools und Formate zur technischen Umsetzung einer guten Softwaredokumentation an. Damit am Ende niemand mehr sagen kann: „es gibt keine Doku, weil die Tools nerven“.

Veröffentlicht in INNOQ-Podcast am .

Dependently-Typed TypeScript

TypeScript is a programming language with some special features: Unlike most other typed programming languages, it was developed as an add-on for JavaScript (JS). In the process, Microsoft has placed great value on ensuring that the language integrates as seamlessly as possible into the existing ecosystems (Node.js and browser). TypeScript’s syntax “merely” adds types to JavaScript, while the compilation “merely” removes the type annotations. This has made TypeScript the de-facto standard for building type-safe JS-based applications.

Published in INNOQ on .

Rich code documentation with Jekyll

Static site generation is a perfect fit for publishing documentation. In a recent project, we chose to use a combination of Jekyll and NGINX to build and host the documentation. In this post, I show how to process and include other types of assets.

Published in INNOQ on .

Customer-specific documentation with Jekyll

Static site generation is a perfect fit for publishing documentation. In a recent project, we chose to use Jekyll for rendering our content. As a special requirement, we had to build different “flavours” for different customers.

Published in INNOQ on .

Marktanalyse: Supermarkt-Apps und -APIs seziert

A wide variety of vegetables in a grocery store

Viele Webdienste bieten interessante Datenquellen, halten damit aber hinterm Berg. Wer weiß, wie’s geht, kann jedoch auch undokumentierte Quellen finden und mit Python anzapfen. Im zweiten Teil unserer Inspektion der eigenen Einkaufsdaten erforschen wir die APIs des Supermarktes anhand von Browser- und App-Analysen.

Veröffentlicht in c't am . Bildnachweis: nrd/Unsplash.

Adresshandel möglicherweise rechtswidrig

Übereinstimmenden Medienberichten zufolge sind die überwiegende Mehrheit der Landesdatenschutzbehörden der Auffassung, dass „die DSGVO eine Weitergabe mit Adressen für Marketingzwecke ohne Zustimmung der Betroffenen nicht mehr zulässt“.

Veröffentlicht am .

TypeScript – Taming the Complexity of JavaScript

TypeScript celebrates its tenth anniversary in 2022. A good reason to look back at its beginnings – and to provide beginners with everything they need to know for working with this programming language.

Published in INNOQ on .

Gemischtdatenladen: Mit Python und Pandas die eigenen Einkaufsdaten analysieren

A wide variety of vegetables in a grocery store

Genau wie das persönliche Surfverhalten sind die Einkaufsgewohnheiten eines Menschen sehr aufschlussreich – wenn man es schafft, die unhandlichen Daten zu analysieren. Wer so einen Datenschatz im Selbstversuch auswertet, bekommt Einblicke ins eigene Einkaufsverhalten, Erfahrung in der Analyse von Daten und obendrein ein unterhaltsames Programmierprojekt.

Veröffentlicht in c't am . Bildnachweis: nrd/Unsplash.

Switching Protocols. Schnell, schnell!

In Folge 92 haben Robert und Lucas die Grundlagen des Webs erklärt. Ein wichtiges Thema dabei: HTTP, das Protokoll, mit dem Ressourcen vom Server zum Client kommen. Schnell wie SPDY Gonzales schieben wir nun eine weitere Folge nach, in der Lars von Lucas erfährt, wie man ein Quantum Performance aus diesem Protokoll herausholen kann.

Veröffentlicht in INNOQ-Podcast am .

CRDT. Konfliktfrei + Kollaborativ

Ihr kennt es bestimmt: die gemeinsam verwaltete digitale Einkaufsliste. Oder: Tools wie Etherpad und Google Docs, die uns das gleichzeitige Bearbeiten des selben Texts ermöglichen. Doch was steckt technisch dahinter? Wir erklären, was theoretisch dahintersteckt. Und wie Ihr es praktisch nutzen könnt!

Veröffentlicht in INNOQ-Podcast am .

What Does a Bundler Actually Do?

Frontend development without JavaScript is rarely possible. Seasoned backend developers are then confronted with a completely new toolchain overflowing with unknown technical terms. But there is method behind the complexity.

Published in INNOQ on .

Ein kurzer Bericht über die elektronische Patientenakte

Da ich dieses Jahr bei zahlreichen Fachärzt:innen wegen ein und derselben Krankheit behandelt worden bin, kam mir früh der Wunsch, sämtliche Behandlungsakten zusammenzutragen. Zunächst habe ich meine eigene „private Akte“ angelegt und dort Befunde gesammelt. Teilweise musste ich diese noch bei verschiedenen Praxen anfragen (z.B. der Bereitschaftspraxis, bei der ich...
Veröffentlicht am .

TypeScript – Die Komplexität von JavaScript bändigen

2022 feiert TypeScript zehnjähriges Jubiläum. Anlass genug, auf die Anfänge zurückzublicken – und Einsteigern alles an die Hand zu geben, was sie für die Arbeit mit der Programmiersprache brauchen.

Veröffentlicht in t3n 66 am .

Was macht eigentlich ein Bundler?

In der Frontend-Entwicklung kommt man selten ohne JavaScript aus. Gestandene Backend-Profis sehen sich dann mit einer komplett neuen Toolchain konfrontiert, die vor unbekannten Fachbegriffen nur so strotzt. Doch hinter der Komplexität steckt System.

Veröffentlicht in Informatik Aktuell am .

#SoftwareArchitektur – Funktionale Programmierung in der Praxis

Keine Seiteneffekte, einfaches Testen, die Korrektheit der Programme kann sogar bewiesen werden - alles Vorteile von funktionaler Programmierung. Sie hat im akademischen Bereich schon immer eine Rolle gespielt, aber auch in der Industrie wird sie zunehmend populärer - aber gleichzeitig wirkt sie abgehoben und schwer zu verstehen. In dieser Episode berichten Lars Hupel und Isabel Wingen darüber, wie sie von funktionaler Programmierung im Projekt-Alltag profitieren, welche Erfahrungen sie gemacht haben und wie man selber starten kann.

Veröffentlicht in Softwarearchitektur im Stream am .

How to build your own personal DynDNS service

Consumer-grade internet subscriptions typically come with NAT and dynamically-assigned IP addresses. In order to reach my home server from the outside, I decided to build my own dynamic DNS service. The reason was twofold: I found the existing providers I had used in the past to be annoying. I wanted...
Published on .

Injecting environment variables into static websites using NGINX

Static site generation is a perfect fit for publishing documentation. In a recent project, we chose to use NGINX as a web server to host the HTML and CSS files. However, we also wanted to protect the site using SSO. This is where things get a bit difficult.

Published in INNOQ on .

Countries I've been to

Map of Europe

I thought it’d be fun to collect a list of all countries I’ve been to. This list will be updated every time I visit a new one.

Published on . Image credits: TheAndrasBarta.

Hiking in Slovakia

Ďumbier mountain
Last month I went on a hiking vacation. Planning started out by wanting to visit a friend in Hungary, but because of Covid, it did not seem wise to visit Budapest and go to museums or other indoor activities (although all of us are vaccinated). So I browsed a map...
Published on . Image credits: Jerzy Opioła (CC-BY-SA 4.0).

Warum die Briefwahl nur die zweite Wahl sein sollte

In zwei Wochen ist Bundestagswahl. Es ist zu erwarten, dass der Anteil der Briefwähler:innen weiterhin ansteigen wird. Nach Medienberichten rechnet die Deutsche Post mit mindestens 40 %, trifft aber auch Vorbereitungen für 60 %. Dieser Trend zeichnet sich bereits seit längerer Zeit ab: bei der vergangenen Bundestagswahl 2017 nahmen in...
Veröffentlicht am .

Proof of Stake. Wie hoch ist dein Einsatz?

Cardano tut es bereits und Ethereum will es tun: Immer mehr Kryptowährungen nutzen „Proof of Stake“ als Alternative zum etablierten „Proof of Work“-Konzept, wenn es um die Absicherung ihrer Blockchain geht. Warum tun sie das? Und wo liegen die Vor- und Nachteile? Darüber sprechen Lucas und Lars in dieser Folge. Außerdem werfen sie einen Blick über den Tellerrand und geben einen Überblick über weitere Methoden, mit denen Blockchains vor Manipulation geschützt werden können.

Veröffentlicht in INNOQ-Podcast am .

Benutzerfreundlicher Äther: Smart Contracts in dezentrale Applikationen einbetten

Smart Contracts, wie sie die Ethereum-Blockchain kennt, sind technisch eine feine Sache. Aber sie brauchen eine Bedienoberfläche, wenn sie nicht nur Entwicklern nützen sollen – dann werden daraus „dezentrale Applikationen“. Um so eine DApp zu programmieren braucht man nur etwas HTML und JavaScript.

Veröffentlicht in c't am .

Geld statt Kohle: Warum Kryptowährungen auf Proof of Stake umstellen wollen

Viele Kryptowährungen nutzen Blockchains mit „Proof of Work“, aus dem ein enormer Energieverbrauch resultieren kann. „Proof of Stake“ löst dieses Problem, doch das Verfahren hat auch Nachteile. Ganz ohne Proof of Irgendwas lässt sich eine Kryptowährung aber kaum realisieren.

Veröffentlicht in c't am .

A hiatus from Open Source

About ten years ago – in 2011 – I opened my first pull request to a major Scala open source project.1 At the time, I was still a Bachelor’s student in Computer Science. The contribution was part of a course that was offered by the Didactics unit in our CS...
Published on .

Die Top 5 der Neuerungen in Scala 3

Red stairway

Schon seit geraumer Zeit arbeitet das Team um Martin Odersky an der nächsten großen Version von Scala. Deren Spitzname „Dotty“ leitet sich ab von „Dependent Object Types“, dem logischen Kalkül, welches dem Typsystem zugrunde liegt. Doch es gibt nicht nur Verbesserungen in den Eingeweiden des Compilers. Die aktuell in der Release-Candidate-Phase befindliche Vorschau auf Scala 3 verspricht, das Programmiererlebnis deutlich zu verbessern.

Veröffentlicht in Javamagazin 07/2021 am . Bildnachweis: stokpic/Pixabay.

Den Äther programmieren: Smart Contracts für die Ethereum-Blockchain schreiben

Bei Ethereum denken viele an eine Kryptowährung, dabei handelt es sich eigentlich um ein weltweit verteiltes Rechenzentrum, das Programme – sogenannte Smart Contracts – auf einer Blockchain ausführt. Wir zeigen Ihnen, wie Sie einen solchen Smart Contract programmieren, um „Schere, Stein, Papier“ auf der Ethereum-Blockchain zu spielen.

Veröffentlicht in c't am .

Geld im Äther: Ein kleiner Praxisleitfaden zu Ethereum-Wallets

Tesla akzeptiert Bitcoin-Zahlungen, auf Ethereum werden Tweets verkauft – von Kryptowährungen hört man ständig. Aber wie benutzt man so ein System, wie kommt man an das virtuelle Geld und wie überweist man es? Zum entspannten Lernen eignet sich Ethereum: Dessen Blockchain ist einfach zu benutzen und erlaubt freies Experimentieren in Testnetzen.

Veröffentlicht in c't am .

Verträge im Äther: Eine Einführung in die Ethereum-Blockchain

Blockchains werden oft mit Kryptowährungen gleich­gesetzt, aber die Technologie kann mehr als Geld verwalten. „Smart Contracts“ erlauben die Blockchain als Computer zu ­benutzen und ermöglichen zum Beispiel virtuelle Organi­sationen oder Non-Fungible-­Tokens (NFT). Ethereum ist der Vorreiter bei diesen Anwendungen.

Veröffentlicht in c't am .

Why is it so hard to reuse formally verified code?

Log starts at March 15, 2021, 7:51 PM CET. Slightly edited for improved legibility. Hillel, 7:51: So Lars and I want to try something new: a COLLABORATIVE tweetstorm. The topic? Why it’s so hard to reuse formally verified code. They’re an expert in verifying code with Isabelle, I use TLA+....
Published on .

Routing the technical interview

Blue and red boat on sea under white clouds during daytime
“Welcome, Nephele!” he said. The interviewer couldn’t help but notice her name, Nephele. It sounds Greek. But he didn’t ask, not wanting to get off on the wrong foot with the promising candidate. He made a mental note to look up the name afterwards. “I believe HR already told you...
Published on . Image credits: Andrey Sharpilo.

My local DNS setup

A few years ago, I wrote about the hardware setup of my home server. Recently, I’ve decided to put it to work beyond storing mere data and mirroring my IMAP server. I was annoyed by the weird behaviour of local name resolution of my home router, so why not operate...
Published on .

Smart Contracts programmieren in Ethereum – Gegenwart & Zukunft

Ethereum steht hinter einer der populärsten Kryptowährungen – und doch ist es noch sehr viel mehr. Damit kann kryptografisches Geld dank Algorithmen nämlich völlig autonom verwaltet werden. Aber wie funktionieren die sogenannten Smart Contracts und wo geht die Reise hin?

Veröffentlicht in t3n 63 am .

Conferences I've been to

Map of Europe

I thought it’d be fun to collect a list of all conferences I’ve been to. There were a lot of them; at least eighty it seems. Maybe we’ve even crossed paths somewhere.

Published on . Image credits: TheAndrasBarta.

#SoftwareArchitektur – Diversity

Gerade in der Software-Entwicklung sind viele Gruppen unterrepräsentiert. Führen zu homogene Teams eigentlich zu schlechterer Software? Und warum? Das Thema hat auf jeden Fall Auswirkungen auf Software-Architekt:innen, unser Arbeitsumfeld und unsere Arbeitgeber. In dieser Episode diskutieren wir mit Lars Hupel, Lena Kraaz und Aminata Sidibe von INNOQ, wie Diversity in der Software-Architektur und -Entwicklung verbessert werden kann und ob das eine gute Idee ist.

Veröffentlicht in Softwarearchitektur im Stream am .

Stufe 3: Neuerungen in der dritten Version der Programmiersprache Scala

Red stairway

14 Jahre nach Erscheinen von Scala 2.0 wagt die Sprache den nächsten großen Schritt. Wird Scala mit Version 3 so, wie es immer sein sollte? Ein Release Candidate steht schon in den Startlöchern und zeigt, wie sich die Scalable Language weiterentwickelt.

Veröffentlicht in c't am . Bildnachweis: stokpic/Pixabay.

Deploying a WebAssembly smart contract on Oasis Ethereum

One of the cornerstones of Ethereum 2.0 is the migration from the “classic” EVM to a WebAssembly-based virtual machine. In this post, I explain how to deploy a compiled WebAssembly contract to the Oasis Ethereum chain.

Published in INNOQ on .

Jahresend-Mix 2020

Welche Security-Themen haben euch 2020 am meisten beschäftigt? Was hat euch besonders beeindruckt oder einfach nur überrascht? Diese Fragen stellte Simon Kölsch 16 INNOQ Kolleginnen und Kollegen. Die Antworten ergeben einen bunten Themen-Mix, angefangen mit der Bedeutung von UX in der Security über Threat Modelling bis hin zu neuen Ideen für die spielerische Auseinandersetzung mit Security-Themen.

Veröffentlicht in INNOQ-Security-Podcast am .

Informatik-Theorie für praktizierende Architekten

In dieser Episode des SoftwareArchitekTOUR-Podcasts spricht Stefan Tilkov mit Gast Lars Hupel über den Nutzen von Informatik-Grundlagenwissen für praktizierende Softwarearchitekten.

Veröffentlicht in SoftwareArchitektTOUR am .

Dependently-Typed TypeScript

TypeScript ist eine Programmiersprache mit einigen Besonderheiten: Im Gegensatz zu den allermeisten anderen getypten Programmiersprachen wurde sie als Aufsatz für JavaScript (JS) entwickelt. Dabei hat Microsoft besonderen Wert darauf gelegt, dass sich die Sprache möglichst nahtlos in die bestehenden Ökosysteme (Node.js und Browser) integriert. Das wird dadurch erreicht, dass die TypeScript-Syntax „bloß“ die Typen zu JavaScript hinzufügt und die Kompilierung aus dem Entfernen der Typannotationen besteht. Damit hat sich TypeScript zum de-facto Standard entwickelt, wenn es darum geht, typsichere Anwendungen auf JS-Basis zu bauen.

Veröffentlicht in Funktionale Programmierung am .

Postel’s Law. Grob gehackt oder fein geschnitten?

Grob gehackt oder lieber ein feiner Julienne-Schnitt für die Tags in der Suppe? Lucas und Lars diskutieren in dieser Folge über Postel’s Law. Was es besagt und wie liberal ein Service eigentlich beim Akzeptieren von Eingabedaten sein sollte – darum geht’s in dieser Folge!

Veröffentlicht in INNOQ-Podcast am .

Smart Contracts in der Programmiersprache Rust

Wie wäre es, Rust in Kombination mit WebAssembly zu nutzen, um Smart Contracts zu entwickeln, die gegebenenfalls Millionen von Krypto-Tokens verwalten können?

Veröffentlicht in Heise Developer am .

Train Consists

Poor Lars is having trouble arranging cars in his trains. Annie helps him out using constraint programming.

Published in Playing with Prolog (Season 3) on .

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.

Veröffentlicht in JavaSPEKTRUM 4/2020 am .

TypeScript. Was sind das denn für Typen?

TypeScript ist in aller Munde. In dieser Folge will Lucas von Lars wissen, wieso er sich so sehr für diese Sprache begeistert. Wie ordnet ein erfahrener Scala-Entwickler wie Lars das Typsystem von TypeScript ein? Lars beschreibt zudem, welche Vorteile ein mächtiges Typsystem mit sich bringt, und erklärt, wie die Interaktion mit JavaScript-Bibliotheken funktioniert.

Veröffentlicht in INNOQ-Podcast am .

Remote Training, funktioniert das?

Heimarbeit hat sich mittlerweile – mehr oder weniger freiwillig – bei den meisten Unternehmen in der IT durchgesetzt. Doch beim Thema Schulungen sind viele noch skeptisch, ob das funktionieren könnte. Wir haben es für das iSAQB-Modul BLOCKCHAIN ausprobiert.

Veröffentlicht in INNOQ am .

Cross-platform testing of TypeScript code with Jasmine and Karma

I like TypeScript. Writing code that already underwent basic checks (i.e. typechecking) before it can even touch an execution engine is a big win in my book. In particular, TypeScript is nice because it integrates well into the broader JavaScript ecosystem and comes with batteries (i.e. types) included. Unfortunately, most test runners require extra setup to work with tests written in TypeScript. Some even require staggering amounts of configuration.

Published in INNOQ on .

Lars Hupel on Algebraic Design

In this episode of the CaSE podcast, Lucas talks to Lars Hupel of Typelevel-fame about algebraic design. Lars starts to explain how the expression problem views the difference between the functional and Object Oriented style of programming. He then explains the concept of an algebra – from coupling trains to CRDTs. This leads to a discussion on comprehensive and iterative thinking styles and how different styles of testing and proving work. Finally, they bring it all back to type systems.

Published in CaSE podcast on .

So you want to compose some functions

Let’s say you have a list of functions and you want to compose them. Shouldn’t be too hard, right? Of course it is, but maybe there’s an elegant way.

Published in INNOQ on .

2019 in Review

2019 was a remarkable year for me: a year of many firsts. From starting a job in industry to finishing my PhD, I want to review what happened this year. Let’s start with my professional life. At some point mid-2018, my advisor asked me about how I felt about becoming...
Published on .

Das eierlegende Truffleschwein

Historisches Bild eines Trüffelschweins

Viele, die im Java-Umfeld unterwegs sind, werden von ihr gehört haben: der sagenumwobenen GraalVM. Diese magische neue Virtual Machine für Java soll vor allem für blanke Performance sorgen, indem sie den Java-Bytecode in nativen Code kompiliert. Dadurch fällt insbesondere der Startup-Overhead weg, da weite Teile der Initialisierung bereits vom Compiler erledigt werden. So oder so ähnlich ist es vielerorts zu lesen. Hinzu kommt, dass die GraalVM zu nicht weniger das Potential hat als eine neue Ära der polyglotten Programmierung auf der JVM einzuläuten. Die Rede ist von der Truffle API, einem generischen Framework zur Implementierung von Interpretern.

Veröffentlicht in Javamagazin 01/2020 am . Bildnachweis: gemeinfrei.

A week in Tokyo

Hydrangea in Kamakura
I’m not regularly in the habit of writing personal blog posts. I had an old blog once in which I shared my experiences during my Erasmus semester in Northern Ireland. After that, I have largely resorted to technical writing. This text is an attempt to balance that out again; mostly...
Published on . Image credits: me.

Type checking JSX: A can of props

In this post, I’d like to describe how JSX type checking in TypeScript actually works and the problems you’re going to encounter when implementing custom, non-React JSX components.

Published in INNOQ on .

Verified Code Generation

This page contains the archived research information relating to the paper “A Verified Compiler from Isabelle/HOL to CakeML”. It reflects the state from approximately October 2019. For a list of all publications, refer to this page. Goal Development of a verified code generator from Isabelle/HOL to CakeML, a verified subset...
Published on .

Falsehoods Programmers Believe About Gender

Gender select form with options: Male, Female, Custom (upload custom gender, max 10 MB)
Are you storing gender in your database? Are you having trouble with those annoying queers being annoying about it? Chances are you’re the annoying one. But don’t worry, this list will clear up some common misunderstandings. There are only two genders. Okay, maybe not. But there are only two biological...
Published on . Image credits: @chordbug.

The many ways of testing Smart Contracts in Ethereum

You have implemented a smart contract for Ethereum, and now you are wondering how you can test it under real-life conditions, but without spending money in case there’s a problem? Luckily, there are test networks that can help you with this.

Published in INNOQ on .

Private Blockchains: Vergleich von Fabric und Corda

Der Markt an Blockchain-Technologien ist hart umkämpft. Seit der Einführung von Bitcoin kam es zu einer Proliferation von Forks, Neuentwicklungen und Innovationen. Doch im Unternehmenskontext ist es selten sinnvoll, interne Geschäftsvorgänge auf öffentlichen Blockchains zu verwalten. Daher etabliert sich im Moment eine neue Nische, die der privaten oder zugangsbeschränkten (permissioned) Blockchains.

Veröffentlicht in JavaSPEKTRUM 5/2019 am .

Tabling

We cover the newly added Tabling for SWI-Prolog to help Annie get around Bangalore.

Published in Playing with Prolog (Season 3) on .

Integrating Logback with JLine

Logback is a popular logging library for Java. JLine can be used to create nice shell-like applications. Combining both is not as hard as it looks.

Published in INNOQ on .

Verification of smart contracts

A moth on a piece of paper, believed to be the first computer bug

Smart contracts are used to execute code on blockchains. A variety of business cases are now represented with such contracts. Ethereum is a popular platform for this purpose. However, as with all software, the question arises of how to ensure the quality of the code.

Published in INNOQ on . Image credits: U.S. Naval Historical Center.

Verifikation von Smart Contracts

A moth on a piece of paper, believed to be the first computer bug

Smart Contracts sind eine Technologie, mit der man Code auf Blockchains ausführt. Eine Vielzahl von Geschäftsfällen werden inzwischen durch solche Verträge abgebildet. Ethereum ist dafür eine beliebte Plattform. Doch wie bei aller Software stellt sich die Frage, wie man die Qualität des Codes sicherstellen kann.

Veröffentlicht in INNOQ am . Bildnachweis: U.S. Naval Historical Center.

Scala Days 2019 in Lausanne

Im Juni 2019 fanden die Scala Days anlässlich des 10. Jubiläums wieder in Lausanne – an der Geburtsstätte von Scala – statt. Heuer gab es nicht nur zwei Konferenztage, sondern auch eine ganze Reihe von Community-Events davor und danach. INNOQ war die ganze Woche vor Ort und unsere Kollegen berichten hier von ihren Erfahrungen.

Veröffentlicht in INNOQ am .

Adressen und Transaktionen in Kryptowährungen – Teil 3: Altcoins

Kryptowährungen sind in aller Munde. Tutorials und Erklärungen gibt es zuhauf. In dieser Artikelserie soll ein bestimmter Aspekt, nämlich der der Adressen und Transaktionen, detailliert für populäre Blockchains geklärt werden. Denn unter der Oberfläche verbirgt sich einiges an Komplexität. Teil 3: Altcoins.

Veröffentlicht in INNOQ am .

Parametrizität in Java

So gut wie alle modernen Programmiersprachen erlauben es, Routinen über Werte und über Typen zu parametrisieren. In Java wird letzteres „Generics“ genannt, in C++ hingegen „Templates“. Obwohl die Konzepte die gleichen sind, unterscheidet sich die Implementation doch stark. In diesem Artikel möchte ich diese Art der Parametrisierung in Java unter die Lupe nehmen und erklären, warum „Type Erasure“ doch eine ganz gute Idee ist.

Veröffentlicht in JavaSPEKTRUM 3/2019 am .

Adressen und Transaktionen in Kryptowährungen – Teil 2: Ethereum

Kryptowährungen sind in aller Munde. Tutorials und Erklärungen gibt es zuhauf. In dieser Artikelserie soll ein bestimmter Aspekt, nämlich der der Adressen und Transaktionen, detailliert für populäre Blockchains geklärt werden. Denn unter der Oberfläche verbirgt sich einiges an Komplexität. Teil 2: Ethereum.

Veröffentlicht in INNOQ am .

Adressen und Transaktionen in Kryptowährungen – Teil 1: Bitcoin

Kryptowährungen sind in aller Munde. Tutorials und Erklärungen gibt es zuhauf. In dieser Artikelserie soll ein bestimmter Aspekt, nämlich der der Adressen und Transaktionen, detailliert für populäre Blockchains geklärt werden. Denn unter der Oberfläche verbirgt sich einiges an Komplexität. Teil 1: Bitcoin.

Veröffentlicht in INNOQ am .

Node-RED

IBM’s node-red flow programming language is an interesting declarative language. Recently Annie’s been experimenting with it. In this video she shows it to Lars.

Published in Playing with Prolog (Season 2) on .

Job Scheduling

This month in Playing with Prolog we help Lars out at work. He needs to schedule jobs for his CI servers.

Published in Playing with Prolog (Season 2) on .

Marelle

Playing with Prolog is back for Season 2 with a new host. Annie and Lars take a look at Marelle, the SWI-Prolog based devops system.

Published in Playing with Prolog (Season 2) on .

My storage server setup

Updated continuously after publication. Recently I announced on Twitter some upgrade I did on a “home” server: Successfully upgraded the home server from 9 TB to 15 TB storage. A dozen devices all want to be backed up. Lars Shortly thereafter, someone wanted to know what the setup looks like....
Published on .

Let's build ourselves a small ScalaCheck

ScalaCheck is a well-known property-based testing library, based on ideas from Haskell’s QuickCheck. It is also a Typelevel project. In this post, I’d like to show some of the underlying mechanisms, stripped down to the bare minimum.

Published in Typelevel.org blog on .

Functional Geekery, Episode 62

In this episode Proctor talks with Lars Hupel. We talk his introduction to Functional Programming with Haskell, Scala, and move to working on Isabelle for creating theorems about proving your program.

Published in Functional Geekery on .

Formale Wahrheit

Am Lehrstuhl für Logik und Verifikation der TUM wird Isabelle entwickelt, ein Programm mithilfe dessen man Theoreme beweisen kann. Interaktive Theorembeweiser sind relative neue Hilfsmittel in der Werkzeugsammlung von Mathematikern. Sind solche vom Computer verifizierten Argumentationsketten aber noch Beweise im mathematischen Sinn? (Dieser Artikel erschien ursprünglich in fatum Dezember 2015.)

Veröffentlicht am .

Law Enforcement using Discipline

Some nine or ten months ago, Spire’s project structure underwent a major reorganization. Simultaneously, the Scalacheck bindings were refactored, completely overhauling the law-checking infrastructure.

Published in Typelevel.org blog on .

Deriving Type Class Instances

The use of type classes has become pervasive in Scala programming. Type classes are encoded as traits, hence the most basic way of declaring an instance is writing implicit methods which return objects extending from these traits. However, those implicit methods are regular Scala methods, so we can use all features provided by the language to derive instances. In this post, a technique is described to compose instances into larger ones, which will not only allow for construction of instances for case classes, but also for other nested structures with minimum boilerplate.

Published in Typelevel.org blog on .

Überholt: Subversion ist obsolet

In der letzten Ausgabe des KaffeeKlatsch wurde eine Kombination aus Subversion, Mantis und CheckStyle vorgestellt. Dem ein oder anderen Leser beschlich beim Lesen des Wortes Subversion vielleicht ein seltsames Gefühl: Schreiben wir nicht das Jahr 2010? Der folgende Artikel hat sich zum Ziel gesetzt, die gängigen Vorbehalte gegenüber moderneren Tools zu zerstreuen und eine Umstellung, weg von Subversion, zu motivieren. (Dieser Artikel erschien ursprünglich im KaffeeKlatsch 09/2010.)

Veröffentlicht am .

Analysis für Informatiker

Inoffizielles Skript zur Vorlesung „Analysis für Informatiker“ des WS 2009/2010, gehalten von Prof. Dr. P. Rentrop, niedergeschrieben und illustriert von Markus Grimm, Andreas Heider, Lars Hupel, Michael Kerscher, Philipp Meyer, Janosch Peters und Sylvester Tremmel.

Veröffentlicht am .

Javastars: Unsere Reise nach San Francisco

v.l.n.r.: ich, Richard Tschirschnitz, Thomas Milde

Wir, Lars Hupel, Thomas Milde und Richard Tschirschnitz sowie unserer Lehrer Mirko König sind am 5. Mai 2007 nach San Francisco geflogen, um an der weltweit größten Entwicklerkonferenz – der JavaOne 2007 – teilzunehmen. Dies hatten wir als 1. Preis beim Programmierwettbewerb „Java Stars 2006 – Sun Microsystems Award“ gewonnen und durften daher für einige Tage in den USA verweilen.

Veröffentlicht am . Bildnachweis: MK.