{"acronym":"bobkonf2025","aspect_ratio":"16:9","updated_at":"2026-04-05T08:45:04.047+02:00","title":"BOB Konferenz 2025","schedule_url":"","slug":"conferences/bobkon/2025","event_last_released_at":"2025-04-29T00:00:00.000+02:00","link":"","description":"","webgen_location":"conferences/bobkon/2025","logo_url":"https://static.media.ccc.de/media/events/bobkonf/2025/logo.png","images_url":"https://static.media.ccc.de/media/events/bobkonf/2025","recordings_url":"https://cdn.media.ccc.de/events/bobkonf/2025","url":"https://api.media.ccc.de/public/conferences/bobkonf2025","events":[{"guid":"8153d4fe-3175-4134-8454-9c2e16ae1931","title":"Abstraction and program design, or the power of parametricity","subtitle":null,"slug":"bob11-2025-abstraction-and-program-design-loeh","link":"https://bobkonf.de/2025/loeh.html","description":"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.\n          \n          A simple example in Haskell is the type forall a. a -\u003e a, which (apart from looping or crashing functions) can only be inhabited by the identity function.\n          \n          This may sound like a curiosity, but I will argue that it is in fact an invaluable tool in program design and day-to-day reasoning about programs, and explain how to build an intuition that allows you to do so without the need for deep or complicated theory. We will look at several interesting examples and hopefully make a few perhaps surprising discoveries along the way.\n          \n          I will also try to explain how in the case of parametricity, making types more abstract can really help in making functions easier to understand, whereas it often feels like the opposite may be true. To this end, I will try to contrast abstraction in the context of parametricity with other kinds of type-level abstraction common in Haskell, in particular abstraction via type classes, and show how they are different.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Andres Löh"],"tags":["9","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":140,"promoted":false,"date":"2025-03-14T10:15:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-17T07:00:03.002+01:00","length":2724,"duration":2724,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/9-8153d4fe-3175-4134-8454-9c2e16ae1931.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/9-8153d4fe-3175-4134-8454-9c2e16ae1931_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/9-8153d4fe-3175-4134-8454-9c2e16ae1931.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/9-8153d4fe-3175-4134-8454-9c2e16ae1931.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-abstraction-and-program-design-loeh","url":"https://api.media.ccc.de/public/events/8153d4fe-3175-4134-8454-9c2e16ae1931","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"7834c82d-0476-4e82-97a5-88e0fdc0664d","title":"Developing DSLs: A Look at Three Practical Strategies with Real-World Examples","subtitle":null,"slug":"bob11-2025-developing-dsls-liu","link":"https://bobkonf.de/2025/liu.html","description":"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:\n          \n          Standalone DSLs, which are entirely new languages.\n          DSLs embedded in existing host languages.\n          DSLs that are subsets of existing host languages, which may employ one of two techniques: metaprogramming and compiler plugins.\n          Each strategy comes with its own benefits and drawbacks, and the optimal choice will vary based on your unique needs. We’ll give an in-depth comparison of these approaches with real-world examples, considering the viewpoints of both language developers and language users. An example domain is smart contract languages for the Cardano blockchain, where DSLs employing each of the three strategies can be found. We’ll also draw examples from fields such as flight control systems, signal processing and more.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Ziyang Liu"],"tags":["4","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":67,"promoted":false,"date":"2025-03-14T13:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-02-18T12:45:12.731+01:00","length":2536,"duration":2536,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/4-7834c82d-0476-4e82-97a5-88e0fdc0664d.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/4-7834c82d-0476-4e82-97a5-88e0fdc0664d_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/4-7834c82d-0476-4e82-97a5-88e0fdc0664d.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/4-7834c82d-0476-4e82-97a5-88e0fdc0664d.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-developing-dsls-liu","url":"https://api.media.ccc.de/public/events/7834c82d-0476-4e82-97a5-88e0fdc0664d","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"7aa0611a-c29c-4d94-9a8d-31bed40783cc","title":"Recursive Definitions in Lean","subtitle":null,"slug":"bob11-2025-recursive-definitions-in-lean-breitner","link":"https://bobkonf.de/2025/breitner.html","description":"The logic underlying the Lean programming language and theorem prover does not know recursive functions, yet Lean users can define functions recursively. In this session we’ll get to look at how Lean translates the user’s specification into something that the logic understands, whether by structural recursion, well-founded recursion or the brand-new partial fixpoint strategy. We’ll also see how this affects compiled code (namely not at all), and the difference between partial and unsafe.\n          \n          This session will likely contain high amounts of improvised live-coding and benefit greatly from your questions, suggestions and discussions.\n          \n          (This spontaneous talk is based on the talk given at Leaning in 2025.)\n          \n          The material presented can be found at https://github.com/nomeata/lean-bobkonf-2025.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Joachim Breitner"],"tags":["15","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":124,"promoted":false,"date":"2025-03-14T17:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-22T15:45:08.613+01:00","length":2601,"duration":2601,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/15-7aa0611a-c29c-4d94-9a8d-31bed40783cc.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/15-7aa0611a-c29c-4d94-9a8d-31bed40783cc_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/15-7aa0611a-c29c-4d94-9a8d-31bed40783cc.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/15-7aa0611a-c29c-4d94-9a8d-31bed40783cc.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-recursive-definitions-in-lean-breitner","url":"https://api.media.ccc.de/public/events/7aa0611a-c29c-4d94-9a8d-31bed40783cc","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"9cb583b3-6cde-41cf-a68a-780fc88603eb","title":"Correct by Construction Concurrent Programs in Idris 2","subtitle":null,"slug":"bob11-2025-correct-by-construction-concurrent-programs-in-idris-allais","link":"https://bobkonf.de/2025/allais.html","description":"Concurrent programs destructively updating shared memory are notoriously hard to get right. Concurrent separation logics are logics with built-in notions of e.g. ownership of memory regions, concurrent accesses, and lock mechanisms. They give experts a way to verify a posteriori that complex concurrent imperative programs hopefully abide by their formal specification.\n          \n          We will see how next generation languages let us get rid of a posteriori verification in favour of a correct-by-construction approach whereby the program is interactively built in a specification-respecting dialogue with the compiler. For this presentation we will be using Idris 2, a general purpose functional language with an expressive type system combining dependent types to enforce complex invariants and linear logic to track resource usage.\n          \n          We will demonstrate how a simple library can capture ideas from concurrent separation logic by providing proof-carrying concurrent primitives. These make it impossible to write into memory one does not own or to release a lock without having proven that its associated invariant has been re-established. They also guarantee that whatever is read from the shared memory is invariant-respecting.\n          \n          This will culminate in worked out example e.g. the definition of map-reduce primitives repeatedly and safely breaking down a buffer into chunks that can be processed concurrently and/or a naïve bank with concurrent cash machines.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Guillaume Allais"],"tags":["11","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":174,"promoted":false,"date":"2025-03-14T13:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-21T14:00:07.838+01:00","length":2671,"duration":2671,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/11-9cb583b3-6cde-41cf-a68a-780fc88603eb.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/11-9cb583b3-6cde-41cf-a68a-780fc88603eb_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/11-9cb583b3-6cde-41cf-a68a-780fc88603eb.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/11-9cb583b3-6cde-41cf-a68a-780fc88603eb.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-correct-by-construction-concurrent-programs-in-idris-allais","url":"https://api.media.ccc.de/public/events/9cb583b3-6cde-41cf-a68a-780fc88603eb","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"36c088e9-33e4-4a73-9bef-e92c2a9f752d","title":"Keynote: Local-first Software","subtitle":null,"slug":"bob11-2025-local-first-software-bieniusa","link":"https://bobkonf.de/2025/bieniusa.html","description":"Local-first software redefines how applications handle data by prioritizing user ownership of data, responsiveness, and offline functionality. Unlike traditional cloud-dependent software, local-first applications store and process data primarily on users’ devices rather than relying on continuous connectivity to a central server. This ensures that the software remains usable even without an internet connection, offers faster interactions by eliminating latency introduced by remote servers, and gives users greater control over their data. Local-first architectures typically incorporate mechanisms for synchronization, enabling seamless collaboration and data sharing across devices. Techniques, such as Conflict-free Replicated Data Types (CRDTs), are the “secret sauce” to ensure that updates made on one device are automatically reconciled with changes made on others, even when they happen offline.\n          \n          This talk will delve into the principles of local-first software, the inner workings of CRDTs, practical implementation strategies, and the challenges developers must overcome to realize this vision. Finally, we will show the strengths and limitations in case studies such as collaborative spreadsheets and present methods for verifying the correctness of local-first applications.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Annette Bieniusa"],"tags":["1","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":403,"promoted":false,"date":"2025-03-14T09:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-31T15:45:06.741+02:00","length":3329,"duration":3329,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/1-36c088e9-33e4-4a73-9bef-e92c2a9f752d.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/1-36c088e9-33e4-4a73-9bef-e92c2a9f752d_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/1-36c088e9-33e4-4a73-9bef-e92c2a9f752d.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/1-36c088e9-33e4-4a73-9bef-e92c2a9f752d.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-local-first-software-bieniusa","url":"https://api.media.ccc.de/public/events/36c088e9-33e4-4a73-9bef-e92c2a9f752d","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c","title":"Beyond the Basics of LSP: Advanced IDE services for OCaml","subtitle":null,"slug":"bob11-2025-beyond-the-basics-of-lsp-woestyne","link":"https://bobkonf.de/2025/woestyne.html","description":"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.).\n          \n          The aim of the presentation was to show how to go beyond the default features offered by LSP and offer a development experience adapted to a more expressive language.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Xavier Van de Woestyne"],"tags":["3","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":99,"promoted":false,"date":"2025-03-14T11:05:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2025-12-10T16:30:03.979+01:00","length":2640,"duration":2640,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/3-7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/3-7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/3-7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/3-7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-beyond-the-basics-of-lsp-woestyne","url":"https://api.media.ccc.de/public/events/7ca9c4b5-3515-4023-88f1-6a9f2c8bf99c","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"5da874ea-410b-4180-8852-503b897fdbfc","title":"Functional data structures in Swift","subtitle":null,"slug":"bob11-2025-functional-data-structures-in-swift-chakravarty","link":"https://bobkonf.de/2025/chakravarty.html","description":"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 flavours of types and (2) it supports fine-grained mutability control.\n          \n          For large values, such as arrays, frequent copying carries a significant performance penalty. Hence, the Swift compiler goes to great length to avoid copying whenever it is safe. For large values, this effectively boils down to a copy-on-write strategy, where a large value is only copied when it actually is being mutated (on one code path). Swift facilitates for user-defined value types to also adopt this copy-on-write strategy.\n          \n          In this talk, I will explain the semantic difference between value and reference types, and I will illustrate how this facilitates safe and robust coding practices in Swift. Moreover, I will explain how the copy-on-write strategy for large values works and how it interacts with Swift’s memory management system. Finally, I will demonstrate how you can define your own copy-on-write large value types.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Manuel Chakravarty"],"tags":["6","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":81,"promoted":false,"date":"2025-03-14T15:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-28T21:30:06.384+01:00","length":2841,"duration":2841,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/6-5da874ea-410b-4180-8852-503b897fdbfc.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/6-5da874ea-410b-4180-8852-503b897fdbfc_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/6-5da874ea-410b-4180-8852-503b897fdbfc.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/6-5da874ea-410b-4180-8852-503b897fdbfc.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-functional-data-structures-in-swift-chakravarty","url":"https://api.media.ccc.de/public/events/5da874ea-410b-4180-8852-503b897fdbfc","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44","title":"OOP is dead, long live Object Orientation!","subtitle":null,"slug":"bob11-2025-oop-is-dead-long-live-object-orientation-thoma","link":"https://bobkonf.de/2025/thoma.html","description":"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.\n          \n          When it comes to building larger systems, however, we can get back to the ideas and concepts that drove the invention of Object Orientation: Independent entities that encapsulate and hide their own state, that communicate via message passing, and that can be exchanged at runtime without having to replace the entire system. And I’d argue that most of the systems we build today actually follow these concepts – in a good way! And in that sense, I believe that Object Orientation is actually a good and successful concept – just not on code level, but on a system and infrastructure level.\n          \n          In this talk, we’re going to explore the history of the term “Object-Oriented”, how that concept evolved, where it went wrong, and how to redeem it.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Franz Thoma"],"tags":["14","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":163,"promoted":false,"date":"2025-03-14T15:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-02-25T15:15:11.902+01:00","length":2805,"duration":2805,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/14-eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/14-eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/14-eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/14-eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-oop-is-dead-long-live-object-orientation-thoma","url":"https://api.media.ccc.de/public/events/eb87bbc9-cc6d-412c-86b7-f7d8a1db5d44","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"bae8e41e-c6b3-46be-b8c5-9c738f22df04","title":"Things We Never Told Anyone About Functional Programming","subtitle":null,"slug":"bob11-2025-things-we-never-told-anyone-about-functional-programming-sperber","link":"https://bobkonf.de/2025/sperber.html","description":"FP—what is it good for? The “P” is for “Programming”, the writing of programs. Judging from the papers and most books on functional programming, FP excels as a tool for writing short programs—up to a hundred lines maybe. We also know that there are large FP codebases at large companies, and folklore has it that this also works quite well. Yet there is precious little literature on how to go from a hundred lines to a million lines of functional code. This hinders FP adoption by not-(yet?)-practicioners, who ask questions like:\n          \n          - How do I find module boundaries?\n          - How do I organize teams for functional projects?\n          - How do I document my functional codebase?\n          - How do I onboard newcomers?\n          - What’s a good book on functional software architecture?\n          - Is there a book or website of functional patterns?\n          - What are the benefits of FP—really?\n          - How does functional software development to qualities and requirements beyond functionality?\n          Successful practitioners rely on folklore and experience for the answers to these questions, but precious little is written down in findable places and accessible formats.\n          \n          This talk is a call to action: We need to do a better job at outreach—find the gaps in our published knowledge, write down what’s undocument and—going to extremes—talk to other communities who know a thing or two about large-scale software development.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Mike Sperber"],"tags":["13","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":379,"promoted":false,"date":"2025-03-14T15:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-18T02:30:03.689+01:00","length":2562,"duration":2562,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/13-bae8e41e-c6b3-46be-b8c5-9c738f22df04.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/13-bae8e41e-c6b3-46be-b8c5-9c738f22df04_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/13-bae8e41e-c6b3-46be-b8c5-9c738f22df04.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/13-bae8e41e-c6b3-46be-b8c5-9c738f22df04.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-things-we-never-told-anyone-about-functional-programming-sperber","url":"https://api.media.ccc.de/public/events/bae8e41e-c6b3-46be-b8c5-9c738f22df04","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"2e095ffe-b255-47d9-b261-b1fbca134f1b","title":"Property-Based Testing: The Past, The Present, and The Future","subtitle":null,"slug":"bob11-2025-property-based-testing-keles","link":"https://bobkonf.de/2025/keles.html","description":"This year marks the 25th anniversary of QuickCheck, the canonical property-based testing library that has found its way into virtually every programming language in different forms. In these 25 years, the implementers of these new libraries, along with the research community, has made significant advances to Property-Based Testing literature, transformed the way in which we see PBT, and continue to do so. In this talk, I’ll present to you the challenges that have been solved, and the ones that aren’t. I’ll present you with the latest advances that haven’t been incorporated into existing libraries, talk about our work with my collaborators on opening new avenues for the future of property based testing, and share my vision of what the future shall bring to us.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Alperen Keles"],"tags":["7","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":213,"promoted":false,"date":"2025-03-14T17:00:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-04-04T21:15:05.370+02:00","length":2675,"duration":2675,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/7-2e095ffe-b255-47d9-b261-b1fbca134f1b.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/7-2e095ffe-b255-47d9-b261-b1fbca134f1b_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/7-2e095ffe-b255-47d9-b261-b1fbca134f1b.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/7-2e095ffe-b255-47d9-b261-b1fbca134f1b.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-property-based-testing-keles","url":"https://api.media.ccc.de/public/events/2e095ffe-b255-47d9-b261-b1fbca134f1b","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"a733bc46-7c9e-448b-8c44-569696fff357","title":"A Language Server for your DSL for Fun and Profit","subtitle":null,"slug":"bob11-2025-language-server-for-your-dsl-siebenhandl","link":"https://bobkonf.de/2025/siebenhandl.html","description":"Domain-specific languages (DSL) are well-studied tools for solving problems specific to a domain. Especially in the Haskell Community, DSLs are quite popular due to parser-combinators and succinct definitions of abstract syntax trees (AST). However, it is often difficult to integrate a particular DSL into any modern IDE. This causes a DSL to be harder to use in practice and negatively affects productivity. Sometimes, developers combat this by implementing plugins that introduce syntax highlighting specific to an editor. However, we argue that it is preferable to use existing infrastructure, such as the Language Server Protocol, which provides out-of-the-box IDE support for most editors.\n          \n          In this talk, we focus on key challenges for implementing a Language Server, as a Language Server simply has different requirements from a parser or an interpreter. We discuss how to approach the design and implementation of a DSL such that we get Language Server support (almost) for free. In particular, we show how to provide advanced IDE features, such as semantics-aware syntax highlighting or automatic refactorings, with minimal effort. To implement this, we augment the AST to retain additional information about the sources, such as parentheses, comments, and whitespace, in a non-intrusive way.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Hannes Siebenhandl"],"tags":["5","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":103,"promoted":false,"date":"2025-03-14T13:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-28T22:00:08.356+01:00","length":2492,"duration":2492,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/5-a733bc46-7c9e-448b-8c44-569696fff357.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/5-a733bc46-7c9e-448b-8c44-569696fff357_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/5-a733bc46-7c9e-448b-8c44-569696fff357.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/5-a733bc46-7c9e-448b-8c44-569696fff357.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-language-server-for-your-dsl-siebenhandl","url":"https://api.media.ccc.de/public/events/a733bc46-7c9e-448b-8c44-569696fff357","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"edcb516c-2e2b-49dc-8fca-95070a40dc90","title":"Ein Weg zu hoher Zuverlässigkeit von Systemen eines Netzbetreibers","subtitle":null,"slug":"bob11-2025-weg-zu-hoher-zuverlaessigkeit-von-systemen-digel","link":"https://bobkonf.de/2025/digel.html","description":"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.\n          \n          In diesem Vortrag wird der bisherige Weg von #NETZlive, einem Softwareprojekt der Netze BW, gezeigt, wie mittels Microservices, Containerisierung, Clusterbildung, redundanten Anwendungen, fehlertoleranten Entwicklungssprachen und der funktionalen Programmierung an sich die Zuverlässigkeit der Systeme gesteigert wurde und wie es noch weiter gesteigert werden muss.\n          \n          Dazu fordert die Energiewende eine höhere Automatisierung von kritischen, ins Netz eingreifenden Prozessen, was zusätzlich die höchste Sicherheitsbewertung der Software mit sich bringt. Der Vortrag gibt einen Ausblick, was hier mittelfristig erforderlich sein wird.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"deu","persons":["Tim Digel"],"tags":["2","2025","bob2025","Talk","Talks #1","bob2025-deu","BOB","BOB Konferenz","Day 1"],"view_count":156,"promoted":false,"date":"2025-03-14T10:15:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-02-24T13:15:06.350+01:00","length":2585,"duration":2585,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/2-edcb516c-2e2b-49dc-8fca-95070a40dc90.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/2-edcb516c-2e2b-49dc-8fca-95070a40dc90_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/2-edcb516c-2e2b-49dc-8fca-95070a40dc90.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/2-edcb516c-2e2b-49dc-8fca-95070a40dc90.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-weg-zu-hoher-zuverlaessigkeit-von-systemen-digel","url":"https://api.media.ccc.de/public/events/edcb516c-2e2b-49dc-8fca-95070a40dc90","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"371becb7-8bf6-4c57-b4b9-1304045f5f87","title":"The Microservices Problem No One Warned Us About (And How You Can Avoid It)","subtitle":null,"slug":"bob11-2025-microservices-problem-no-one-warned-us-about-oerdoeg","link":"https://bobkonf.de/2025/oerdoeg.html","description":"Tired of firefighting when a downstream service throws a curveball? We were too, so we figured out a way to build microservices that expect the unexpected. In this talk, I’ll share our journey from fragile systems to an architecture where resilience is the norm, not the exception.\n          \n          Soon after introducing microservices we were so overwhelmed by constant outages and endless alerts that we couldn’t even stop to figure out what was going wrong. In this talk, I’ll share how we rediscovered the Saga pattern during that chaos and how it transformed our fragile system into a resilient one. By exploring the failure modes and incomplete implementations we encountered, you’ll gain a deeper understanding of the pattern and how to apply it effectively to build more reliable systems.\n          \n          This talk isn’t just a war story; it’s a blueprint for resilience. You’ll walk away with a crucial pattern that you can immediately apply to your systems, turning potential disasters into manageable events, and achieve a 99.999% uptime.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Ivett Ördög"],"tags":["8","2025","bob2025","Talk","Talks #1","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":333,"promoted":false,"date":"2025-03-14T17:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-19T15:45:07.516+01:00","length":2642,"duration":2642,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/8-371becb7-8bf6-4c57-b4b9-1304045f5f87.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/8-371becb7-8bf6-4c57-b4b9-1304045f5f87_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/8-371becb7-8bf6-4c57-b4b9-1304045f5f87.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/8-371becb7-8bf6-4c57-b4b9-1304045f5f87.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-microservices-problem-no-one-warned-us-about-oerdoeg","url":"https://api.media.ccc.de/public/events/371becb7-8bf6-4c57-b4b9-1304045f5f87","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"8c477b72-0283-4add-82a0-09355fa93b30","title":"Die Starre überwinden - Mit DDD zu geschmeidigem Code","subtitle":null,"slug":"bob11-2025-mit-ddd-zu-geschmeidigem-code-rauch-guenther","link":"https://bobkonf.de/2025/rauch-guenther.html","description":"In den letzten Jahren hat das Strategische Design aus DDD einen enormen Zuspruch gewonnen, was auf jeden Fall gut und wichtig ist. Aber das bedeutet nicht, dass wir das Taktische Design von DDD vernachlässigen sollten.\n          \n          Für diesen Vortrag beginnen wir mit einer starren und fragilen Codebase, wie sie häufig im Laufe der Jahre entsteht. Wir führen Schritt für Schritt Refactorings durch, wobei wir den Supple Design Strategien (supple: englisch für “geschmeidig”) aus DDD sowie anderen bekannten Refactoring-Patterns folgen. Dabei führen wir Value Objects, Entities und weitere Elemente des Taktischen Designs nach und nach ein. Dies erlaubt es uns, die Codebase klar zu strukturieren, so dass Änderungen schnell und leicht möglich sind und das Arbeiten mit dem Code wieder Freude bereitet.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"deu","persons":["Nicole Rauch","Martin Günther"],"tags":["16","2025","bob2025","Talk","Talks #2","bob2025-deu","BOB","BOB Konferenz","Day 1"],"view_count":243,"promoted":false,"date":"2025-03-14T17:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-04-05T08:45:04.042+02:00","length":2850,"duration":2850,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/16-8c477b72-0283-4add-82a0-09355fa93b30.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/16-8c477b72-0283-4add-82a0-09355fa93b30_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/16-8c477b72-0283-4add-82a0-09355fa93b30.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/16-8c477b72-0283-4add-82a0-09355fa93b30.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-mit-ddd-zu-geschmeidigem-code-rauch-guenther","url":"https://api.media.ccc.de/public/events/8c477b72-0283-4add-82a0-09355fa93b30","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"c544de9b-2c86-4483-9354-5f8b1a610e3d","title":"Against the (formal) method?","subtitle":null,"slug":"bob11-2025-against-the-formal-method-bailly","link":"https://bobkonf.de/2025/bailly.html","description":"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 come of age and embrace formal methods? And, perhaps more importantly, is it desirable? Based on my experience developing software over the past 30 years, in a wide array of environments, some of which even using formal methods, and some theoretical, epistemological and philosophical references, I try to answer those questions in a more nuanced way. This presentation puts formal methods (FM) in perspective within the broader domain of software development, as yet another tool to deliver value. I shall present my experience working with FM, identify various shortcomings and issues of FM in the software development lifecycle, and suggest ways to mitigate those issues in order to help teams benefit the most from FM.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Arnaud Bailly"],"tags":["12","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":138,"promoted":false,"date":"2025-03-14T13:50:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-03-14T10:45:05.881+01:00","length":2761,"duration":2761,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/12-c544de9b-2c86-4483-9354-5f8b1a610e3d.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/12-c544de9b-2c86-4483-9354-5f8b1a610e3d_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/12-c544de9b-2c86-4483-9354-5f8b1a610e3d.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/12-c544de9b-2c86-4483-9354-5f8b1a610e3d.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-against-the-formal-method-bailly","url":"https://api.media.ccc.de/public/events/c544de9b-2c86-4483-9354-5f8b1a610e3d","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]},{"guid":"30edb40d-a03e-4155-96ed-1155848b3337","title":"Service-less communication: is it possible?","subtitle":null,"slug":"bob11-2025-service-less-communication-sypytkowski","link":"https://bobkonf.de/2025/sypytkowski.html","description":"This talk is going to focus on peer-to-peer apps. We’ll try to answer the question: how to build an app that will enable information exchange between our clients without a need to maintain heavy backend infrastructure? Is it even possible? We’ll walk through different ways of data exchange, from local to wide arena networks, and how to make them work for us.\n\nLicensed to the public under https://creativecommons.org/licenses/by/3.0/de","original_language":"eng","persons":["Bartosz Sypythkowski"],"tags":["10","2025","bob2025","Talk","Talks #2","bob2025-eng","BOB","BOB Konferenz","Day 1"],"view_count":102,"promoted":false,"date":"2025-03-14T11:05:00.000+01:00","release_date":"2025-04-29T00:00:00.000+02:00","updated_at":"2026-02-24T13:15:06.502+01:00","length":2783,"duration":2783,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2025/10-30edb40d-a03e-4155-96ed-1155848b3337.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2025/10-30edb40d-a03e-4155-96ed-1155848b3337_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2025/10-30edb40d-a03e-4155-96ed-1155848b3337.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2025/10-30edb40d-a03e-4155-96ed-1155848b3337.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob11-2025-service-less-communication-sypytkowski","url":"https://api.media.ccc.de/public/events/30edb40d-a03e-4155-96ed-1155848b3337","conference_title":"BOB Konferenz 2025","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2025","related":[]}]}