{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.3.0.dev0", "url": "https://pretalx.com"}, "schedule": {"url": "https://pretalx.com/bob-2025/schedule/", "version": "0.2", "base_url": "https://pretalx.com", "conference": {"acronym": "bob-2025", "title": "BOB 2025", "start": "2025-03-14", "end": "2025-03-14", "daysCount": 1, "timeslot_duration": "00:05", "time_zone_name": "Europe/Berlin", "colors": {"primary": "#E13D62"}, "rooms": [{"name": "Talks A", "slug": "3754-talks-a", "guid": "999c2356-9f55-55c6-af78-ba2dfc6cde58", "description": null, "capacity": 80}, {"name": "Talks B", "slug": "3755-talks-b", "guid": "89a2e6f7-56c5-57ec-933c-76fbe0714071", "description": null, "capacity": 80}, {"name": "Tutorials A", "slug": "3756-tutorials-a", "guid": "e1d4b943-0eb6-5760-8a67-bb6ff4e66a7c", "description": null, "capacity": 12}, {"name": "Tutorials B", "slug": "3757-tutorials-b", "guid": "411bdcc4-badf-5056-b415-24d8ac6769f9", "description": null, "capacity": 12}], "tracks": [{"name": "Talks", "slug": "5111-talks", "color": "#000000"}, {"name": "Tutorials", "slug": "5112-tutorials", "color": "#000000"}], "days": [{"index": 1, "date": "2025-03-14", "day_start": "2025-03-14T04:00:00+01:00", "day_end": "2025-03-15T03:59:00+01:00", "rooms": {"Talks A": [{"guid": "375c8006-bbfa-5f48-9016-0ae800592d63", "code": "JZGV3B", "id": 58773, "logo": null, "date": "2025-03-14T10:15:00+01:00", "start": "10:15", "end": "2025-03-14T11:00:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-58773-ein-weg-zu-hoher-zuverlassigkeit-von-systemen-eines-netzbetreiber", "url": "https://pretalx.com/bob-2025/talk/JZGV3B/", "title": "Ein Weg zu hoher Zuverl\u00e4ssigkeit von Systemen eines Netzbetreiber", "subtitle": "", "track": null, "type": "Talk", "language": "de", "abstract": "Die Netze BW als Verteilnetzbetreiber f\u00fcr Strom, Gas und Wasser in Baden-W\u00fcrttemberg entwickelt und betreibt Software f\u00fcr den Betrieb von Netzen. Als Teil kritischer Infrastruktur des \u00f6ffentlichen Lebens waren die Anforderung an Zuverl\u00e4ssigkeit immer sehr hoch. Kombiniert mit der zunehmenden Komplexit\u00e4t der Energiewende m\u00fcssen immer mehr und immer komplexere Prozesse abgebildet und mittels Software realisiert werden.\n\nIn diesem Vortag 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\u00e4ssigkeit der Systeme gesteigert wurde und wie es noch weiter gesteigert werden muss.\n\nDazu fordert die Energiewende eine h\u00f6here Automatisierung von kritischen, ins Netz eingreifenden Prozessen, was zus\u00e4tzlich die h\u00f6chste Sicherheitsbewertung der Software mit sich bringt. Der Vortrag gibt einen Ausblick, was hier mittelfristig erforderlich sein wird.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZWPXWN", "name": "Tim Digel", "avatar": "https://pretalx.com/media/avatars/ZWPXWN_ZsQZPeP.webp", "biography": "Tim Digel ist Diplom-Mathematiker und sein ganzes Erwachsenenleben in der Softwareindustrie t\u00e4tig. Er kann kein Java und befasste sich nahezu ausschlie\u00dflich mit funktionalen Programmiersprachen. Tim arbeitet als Softwarearchitekt und DevOps-Spezialist bei der Netze BW GmbH.", "public_name": "Tim Digel", "guid": "3de056da-73bc-5e9c-874e-c22774a41650", "url": "https://pretalx.com/bob-2025/speaker/ZWPXWN/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/JZGV3B/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/JZGV3B/", "attachments": []}, {"guid": "4eb1a2f4-6cb0-5a96-b490-b31bfce4e370", "code": "ECYGYN", "id": 56664, "logo": null, "date": "2025-03-14T11:05:00+01:00", "start": "11:05", "end": "2025-03-14T11:50:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-56664-beyond-the-basics-of-lsp-advanced-ide-services-for-ocaml", "url": "https://pretalx.com/bob-2025/talk/ECYGYN/", "title": "Beyond the Basics of LSP: Advanced IDE services for OCaml", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "[LSP](https://microsoft.github.io/language-server-protocol/) has greatly standardised the behaviour of IDEs, in a good direction: we can provide, _de-facto_, decent language support in editors supporting LSP. \nBut it also imposes a standardisation that often assumes that all languages behave like TypeScript. In this presentation, I'll introduce you to [Merlin](https://github.com/ocaml/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 (_\u00e0 la hoogle_, directly in the IDE), type enclosures etc.).  \n\nThe 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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QYHWP3", "name": "Xavier Van de Woestyne", "avatar": "https://pretalx.com/media/avatars/QYHWP3_O147fsw.webp", "biography": "I am an OCaml Senior Software Engineer at [Tarides](https://tarides.com) working in the Editor team (on Merlin and OCaml LSP). I a m very interested in Functional Programming, type system and Languages tooling.", "public_name": "Xavier Van de Woestyne", "guid": "d072f781-8c6b-52c1-a246-46ddccf431f8", "url": "https://pretalx.com/bob-2025/speaker/QYHWP3/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/ECYGYN/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/ECYGYN/", "attachments": []}, {"guid": "ef9552ae-e675-5003-b94e-bebc397cec46", "code": "EQY3S3", "id": 58757, "logo": null, "date": "2025-03-14T13:00:00+01:00", "start": "13:00", "end": "2025-03-14T13:45:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-58757-developing-dsls-a-look-at-three-practical-strategies-with-real-world-examples", "url": "https://pretalx.com/bob-2025/talk/EQY3S3/", "title": "Developing DSLs: A Look at Three Practical Strategies with Real-World Examples", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\nEach 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\u2019ll also draw examples from fields such as flight control systems, signal processing and more.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9VGMZ8", "name": "Ziyang Liu", "avatar": "https://pretalx.com/media/avatars/9VGMZ8_46wOObb.webp", "biography": "I lead the Plutus team at Input Output Global, focused on developing smart contract languages for the Cardano blockchain and the accompanying compilers, interpreters, libraries, and costing tools. All of our work is open source and freely accessible at https://github.com/IntersectMBO/plutus.", "public_name": "Ziyang Liu", "guid": "c7723752-05f5-5fbb-83db-c5efbbb6259d", "url": "https://pretalx.com/bob-2025/speaker/9VGMZ8/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/EQY3S3/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/EQY3S3/", "attachments": []}, {"guid": "6d1d5d57-9413-5dd9-8c58-a855bf939a3c", "code": "PJVCXA", "id": 59004, "logo": null, "date": "2025-03-14T13:50:00+01:00", "start": "13:50", "end": "2025-03-14T14:35:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-59004-a-language-server-for-your-dsl-for-free", "url": "https://pretalx.com/bob-2025/talk/PJVCXA/", "title": "A Language Server for your DSL for free", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Domain-specific languages (DSL) are well-studied tools for solving problems specific to a domain.\nEspecially in the Haskell Community, DSLs are quite popular due to parser-combinators and succinct definitions of abstract syntax trees (AST).\nHowever, it is often difficult to integrate a particular DSL into any modern IDE.\nThis causes a DSL to be harder to use in practice and negatively affects productivity.\nSometimes, developers combat this by implementing plugins that introduce syntax highlighting specific to an editor.\nHowever, 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\nIn 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.\nWe discuss how to approach the design and implementation of a DSL such that we get Language Server support (almost) for free.\nIn particular, we show how to provide advanced IDE features, such as semantics-aware syntax highlighting or automatic refactorings, with minimal effort.\nTo implement this, we augment the AST to retain additional information about the sources, such as parentheses, comments, and whitespace, in a non-intrusive way.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "R9EXF8", "name": "Andres L\u00f6h", "avatar": "https://pretalx.com/media/avatars/R9EXF8_Ua2BGG2.webp", "biography": "Andres L\u00f6h is a Haskell consultant and co-owner of Well-Typed LLP. He is based in Regensburg, Germany. He started using Haskell in 1997, when being an undergraduate student of mathematics in Konstanz, and has been an enthusiastic functional programmer ever since. Andres obtained a PhD in Computer Science from Utrecht University in 2004, on extending the Haskell language with capabilities for datatype-generic programming. After having been a university lecturer for several years, he joined Well-Typed in 2010.\n\nAndres is very interested in applying functional programming to real-world problems, and in particular in datatype-generic programming, staging and metaprogramming, domain-specific languages, (dependent) type systems, and proving programs correct.", "public_name": "Andres L\u00f6h", "guid": "1f6e1b44-dddd-5e4f-9e18-62bc8ab6b513", "url": "https://pretalx.com/bob-2025/speaker/R9EXF8/"}, {"code": "D9JKD9", "name": "Hannes Siebenhandl", "avatar": "https://pretalx.com/media/avatars/D9JKD9_alSe2rv.webp", "biography": "Hannes Siebenhandl is a Haskell consultant with a special interest in IDEs and build tools. He completed his master's degree at the Vienna University of Technology in 2024 on the topic of algebraic effect systems and joined Well-Typed LLP soon after.\nIn 2018, Hannes first discovered his passion for developer tools that boost the productivity of every-day programming, such as IDEs and build tools.\nSince then, he has been involved with the development and maintenance of the Haskell Language Server and multiple IDE-adjacent projects.", "public_name": "Hannes Siebenhandl", "guid": "8f2e9db5-736e-5c70-87a3-4d7b84063274", "url": "https://pretalx.com/bob-2025/speaker/D9JKD9/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/PJVCXA/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/PJVCXA/", "attachments": []}, {"guid": "8b5af600-da12-52dc-bff5-41ebbf9034b6", "code": "ML8CAV", "id": 58164, "logo": null, "date": "2025-03-14T15:00:00+01:00", "start": "15:00", "end": "2025-03-14T15:45:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-58164-coverage-guided-property-based-testing", "url": "https://pretalx.com/bob-2025/talk/ML8CAV/", "title": "Coverage-guided property-based testing", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Consider the following example, where an error is triggered if some input\nbytestring starts with \"bad!\":\n\n    if input[0] == 'b' {\n        if input[1] == 'a' {\n            if input[2] == 'd' {\n                if input[3] == '!' {\n                    error \"input must not be bad!\"\n                }\n            }\n        }\n    }\n\nIf we were to try to find this error using vanilla property-based testing,\nwhere we restrict the input strings to always be of length four, then it would\ntake about (2^8)^4 = 2^32 (about 4 billion) tries.\n\nUsing coverage-guidance we keep track of inputs that resulted in increased\ncoverage. So, for example, if we generate the bytestring \"b\" then we get\nfurther into the nested ifs, and so we take note of that and start generating\nlonger bytestrings that start with \"b\" and see if we can get further coverage,\netc. By building on previous successes in getting more coverage, we can\neffectively reduce the problem to only need (2^8)*4 = 2^10 = 1024 tries.\n\nIn order words coverage-guidance turns an exponential problem into a polynomial\nproblem!\n\nIn this talk I'll show how coverage-guidance can be added to the first version\nof QuickCheck, that can be found in the appendix of the original paper, in\nabout 35 lines of code.", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "DKR9WL", "name": "Stevan A", "avatar": null, "biography": "I'm interested in how we can apply (semi-)formal methods to software development in order to make it easier to build reliable, scalable and maintainable computer systems.", "public_name": "Stevan A", "guid": "1ca38719-5084-5981-b8d3-60f662bc754c", "url": "https://pretalx.com/bob-2025/speaker/DKR9WL/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/ML8CAV/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/ML8CAV/", "attachments": []}, {"guid": "d4321230-4d58-5d12-9326-d310b9e62fda", "code": "REEJVM", "id": 58636, "logo": null, "date": "2025-03-14T15:50:00+01:00", "start": "15:50", "end": "2025-03-14T16:35:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-58636-functional-data-structures-in-swift", "url": "https://pretalx.com/bob-2025/talk/REEJVM/", "title": "Functional data structures in Swift", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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 \u2014 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\nFor 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\nIn 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\u2019s memory management system. Finally, I will demonstrate how you can define your own copy-on-write large value types.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDCXAT", "name": "Manuel Chakravarty", "avatar": "https://pretalx.com/media/avatars/CDCXAT_3rCqIGQ.webp", "biography": "Manuel M T Chakravarty is a researcher and software developer with interests in programming languages, cryptography, and programming environments. He developed the interactive development environment Haskell for Mac \u2014 one of the first Swift apps on the Mac App Store. He is now working on the successor of Haskell for Mac, which leverages SwiftUI for cross-platform development. His current research work lies at the intersection of programming languages and cryptography with applications to open blockchains. Recent contributions cover smart contract and native asset support for UTxO ledgers, such as Cardano, as well as multi-party state channels. He has also published extensively on programming languages, compilers, and high-performance computing. He contributed to both the design and implementation of the Haskell programming language (most notably, type families, associated types, and the foreign function interface) as well as several Haskell tools and open source libraries. He is currently a functional programming expert at Tweag and a researcher & architect of smart contract technology at IOG. Before that he was an Associate Professor at UNSW Sydney.", "public_name": "Manuel Chakravarty", "guid": "05f79778-4625-59bb-b1c0-0114319d8f16", "url": "https://pretalx.com/bob-2025/speaker/CDCXAT/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/REEJVM/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/REEJVM/", "attachments": []}, {"guid": "3afdc8d6-1d8d-5dcc-b05b-cde06c67a60d", "code": "3V3D9V", "id": 56674, "logo": null, "date": "2025-03-14T17:00:00+01:00", "start": "17:00", "end": "2025-03-14T17:45:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-56674-property-based-testing-the-past-the-present-and-the-future", "url": "https://pretalx.com/bob-2025/talk/3V3D9V/", "title": "Property-Based Testing: The Past, The Present, and The Future", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\u2019ll present to you the challenges that have been solved, and the ones that aren\u2019t. I\u2019ll present you with the latest advances that haven\u2019t 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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3ZAYAX", "name": "Alperen Keles", "avatar": "https://pretalx.com/media/avatars/3ZAYAX_Q1OCkPH.webp", "biography": "I am currently a Ph.D. student at University of Maryland,  College Park advised by Leonidas Lampropoulos. My research focuses on Property-Based Testing, Fuzzing, and Semantics of Documents. I like to write on my personal blog. I also like to play chess, and do the occasional side projects.", "public_name": "Alperen Keles", "guid": "9b3c1a92-e381-5e95-849a-0fd4a227fda8", "url": "https://pretalx.com/bob-2025/speaker/3ZAYAX/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/3V3D9V/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/3V3D9V/", "attachments": []}, {"guid": "6d4da81b-b392-5bdb-9fab-dd3da8ddb365", "code": "A3VRKH", "id": 58600, "logo": null, "date": "2025-03-14T17:50:00+01:00", "start": "17:50", "end": "2025-03-14T18:35:00+01:00", "duration": "00:45", "room": "Talks A", "slug": "bob-2025-58600-the-microservices-problem-no-one-warned-us-about-and-how-you-can-avoid-it", "url": "https://pretalx.com/bob-2025/talk/A3VRKH/", "title": "The Microservices Problem No One Warned Us About (And How You Can Avoid It)", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\nGet an honest glimpse into our early microservices struggles \u2013 how our initial approaches led to chaos, and the breakthrough architectural pattern that changed everything.\n\nThis talk isn\u2019t just a war story; it\u2019s 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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YMGQ9T", "name": "Ivett \u00d6rd\u00f6g", "avatar": "https://pretalx.com/media/avatars/YMGQ9T_T3ZG8xk.webp", "biography": "Ivett \u00d6rd\u00f6g is a public speaker and the creator of Lean Poker, a gamified DevOps training tool that teaches agile, lean and continuous deployment practices to developers. She is based in Bavaria, Germany and has over 25 years of professional experience in software development and 15 in leadership. She is passionate about innovation, collaboration and learning, and enjoys sharing her knowledge and insights with others.", "public_name": "Ivett \u00d6rd\u00f6g", "guid": "bc604f91-4c31-5b9e-a550-606adb0dcd20", "url": "https://pretalx.com/bob-2025/speaker/YMGQ9T/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/A3VRKH/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/A3VRKH/", "attachments": []}], "Talks B": [{"guid": "68f8c5cc-4630-59a2-9db9-1b22ab4e22d6", "code": "JKVX7K", "id": 58962, "logo": null, "date": "2025-03-14T10:15:00+01:00", "start": "10:15", "end": "2025-03-14T11:00:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58962-abstraction-and-program-design-or-the-power-of-parametricity", "url": "https://pretalx.com/bob-2025/talk/JKVX7K/", "title": "Abstraction and program design, or the power of parametricity", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\nA 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.\n\nThis 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\nI 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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "R9EXF8", "name": "Andres L\u00f6h", "avatar": "https://pretalx.com/media/avatars/R9EXF8_Ua2BGG2.webp", "biography": "Andres L\u00f6h is a Haskell consultant and co-owner of Well-Typed LLP. He is based in Regensburg, Germany. He started using Haskell in 1997, when being an undergraduate student of mathematics in Konstanz, and has been an enthusiastic functional programmer ever since. Andres obtained a PhD in Computer Science from Utrecht University in 2004, on extending the Haskell language with capabilities for datatype-generic programming. After having been a university lecturer for several years, he joined Well-Typed in 2010.\n\nAndres is very interested in applying functional programming to real-world problems, and in particular in datatype-generic programming, staging and metaprogramming, domain-specific languages, (dependent) type systems, and proving programs correct.", "public_name": "Andres L\u00f6h", "guid": "1f6e1b44-dddd-5e4f-9e18-62bc8ab6b513", "url": "https://pretalx.com/bob-2025/speaker/R9EXF8/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/JKVX7K/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/JKVX7K/", "attachments": []}, {"guid": "c75e3207-83fa-5540-a649-9c2c3b0b7e6b", "code": "DX3KNJ", "id": 57352, "logo": null, "date": "2025-03-14T11:00:00+01:00", "start": "11:00", "end": "2025-03-14T11:45:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-57352-service-less-communication-is-it-possible", "url": "https://pretalx.com/bob-2025/talk/DX3KNJ/", "title": "Service-less communication: is it possible?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NCKCVG", "name": "Bartosz Sypytkowski", "avatar": "https://pretalx.com/media/avatars/NCKCVG_iwkU32M.webp", "biography": "An open source software contributor for over 10 years. In the past core member of Akka.NET and F# GraphQL server. Currently: maintainer of Yrs - a library used for building collaborative, local-first applications.", "public_name": "Bartosz Sypytkowski", "guid": "361993d1-064c-5bd8-b4d0-76e055e3bd51", "url": "https://pretalx.com/bob-2025/speaker/NCKCVG/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/DX3KNJ/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/DX3KNJ/", "attachments": []}, {"guid": "7a5f1326-c656-55ca-853a-511057067cbb", "code": "XLVJTD", "id": 58556, "logo": null, "date": "2025-03-14T13:00:00+01:00", "start": "13:00", "end": "2025-03-14T13:45:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58556-correct-by-construction-concurrent-programs-in-idris-2", "url": "https://pretalx.com/bob-2025/talk/XLVJTD/", "title": "Correct by Construction Concurrent Programs in Idris 2", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Concurrent programs destructively updating shared memory are\nnotoriously hard to get right. Concurrent separation logics\nare logics with built-in notions of e.g. ownership of memory\nregions, concurrent accesses, and lock mechanisms. They give\nexperts a way to verify a posteriori that complex concurrent\nimperative programs hopefully abide by their formal\nspecification.\n\nWe will see how next generation languages let us get rid of\na posteriori verification in favour of a correct-by-construction\napproach whereby the program is interactively built in a\nspecification-respecting dialogue with the compiler.\nFor this presentation we will be using [Idris 2](https://www.idris-lang.org/),\na general purpose functional language with an expressive\ntype system combining dependent types to enforce complex\ninvariants and linear logic to track resource usage.\n\nWe will demonstrate how a simple library can capture ideas\nfrom concurrent separation logic by providing proof-carrying\nconcurrent primitives. These make it impossible to write into\nmemory one does not own or to release a lock without having\nproven that its associated invariant has been re-established.\nThey also guarantee that whatever is read from the shared\nmemory is invariant-respecting.\n\nThis will culminate in worked out example e.g. the definition\nof map-reduce primitives repeatedly and safely breaking down\na buffer into chunks that can be processed concurrently\nand/or a na\u00efve bank with concurrent cash machines.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "UZJEGS", "name": "Guillaume Allais", "avatar": "https://pretalx.com/media/avatars/UZJEGS_4BiIyym.webp", "biography": "Guillaume Allais is a lecturer in computer science building trustworthy systems, and developing the languages, programming patterns, libraries, and tools that make it easier to develop such systems in an interactive manner. \n\nHe is a core contributor to various dependently typed languages and their standard libraries, and has written extensively about type-driven partial evaluation, generic programming, correct-by-construction programming, and the careful runtime-representation of invariant-rich data,", "public_name": "Guillaume Allais", "guid": "0e9594d9-beec-5486-8985-4e42f6fbca14", "url": "https://pretalx.com/bob-2025/speaker/UZJEGS/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/XLVJTD/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/XLVJTD/", "attachments": []}, {"guid": "a41ba0ae-9869-593d-a31c-d5a6547f1d57", "code": "BSMNZP", "id": 58743, "logo": null, "date": "2025-03-14T13:50:00+01:00", "start": "13:50", "end": "2025-03-14T14:35:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58743-against-the-formal-method", "url": "https://pretalx.com/bob-2025/talk/BSMNZP/", "title": "Against the (formal) method?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\u00a0link 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.\nBut 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? \nBased 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.\nThis 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.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PJYXZB", "name": "Arnaud Bailly", "avatar": "https://pretalx.com/media/avatars/PJYXZB_lWDCW6s.webp", "biography": "Arnaud has been developing software and helping teams develop software for nearly three decades, in various technologies, contexts and roles. He is interested in everything software-related with a peculiar passion for strongly-typed functional programming.", "public_name": "Arnaud Bailly", "guid": "59808687-ec3e-5694-b496-88a582a816c8", "url": "https://pretalx.com/bob-2025/speaker/PJYXZB/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/BSMNZP/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/BSMNZP/", "attachments": []}, {"guid": "3fac1739-eb91-5521-a1c4-b0ac2456ebb1", "code": "9FHZ7N", "id": 58719, "logo": null, "date": "2025-03-14T15:00:00+01:00", "start": "15:00", "end": "2025-03-14T15:45:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58719-four-fascinating-programming-languages-you-ve-probably-never-heard-of", "url": "https://pretalx.com/bob-2025/talk/9FHZ7N/", "title": "Four Fascinating Programming Languages You've Probably Never Heard Of", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "There\u2019s a world outside of Java and C#. Well, you know there is, because you know there's the dreadful PHP, there are JavaScript, TypeScript, Go, Kotlin, Scala and Swift.\nBut let's look at bit further. If you're interested in programming languages, you probably heard about Haskell with its pure functions and lazy evaluation. And about Rust, with it's ownership and borrowing based memory management. Let's skip even those and go just a tiny bit less mainstream, so you have something to think about over Easter.\nI'll show you four innovative programming languages and briefly introduce their concepts. And not silly ones like Whitespace or Brainf**k. Serious ones, pushing the boundaries, truly innovating. I won't name them now, to not spoil the surprise. I can't guarantee it, but I think there\u2019s a very good chance that there's going to be at least one you've never heard of, but that will capture your interest.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BGLNS7", "name": "Lutz H\u00fchnken", "avatar": "https://pretalx.com/media/avatars/BGLNS7_nnaSSnG.webp", "biography": "Lutz is the Head of Engineering Excellence at Upvest, a FinTech company in Berlin that aims to democratize investment. Previously, taking on roles with titles such as \"Head of Engineering\" or \"Chief Architect\", he lead the development of software for container shipping, online retailers, financial institutions, cruise ships' in-cabin entertainment, and others. His current focus is on event-driven architecture, highly available and scalable systems, domain-driven design, and the intersection of architecture and organization.", "public_name": "Lutz H\u00fchnken", "guid": "d7edfcf1-3075-5fdf-8ba9-fc48bb6508d1", "url": "https://pretalx.com/bob-2025/speaker/BGLNS7/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/9FHZ7N/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/9FHZ7N/", "attachments": []}, {"guid": "f8586753-3888-58e9-a7c2-bb3994bee828", "code": "8PZMED", "id": 58830, "logo": null, "date": "2025-03-14T15:50:00+01:00", "start": "15:50", "end": "2025-03-14T16:35:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58830-oop-is-dead-long-live-object-orientation", "url": "https://pretalx.com/bob-2025/talk/8PZMED/", "title": "OOP is dead, long live Object Orientation!", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "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\nunsafe type conversions, inheritance is not very good ad code reuse, and classes are not very good at being extensible.\n\nWhen 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 \u2013 in a good way! And in that sense, I believe that Object Orientation is actually a good and successful concept \u2013 just not on code level, but on a system and infrastructure level.\n\nIn this talk, we\u2019re going to explore the history of the term \u201cObject-Oriented\u201d, how that concept evolved, where it went wrong, and how to redeem it.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "39GCRV", "name": "Franz Thoma", "avatar": "https://pretalx.com/media/avatars/39GCRV_hGspH6f.webp", "biography": "Consultant at TNG Technology Consulting in Munich, Software Engineer and Product Owner (not simultaneously). Functional Programming and Haskell enthusiast. Playing around with compilers and domain specific languages both on the job and as a hobby. Interested in building and shaping software architecture, products and organizations.", "public_name": "Franz Thoma", "guid": "dd58872e-5af6-5143-b068-775722a5d1a7", "url": "https://pretalx.com/bob-2025/speaker/39GCRV/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/8PZMED/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/8PZMED/", "attachments": []}, {"guid": "f5f57f15-96ab-5942-85f1-033d3bc62d8c", "code": "ZZ9W9S", "id": 58466, "logo": null, "date": "2025-03-14T17:00:00+01:00", "start": "17:00", "end": "2025-03-14T17:45:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58466-between-monolith-and-microfrontends-advantages-of-a-modulithic-architecture-and-how-an-incremental-refactoring-can-succeed", "url": "https://pretalx.com/bob-2025/talk/ZZ9W9S/", "title": "Between Monolith and Microfrontends - Advantages of a modulithic architecture and how an incremental refactoring can succeed", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Based on my experience as Tech Lead, I recap the successful path my team took to modularise a monolithic React frontend - without micro frontends. The goal was to scale the software development of the frontend to multiple teams.\n\nStarting from a monolithic architecture and a Git Flow integration and deployment process, we modularised the code incrementally and also made significant progress towards Continuous Integration / Continuous Deployment (CI/CD).\n\nIt was important to never hinder the continuous development of new features therefore we favoured incremental refactorings over big bang approaches.\n\nThe technology-agnostic approach of the talk focuses on the principles of incremental refactoring. Particular attention is paid to creating the conditions that allow different teams to work on the same code base at the same time.\n\nWith this experience report, I want to encourage Tech Leads and Software Developers to approach refactorings incrementally and not to view architecture decisions in a binary way. You will also get tips on tooling and how to guide incremental refactoring organisationally.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "S7XFZA", "name": "Milena-Mercedes May", "avatar": "https://pretalx.com/media/avatars/S7XFZA_KNjhcDu.webp", "biography": "Trainer and Mentor for Software Engineering Leaders and Teams\n\nMilena\u2019s vision is to grow excellence in Software Engineering. She supports leadership to build high performing teams in Software Engineering organisations as a trainer and mentor for both leaders and their teams.\n\nMilena has more than a decade of experience working hands-on as a Software Engineer and about four years of experience as a software engineering leader at various companies, always keen on learning more about how agile mindset, principles and practices enable teams to succeed.\n\nDriven by her passion for learning, she\u2019s also teaching coding and Software Engineering at different universities.\nAs a founding member of the Digital Leadership Network she loves to drive this community forward.\n\nMilena lives in Hamburg, Germany, and loves to work remotely and internationally.", "public_name": "Milena-Mercedes May", "guid": "0f6b8145-f597-59c1-bca8-65c8436c0ea6", "url": "https://pretalx.com/bob-2025/speaker/S7XFZA/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/ZZ9W9S/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/ZZ9W9S/", "attachments": []}, {"guid": "b6a502c3-6e55-5835-bc0e-c67c10c51cd3", "code": "VTRKJH", "id": 58728, "logo": null, "date": "2025-03-14T17:50:00+01:00", "start": "17:50", "end": "2025-03-14T18:35:00+01:00", "duration": "00:45", "room": "Talks B", "slug": "bob-2025-58728-die-starre-uberwinden-mit-ddd-zu-geschmeidigem-code", "url": "https://pretalx.com/bob-2025/talk/VTRKJH/", "title": "Die Starre \u00fcberwinden - Mit DDD zu geschmeidigem Code", "subtitle": "", "track": null, "type": "Talk", "language": "de", "abstract": "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\u00e4ssigen sollten.\n\nF\u00fcr diesen Vortrag beginnen wir mit einer starren und fragilen Codebase, wie sie h\u00e4ufig im Laufe der Jahre entsteht. Wir f\u00fchren Schritt f\u00fcr Schritt Refactorings durch, wobei wir den Supple Design Strategien (supple: englisch f\u00fcr \u201cgeschmeidig\u201d) aus DDD sowie anderen bekannten Refactoring-Patterns folgen. Dabei f\u00fchren 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 \u00c4nderungen schnell und leicht m\u00f6glich sind und das Arbeiten mit dem Code wieder Freude bereitet.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VYLGDB", "name": "Nicole Rauch", "avatar": "https://pretalx.com/media/avatars/VYLGDB_3yG1Vxv.webp", "biography": "Nicole Rauch ist freiberufliche Softwareentwicklerin und Softwareentwicklungscoach mit umfangreichem Hintergrund in Compilerbau und formalen Verifikationsmethoden. Neben Specification by Example, Domain-Driven Design, React/Redux und der Sanierung von Legacy Code Applikationen geh\u00f6rt auch funktionale Programmierung zu ihrem Repertoire. Des weiteren ist sie Fachbeiratsmitglied bzw. Mitorganisatorin mehrerer Konferenzen sowie einer Fachzeitschrift und Mitbegr\u00fcnderin der Softwerkskammer, einer deutschsprachigen User Community zum Thema Software Craftsmanship.", "public_name": "Nicole Rauch", "guid": "986e3f5e-418c-5f65-b5eb-3f90c43a1eac", "url": "https://pretalx.com/bob-2025/speaker/VYLGDB/"}, {"code": "E9UQSP", "name": "Martin G\u00fcnther", "avatar": "https://pretalx.com/media/avatars/E9UQSP_fHVxqUz.webp", "biography": "Martin G\u00fcnther ber\u00e4t und unterst\u00fctzt seit vielen Jahren Unternehmen bei der Umsetzung ihrer Softwareprojekte als Softwarearchitekt und Agiler Coach. Dabei hat er immer das gro\u00dfe Ganze im Blick und sucht nach den Grenzen, die die Dom\u00e4ne auf nat\u00fcrliche Weise in konzeptionelle Einheiten unterteilen, um aus diesen Teilen robuste und effiziente Systeme zu bauen. Dar\u00fcber hinaus hilft ihm seine profunde Erfahrung in der Moderation von Workshops, Gruppen in ihrem Erkenntnis- und Entscheidungsprozess zu begleiten und allen Teammitgliedern einen wertsch\u00e4tzenden und effektiven Umgang zu erm\u00f6glichen.", "public_name": "Martin G\u00fcnther", "guid": "7c630c37-64e4-5eee-b699-37d1f73beb53", "url": "https://pretalx.com/bob-2025/speaker/E9UQSP/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/VTRKJH/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/VTRKJH/", "attachments": []}], "Tutorials A": [{"guid": "b159850e-60b7-5bad-a35f-38f09da67bca", "code": "MFGDRF", "id": 58667, "logo": null, "date": "2025-03-14T10:15:00+01:00", "start": "10:15", "end": "2025-03-14T11:45:00+01:00", "duration": "01:30", "room": "Tutorials A", "slug": "bob-2025-58667-embracing-declarative-frontend-development-with-signals-and-streams", "url": "https://pretalx.com/bob-2025/talk/MFGDRF/", "title": "Embracing Declarative Frontend Development with Signals and Streams", "subtitle": "", "track": null, "type": "Tutorial", "language": "en", "abstract": "The recent shift toward signals in frontend development is redefining how we approach state management, making declarative programming more practical and accessible. By embracing signals, developers can now build applications that are more predictable, maintainable, and less prone to unintended state changes. This presentation dives deep into the principles and practices of this declarative approach, contrasting it with previous imperative patterns and demonstrating how signal-based architectures lead to cleaner and more manageable code.\n\nThrough a series of practical examples, we\u2019ll explore the benefits of signals for creating a stable, unchanging state in applications, reducing unexpected behaviors and improving readability. We\u2019ll also examine common pitfalls developers face when working with signals and how to avoid them, enabling participants to make the most of this powerful tool. Finally, we\u2019ll push the boundaries of declarative design by integrating signals with reactive streams, demonstrating how to harness the full power of functional programming with RxJS.\n\nJoin us to discover how signals and streams can transform your approach to frontend development, leading to applications that are not only robust and scalable but also easier to reason about and maintain.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8NQQQZ", "name": "Mischa Koischwitz", "avatar": "https://pretalx.com/media/avatars/8NQQQZ_Tyl7Jeq.webp", "biography": "Mischa Koischwitz is a frontend developer with a strong focus on frontend architecture.\nHis passion for functional programming began with his master\u2019s thesis on functional reactive programming, where he explored the application of these principles in modern web development. This research sparked a lasting interest in declarative programming.\nSince then, Mischa has honed a specialized approach to building frontends that emphasizes clean, maintainable code and robust connections between data and user interfaces.", "public_name": "Mischa Koischwitz", "guid": "65ed44ea-f797-57a4-862c-89d0d853f42b", "url": "https://pretalx.com/bob-2025/speaker/8NQQQZ/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/MFGDRF/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/MFGDRF/", "attachments": []}, {"guid": "b1daa3da-c72b-5f17-82c1-7ad91365de76", "code": "73DE7M", "id": 58324, "logo": null, "date": "2025-03-14T13:00:00+01:00", "start": "13:00", "end": "2025-03-14T14:30:00+01:00", "duration": "01:30", "room": "Tutorials A", "slug": "bob-2025-58324-resiliente-systeme-entwickeln-mit-elixir-fehlertoleranz-von-grund-auf", "url": "https://pretalx.com/bob-2025/talk/73DE7M/", "title": "Resiliente Systeme entwickeln mit Elixir: Fehlertoleranz von Grund auf", "subtitle": "", "track": null, "type": "Tutorial", "language": "de", "abstract": "In diesem Tutorial wird praxisnah vermittelt, wie mit Elixir stabile und fehlertolerante Systeme gestaltet werden k\u00f6nnen. Zu Beginn nehmen wir das GenServer-Modul und dessen Funktion im Umgang mit Zustand und Nebenl\u00e4ufigkeit genauer unter die Lupe. Anschlie\u00dfend setzen wir ein einfaches, fehleranf\u00e4lliges Prozessmodell um, das bewusst Schwachstellen enth\u00e4lt, die typisch f\u00fcr reale Produktionsumgebungen sind und die die Stabilit\u00e4t eines Systems beeintr\u00e4chtigen k\u00f6nnen.\n\nNachdem typische Ausfallszenarien identifiziert sind, optimieren wir das Prozessmodell durch den gezielten Einsatz von Supervisor-Strategien. So wird nach und nach eine robuste Struktur aufgebaut, die Fehler isoliert und Prozesse bei Bedarf automatisch neu startet. Durch den Einsatz von Supervision Trees und kontrollierten Neustarts l\u00e4sst sich ein resilientes System entwickeln, das auch unter hoher Last zuverl\u00e4ssig l\u00e4uft und im Ernstfall eine selbstheilende Architektur aufweist.\n\nDieses Tutorial richtet sich an Entwickler*innen, die das robuste Systemdesign mit Elixir kennenlernen m\u00f6chten und nachvollziehen wollen, wie man stabile Anwendungen f\u00fcr anspruchsvolle Einsatzbereiche konzipiert.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "GQDUXF", "name": "Kaan", "avatar": "https://pretalx.com/media/avatars/GQDUXF_1pKUDDm.webp", "biography": "Kaan ist Softwarearchitekt bei der Active Group GmbH in T\u00fcbingen, die Software ausschlie\u00dflich mit funktionaler Programmierung entwickelt. Wenn Kaan nicht gerade in einem Clojure-Projekt mit einem Lisp-Dialekt zugange ist, werkelt er in Emacs Lisp an seiner Emacs-Konfig herum.\n\nZudem h\u00e4lt Kaan Schulungen zur funktionalen Programmierung.", "public_name": "Kaan", "guid": "e6d5bbc7-28aa-558f-ad99-0846e817d4ec", "url": "https://pretalx.com/bob-2025/speaker/GQDUXF/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/73DE7M/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/73DE7M/", "attachments": []}, {"guid": "758298be-0b4b-5b05-8950-81b6906c3e0e", "code": "L8AFUY", "id": 58176, "logo": null, "date": "2025-03-14T17:00:00+01:00", "start": "17:00", "end": "2025-03-14T18:30:00+01:00", "duration": "01:30", "room": "Tutorials A", "slug": "bob-2025-58176-haskell-mobile-development", "url": "https://pretalx.com/bob-2025/talk/L8AFUY/", "title": "Haskell Mobile development", "subtitle": "", "track": null, "type": "Tutorial", "language": "en", "abstract": "An introduction to Functional Reactive Programming and a tutorial on building Android, IOS or web apps using Haskell, nix and the Reflex FRP libraries.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "KPDMQH", "name": "Shane Hamilton", "avatar": "https://pretalx.com/media/avatars/KPDMQH_eZnkuhi.webp", "biography": "I am a Haskell developer at the Least Authority working on the opensource project tahoe-lafs and tahoe-lafs-mobile using Reflex-FRP.\n\nI am an active maintainer and contributor to tiny-wlhs a haskell wayland project intended to provide haskell bindings to wlroots.\n\nI volunteer in my free time building software and apps for local social enterprises.\n\nI am currently working on my own haskell frontend framework Moka that aims to be a much simpler approach to frontend development in haskell and leverage the new developments in the GHC JS backend.\n\nI grew up in Ireland but live in Valencia, I spend most of my free time, coding, reading, swimming or just playing football in the sun.", "public_name": "Shane Hamilton", "guid": "4ac2bd15-55e4-5646-8f1f-850659ce6172", "url": "https://pretalx.com/bob-2025/speaker/KPDMQH/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/L8AFUY/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/L8AFUY/", "attachments": []}], "Tutorials B": [{"guid": "067335bc-42a7-5b62-9b6e-06ab22f3831d", "code": "339QAA", "id": 58232, "logo": null, "date": "2025-03-14T10:15:00+01:00", "start": "10:15", "end": "2025-03-14T11:45:00+01:00", "duration": "01:30", "room": "Tutorials B", "slug": "bob-2025-58232-mad-tdd-der-wahnsinn-hat-methode", "url": "https://pretalx.com/bob-2025/talk/339QAA/", "title": "MAD-TDD - der Wahnsinn hat Methode", "subtitle": "", "track": null, "type": "Tutorial", "language": "en", "abstract": "\"Mob AI Driven Test Driven Development\" - Wir haben das Buzzword-Bingo gewonnen! Was sich hinter diesem illustren Begriff verbirgt ist eine Session, bei der wir gemeinsam (im Mob-Programming) die Schnittstelle aus AI-Helpern (Github-Copilot) und testgetriebener Entwicklung (TDD) erforschen. \n\nWas sollten wir generieren und was selbst schreiben? Wie sieht ein guter Workflow aus? Wie stellen wir Qualit\u00e4t sicher, wenn Code generiert wird?\n\nWir haben nicht auf alle diese Fragen definitive Antworten, aber bei dieser Session habt ihr die Gelegenheit, einige der Antworten selbst zu finden...", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XGFNKY", "name": "Marco Emrich", "avatar": "https://pretalx.com/media/avatars/XGFNKY_xH8kcZS.webp", "biography": "Marco ist Architekt und Consultant bei codecentric, Lehrbeauftragter an der FH Salzburg  und leidenschaftlicher Verfechter von SoftwareCraft & Qualit\u00e4t. Er h\u00e4lt regelm\u00e4\u00dfig Vortr\u00e4ge auf Konferenzen und ist Autor mehrerer Fachb\u00fccher. Wenn er mal nicht tief im Code vergraben ist, verliert er gerade gegen seine Kinder in analogen Brettspielen. Du kannst ihm unter linkedin.com/in/marco-emrich folgen ;)", "public_name": "Marco Emrich", "guid": "46d02224-aea8-5302-9961-f484e9549490", "url": "https://pretalx.com/bob-2025/speaker/XGFNKY/"}, {"code": "GXFV8E", "name": "Ferdinand Ade", "avatar": null, "biography": null, "public_name": "Ferdinand Ade", "guid": "b69979df-711c-5905-9654-f04f5490043f", "url": "https://pretalx.com/bob-2025/speaker/GXFV8E/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/339QAA/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/339QAA/", "attachments": []}, {"guid": "cbfcb440-7147-5be3-afe5-7f593272dc72", "code": "XDQYNR", "id": 58770, "logo": null, "date": "2025-03-14T13:00:00+01:00", "start": "13:00", "end": "2025-03-14T14:30:00+01:00", "duration": "01:30", "room": "Tutorials B", "slug": "bob-2025-58770-reproducible-data-science-with-clojure", "url": "https://pretalx.com/bob-2025/talk/XDQYNR/", "title": "Reproducible data science with Clojure", "subtitle": "", "track": null, "type": "Tutorial", "language": "en", "abstract": "Despite sophisticated tooling, data scientists still battle fundamental challenges day to day, like reproducibility, maintainability, and sharing their work. While traditional notebooks offer interactivity and quick feedback, they're plagued with hidden state dependencies, version control complexity, and production deployment hurdles. Converting notebook-based analyses into production-ready code often requires extensive refactoring, untangling implicit dependencies, debugging hidden state issues, and deciphering sparse documentation. And that's before tackling today's reality of excessively large, unstructured data dumps typically lacking any metadata or explanation, making it difficult to find useful data in the first place.\n\nClojure's data science ecosystem has been maturing rapidly in recent years. With it's stable toolkit, immutable data structures, and functional paradigm, Clojure offers a compelling alternative to traditional data science workflows. Imagine knowing exactly which version of your code produced which dataset. Or seamlessly deploying the same code you used in an exploratory analysis to production. And imagine that code also ran in a state of the art literate programming environment, but also simultaneously in your own, familiar IDE.\n\nThis hands-on workshop will introduce a new way of thinking about working with data, demonstrating how Clojure's libraries and tooling solve many pain points in current data science workflows.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BZ9KWJ", "name": "Kira Howe", "avatar": "https://pretalx.com/media/avatars/BZ9KWJ_ebjAmzb.webp", "biography": "Kira has been writing software since 2015, focusing on Clojure for the last 6 years. With a desire to pave the way for Clojure's broader recognition and adoption in the data science community, she's actively developing tools and guides aimed at showcasing the strengths of Clojure's data science toolkit. Her efforts are driven by a vision to broaden Clojure's adoption in the data world by improving the usability and effectiveness its core libraries. An advocate for Clojure's potential in the world of data science, she spent most of 2024 working exclusively on open source contributions to support and grow the Clojure data science ecosystem, supported by Clojurists Together and other generous sponsors.", "public_name": "Kira Howe", "guid": "017c5682-dc6d-598e-99f0-f7d8ec089b66", "url": "https://pretalx.com/bob-2025/speaker/BZ9KWJ/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/XDQYNR/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/XDQYNR/", "attachments": []}, {"guid": "b10050b4-9b07-5375-9354-e36a9669d550", "code": "NLZCUT", "id": 58814, "logo": null, "date": "2025-03-14T15:00:00+01:00", "start": "15:00", "end": "2025-03-14T16:30:00+01:00", "duration": "01:30", "room": "Tutorials B", "slug": "bob-2025-58814-schone-dokumentation-nur-mit-text", "url": "https://pretalx.com/bob-2025/talk/NLZCUT/", "title": "Sch\u00f6ne Dokumentation \u2013\u00a0nur mit Text", "subtitle": "", "track": null, "type": "Tutorial", "language": "de", "abstract": "Das Schreiben von Dokumentation ist ein leidiges Thema: Verschiedene Werkzeuge, die Zusammenarbeit im Team oder die Integration in den Arbeitsalltag hindern uns oft daran, \u00fcberhaupt damit zu beginnen.\n\nIn diesem Tutorial zeige ich Euch den Ansatz, den wir beim iSAQB f\u00fcr die Erstellung unserer Lehrpl\u00e4ne entwickelt haben. Ihr lernt die Grundlagen von asciidoc und asciidoctor kennen und arbeitet Schritt f\u00fcr Schritt an einer Verfeinerung des Erstellungsprozesses. Das Ziel: Am Ende haltet Ihr ein ansprechendes und professionell gestaltetes Dokument in den H\u00e4nden \u2013 und habt das Know-how, Eure eigene Dokumentation effizient zu erstellen.\n\nDas Tutorial richtet sich an alle, die technische Dokumentation einfacher, kollaborativer und effizienter gestalten m\u00f6chten. Es ist praxisnah und interaktiv \u2013 bringt also gerne Eure Fragen und Herausforderungen mit!", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "YJ7PSP", "name": "Benjamin Wolf", "avatar": "https://pretalx.com/media/avatars/YJ7PSP_VlU8noE.webp", "biography": "Benjamin Wolf arbeitet als Senior IT Consultant bei INNOQ. Seine Schwerpunkte liegen auf dem Modernisieren von Legacy-Systemen, Architekturdokumentation sowie Architekturberatung und -entwicklung. Dabei richtet er ein besonderes Augenmerk auf die Entwicklungsprozesse und die Einstellung zu Softwarequalit\u00e4t in Teams. \n\nBen ist Committer im arc42-Projekt, aktives Mitglied im iSAQB e. V. und dort aktuell stellvertretender Vorsitzender des Vereins.", "public_name": "Benjamin Wolf", "guid": "e7e06a18-1acc-5a74-b223-bc830ff56023", "url": "https://pretalx.com/bob-2025/speaker/YJ7PSP/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/NLZCUT/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/NLZCUT/", "attachments": []}, {"guid": "9b3cd0f4-9bf3-529b-a17a-c4e0fcdc58b6", "code": "N73UYU", "id": 58992, "logo": null, "date": "2025-03-14T17:00:00+01:00", "start": "17:00", "end": "2025-03-14T18:30:00+01:00", "duration": "01:30", "room": "Tutorials B", "slug": "bob-2025-58992-programming-with-weak-consistency-and-dartagnan", "url": "https://pretalx.com/bob-2025/talk/N73UYU/", "title": "Programming with weak consistency, and Dartagnan", "subtitle": "", "track": null, "type": "Tutorial", "language": "en", "abstract": "Programming with weak consistency guarantees is both a necessity and a pain. It is a necessity, because more and more platforms opt for weak consistency guarantees or even give the developer means of influencing the consistency guarantees. It is a pain, because well-known idioms for synchronization and communication break if the consistency guarantees are chosen too weak.\n\nSince its proposal in 2010, the programming language CAT has become the de-facto standard for formulating consistency guarantees. The Linux kernel, the languages C, C++, Java, and OCaml, the architectures of ARM, Intel, and IBM, as well as NVIDIA and Vulkan all have their consistency guarantees formulated in CAT. \n\nWe introduce Dartagnan, a formal verification tool that helps the programmer reason about the behavior of a given (C or SPIR-V) program relative to given consistency guarantees (formulated in CAT). Dartagnan checks whether all consistent executions meet all assertions in the code, reports bugs otherwise, or terminates without a conclusion. Dartagnan is a bounded model checker that unrolls the program into an acyclic form and translates it into logical constraints that are solved with an SMT solver, like Microsoft's Z3 or Yices. \n\nDartagnan has been instrumental in finding a bug in qspinlock, one of the major lock implementations of the Linux kernel, a development that ultimately lead to new consistency guarantees for the Linux kernel.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QAYEU9", "name": "Roland Meyer", "avatar": "https://pretalx.com/media/avatars/QAYEU9_V00S4nZ.webp", "biography": "Roland is a Professor at TU Braunschweig and Head of the Institute of Theoretical Computer Science. He is interested in verification techniques for concurrent programs that can be used at industrial scale.", "public_name": "Roland Meyer", "guid": "b6801f3f-e8fc-5636-801d-8b027e271c1f", "url": "https://pretalx.com/bob-2025/speaker/QAYEU9/"}], "links": [], "feedback_url": "https://pretalx.com/bob-2025/talk/N73UYU/feedback/", "origin_url": "https://pretalx.com/bob-2025/talk/N73UYU/", "attachments": []}]}}]}}}