Conversations about Software Engineering (CaSE) is an interview podcast for software developers and architects about Software Engineering and related topics. We release a new episode every three weeks.
Aino Corry on Better Tech Meetings
Aino explains to Sven what skills are required to make meetings more successful. They talk about
the different roles of meeting attendees. They continue with the thinking process to organize a
meeting: do we need it at all? What is the expected outcome? Who should be invited? How long
it should take? Do we need preparation for the attendees? Icebreakers? How do we craft an
agenda? Then they discuss how to steer a meeting as a meeting facilitator, how to engage
(quite) attendees and how to deal with negative people. Finally, they close with methods on how
to improve your moderator skills.
9/11/2023 • 1 hour, 9 minutes, 14 seconds
Angelo Veltens on Solid
Solid is a specification that lets people store their data securely in decentralized data stores called Pods. But why do we want to keep our data decentralized? What problems does Solid solve? In this episode, Angelo Veltens explains to Lucas Dohmen the advantages (but also potential disadvantages) of this project.
5/16/2022 • 44 minutes, 25 seconds
Mark Seemann on heuristics for software engineering
Stefan Tilkov talks to Mark Seemann about his book “Code that fits in your head”, heuristics about software engineering, and the role of craftspeople and engineers. They dive into three selected topics: Vertical slices, triangulation, and rhythm.
3/14/2022 • 1 hour, 43 seconds
Chris Richardson on Service Templates and Service Chassis
How do you enable a developer to quickly start the development of business logic of a new microservice without losing too much time on setting up everything else like monitoring, tracing, dependency management, security, configuration and much more. After the motivation, they move from service templates to service chassis, continue with governance as code and close with the possible need of product management skills to keep the chassis and the derived services current.
2/21/2022 • 1 hour, 23 seconds
Adam Tornhill on Software Design X-Rays
Sven Johann talks to Adam Tornhill about the link between how organizations write code and how teams work together. Adam Tornhill can make this link visible to help improve your team’s code and your organization's work. The interview is based on Adam's book "Software Design X-Rays".
1/17/2022 • 54 minutes, 32 seconds
Manuel Pais on Team Topologies
Sven Johann talks with Manuel Pais about the challenges of development teams being asked to be responsible for many topics like their problem domain, technology/programming languages, security, infrastructure and operations, UX, etc. Manuel explains what cognitive load is, which types of cognitive load exist and where it can be reduced and where not. They then discuss the four fundamental team topologies stream-aligned, enabling, platform and complicated subsystem: their benefit, how you should run those teams and which obstacles you need to overcome to be successful.
10/25/2021 • 1 hour, 2 minutes, 38 seconds
Michele Hansen on Customer Interviews and Deploying Empathy
Michele shares her journey in the software industry and how she got involved in product development. Customer interviews are not just something for product people -- Michele shares concrete ways that developers can get value from talking to their customers. She also shares a few tips for how to get involved with the customer research process and how to convince stakeholders of the value of the process (if necessary). They also discuss what the different between empathy, sympathy, and compassion. Empathy is understanding someone else's context and perspective. Since empathy is not something that comes naturally to everyone, Michele shares some tips about how to learn to become empathetic and become a better listener.
10/4/2021 • 49 minutes, 20 seconds
Eric Normand on Functional Thinking
In this conversation about software engineering, Lucas Dohmen talks with Eric Normand. Eric first explains the origins of his book, Grokking Simplicity. He explains how to think in calculations, actions, and data. Lucas asks him about real-life situations dealing with concurrency and how he would solve them thinking functionally. Then they dive deep into their conversation about immutability, type systems, and learning from other communities.
6/21/2021 • 1 hour, 36 minutes, 50 seconds
Nicolas Steenhout on Accessibility
In this episode, web accessibility expert Nicolas Steenhout talks to Stefan Tilkov about ways to improve web sites to make them usable by everyone. They cover the basics of web accessibility, the role of frameworks, common pitfalls and how to overcome them, blueberry muffins, and the perils of snake oil vendor tools.
6/1/2021 • 54 minutes, 38 seconds
Joy Heron on Responsible Web Applications
In this episode of the CaSE Podcast, Lucas Dohmen talks to Joy Heron about Responsible Web Applications. They start talking about responsive web design and how it works nowadays with features like CSS Grid and Flexbox. Then Joy explains how to make a website usable with assistive technologies. Responsive and Accessible — That’s how we can create a responsible web application.
5/10/2021 • 1 hour, 14 minutes, 46 seconds
Alex Bramley on The Art of SLO, Part 3
Alex Bramley continuous his conversation with Sven Johann. They begin with how granular you should monitor your user journeys and then discuss error budget policies in depth. They continue on how to iterate on SLIs, SLOs and error budget policies. They close the conversation with SLO alerting.
5/3/2021 • 1 hour, 17 minutes, 26 seconds
Alex Bramley on The Art of SLO, Part 2
Alex Bramley continuous his conversation with Sven Johann. They start with what external and internal dependencies do with your availability requirements and how you calculate availability if you have a microservices dependency tree. They look into how you can introduce SLOs to your organisation. After that, they switch to measure user happiness with your monitoring system, measurement windows and how to report those results.
4/26/2021 • 55 minutes, 35 seconds
Alex Bramley on The Art of SLO, Part 1
Alex Bramley talks to Sven Johann about the basics of service level objectives. They begin with terminologies (SLI, SLO, SLA, Error Budget), look at costs of outages and discuss what reliability has to do with customer happiness. They continue with having 100% reliability is the wrong target and what’s possibly the right target. Alex then explains how to get started with collecting data about your system’s behaviour. They close the first part of this series by looking into latency SLIs.
4/19/2021 • 1 hour, 10 minutes, 57 seconds
Simon Brown on Software Architecture
Simon Brown talks to Stefan Tilkov about software architecture – the importance for developers, its role in agile software development, documentation and tooling, and the importance (or lack of importance) of UML.
3/29/2021 • 47 minutes, 35 seconds
Eoin Woods on Bringing Systems into Production and Keeping them there
Eoin Woods discusses with Sven Johann all the things developers need to know to bring systems successfully into production and how to keep them there. They discuss production environments, what goes wrong in production, architectural requirements for operations, cost of very high availability, stability and capacity, communicating operational concerns, observability, learning from incidents, chaos engineering and operational models (SRE, You build it, you run it, classic).
3/1/2021 • 1 hour, 29 minutes, 47 seconds
Christin Gorman on Why large projects fail and what to do about it
In this episode, Stefan talks to software developer Christin Gorman about her experience with very large software projects and the reasons why they fail, especially in the public sector. The two address issues of size, approaches that do and don’t work, share some of their favorite failure stories and try to enumerate some strategies to do something about them.
1/28/2021 • 1 hour, 1 minute, 28 seconds
Artur Ortega on GraphQL
In this episode, Artur Ortega explains to Stefan Tilkov what GraphQL is, how it came to be, and how it differs from REST. Predictably, the two debate whether it’s better or not, but also spend some time going over its technical details and applicability to different usage scenarios.
1/4/2021 • 1 hour, 6 minutes, 59 seconds
Markus Völter on Language Engineering
In this episode, Markus Völter talks with Stefan Tilkov about language engineering and its connection to domain-driven design. Picking up from their past interactions in various different podcasts, the two agree and disagree fundamentally in equal parts, on topics such as the usefulness of DSLs, the costs and benefits of domain experts writing code, and the tradeoffs of various architectural approaches.
10/7/2020 • 1 hour, 21 minutes, 52 seconds
Birgitta Böckeler on Cultivating Architecture Principles
Birgitta Böckeler talks with Sven Johann about cultivating architecture principles. They first discuss what architecture principles are, why they are useful, how they are structured and how they help to guide decision making across multiple teams. They then talk about their lifecycle: who creates them, checks if they are aligned with business goals, prioritizes them, how they should be communicated, how you know they are useful and when to potentially retire them.
8/24/2020 • 44 minutes, 9 seconds
Rachel Andrew on contributing to CSS and CSS Layout
Joy Heron talks with Rachel Andrew about CSS Layout. Rachel shares her journey as a web developer and how the web has changed over that time. They discuss Rachel’s work with the CSS working group and how developers can get involved to improve the web for the future. Rachel also talks about the current status of CSS layout and what we can expect in the near future. To wrap up, Rachel shares some practical tips and they discuss the future of the web platform.
5/28/2020 • 46 minutes, 34 seconds
Daniel Bryant on Service Meshes and API Gateways for Application Modernization
Daniel Bryant talks with Sven Johann about the business problems to modernize applications. They need to be decoupled from the compute fabric and the network fabric and Daniel explains the reasons for that, what products are available and what strategies the different cloud vendors follow. They move on with how to get started, questions to select an API gateway, technologies behind them and the challenges. They talk about service meshes features, especially on the canary testing side, how they work under the hood and how they help as infrastructure with application modernization. They close the discussion on how to select a service mesh product and what rollout strategies exist.
5/7/2020 • 1 hour, 33 minutes, 49 seconds
Mike Sperber on Functional Architecture
Does functional programming matter? Stefan and Mike continue an interesting conversation they had on Twitter: Does the style of programming matter if you look at it from a larger distance? Mike describes two distinguishing characteristics of functional programming: Immutable data and high-level models, and how they influence the architecture of your application.
4/16/2020 • 1 hour, 7 minutes, 34 seconds
Peter Elger on Commodity AI
Peter Elger talks with Sven Johann about AI as a service - commodity web services offered by large cloud providers, which make it very easy to use AI in your application just by using an API. They start the discussion with the typical AI use cases companies in finance, retail and so on have and which of those are already as a commodity available and which are not. They then discuss how those APIs are used, from very simple API calls like text-to-speech to slightly more complicated ones like chat bots or recommendation engines. They continue with understanding how you come up with AI requirements and how to (regression) test your AI service, which is often different than doing the same with non-AI code. They clarify how much AI you need to know to use those services, the cost models of them and how to get your AI to production. The conversation then moves to lower level AI services like AWS SageMaker or Google Tensorflow and how you combine them to create novel pieces of AI relatively quickly. They close the conversation with when to use specific packaged AI solutions and when to create your own AI to push the envelope.
2/27/2020 • 1 hour, 3 minutes, 48 seconds
Lars Hupel on Algebraic Design
In this episode of the CaSE podcast, Lucas talks to Lars Hupel of Typelevel-fame about algebraic design. Lars starts to explain how the expression problem views the difference between the functional and Object Oriented style of programming. He then explains the concept of an algebra – from coupling trains to CRDTs. This leads to a discussion on comprehensive and iterative thinking styles and how different styles of testing and proving work. Finally, they bring it all back to type systems.
2/6/2020 • 1 hour, 1 minute, 23 seconds
Ryan Singer on Shape Up
In this Conversation about Software Engineering, Stefan Tilkov talks with Ryan Singer about Shape Up. Ryan works on the product strategy for Basecamp. Over time the company started growing, and they needed to step up how they managed their product development work. In his book Shape Up and this podcast, Ryan shares the methodology Basecamp uses nowadays.
1/9/2020 • 1 hour, 19 minutes, 34 seconds
Felienne Hermans on Programming Education
In this episode, Stefan Tilkov talks with Felienne Hermans, associate Professor at Leiden University in the Netherlands heading the Programming Education Research Lab. They talk about programming education with a focus on people learning their first programming skills and how the current approach in schools and university is flawed. Felienne explains the concept of deliberate practice and code vocalization and answers simple questions like "What's the best programming language for education?"
12/19/2019 • 1 hour, 5 minutes, 24 seconds
Philippe Kruchten on Managing Technical Debt
In this episode, Sven Johann hosts Philippe Kruchten, the author of the Managing Technical Debt book. They talk about the research leading to the book and the practical implications the book and the research offer. They start the conversation with discussing terms: technical debt, interest, principal and then start with technical debt on the code level, e.g. code smells, tests and refactoring followed by static analysis and the prioritization of the findings. They then move to technical debt on the architectural level and go through the possibilities on estimating cost and value on those improvement and how to sell it to the business stakeholders. This is followed by explaining technical debt on the infrastructure level and how great code can become technical debt by time passing by (technological gap, software aging). After that the conversation moves towards solving the problem tactically and strategically.
7/8/2019 • 1 hour, 1 minute, 23 seconds
Sam Newman on Insecure Transit – Microservices Security
In this episode, Sven Johann hosts Sam Newman, the author of the first Microservices book, to talk about security in the world of Microservices. They discuss why and where it is different to security in a monolithic architecture and why developers must care. They start with automatically rolling out passwords, credentials and API keys in a secure way and continue with patching containers and secure base images. They then continue with automatically update (transitive) dependencies if they have vulnerabilities. They close the conversation with discussing authorisation and authentication using gateways, proxies and service meshes.
5/17/2019 • 1 hour, 21 minutes, 26 seconds
Richard Rodger on Message-based, Generic Microservices
In this episode, Stefan Tilkov talks to author and microservices expert Richard Rodger about his approach to microservices, which focuses on small services that exchange messages, are built using a “generalize first” approach, and rely on content-based routing to allow for dynamic evolution of the resulting system.
2/19/2019 • 1 hour, 4 minutes, 7 seconds
Mentoring Engineers with Steve Vinoski
In this episode, Stefan Tilkov hosts well-known distributed systems expert Steve Vinoski to talk about lessons learned in 30+ years of software engineering. In their conversation, they cover topics such as what to learn and what to avoid, how to deal with zealous and disillusioned developers, the relation of engineering to other disciplines, ethics and patents, careers and coding, publishing and presenting and the benefits of doing maintenance.
Steve Vinoski has spent most of his software development career working in the areas of middleware and distributed computing systems, using C++ and Erlang. He is also a long-time author, having written or co-authored over 100 published articles and papers covering middleware, distributed systems, and web development, as well as a couple books and dozens of columns. Steve has also given hundreds of conference and workshop presentations and tutorials on middleware, distributed systems, web development, and programming languages, and has served as chair or program committee member for many dozens of conferences and workshops.
8/14/2018 • 54 minutes, 54 seconds
Micro Frontends with Gustaf Nilsson Kotte
In this conversation about software engineering, Gustaf Nilsson Kotte, web architect at IKEA, talks to host Stefan Tilkov about ways to build large web sites and applications with multiple teams. Topics covered include team organization and Conway’s law, horizontal vs. vertical splits, and options and tools for server-side and client-side integration.
7/5/2018 • 1 hour, 14 minutes, 14 seconds
Web Frontend with Lucas Dohmen
Joy Clark talks with Lucas Dohmen about Web Front-End development. They first discuss the role of front-end development and frontend architecture. Lucas then explains his view on the role of JavaScript and the separation between front-end and back-end development. They continue their discussion by looking at the role of design and UX in front-end development and how styleguides can help. Then Lucas talks about performance, development for mobile devices and accessibility. They wrap up by discussing tooling and the faucet-pipeline.
6/7/2018 • 1 hour, 4 minutes, 5 seconds
Problem Solving and Clojure 1.9 with Rich Hickey
Joy Clark talks with Rich Hickey about Clojure and Datomic and the reasons that Rich decided to design them the way that he did. They discuss the dependency problem and how we should change our method of developing libraries so that we do not introduce breaking changes. Rich also introduces Clojure spec and describes what it can be used for and how it differs from a static type system. To wrap up the episode, they talk about the best way to solve a problem (and know it is the right problem!) and Rich gives some advice on how to develop software and what technologies are worth looking into.
5/3/2018 • 1 hour
Security and Privacy with Susan Landau
Sven Johann talks with Susan Landau about Security and Privacy. After defining those terms they proceed to find out why this important to individuals and societies. They discuss why its the job of intelligence agencies to collect data, but how we can protect us against them. Then Susan discusses the importance of Two-Factor Authentication, how wiretapping and backdoors work these days and how the FBI tries to unlock locked devices with “1984” terminology. The conversation moves from end-to-end encryption, metadata analysis and VOIP decryption to targeted attacks and political influence of security threats. They finish the conversation with what we can learn from Google and Sun Microsystems on privacy, security and the architectural requirements of anonymized test data.
4/19/2018 • 1 hour, 15 minutes, 43 seconds
Application Security with Peter Chestna
Joy Clark talks with Peter Chestna about application security. The overarching topic of the podcast was what a developer can do in order to make applications more secure. This included talking about some of the most prevalent security vulnerabilities and discussing what application security is and what it entails. Peter also gave some great tips on how to integrate security into the development process.
3/29/2018 • 24 minutes, 39 seconds
Blockchain Technology with Andreas M. Antonopoulos (Part 2)
In this second episode of a two-part interview, Stefan Tilkov talks to Bitcoin and cryptocurrency expert Andreas M. Antonopoulos about Bitcoin vs. blockchain tech, the programmable Ethereum system, alternatives to the proof of work approach, and using Bitcoin in hybrid scenarios.
3/22/2018 • 51 minutes, 56 seconds
Blockchain Technology with Andreas M. Antonopoulos (Part 1)
In the first episode of a two-part interview, Stefan Tilkov talks to Bitcoin and cryptocurrency expert Andreas M. Antonopoulos about the Bitcoin system’s technical foundation and architecture. Andreas addresses common questions about Bitcoin’s usefulness, scalability, and energy consumption.
3/1/2018 • 57 minutes, 28 seconds
Domain-Driven Design with Vaughn Vernon
Joy talks with Vaughn Vernon about Domain-Driven Design. Vaughn shares his journey to DDD and the reasons behind his DDD books. They then go on to discuss strategic design, the broad brush strokes of DDD, what a model actually looks like and how to use bounded contexts to keep a system from becoming a big ball of mud. Vaughn then answers some questions about domain events and event sourcing, and makes a case for modelling uncertainty instead of fighting with concurrency.
1/25/2018 • 47 minutes, 32 seconds
aim42 with Gernot Starke
Joy Clark talks with Gernot Starke about aim42, a method for systematically improving software. They discuss in detail the three phases of the process: Analyze, Evaluate, and Improve. Gernot shares his wisdom about how to carry out each phase using stories of his experiences in many different situations. In this way, listeners will get the big picture of how the whole process works: from visualizing all of the problems using sticky notes on the wall to specific strategies that can be used for improving the system.
12/21/2017 • 1 hour, 23 seconds
Advanced Scala with Daniel Westheide
Daniel Westheide, author of “The Neophyte’s guide to Scala” and Stefan Tilkov talk about some advanced Scala features and challenges, such as case classes and the problems they can create, algebraic data types, type classes and implicits, using the compiler for Prolog-like type level programming and programming with generic data structures.
11/30/2017 • 54 minutes, 2 seconds
ClojureScript with David Nolen
Joy Clark talks with David Nolen about ClojureScript. David introduces the language and discusses the direction that the language is heading in. He talks about how the language is compiled to JavaScript and how it takes advantage of the the Google Closure Compiler. They then talk about designing user interfaces and how functional programming relates to UI design. To wrap up, David mentions different libraries and frameworks that can be used and recommends tools which can be used to get started programming with ClojureScript.
11/9/2017 • 1 hour, 1 minute
Management for Developers with Camille Fournier
Stefan Tilkov talks to Camille Fournier about making a career as a manager in a software development organization. Camille shares her insights about when or why someone would want to become a manager and how to become good at it. Other topics include different levels of management from tech lead to CTO, the role of one-on-one meetings, and how managers influence company culture.
10/19/2017 • 1 hour, 21 minutes, 14 seconds
Scala with Sofia Vaughn-Jones
Joy Clark talks with Sofia Vaughn-Jones (née Cole) about Scala. Sofia introduces the language and describes its features. They then discuss what kinds of programs can be written with Scala and the tooling and frameworks that are available. They attempt to define what a monad is and how it can be used. To wrap up, Sofia mentions some great resources for getting started with Scala.
9/14/2017 • 36 minutes, 35 seconds
Microservices with Michele Leroux Bustamante
In this episode, Stefan Tilkov talks to Michele Leroux Bustamante about Microservices. Michele shares her perspective on microservices and what she sees as the difference between SOA and microservices: The way they share data. Stefan and Michele also talk about orchestration, getting started with microservices, platforms for microservices as well as a few short other topics.
8/25/2017 • 1 hour, 2 minutes, 38 seconds
Clojure with Alex Miller
Joy Clark talks with Alex Miller about Clojure. Topics include the Clojure language and how it compares to other languages as far as features and maintainability are concerned. The benefits of dynamic languages are also discussed, and clojure.spec is introduced as a way to gain the benefits of statically typed languages. Alex also talks about ways to structure Clojure code and gives a great list of tools and materials for getting started with Clojure.
8/3/2017 • 37 minutes, 56 seconds
Microservices with Eberhard Wolff
Lucas Dohmen talks with Eberhard Wolff about microservices. Eberhard Wolff is a fellow at innoQ and wrote a book as well as a primer about microservices. He talks about what lead to microservices and the advantages, and disadvantages of as well as the preconditions for the architecture. He then introduces different styles of microservices and how they influence and are influenced by organizational structures. Eberhard also talks about introducing microservices, how they communicate with each other as well as testing microservices.
7/13/2017 • 55 minutes, 33 seconds
Rails Girls with Ute Mayer
Eberhard Wolff talks with Ute Mayer about Rails Girls. Topics include how Rails Girls increase diversity in IT and thereby influence the live of the attendees. Rails Girls is a global movement and does workshops to introduce women to programming. Attendees can then join project groups to work on specific projects and apply for the Rails Girls Summer of Code to develop open source projects. The training material is free and open source - and includes information how to start a Rails Girls group. There are many way to support: Rails Girls is looking for coaches and sponsors.
6/22/2017 • 44 minutes, 49 seconds
Legacy Software and Immutable Infrastructure with Chad Fowler
Joy Clark talks with Chad Fowler about legacy software and immutable infrastructure. They begin by discussing legacy software and why the description 'legacy' shouldn't actually be a bad thing. Then they contrast how reusable libraries differ from a system of services which is flexible and can change over time. Chad then describes how they developed Wunderlist using a microservices architecture and answers questions about how to practically develop and test such a system and how to decrease coupling between components. They wrap up by discussing how the principles of immutable infrastructure can be applied to software development in general.
6/1/2017 • 50 minutes, 5 seconds
Software Architecture with Stefan Tilkov
Joy Clark talks with Stefan Tilkov about software architecture. After discussing the definition of software architecture, they go on to cover what the role 'Software Architect' actually means and what tools and skills an architect needs to do their job. They also discuss several different architectural styles which can be used and look at the most common styles that are currently employed today. To help us on our quest to becoming software architects, Stefan also gives a great lists of resources that we can use as a starting point.
5/11/2017 • 1 hour, 4 minutes, 27 seconds
OpenTechSchool with Martin Stadler
Eberhard Wolff talks with Martin Stadler about OpenTechSchool, an organization that helps people to learn about programming and software development. Topics include the different types of events and material OpenTechSchool offers and how OpenTechSchool enables a hands-on, empowering, and peer-driven approach. We also discuss the organization, the core values and how OpenTechSchool increases diversity. OpenTechSchool has a lot of partners and local chapters that take different approaches. Of course the show also talks about how to join OpenTechSchool, how to help and how to start your own chapter.
4/20/2017 • 1 hour, 1 minute, 31 seconds
Spring Data with Oliver Gierke
Eberhard Wolff talks with Oliver Gierke about Spring Data. The show starts with an overview of the Java framework Spring and its ecosystem. The focus of the show is Spring Data: A set of frameworks that support many different relational and NoSQL datastores. The show then discusses how Spring Data is developed and released. Another topic is how reactive programming influences persistence and how transactions make little sense for reactive architectures. Finally, the show covers Spring Data REST — a framework to expose Spring Data repositories as REST resources — and how this concept is useful beyond simple CRUD operations.
3/30/2017 • 1 hour, 3 minutes, 17 seconds
Modern CSS with Jen Simmons
Stefan Tilkov talks to Jen Simmons about CSS, the standard for applying layout rules to HTML pages. Jen talks about the often misunderstood role of CSS in the Web stack, why it matters, and how it has grown ever more powerful over the course of time. Also included: Some discussion about why so many developers don’t like CSS and what to do about it, and new features coming to the CSS standard.