Feed cleverhans-blog [copy] http://www.cleverhans.io/feed.xml has loading error: cURL error 22: The requested URL returned error: 404
Functional data structures in Swift (bobkonf2025)
One of the intriguing features of Swift is its distinction between value types and reference types. Conceptually, value types are always copied in assignments and passed-by-value in function calls — i.e., they are semantically immutable. In contrast, for reference types, Swift only copies a pointer to an object on an assignment and they are being passed-by-reference to functions. If such an object gets mutated, it changes for for all references. While most languages feature both value and reference types, Swift is unique in that (1) it makes it easy to define and use both...
Against the (formal) method? (bobkonf2025)
Formal methods are very often touted as a necessary evolution of software development to cope with increasing complexity, risks, and challenges. This is especially true in functional programmers’ circles, as there’s historically a strong link between functional programming languages and formalisation of computing. After all, if software engineers really want to be considered as “true” engineers like mechanical or nuclear engineers, they will need to embrace formalisation and root their practices and tools in solid mathematical foundations. But one can ask the question: is this narrative true? Is it necessary for software development to...
Beyond the Basics of LSP: Advanced IDE services for OCaml (bobkonf2025)
LSP has greatly standardised the behaviour of IDEs, in a good direction: we can provide, de-facto, decent language support in editors supporting LSP. But it also imposes a standardisation that often assumes that all languages behave like TypeScript. In this presentation, I’ll introduce you to Merlin, the IDE service library for OCaml, and cover the custom features (via code-action and custom-request) that enhance the OCaml development experience (covering expression destructuring, expression construction, search by types (à la hoogle, directly in the IDE), type enclosures etc.). ...
Abstraction and program design, or the power of parametricity (bobkonf2025)
In this talk I want to revisit the parametricity theorem: from parametrically polymorphic types, i.e., types that contain type variables that can be arbitrarily instantiated, we can directly infer certain properties of the underlying functions, without ever having to look at their implementation. A simple example in Haskell is the type forall a. a -> a, which (apart from looping or crashing functions) can only be inhabited by the identity function. ...
Ein Weg zu hoher Zuverlässigkeit von Systemen eines Netzbetreibers (bobkonf2025)
Die Netze BW als Verteilnetzbetreiber für Strom, Gas und Wasser in Baden-Württemberg entwickelt und betreibt Software für den Betrieb von Netzen. Als Teil kritischer Infrastruktur des öffentlichen Lebens waren die Anforderung an Zuverlässigkeit immer sehr hoch. Kombiniert mit der zunehmenden Komplexität der Energiewende müssen immer mehr und immer komplexere Prozesse abgebildet und mittels Software realisiert werden. In diesem Vortrag wird der bisherige Weg von #NETZlive, einem Softwareprojekt der Netze BW, gezeigt, wie mittels Microservices, Containerisierung,...
OOP is dead, long live Object Orientation! (bobkonf2025)
I’m a functional programmer at heart, and believe that the declarative semantics of functional programming are vastly superior to the kind of OOP we’ve been doing for the past 30 years. In most cases, that means based on imperative concepts, with some class, inheritance and subtyping structure added. And, as we will see in this talk: Subtyping polymorphism is not very good at avoiding unsafe type conversions, inheritance is not very good ad code reuse, and classes are not very good at being extensible. ...
Developing DSLs: A Look at Three Practical Strategies with Real-World Examples (bobkonf2025)
Domain-specific languages (DSLs) are languages specialized for a particular domain, and are typically equipped with features that make them well-suited for programming within that domain. This talk explores and compares three common strategies to creating DSLs: Standalone DSLs, which are entirely new languages. DSLs embedded in existing host languages. DSLs that are subsets of existing host languages,...
GNUnet 0.24.0
GNUnet 0.24.0 released
We are pleased to announce the release of GNUnet 0.24.0.
GNUnet is an alternative network stack for building secure, decentralized and
privacy-preserving distributed applications.
Our goal is to replace the old insecure Internet protocol stack.
Starting from an application for secure publication of files, it has grown to
include all kinds of basic protocol components and applications towards the
creation of a GNU internet.
This is a new major release. Major...
How to Write an Agent
Hello friends. This blog post was supposed to be the second part of this research, however I didn’t have enough time (or interest really) to dedicate to it, and when the 120-days disclosure window expired I went f**k-it mode and started working on other, more interesting things. Today, we’ll talk about agents and Nerve, a project I started a few months ago that makes implementing an agent simple and intuitive.
What Is An Agent?The term “agent” has been increasingly used in recent times to describe various technologies, including OpenAI DeepResearch, Operator, and Grok 3. According to Wikipedia’s definition of “intelligent agent”:
In...
Джойстики из джойстиков своими руками
Одна из самых частых забав ретрогеймера-электроника — сделать что-нибудь со старыми джойстиками. Вот и сделаем! Это простейший материал для начинающих самоделкиных, на грани треш-контента и на радость одному Доктору, но с познавательными элементами, которые могут или не могут пригодиться на практике.
Будем курочить джойстики от старых игровых консолей, не приходя в сознание. Из двух проводных джойстиков сделаем один, другой джойстик лишим провода, а ещё пару просто подключим проводами. По сути это сразу три разных микро-проекта, связанные общей тематикой. Нет времени объяснять, приступаем!
Читать дальше →