Conversations about Software Engineering

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.

Daniel Bryant on Service Meshes and API Gateways for Application Modernization

Download it: MP3 | AAC | OGG | OPUS

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.

Mike Sperber on Functional Architecture

Download it: MP3 | AAC | OGG | OPUS

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.

Peter Elger on Commodity AI

Download it: MP3 | AAC | OGG | OPUS

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.

Lars Hupel on Algebraic Design

Download it: MP3 | AAC | OGG | OPUS

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.

Ryan Singer on Shape Up

Download it: MP3 | AAC | OGG | OPUS

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.

Felienne Hermans on Programming Education

Download it: MP3 | AAC | OGG | OPUS

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?"

Philippe Kruchten on Managing Technical Debt

Download it: MP3 | AAC | OGG | OPUS

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.

Sam Newman on Insecure Transit – Microservices Security

Download it: MP3 | AAC | OGG | OPUS

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.

Richard Rodger on Message-based, Generic Microservices

Download it: MP3 | AAC | OGG | OPUS

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.

Mentoring Engineers with Steve Vinoski

Download it: MP3 | AAC | OGG | OPUS

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.