We Are Developers World Congress 2022 in Berlin: Our Experience Report
Our colleagues were on site, staffing the booth, speaking with fellow developers, and delivering two talks.
Our colleagues were on site, staffing the booth, speaking with fellow developers, and delivering two talks.
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.
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.
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.
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.
Ü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“.
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.
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.
Despite modern multicore processors, website code usually runs in only one thread. True parallelism therefore does not exist, but a clever programming model still allows “asynchronous” code that is not processed linearly.
Do you like online shopping? Great, I do too. I even shop my groceries online. What’s not so great is that while the shops are analyzing your data to gain insights, they are not sharing those with you. But thanks to GDPR, we can just analyze our data ourselves.
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.
Live von der OOP: Lisa befragt Lars und Lucas zu ihrem Vortrag auf der OOP.
In der Regel läuft der Code von Webseiten in nur einem Thread, modernen Multicore-Prozessoren zum Trotz. Echte Parallelität gibt es so nicht, aber ein schlaues Programmiermodell erlaubt dennoch „asynchronen“ Code, der nicht linear abgearbeitet wird.
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!
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.
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.
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.
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.
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.
Die Geschichte über einen Menschen, der auszog, Auskünfte über seine persönlichen Daten zu erhalten und über die Steine, die ihm dabei in den Weg gelegt worden sind.
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.
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.
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.
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.
Fueled by ever new highs in cryptocurrency prices, there is currently a lively debate about blockchains. Some praise the “self-sustaining” currencies as saviors in times of crisis, while others see their excessive power consumption as a climate killer. But which opportunities and risks the new technologies harbor for software architecture is rarely a matter of debate. I would like to give a brief overview of this issue.
Befeuert von immer neuen Kurshöhen der Kryptowährungen, findet derzeit eine lebhafte Debatte über Blockchains statt. Die einen preisen die „autarken“ Währungen als Heilsbringer in Krisenzeiten, die anderen sehen im exzessiven Stromverbrauch einen Klimakiller. Doch welche Chancen und Risiken die neuen Technologien für Softwarearchitektur bringen, wird selten diskutiert. Über diese Fragestellung möchte ich hier einen kleinen Überblick geben.
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.
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.
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.
Blockchains werden oft mit Kryptowährungen gleichgesetzt, aber die Technologie kann mehr als Geld verwalten. „Smart Contracts“ erlauben die Blockchain als Computer zu benutzen und ermöglichen zum Beispiel virtuelle Organisationen oder Non-Fungible-Tokens (NFT). Ethereum ist der Vorreiter bei diesen Anwendungen.
Auf dieser Seite sammle ich Beschreibungen für Tages- oder Halbtagestouren in & um München. Alle Strecken bin ich selbst gefahren.
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?
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 sixty it seems. Maybe we’ve even crossed paths somewhere.
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.
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.
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.
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.
In dieser Episode des SoftwareArchitekTOUR-Podcasts spricht Stefan Tilkov mit Gast Lars Hupel über den Nutzen von Informatik-Grundlagenwissen für praktizierende Softwarearchitekten.
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.
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!
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?
Poor Lars is having trouble arranging cars in his trains. Annie helps him out using constraint programming.
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.
This is a series about Conflict-Free Replicated Data Types, or CRDTs for short. Their purpose is to allow seamless replication of data on different nodes in a distributed system. Merging is by construction always possible, without any conflicts. This series assumes no knowledge about CRDTs, but be prepared to learn a thing or two about algebras.
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.
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.
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.
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.
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.
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.
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.
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.
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.
We cover the newly added Tabling for SWI-Prolog to help Annie get around Bangalore.
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.
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.
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.
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.
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.
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.
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.
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.
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.
This month in Playing with Prolog we help Lars out at work. He needs to schedule jobs for his CI servers.
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.
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.
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.
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 enthält gesammelte Texte aus meinem Blog aus der Zeit vom September 2010 bis zum Januar 2011, während der ich ein Austauschsemester an der Queen’s University of Belfast absolvierte. In meinem Blog habe ich für Familie, Freunde und Bekannte meine Eindrücke und Erfahrungen festgehalten. Zur gleichen Zeit studierte auch noch ein Münchner Kommilitone in Belfast, ein weiterer in Newcastle und ein Freund aus Heidelberg in Durham. Von jenen wird im folgenden auch das ein oder andere Mal die Rede sein. Die Texte sind hier nicht in ihrer chronologischen Reihenfolge wiedergegeben, sondern thematisch gruppiert. Insofern habe ich einige kleine Änderungen vorgenommen, um logische Sprünge zu vermeiden.
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.
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.
Was unter Historikern verpönt ist, ist mit Git ganz einfach: Die Geschichte eines Projekts im Nachhinein ändern. Welche Möglichkeiten es da gibt, soll in diesem Artikel kurz vorgestellt werden. (Dieser Artikel erschien ursprünglich im KaffeeKlatsch 09/2011.)
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.)
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.
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.