How is your architectural intelligence? Carl and Richard talk to Thomas Betts about his thoughts on implementing AI-related technologies into applications. Thomas talks about stripping the magic out of AI and focusing on the realities - in the end, it's just another API you can call. The conversation digs into what useful implementations of large language models look like, as UX alternatives, summarizers, and tools for reviewing existing work.
How can event modeling help you build better applications? Carl and Richard talk to Adam Dymitruk about Event Sourcing and Event Modeling, including the new book Understanding Eventsourcing. Adam talks about thinking through business workflows as an approach to event sourcing, where new data is constantly added, never modified. These data streams can then be modeled into different workflows following consistent patterns that make your application straightforward to build and maintain. It does take effort to change your thinking to the event source/model approach but with huge potential!
How do you understand the quality of your code? Carl and Richard talk to Richard Gross about his open-source tool called CodeCharta. Richard talks about various ways you can use CodeCharta to understand your codebase - whether it is complexity, number of changes, or number of coders involved - there are many visualization opportunities. This leads to a discussion about what problematic code actually is. Sometimes, too many people work in the same place, and sometimes, there is only one. Some complexity is necessary, and sometimes it's just refactoring. But what tools like CodeCharta provide is a way to focus on potential points of change and then see when the change has been successful - and you can even print a 3D model to have a physical copy of your code!
Let's talk about .NET 9 with one of the platform's leaders! Carl and Richard talk to Glenn Condron about his experiences building .NET 9. Glenn talks about the usual improvements in every version of .NET, including performance, security, and stability. But the new stuff is where the excitement is, starting with Aspire. The conversation digs deeper into the origin story of Aspire and what the team sees as the future of building cloud-native applications with .NET. Then, a dive into all things AI - tools to help developers create applications, as well as how to include AI capabilities in your applications. And there's more to come - .NET 10 is only a year away!
How do you balance the coupling in your application? Carl and Richard talk to Vlad Khononov about his book on Balancing Coupling in Software Design. Vlad talks about three aspects of coupling - information, distance, and volatility. When these aspects are out of balance, such as a pair of services that are distant from each other but highly dependent and need lots of information, development becomes difficult. Where information is high, keeping the distance low makes life easier. This led to a great conversation about Conway's Law and the idea that sometimes changing the team organization can lead to better application development! Check out the book!
What does it mean to build cloud-native applications? Carl and Richard talk to Chris Klug about his experiences building applications designed to operate effectively in the cloud. Chris pushes back on the fixation around Kubernetes - you can build cloud-native apps without it! The conversation digs into the various options available to take advantage of the cloud's ability to scale while also tolerating its occasional short-duration outages and shifting availability. Chris also talks about .NET Aspire and its ability to help you build .NET cloud-native applications.
How simple can you make software development? Carl and Richard talk to Mark Rendle about his focus on simplicity in building software - as simple as possible. Mark talks about the tendency of developers, sometimes through no fault of their own, to use what is new and cool in development, regardless of how practical or necessary it actually is. The conversation digs into the ongoing battle around cloud-native development using technologies like Kubernetes. You can be cloud native with more straightforward approaches! The same applies to web frameworks - there are lots of choices. Build as little as necessary!
How can a low-code solution help you deliver a .NET app? Carl and Richard talk with Serge Sarafudinov about his Xomega project. Serge describes how Xomega uses models and templates to generate .NET code for applications for Blazor clients, WPF, and even ASP.NET Forms and TypeScript! The conversation also digs into rehabilitating existing .NET applications where new features can be added with Xomega, and then gradually convert the existing application into the model approach - and then you can change out the client if you like! There are free and paid versions of Xomega; take it out for a spin and see if you can't deliver solutions faster!
How can .NET Aspire help you get into containers? Carl and Richard talk with Jiachen Jiang about her experiences working with .NET Aspire. Jiachen talks about the power of .NET Aspire to help lead developers to utilize cloud native architecture efficiently. A key part of the equation is containers, and Jiachen talks about how relatively rare containerized .NET apps are - because in many cases, it doesn't add anything but complexity. But as .NET applications need to scale in the cloud, containers become important, and .NET Aspire helps you to take advantage of containers while adding all the cloud-native features you'll value, like great telemetry, orchestration, and discovery!
How do you build cloud-native applications in Azure? Carl and Richard talk to Scott Hunter about how Microsoft tooling is evolving to develop cloud-native applications - starting with the vital idea that all cloud-native apps are multiple applications! Scott talks about how most development tools focus on individual applications and how dealing with multiple applications, including cloud apps, can be challenging. Cloud apps need telemetry, resiliency, and service discovery - which brings the conversation to tooling like .NET Aspire, designed to lead developers down the path to cloud-native applications with all these features and more. And this is only V1 - Scott discusses many more features that could make it easier and easier to make great cloud-native applications!
Six years later, how has antifragility thinking changed? Carl and Richard talk to Barry O'Reilly about his ongoing work on building highly reliable software. Since Barry's last appearance six years ago, he's returned to school and is writing a PhD thesis on antifragility. Studying complexity theory, Barry approaches software architecture with a minimalist view - you only add architecture when you see the application needs it. This leads to ideas around residuality - and a progressive way to build software that yields amazing results!
How has Aspect-Oriented Programming changed? Carl and Richard talk to Gael Fraiteur of PostSharp fame about his new tool, Metalama. Gael talks about being able to move out of IL and into Roslyn Analyzers to help you get rid of boilerplate code and focus more on the value your application brings. The conversation dives into how AOP can help build higher quality code, to the point of being a testing platform for code compliance for your organization - used right, metalama can make your code reviews smoother! There's a lot of power inside metaprogramming; it's worth trying to understand what Metalama can do for you.
It's 2024, how is Azure doing? Carl and Richard chatted with Magnus MÃ¥rtensson about his work with customers migrating and operating in Azure. Magnus talks about the waste many organizations have in cloud resources, often by provisioning services with too many resources or failing to shut down things they no longer need. The conversation digs into today's excellent tooling, including Azure Migrate, Advisor, and Monitor. All tools can help you right-size and control your cloud spend. And AI is coming to make those tools even better!
Modular Monoliths strike the middle ground between monoliths and microservices! Carl and Richard talk to Steve Smith about his work striking a balance between the simplicity of a monolithic set of services and the complexity of breaking everything into microservices. Steve discusses the performance and simplicity advantages of monoliths and only breaking out services with specific needs into separate services. .NET has excellent tooling to help you evaluate, test, and manage your modular monoliths!
Has observability hit a tipping point? Carl and Richard chat with Steve Gordon and Martin Thwaites about the various products and technologies today to make observability a vital part of a successful application. Steve talks about telemetry support hitting a tipping point where most vendors have products working with OpenTelemetry. Martin digs into the many places you can send telemetry to increase your understanding of how your applications work on-premises and in the cloud. It's an exciting time to build cloud-native - are you on board?
What's the latest with gRPC? Carl and Richard chat with Irina Scurtu about her latest work with gRPC. Irina talks about the improved tooling with gRPC, including tools like Postman to help you see what's happening in a gRPC interaction, even decoding the binary data! The conversation also digs into the complexity of metadata with headers and trailers and the challenges of supporting multiple platforms and multiple type systems - but it works if you take the time to learn the details. And the results are fast and flexible communications!
Coming out of .NET Conf, one of the big announcements was .NET Aspire. Carl and Richard talk to David Fowler about his work creating the tools to make building cloud-native .NET applications easier. David discusses the challenge of not re-creating the past - tools like Azure Service Fabric. However, the complexity of containerized applications is real. Aspire can make it simpler to take advantage of being in a container, on the cloud, with all the telemetry, observability, scalability, and flexibility that being cloud-native can bring you!
How do you migrate to .NET 8? Carl and Richard talk to Jimmy Bogard about his experiences helping teams migrate from .NET Framework 4.8 to more modern versions of .NET. Jimmy talks about the team wanting to be able to use ASP.NET Core in their applications as the incentive to make the migration in the first place. The conversation digs into landing on .NET 6 to make migration easier but then wanting to move quickly to later versions to take advantage of the latest features. And no dead-drop migrations - using a reverse proxy to operate the two applications side-by-side so that over months, everything moves across while remaining functional - a great story of migration!
A new version of Polly is out - and it's a special one! Carl and Richard talk to Joel Hulen and Martin Costello about the release of Polly V8. Joel tells the story of Microsoft reaching out about Polly - because it is heavily utilized inside of Azure and at cloud scale, it needed further optimization. The results are a very high-performance library focused on resilience as a whole - with lots of smart defaults so that you can write even less code to have even more resilient applications!
Are you ready for .NET Conf? Carl and Richard talk to Jeff Fritz about the latest version of .NET coming out - and the online event that celebrates it! Jeff talks about his top ten favorite sessions in the show, the ones you definitely don't want to miss. And if you have folks that are new to .NET, you want to check out the pre-event day that can help folks get started! See you online Nov 13-15!
What is observability engineering, and why do you need some? While at NDC in Porto, Carl and Richard recorded a .NET Rocks Live with Charity Majors, one of the founders of Honeycomb. Charity talked about her experiences trying to understand how complex applications worked and failed at scale over her years of experience at Facebook and other companies. Ultimately, those experiences led to a book and the creation of Honeycomb. Lots of fun insight from someone who has fought the good fight - and some great questions from the audience!
How do you make Kubernetes easier to use? While at the Copenhagen Developers Festival, Carl and Richard talked to Annie Talvasto about her work with Kubernetes and the Cloud Native Compute Foundation. Annie talks about the easy and hard ways to work with Kubernetes and why you might choose either approach - it comes down to how much control you want. The CNCF supports many tools for Kubernetes in various stages of development to make your life easier to orchestrate containers at scale - when you need them, you'll really need them!
How's your architecture game? Carl and Richard talk to Thomas Betts about being a better architect. Thomas focuses on the key aspect - communication! An effective architect can talk to all the stakeholders in the language of the stakeholder, whether that's speaking business with business stakeholders, coding with developers, and understanding the needs of the security and operations folks. All those aspects (and more) go into an effective architecture and then come the changes as the implementation challenges happen. The conversation also digs into the importance of documentation to know why decisions were made and how to change them as you respond to changing needs and landscapes.
Microservices or Monoliths? Carl and Richard talk to Layla Porter about choosing a middle ground between microservices and monoliths, with modular monoliths. Layla talks about the pushback from the community around microservices and the insistence that there is "one right way." Monoliths have their advantages until they are a problem - but that doesn't mean that re-architecting everything is the right way to go. Chipping off parts of the monolith into satellite modules strikes a balance of flexibility and scalability - and opens the door to accessing the power of bus architectures when needed!
Databases continue to evolve! Carl and Richard talk to Ted Neward about multi-model data stores - which, these days, are most databases! Ted talks about how SQL and NoSQL are not that different - it's only a query engine. But how do you store your data? Today multi-model databases store data with multiple storage engines, and so can store your data in the most appropriate form. There are lots of choices, and it's worth digging deeper into your existing data stores, as well as the new ones available!
How do you scale a monolith? Carl and Richard talk to Derek Comartin about his blog posts and YouTube series around scaling a monolith. Derek talks about the tendency for folks to want to split a monolith into microservices without assessing if it will make a difference. There is no one right way! The conversation digs into different approaches to scaling - up, out, using caching, queuing, and more! There are many approaches to scaling your applications, and yes, microservices are an option, but there are many others!
What's an immutable architecture, and why do you want one? Carl and Richard talk to Michael Perry about his book The Art of Immutable Architecture and the power of historical models. Michael talks about different designs for immutability, the ability to always look back through data, to avoid conflict between resources, and the advantages of eventual consistency. As Michael says, you already use immutable architecture - look at Git and how you only add new files to the system, always able to get back to a previous state! The conversation dives into implementing architecture in a way that helps to show where immutability makes sense.
How can the cloud help developer velocity? Carl and Richard talk to Bryan Foster about the complexities of modern software development - and how different cloud technologies can help move faster and not be afraid to break a few things along the way! Bryan talks about using Azure Deployment Environments to make it easy for developers to stand up resources for their apps - and just as quickly shut them down when done. This leads to a broader conversation around the governance of CI/CD pipelines and the role of the cloud, even to the point of using DevBox to have an entirely virtualized development environment!
How is clean architecture evolving? Carl and Richard talk to Steve Smith about his efforts to build applications using clean architecture principles. The conversation starts with a comment from a listener about idealism around architecture - and a reminder that while there isn't one right way to do anything, using existing work, like clean architecture templates, makes it easier to do the right thing. Steve talks about the various elements that go into clean architectures and how they are often where you end up in development whether you start with a template or not - and how much of a pain it is to course-correct as the project gets larger. Sustainable software needs architecture, and clean architecture is one approach that works - check it out!
API Management has evolved! Carl and Richard talk to Tom Kerkhove about his new role working on Azure API Management. Tom talks about using Azure Arc to deploy the API Management service into your on-premises services. The conversation digs into more of the fundamentals around API management with rate limiting, authentication and authorization, billing, testing, and more. A good API can make your company money - executed poorly and it's a massive headache. Use the tools available to make it easier!
Jeremy Miller is back with more open-source goodness in the form of the Wolverine .NET Command and Message Bus. Jeremy talks about developing the Marten database and reaching a point with event sourcing that led to Wolverine - building the infrastructure to work with a variety of queuing solutions to act as an intermediary, a message bus, and a command bus, as needed. The conversation also digs into the current state of open-source with his projects, and the evolution toward more sustainable open-source development - there is more to come!
Ready for a story of cloud scaling from the trenches? While at NDC Oslo, Carl and Richard talked with Meg Gotshall about her experiences scaling the Fotoware service with her team. Meg talks about the limits of auto-scaling, where all the services are scaled up, but the bottlenecks exist in only one place - and how dashboards help to provide more visibility into the problem. But even when you sense the problem, how do you fix it? The conversation digs into breaking services into their containers and AppService plans so they can be scaled independently - initially for diagnostics but ultimately for production!
What can AWS do for you? Carl and Richard talk to Isaac Levin about the experience of being a .NET developer working with Amazon Web Services. Isaac talks about the broader strategy of moving applications to the cloud and what Amazon offers to make your life easier, with various migration and validation tools that can help you understand how an existing application will behave on cloud services. The goal is to get beyond the virtual machine and into containers, serverless, and more!
What's wrong with microservices? Carl and Richard talk to Shawn Wildermuth about his rant about microservices. Shawn talks about the intent of microservices in the first place, to try and break down the giant service balls of goo that get built over time. But is it necessary? The conversation explores the optimization problem, where having services together is efficient right up until it isn't - when you have a service that changes more often than others or needs to scale more. Only then does it make sense to carve it out. Lots of fun conversation!
How do you make it easier for developers to build apps in Azure? Carl and Richard talk to Scott Hunter about his new role focused on developer tooling for Azure. This means much more than .NET - Scott talks about tooling for Java, Android, Node, and more! The conversation ranges over how Azure can simplify development cycles, debugging, and monitoring in production, no matter what stack you're using. Scott also digs into Azure Container Apps, announced at Build 2022, making it easier to get started using containers for your applications, but not limiting how you use containers in the future!
WebAssembly is awesome - what else can you do with it? While at NDC London, Carl and Richard talked to Steve Sanderson about his work with WebAssembly, including Blazor. Steve talks about how WebAssembly continues to evolve adding WebAssembly System Integration. This opens the door to the idea that code in the WebAssembly can be run anywhere - any operating system, any language, using whatever compute is available. That gives an option to run code on the client, the server, and anywhere in between!
What's an Azure Static Web App, and why do you want one? Carl and Richard talk to Stacy Cashmore about Azure Static Web Apps, Microsoft's implementation of static web apps. Stacy talks about the bare essentials of making a web page - serving up some HTML. How much back-end processing do you really need? The static web app approach serves a page as a static file - and while that file may make calls to APIs, it doesn't require AppService itself. The result is fast, low-cost web apps!
Are you moving apps to the cloud? Carl and Richard talk to Richard Reukema about his experience shifting workloads into the cloud. Richard talks about getting beyond virtual machines in the cloud and utilizing the platform services that allow your application to scale up and out. The conversation dives into designing software independent of the implementation, even the cloud provider! This separation between design and implementation, combined with modern practices of deployment and testing automation, get to the true value of the cloud - the ability to rapidly iterate to respond to business needs!
How do you build microservices? Carl and Richard talk to the authors of Pro Microservices in .NET 6 - Sean Whitesell, Rob Richardson, and Matthew Groves. The conversation digs into how microservices have evolved, the role of containers, and how the different tools that go together to make a successful microservices architecture. Then there's a whole discussion on reliability, security, scalability, and testing - there are a lot of things that go into making professional microservices!
What is DAPR, and why do you want it? Carl and Richard talk to Paul Yuknewicz about how DAPR helps you build better microservices by dealing with all the plumbing. We all need messaging, security, logging, and other services to make microservices work - and there are a ton of SDKs and libraries out there to help. DAPR helps glue all those pieces together with a nice layer of abstraction to make it easier for your tool selections to work!
How do you build your Azure infrastructure? Carl and Richard talk to Eduard Keiholz, Erwin Staal, and Henry Been about their upcoming book on building Azure infrastructure with code using ARM Templates and Bicep. The conversation dives into a deep love for JSON that no one has - and the amount of tweaking it takes to build ARM Templates from JSON. Enter Bicep that gives you a more familiar dot notation that works well with intellisense and ultimately transpiles into the JSON that Azure needs. There are lots of tools out there to help you automate your infrastructure - but the built-in products in Azure can do the job for you!
Julie and Steve return! Carl and Richard talk to Julie Lerman and Steve Smith about their new version of the Domain-Driven Design Fundamentals course. The conversation starts focused on Open AI Codex, a project for writing code with the spoken (or typed) word - and how that is an example of focusing on domain implementation - because the AI is doing the functional implementation from your words! Julie and Steve also dig into how DDD has evolved since their original class in 2014, including using event storming to help gather all the important information around a project in an enjoyable way. Gathering domain information is important - implementations come later! Don't get stuck in the conference-driven development of the latest technology, better to focus on what is distinct to the business!
It's 2021 - how has NodeJS evolved? Carl and Richard talk to Rob Richardson about NodeJS and much more. Rob dives into the current evolutionary process of JavaScript with the ECMAScript standards and the impact of transpilers to allow developers to use the latest concepts of JavaScript while still remaining compatible with existing browsers. The conversation dives into the Node philosophy of minimal footprint and surface area and the great libraries that help you get going quickly. And then there's WebAssembly!
Are you using open-source libraries in your enterprise applications or products? What are the consequences? Carl and Richard talk to Rocky Lhotka about his work with organizations coming to grips with the use of open-source code in their projects. What happens if the project goes away? What if there is malware added to the code intentionally or accidentally? What about plagiarism of code? Diligence around the origin of code is important, whether it is open-source or not - and should be part of your build process!
What is event sourcing, and why should you care? Carl and Richard talk to Jeremy Miller about the latest version of Marten, the Document store for PostgreSQL - and how there is an increased focus in this version of event sourcing. Jeremy talks about the patterns of development around event sourcing, separating how data is written to a system from reading it. One of the side effects is some latency, but the advantage is scalability and reliability. It takes some time to get used to the patterns around event sourcing, but for the right project, it can make all the difference!
What's new in Visual Studio 2022? Carl Franklin and Richard Campbell talk to Simon Calvert, Anthony Cangialosi, and Andy Sterland about the upcoming version of Studio. First on the docket is 64-bit: While Studio has been able to build 64-bit applications for more than a decade, the devenv.exe itself has remained a 32-bit application. The team discusses why it makes sense to move to 64-bit and what that means for development going forward. But there's much more to Studio 2022, including improvement to debugging and diagnostics across platforms, being able to collaborate with developers in real-time using Live Share, and getting smarter about how you navigate and explore existing code. Cool new things are coming!
How many ways can you run containers on Azure? Carl and Richard talk to Tom Kerkhove about his experiences working with Azure container solutions. The conversation starts out talking about Azure Functions, which under-the-hood are handled in containers - but you don't control those containers at all. You can run Web Apps in Containers or use the Azure Containers Instance. Azure Service Mesh also supports containers, and then there is the Azure Kubernetes Service. Tom helps sort these various options out - they each can help you in different ways!
The pandemic is sending a lot of work to the cloud - are you ready to move? Carl and Richard talk to Mike Richter about his work helping companies move .NET applications into the cloud. Mike starts out with the hard truth, that moving your virtual machines into the cloud can get expensive. Better to take advantage of the Azure platform, starting with AppService. There's a lot you can do with existing software, and even more if you're willing to recompile. Check it out!
Time for some chocolatey goodness! After seven years, Rob Reynolds is back chatting with Carl and Richard about the Windows application package manager that you want to use! Since the last show in 2013, Chocolatey has grown up, become a commercial product with a great open source free version. And there's a GUI - you can help your non-technical friends and family automate application installation and updates! But more typically, you use Chocolatey to build out your development environments in an automated way. Make paving your machines easy!
What's up with CSLA? Carl and Richard talk to Rocky Lhotka about his ubiquitous framework for managing business rules and user interfaces. Rocky talks about the latest version with support for Blazor, along with many other popular UI solutions including Web Forms, WPF even Silverlight. Rocky talks about the challenges of taking care of an open-source project for so many years, including some issues around NuGet. The conversation also dives into the power of Blazor and how CSLA makes it even easier to build great apps!
Did you know there is a separate Azure for government? Carl and Richard talk to Vishwas Lele about his work with Azure Government, specifically the version for the US Government. Vishwas explains that there are a number of data centers around the world set up as sovereign data centers for the local government. They comply with various government-related security standards and have a restricted set of features. They cost more too! But if you want to do business with certain governments, working within these specialized versions of Azure can be very lucrative!
Memory Leaks in .NET? How is that possible? While at .NET Developer Days in Warsaw, Carl and Richard talked to Adam Furmanek about modern memory leaks - the things we can do in .NET that cause more memory to be consumed over time. Adam talks through various aspects of .NET that have a risk of causing memory leaks, how to detect them and then the hard part - how to fix them.
Containers sound like a good idea - but can you get your application live on them? Carl and Richard talk to Michele Bustamante about her on-going work migrating existing applications to microservices on containers, as well as greenfield development. Michele discusses the balance of complexity and flexibility that containers bring, and the challenges of getting an organization comfortable operating an entirely new architecture of applications. But the payoff is big - scalable, reliable and cost-effective software!
How do you improve the performance of your application? While at .NET Developer Days in Poland, Carl and Richard chatted with Steve Gordon about his work writing high-performance C#. The conversation digs into the larger picture of why and how you improve performance - don't guess, use method profiling, benchmarking and great measurements to know if you're fixing the right thing, the right way. That being said, there are a bunch of techniques available to improve performance - check out Steve's blog and the links in the show notes!
How do you configure your cloud? Carl and Richard talk to Joe Duffy about Pulumi, a tool that lets you use your favorite programming languages to provide Configuration-as-Code. Joe Duffy talks about the new addition to Pulumi - .NET Core languages including C#, F#, VB.NET... even COBOL.NET if you really want to! The conversation then turns to the process of creating better code for managing configuration, getting real testing, building our modules. Configuration-as-Code is code, give it the love it needs!
The ASP.NET Core Ecosystem is thriving! What does that mean for you? Carl and Richard talk to Jeremy Miller about how the latest versions of ASP.NET Core are building an ecosystem of third-party tools in the open-source world. Jeremy talks about looking at different approaches to building web apps with ASP.NET Core, the variety of backend libraries available, and takes a short trip down memory lane to talk about ALT.NET, an open-source movement he was a part of going back to 2007!
How does UX work in your organization? While at NDC in Oslo, Carl and Richard talked to Debbie Levitt about how UX can help make software better and the development process less difficult. Debbie talks about UX being part of the initial requirements gathering process, talking to users and looking through how business processes actually work. UX can help you build the right thing!
What can HashiCorp's Packer do for you? Carl and Richard talk to Jamie Phillips about how Packer helps to make golden images of hypervisor machines - that would be Hyper-V, VMWare or any of the container solutions so that you can ship them out to whoever needs them. The images can be used as part of your pipeline to push cloud products into a store, or for developers to work from production-configured images, and so on. Packer is a powerful open source solution that can be part of your CI/CD pipeline!
How do you use messaging? Carl and Richard talk to Jimmy Bogard about his work developing messaging architecture for applications. Jimmy talks about the mistakes he's made along the way, starting with not using formal messaging systems - yes, you can use a text file or a database table as a queue, but should you? And when you do embrace messaging, there is an overhead of code and effort to work with queues properly. Is it worth it? The answer is always, it depends!
Ready to move your applications into containers? Carl and Richard chat with Rob Richardson about his work migrating existing applications running in virtual machines over to containers using Kubernetes as the orchestration engine and Istio as the traffic manager. Why add Istio to the mix? It makes it easier to have a mixture of containers, services running in VMs and more. The conversation digs into the expanding tribe of services that work in containers together to give you great options for analytics, security and more.
How do you secure microservices? Carl and Richard chat with Sam Newman about the complexity that comes with containerization and microservices, and how that impacts your security plans. Often security has been based on a monolithic single-point-of-access model. But when applications are broken down into microservices, there are a whole bunch of new points of contact to be secured. The good news is, there is plenty of technology out there to help, including password vaults, mutual TLS and more - you just need to learn about it!
Build is over - what did we learn? Carl and Richard talk to Scott Hunter about the various announcements at Build connection with .NET - including the delivery date of .NET Core 3 and what happens beyond! The conversation digs into switching to a routine delivery model for .NET, so that you can anticipate when you'll need to implement the new version of the framework. Scott also talks about new features coming in C# 8, including the fact that C# 8 is only for .NET Core 3 and above... things are changing, and it seems for the better!
What can Azure Functions do for you? While at NDC in London, Carl and Richard talked to Simona Cotin about Azure Functions. You can code Azure Functions in C#, Java, Python and JavaScript - but Simona prefers JavaScript. Use the language you're most comfortable with. Programming Azure Functions in JavaScript means using the NodeJS frameworks, building small chunks of code that do exactly what you want them to do without a lot of plumbing!
How do you get into test automation? Carl and Richard talk to Arnon Axelrod about his new book on Test Automation and the concept of the Test Automation Maturity Model - the steps you take along the way to getting testing to be a key part of making quality software. Arnon digs into building the right kinds of tests, what tools help you move in that direction, and where skills need to be grown to make better tests and automate them in a way that they are part of every build, whether you ship the software at that time or not. Test automation is not just for SaaS apps - everyone can benefit!
It's 2019, do you know where your containers are? Carl and Richard talk to Jessica Deen about her work with containers and how Kubernetes has come to dominate the container space, especially in the Microsoft arena. Kubernetes is a container orchestration engine that runs on-premises and all the major cloud vendors - but it is so much more than that, with an ecosystem growing up around it providing an array of tools that can handle your CI/CD pipeline and a huge array of elements for deploying applications. Check out the extensive set of links in the show notes!
What does it mean to be cloud native? Carl and Richard talk to Vishwas Lele of Applied Information Sciences about his on-going evolution to be a cloud-native, and what means in 2019. Vishwas talks about the Cloud Native Computing Foundation, an organization independent of the major cloud vendors that helps with identifying and managing tools that make cloud native applications work! Vishwas digs into a variety of tools, starting with Kubernetes and with many more tools coming! The cloud is only getting more amazing!
What's your dependency injection solution? Carl and Richard talk to Steven van Deursen about his work building SimpleInjector and why there seem to be so many different dependency solution options out there. Steven talks about how he came to build SimpleInjector and what makes different DI solutions valuable - including when the .NET Core team tried to build an abstraction over dependency injection that resulted in an anti-pattern! Dependency injection helps you code in a maintainable way, but the tooling you use affects everything. It takes time to make the right fit for you application.
You need more actors in your life! Carl and Richard talk to Aaron Stannard about the latest around Akka.NET, an open source actor model framework that has been evolving and growing for a number of years. Aaron talks about how his company Petabridge is providing professional services around Akka.NET including some custom tooling like a CLI tool called CMD. The conversation also dives into utilizing actors outside of just the server - actors make sense in mobile devices and IoT to name two! It's a different way to think, but actors can help you work concurrently and asynchronously - and who doesn't want to do that?
Windows Server 2019 has shipped and Windows containers have improved! Carl and Richard talk to Elton Stoneman about the changes that have come with Server 2019 and the 1809 Update. Elton describes it as the second significant implementation of containers on Windows, although it has been steadily tested in the field over the past few years. For the most part, containers on Windows now have parity with the Linux containers - and the possibilities for migrating existing .NET applications to containers have expanded - check it out!
How do you build out your cloud infrastructure? Carl and Richard talk to Luke Hoban about Pulumi, a start-up making open source software that helps you take Infrastructure-as-Code to the next level - not just simple scripts, but real programming languages. Luke talks about getting away from the cut-and-paste effects of Infrastructure-as-Code into building classes with enough sophistication that you're not creating technical debt each time you build a new cloud resource. With support for multiple clouds and multiple programming languages, this looks to be the next essential cloud development tool!
How do you read other people's code? While at NDC Sydney, Carl and Richard talked to Patricia Aas about the fine art of studying code you haven't written - and even more challenging, understanding it! Code doesn't read like a novel, there really is no beginning or end, it's always an exploration. The conversation also turns to being respectful of existing code, recognizing that it is as good as it could be at the time and that there are always ways to make it better. And when you're writing code, the challenge is to write it so that it can be read and understood by others!
You need a bot for that! While at NDC in Sydney, Carl and Richard talked to Adam Stephensen about his experiences building bots. The bot craze has died down a bit these days, but that means that more serious work is being done. Adam talks about what it takes to build a good bot, looking beyond the FaqBot and into more context-sensitive and service-oriented bots. In the end, a bot is just another front-end over your well-organized services layer that can handle web and mobile front-end services as well. But what does it do that is unique? How does it help people? Are bots just a fad, or are they here to stay? Adam has thoughts!
What's an Intelligent Edge? Carl and Richard talk to Microsoft EVP and CTO Kevin Scott about his work in software with Google, LinkedIn and Microsoft - and what he focuses on today. Kevin talks about the resurgence of interest in .NET and C#, and the expansion of .NET across all sorts of development areas including Internet of Things. This leads to a conversation around Intelligent Edge, recognizing that there is enough compute power in even the smallest of devices that they can do analysis of data, not just haul it up to the cloud. AI and ML tech is key here - and there's lots to explore!
Containerize all the things! Carl and Richard talk to Ben Hall about his on-going work with software in containers. Ben talks about Docker being pretty much synonymous with containers now, but when it comes to orchestration, there are a few more choices. Kubernetes seems to be the popular choice in the public cloud space, but Docker Swarm, Apache Mesos and Red Hat OpenShift all can play a role as well. Ben also digs into the role of serverless in a container world, and how these cloud-native architectures make you think about software differently!
How do you handle faults in your application? Carl and Richard talk to Dylan Reisenberger about Polly, the open source library (now part of the .NET Foundation) that helps organize fault recovery into a set of policies. Dylan talks about creating good fault solutions, not especially hard code, but it can get messy at times - creating policies makes your code more readable as well as easy to maintain when your approach to faults needs to change. And now Polly is a recommended tool for working with .NET Core 2.1!
Everything fails eventually - how do you recover? Carl and Richard talk to Barry O'Reilly about building anti-fragile systems. Anti-fragility is the philosophy of accepting that things can break and you need to be able to detect and recover from that failure, whatever form it might take. Barry talks about the four aspects of anti-fragility: redundancy, diversity, modularity and loose-coupling. They're all common terms, but understanding how to do them well within your system is a challenge. How reliable do you need to be? What's an acceptable level of failure? This is what modern software systems are all about!
Azure is good - but tooling makes it great! While at Build in Seattle, Carl and Richard talked to Paul Yuknewicz and Andrew Hall about the latest tools available in Visual Studio for developers wanting to get the most out of Azure. The conversation starts out with a response to a listener about debugging services in Azure - the challenge of following an execution path through your software and the various service offerings of Azure that your application might depend on to understand where problems lie. Then a dive into the new bits - new container support, tooling around Kubernetes and more!
Do constraints liberate? Carl and Richard talk to Mark Seemann about the very constraints that developers often argue against - pointing out how those constraints can actually make us more productive. Mark talks about memory management, such as garbage collection in .NET, while a constraint (you can't do what you want with memory) actually liberates you from thinking about memory. The same with static typing - decide on a type once, and stop worrying about it. The question is, are you surrounding yourself with the constraints that liberate you?
What does it mean to have clean architecture? Carl and Richard talk to Steve Smith about his work on an e-book and template for clean architecture using ASP.NET Core. Steve describes the new tools that make life easier for following clean architectural principals as well as the separation of concerns, between business logic, infrastructure, and clients. The conversation also digs into Domain Driven Design, Test Driven Development and the ever popular Pain Driven Development. Great, common-sense thinking from Steve Smith!
Michele is back and surviving microservices! Carl and Richard talk to Michele Bustamante about her work with microservices and the challenges that her customers have. Starting with the normal problems innate to any re-architecting exercise - what is the benefit to the customer? You can't make microservices because they're fun, they have to solve a particular problem - and typically it's the problem of over-coupling within a group of services. Update one and you derail the others. Picking what service to separate is a challenge - and how do you do it! Great conversation about containers, DevOps and management strategies!
What goes into a Docker stack? Carl and Richard talk to Rob Richardson about how containers are evolving in the .NET world. Rob talks about how the Windows side of Docker is actually getting stronger - most developers using Docker use Linux as the template OS. The conversation focuses on moving existing .NET applications into Docker - aka, without .NET Core. It's certainly possible, and you get some of the container advantages. But with containers comes new thinking around architecture, the ability to organize and scale your services differently. But you can implement those features gradually, and take advantage of what orchestration can do for you. Whether in the cloud or on-premises, containers have a lot to offer!
C# continues to evolve - there's more to learn! While at NDC in London, Carl and Richard talk to Jon Skeet and Bill Wagner about their on-going work on C#. For Bill, he's now part of the docs team helping people understand C#, and for Jon, it's his contributions via GitHub to ideas and features for C#. Both write great books and talk about the challenge of how C# is evolving as open source and in public. What features matter, and where does it all lead to? Will C# ever be finished, or is this an endless process? Is it getting easier to develop with C# or more complex? Great thoughts from two of the nicest thinkers on C#!
No anti-patterns this time - Steve is talking patterns! Carl and Richard chat with Steve Smith about various development patterns that can help you build software that is more reliable, scalable and robust. While Steve is famous for his anti-pattern calendars, this time around he's discussing a number of excellent patterns that are becoming more prevalent in the .NET development world, including the Builder pattern (which .NET Core relies on), Null Object Pattern, Strategy and Rules Patterns and more! If an hour isn't enough, check out Steve's books and Pluralsight videos!
Ready to experiment with containers? Carl and Richard talk to Kendra Havens about the on-going integration of container technology into Windows, Visual Studio and .NET. Kendra talks about moving existing applications into Docker containers, and how even when the underlying operating system is large (say, Windows), you only need to download it once to use it across any number of container instances. There's great tooling for Docker support in Visual Studio and VS Code, so you can use Docker the way you want to. And Microsoft uses containers extensively internally as well, so the tooling just keeps getting better!
There are so many messaging options in Azure, how do you choose? While at ProgNet in London, Carl and Richard sat down with Clemens Vasters to talk through the strengths and weaknesses of each messaging service. Clemens has been part of every messaging product in Azure, starting with Service Bus more than ten years ago. He discusses how customer needs and increasing demands in messaging resulted in making more specific products like Event Hub and IoT Hub. Azure Event Grid also fits a specific role in the discussion, making it easier for you to create message-driven workflows. Trying to sort out messaging in Azure? Clemens has the answers!
Event-driven architecture in Azure! Carl and Richard talk to Dan Rosanova about Azure Event Grid, built to power event-driven and serverless apps in Azure. Dan talks about how Event Grid picks up where WebHooks leave off, providing simpler connectivity between a variety of event streams and routing to different event consumers. The conversation also digs into the broader concepts of event-driven architecture, using queuing and subscription patterns to build loose-coupled, highly scalable and reliable applications. This is architecture perfect for the cloud!
Serverless is here - why would you do anything else? While at NDC Oslo, Carl and Richard hosted a panel of Rob Conery, Lynn Langit and Mathias Brandewinder to discuss the strengths and weaknesses of the serverless approach to building applications. First up - the terrible name. Of course there are servers involved in serverless computing, you just don't have to think about them. The conversation spans over a number of different offerings, including AWS Lambdas, Azure Functions and Google Firebase. Serverless is worth serious study, there's a lot of potential!
How can ETW help you? While at NDC in Oslo, Carl and Richard talked to Dina Goldshtein about her work instrumenting applications. This leads to a conversation about Event Tracing for Windows, which Dina uses primarily to take measurements of different applications running on Windows machines - but you can have your app add to the ETW stream as well. Monitoring, profiling and debugging are all different tasks that can take advantage of the data provided by ETW, it depends on your needs at the time. Lots of discussion on the impact of measuring as well - nothing is free!
There's a lot of stuff in Azure - how to sort through it all? While at NDC in Oslo, Carl and Richard talk to Barry Luijbregts about the huge array of features that exist in the Azure Platform-as-a-Service offerings. Barry runs down the list, helping to categorize what elements are very similar, what are totally different, and how things work together. The platform is where it's at in terms of value, it's well worth your time to figure out what parts can work for you!
How are containers coming along in the Windows world? Carl and Richard talk to Steve Lasker about his work making containers easy to use from within Visual Studio. Most work on containers has been around Linux, but when Windows Server 2016 shipped, Windows containers became real. Should you be using containers in your all-Windows world? Steve talks about the advantages and challenges, it's not all simple, but it is very powerful and worth a look!
After years of waning, .NET is on the rise - is it time for a renaissance? Ian Cooper says yes! The first of the NDC Oslo shows for 2017 starts out focused on a blog post that Ian published in February 2017 calling for a .NET Renaissance, and what it takes for it to come true. The move to open source has helped a lot, as it opens the door to what people really look for in a thriving community - rather than being a product created by Microsoft, it is a set of tools supporting by Microsoft but with direct community involvement. There's a lot going right, it's time for a renaissance!
More analysis from Build - during Build! While at Build in Seattle, Carl and Richard talked to Holger Mueller about his impressions of the show, shortly after the first keynote. Holger runs the gamut, talking about .NET Core, Visual Studio 2017, Azure, DevOps, Containers and more. A lot happened at Build, here's a view from the early point in the event itself!
Azure Service Fabric is here - should your application take advantage of it? Carl and Richard talk to James Sturtevant about his experiences moving applications into Azure Service Fabric. Yes, it is possible to "lift and shift" your application into Service Fabric via Guest Executables, but that doesn't mean you'll get much of the benefit that Service Fabric can provide. James talks about picking a feature in your application to peel off into a microservice, perhaps as an Azure Function or other serverless strategy - or even into a container! Instrumentation is a key aspect to understanding what will improve your application, and it takes time - all apps are on a continuum of development!
How do you get better uptime than the cloud? Two clouds! Carl and Richard talk to Vishwas Lele about his experiences building ultra-reliable applications, both on-premises and in the cloud. The discussion digs into the decisions around reliability - it's easy to want it, but will you pay for it? It's important to calculate the cost of downtime, as that helps set the budget for what it takes to stay up. And that leads to a conversation about how you build highly reliable software - it can't just come from the infrastructure, there is code involved as well! And the next question is - how do you make your app work in two different clouds?
What can Azure functions do for you? Carl and Richard talk to Yochay Kiriaty about his work creating Azure Functions as part of the App Service Platform for Azure. Azure Functions get you focused on just building code, there is no virtual machine, no operating system and a minimal hosting environment. But that doesn't mean that they're simple. Yochay talks about the need to architect effectively for Azure Functions - you can get yourself in a corner where Azure Functions can't save you. But if you keep your Azure Functions lean and stateless, this is the most dynamic, fastest scaling cloud service you can imagine!
How do you deploy software? Carl and Richard talk to Robb Schiefer about his experiences using Chef to do application deployment. Chef comes from the open source Linux world, and is free to use with a pay option when you get to certain enterprise features. The Windows support is pretty good, and it works closely with PowerShell and Desired State Configuration to automate deployment of Windows and Microsoft services. Robb digs into the testing component of Chef as well, with tools that allow you to test all sorts of options around your deployments so you can get them as robust as possible. Whether your on-premise, in the cloud, virtualized or containerized, Chef can help!
Azure with no servers? Carl and Richard talk to Jeff Hollan about Azure's Serverless offerings. The idea is to stop worrying about virtual machines and operating systems and focus on the stuff you really need. Jeff talks about Logic Apps, which provide workflow and connectors between your code and a ton of other services, some coming from Azure and many coming from other service providers. Credentials for the services are kept in the Azure Key Vault rather than your code (or in the heads of your users), and there's some great instrumentation to understand what's going on. Is Serverless the future of the Cloud?
Where is your DevOps at? Carl and Richard talk to Jez Humble and Nicole Forsgren about DORA, that is the DevOps Readiness Assessment. DORA helps you understand where your organization is at in the spectrum of DevOps, from low to medium to high. The conversation digs into what it takes to improve operational capability, focusing on understanding exactly how your organization delivers software so you can improve it. Along the way there are challenges, it is never easy to change an organization, but that's what it takes to actually improve software delivery. The goods news is that DevOps can work in any kind of organization: Big or small, startup or heavily regulated industry, it doesn't matter!
You can make a game in Xamarin Forms? Yes! Carl and Richard talk to Jonathan Peppers about his latest work on NBA Life, a role-playing game for iOS and Android built with Xamarin Forms. Jonathan talks about the process they went through to decide on this particular architecture for the game, having done prototyping with Unity and Xamarin Native. The conversation also digs into the back end using Azure Service Fabric and it's Actor Model support - yes, everything is an actor! Lots of discussion around testing, deployment, crash handling and dealing with app stores. Building mobile games isn't always a pure native experience - you have choices!
How do you manage legacy code? Carl and Richard talk to David Bernstein about his book Beyond Legacy Code. The conversation starts out talking about what legacy code is - and David brings up the idea that code is legacy if you don't have confidence in it. Now how do you get confidence? This is where the rewrite behavior comes from: You're naturally more confident in your own code. But is it a good idea? David talks about nine practices that are most effective at getting your application under control and out of legacy!
Ready for another actor framework? Carl and Richard talk to Roger Johansson about his work on proto.actor, and ultra-light-weight, easy to get into actor framework for .NET and Go. The conversation starts out with Akka.NET, the framework that Roger worked on a few years ago, and how it's origins in Java gave it a certain amount of ceremony that Roger thought could be simplified - hence proto.actor! With a focus on speed and simplicity, proto.actor uses libraries like Google's protocol buffers to work with other platforms and libraries well, check it out!
Visual Studio 2017 ships! Carl and Richard talk to Tim Sneath about his role in this version of Studio. Tim talks about speeding installation of Visual Studio by modularizing the various elements so you don't install things you don't need - but it's always easier to add more in! The conversation also digs into the extensibility model that makes it easier to build new features into Studio, and a great marketplace to share and sell them. Studio continues to evolve, the 2017 edition is awesome!
What's your strategy for moving to containers? While at NDC London, Carl and Richard chat with Michele Bustamante on how she talks to companies about utilizing container technology effectively. Michele discusses the fact that implementing containers represents more than just a technology investment - it's also a change in culture and process. This means that buy-in for container technology has to start at the top and permeate through the organization. And the benefits are just as comprehensive; it can be a significant part of a DevOps practice within an organization.
What is Conway's Law and how does it apply to your organization? Carl and Richard met up with Mark Seemann in Copenhagen to chat about how organization structure affects the structure of software. That is the essence of Conway's Law, going all the way back to the 1960s, where he talked about how committees designing software end up making software that reflects the structure of the committees themselves. This leads to a broad conversation about how virtually every company today is actually a software company, and that software represents a vital asset to most businesses, but they may not recognize it yet. Getting your organization into shape to build great software can be the difference between success and bankruptcy!
Windows Containers are here! While at NDC London, Carl and Richard chatted with Ben Hall about his on-going exploration of container technology. Windows Server 2016 shipped in late 2016 with support for two kinds of Windows containers. Ben talks about migrating an existing web application, IIS and all, over to Windows containers, providing some great deployment automation and scalability. There are still more bits to be built, but you can be productive with Windows containers today - check it out!
What are the twelve factors that go into a successful cloud architected application? While at NDC in London, Carl and Richard sat down with Ian Cooper to talk through the twelve factors approach to building software. Ian talks about focusing on building software-as-a-service style application, likely in the cloud (and certainly using cloud architectures), with continuous delivery of new features. While agnostic to any particular technology, there are lots of common practices here that make sense when building any kind of application, just doubly so for SaaS-style applications. Have a listen!
Can you use Docker with your database? While at NDC in London, Carl and Richard talk to Stephanie Locke about her experiences deploying database in containers. And as Stephanie says, you can deploy the database engine there, but the data has to live somewhere a bit more stable - like the cloud! The conversation digs into the power of containers for rapid deployment and upgrading, as well as the value of using different types of file stores for retaining data. In the end, a database creates files of data, and that's what you need to protect. Stephanie also talks about what databases make sense in different scenarios - it's not only about relational!
How do you migrate to Azure? Carl and Richard talk to Microsoft Premier Field Engineer Christos Matskas about his work helping companies move workloads to Azure. The conversation starts out focused on what you can move to Azure - which is less a technical problem and more of a political one. Christos discusses Azure Site Recovery as a sort of gateway drug for getting organizations into Azure - much cheaper than running a backup data center, Site Recovery keeps images of all your active servers so that you can switch over to them in a disaster. And then the catalog is opened up, there are a ton of products in Azure, which ones do you use? Lots of great discussion on the various approaches to moving to the cloud!
There are more ways to go serverless! Carl and Richard talk to Glenn Block about his work with WebTask. WebTask uses nodeJS to build services that are unique units of work with their own scalability. Glenn also talks about using WebTask as a Webhook, allowing you to do call backs based on an activity - it's this tooling that can help you automated builds and deployments and more. Using the Webhook approach, Glenn digs into techniques for building custom commands for Slack and a bunch of other environments - WebTask can become cloud-driven glue for your apps!
How are containers doing in the world today? While in Haarlem for DevIntersection Europe, Carl and Richard hosted a panel with Michele Bustamante, Dan Wahlin and Rick Van Rousselt about how they are currently working with containers and what they see coming in the future. The panel discusses how making containers work is really about working with Linux, which is entirely viable in the .NET world with .NET Core, but Windows Containers looks to change that in the coming years. What will modern development look like in the next couple of years as containers take ahold of the entire development cycle? Exciting times!
So many amazing things announced at Connect! Carl and Richard talk to Scott Hunter about his favorite bits of Connect, including a ton of important announcements including new support in Visual Studio for containers, cool new integration with SQL Server 2016, the on-going evolution of .NET Core and it's tooling and so much more! You've seen the keynotes, now listen to a deeper dive with one of the key people behind .NET today!
What does it take to move an existing application to Docker? Carl and Richard talk to Elton Stoneman about his experiences migrating applications to Docker. The power of containers is obvious, with the ability to run common configuration across development, QA and production. But how do you retrofit your existing application into that new model? It's not a simple lift and shift - Elton talks about breaking down your application into the relevant pieces that make sense for individual containers. Part of your app can live in VMs and part in containers. The process inevitably will make your application better by drilling into what is really important!
What role does distributed caching play in applications today? Carl and Richard sit down with Iqbal Khan to talk about nCache, an open source product built to do distributed caching in the .NET world. The conversation starts out with the traditional role of a distributed cache - state storage for a large scaling websites. It's never as simple as it sounds! From there, Iqbal dives into comparing caching to noSQL stores and RDBMS - they can all have a role in your application. The discussion then turns to more complex challenges around using distributed caches for map-reduce problems, and so on. Caching can do a lot!
Version 6 of nServiceBus is imminent! Carl and Richard talk to Udi Dahan about his on-going efforts to build a great service bus in a sustainable business way. The conversation starts out talking about sustainable open source businesses and what has worked (and not). Udi then dives into the cool new features of the latest version of nServiceBus, with a strong focus on asynchronicity. Reliability across clouds and on-premise systems is also a key focus of this version of nServiceBus, so you can run your software where you want. Then a deep dive into the architectural models of services buses, including a great conversation on microservices and actor models. Check it out!
More cloud choices! Carl and Richard welcome Chris Sells back onto .NET Rocks after three years and a career change - Chris is now at Google! And he's been busy, excited to announce that Google is provided extensive support for .NET in the Google Cloud, including Visual Studio add-ins to make your implementation even easier. The conversation ranges over the modern cloud development pattern of building code, packaging it into containers (aka Docker) and then deploying into the cloud - for Google Cloud, that means Kubernetes. Meantime, Kubernetes is presumably coming to Azure also - could we be looking at a unified cloud world?
What's a really modern web app look like? Carl and Richard talk to Qiming Liu about the Reactive Trader Cloud, demonstrating the synergy between the cloud, containers, microservices, the Reactive Extensions Framework and ReactJS on the client to make a real time currency trader application. The application is on GitHub, you can take it out for a spin for yourself and get a feel for this cool architecture. Qiming talks about treating all data as streams with the Reactive Framework for Javascript, passing messages to the various microservices to complete transactions. Packaging up those microservices in containers allows for resiliency and scalability - you just launch more instances using (in this case) Kubernetes. Check out the code!
What does it take to make an application support multiple customers? Carl and Richard talk to Paul Stovell about his work making multi-tenant applications. As with most things, making multi-tenant apps is more complicated than it seems! Paul talks about making architectural decisions around separation between various customers - do they each get their own database? What about web server and/or app-pool? What about customizations and deployment. Do customers get new features immediately, or do they have the option to wait? How does the cloud impact your decision making? It's a complicated subject with a variety of trade-offs!
What does it mean to build for the cloud? While at NDC in Oslo, Carl and Richard chatted with Paul Stack about thinking about architecture specific for the cloud - not necessarily Azure or AWS, but the overall concepts of what it means to be in the cloud. It starts with the idea of everything you build being virtual and portable, whether than be VMs or containers. But there's also so-called 'server-less' designs as well, where your software runs on a platform in the cloud. If you could get rid of the need to patch operating systems, wouldn't you? Paul also talks about the smaller cloud providers and some of the cool stuff available there as well - there are lots of choices!
Time for a new version of CSLA! Carl and Richard talk to Rocky Lhotka about the latest incarnation of the venerable business object framework that started all the way back at Visual Basic 5! CSLA has always been about keeping business logic out of your user interfaces and databases - keep it in the middle where it belongs. And today that is clearly wise architectural design: The diversity on the client side means you have a lot more devices accessing your application, and CSLA supports most of them in one form or another. The same is true on the back end, it's not all about SQL Server anymore, and CSLA stays out of your way when it comes to data storage. The framework is open source and on GitHub, check it out!
Here comes Windows Containers! While at Techorama in Belgium, Carl and Richard talk to Els Putzeys about the current technical preview of Windows Containers on Windows Server 2016. Els discusses how the Windows Containers can be built using templates so that you have a configuration-as-code capability, making repeated creation fast and easy. Now your documentation for building a system is code that actually creates it! We're still a few months away from Server 2016 being released, but it looks to be an important version of server for development!
How do you do continuous deployment? While at Techorama in Belgium, Carl and Richard sat down with Marcel de Vries and Rene van Osnabrugge to talk about their efforts working with various customers trying to help them get further down the DevOps line of productivity. The conversation digs into the various elements that go into getting to continuous delivery, including a lot of conversation about automating testing - if you're going to build fast, you need to test fast too! Marcel also talks about feature toggling, giving operations the ability to turn features off and on to understand how they behave and improve software quality in the process. Lots to deploy!
How do you change a developer's mind? While at Techorama in Belgium, Carl and Richard talk to Julie Lerman about her experiences working with a variety of teams moving into new technologies and techniques. While some folks are happy to jump into the latest-and-greatest, others are more cautious or even resistant - and often for good reason. There's always a productivity hit with changing up tooling and process, with substantial benefits coming further down the path. How can you help people "get over the hump" of engaging with a new tool or approach? What do you do about the poisonous folks that resist change through verbal and in some cases even direct sabotage? Everyone is different, and you need to take the time to understand where people's concerns lie. Often once someone is understood, they are much more open to change!
So is every class a service? While at DevIntersection in Orlando, Carl and Richard talk to Juval Lowy about how his statement nearly ten years ago has in some ways come true. Juval talks about how services evolved back in the 2006 time frame into monolithic, unmanageable software and the swing to simplification that has led to the current microservices movement. Keeping services small and flexible is the key, to the point that you see service aspects appearing down in very fine grained parts of software: Integer as a Service? Great thinking from an experienced architect of how services continue to evolve!
Where do development patterns fit into your world? Carl and Richard talk to Gael Fraiteur about the evolution of PostSharp into a library for implementing patterns. The combination of aspect-oriented programming and patterns is powerful - providing a means to implement a pattern while keeping it separate from your business code. Gael explores one particular pattern - multi-threading. Postsharp implements half a dozen different multi-threading strategies, so that you can apply the pattern as an aspect to your objects and make multi-threaded coding simpler and safer. Check it out!
So where are containers and microservices going? While at NDC London, Carl and Richard hosted a panel discussion with Michele Bustamante, Mark Rendle and Ben Hall to talk about microservices and the role that containers play in making microservices manageable and practical. Docker is the most well-known of the container services, but its not alone, and the panel debates the relative merits of the different container technologies. When it comes to the microservices, how important are containers? How micro is micro, and how many do we need? Could Azure Service Fabric be an example of how to do microservices at a platform level, rather than container? Lots of questions and discussion on this hot topic!
What patterns make sense with containers? At NDC London, Carl and Richard talk to Ben Hall about some more mature pattern approaches to container implementations, specifically with Docker. Ben talks through a number of key patterns that make containers work the way you expect in production. There are key elements such as immutability, avoiding circumventing the configuration-as-code mindset of containers. Containers should be built, torn down and built again from their scripts, rather than ever updated. Along the way, Ben discusses a variety of tools and resources to support good container patterns - check out the show links!
Service Discovery? Is UDDI back? While at NDC London, Carl and Richard talk to Ian Cooper about service discovery in the microservices world. Ian talks about the effect of microservices in making systems more complex - it's easy to end up with hundreds of services. And you don't want to be hard-coding service locations into your application, what happens when things change? While you could roll your own, Ian talks about a range of tools already out there to help your applications discover the services they need. Everything needs to be redundant and reliable - which is actually hard to build. Check out the links for all sorts of great tools!
What's the current situation with containers in Azure? While at NDC London, Carl and Richard talk to Michele Leroux Bustamante about the continuing evolution of containers in the cloud, especially around Azure. Michele digs into the story of Docker and the idea of configuration-as-code extending to the virtual machine. Then the discussion turns to analyzing the various tiers of container service provide by the major cloud provides, including Microsoft. Ultimately there is a vision of a Platform-as-a-Service offering around containers, but what that looks like is still evolving. Could Azure Service Fabric be the solution? What about Windows 2016? There's more to come!
Messaging is taking over the world! Arguably it already has. Carl and Richard talk to Clemens Vasters about his ten years of work at Microsoft building messaging systems, starting way back with the .NET Service Bus. Clemens discusses his work with OASIS and OPC-UA developing more advanced messaging standards, it's importance in the Internet of Things space, and how versions matter - different protocols have different capabilities, and the need for unified communications is only getting bigger. Messaging is forever - message systems will be passing messages between ever shrinking computing devices for a long, long time.
Microservices built with a functional language? You bet! Carl and Richard talk to Rachel Reese about her work with jet.com building microservices in F#. It turns out that the good practices of building functional code lend themselves neatly to the same principles in microservices. Rachel also talks about the actor model as a natural fit for this architecture as well, writing code with simple entry and exit points as functions in F#, focusing on composability to relate elements together. There are lots of ways to build microservices, but the functional/actor approach makes things easier once you've gotten your head around it - check it out!
When was the last time you thought about Windows Workflow? Carl and Richard talk to Blake Helms about the projects he's been building with Workflow - and they're awesome! Blake talks through how Workflow has evolved into the latest version for .NET 4.5, with better visualization tools and a consistent interface that is easy to work with. The conversation digs into how Workflow separates work from flow - activities are code and flows are the relationships between them. This separation lets you see where there are holes in your decision-making system and helps keep code organized and focused. The question is, when wouldn't you use Workflow? Wait. What?
How technical is technical debt? Carl and Richard talk to Einar Høst about how technical debt has more to do with your understanding of a system and the intentional shortcuts we take to make deadlines than anything specific to technology. The conversation dives into the domain driven design thinking of Eric Evans and the challenges of deeply understanding the domain of a system well enough to build great software to model it. As Einar puts it, some complexity is intentional, and some is accidental. That accidental complexity can be considered technical debt, but it is always challenging to measure it. In the end, the key is communications!
So what can you do with Reactive Extensions (Rx)? You know, really? While at the Azure Tour stop in Tel Aviv, Carl and Richard sat down with Tamir Dresher to talk about Rx in the real world. Tamir is the author of Reactive Extensions in Action and he talks through the practical applications that Rx has, and where it can make your software better. This is not an all-or-nothing proposition, you can slide Rx into spots where you want to react to key bits of data while ignoring others, so where you want to focus on the relationship between two different bits of data - this is not just about high velocity streams of data!
Time to revisit MassTransit! Carl and Richard talk to Chris Patterson about his work on MassTransit and more. MassTransit is an open source .NET service bus that is happy running on-premise or in the cloud. The conversation explores the evolution of MassTransit and the way the Enterprise Service Bus has evolved. SOA is a fine idea and SOAP works, but is there an easier way? Chris talks about better queuing with RabbitMQ, to the point that the latest version of MassTransit doesn't support MSMQ. And then there are microservices... does this make sense in the modern service-oriented application?
Microservices and Azure together! While at the Stockholm stop of the Azure Tour, Carl and Richard chatted with Corey Sanders in front of a live audience about the announcement at the Microsoft Connect event about Azure Service Fabric's direct support for microservices. Corey digs into the core concepts of microservices, focusing on single domain APIs that use HTTPS and REST to connect and communicate. The challenge of microservices is proliferation - between redundancy and scalability, a large application can have hundreds, even thousands of instances. Azure Service Fabric provides tooling and resources to manage the complexity of microservices while keeping the flexibility and power. Check it out!
So what are microservices anyway? Carl and Richard talk to Paul Mooney about his work architecting applications with microservice principles. Paul talks about getting granularity right, and keep services simple using REST. Gone are the monolithic, verbose and complex services from the SOA age, it's all HTTP and simple language. The conversation digs into key architectural elements like queuing - in this case, with RabbitMQ. This is a tricky design pattern, but allows for lots of scalability and creates natural separation points between application elements. Microservices are still emerging as a cloud-centric way to build applications!
How do you build a cloud-oriented application? Carl and Richard talk to Vishwas Lele about his views on making software that takes advantage of features of the cloud, including dynamic resource allocation, resiliency and reliability. Vishwas runs down a list of ideas, starting with error handling - how many failures can be recovered in the cloud with new resource allocation, etc? Next up, instrumentation and logging - the cloud offers a lot of tooling to make real-time instrumentation a possibility. How do you take advantage of the costs of computing? What about scaling your application? Vishwas digs into it all!
How do you handle credit card payments in your applications? Carl and Richard talk to Craig McKeachie about his work with different payment solutions, including Stripe. The conversation digs into the challenges of building your own payment system versus using a third-party system - starting with PCI compliance! Craig talks about different tooling for embedding payment, including the stripe.net library on GitHub for plugging into Stripe, and so on. Taking payments is important, so is doing it right - you have to think about security in a deep way. Don't build what you don't have to!
Hang on to your hats, here comes a ServiceStack update! Carl and Richard talk to Demis Bellot, who for the past couple of years has been full time on ServiceStack, and wow, a ton of development has been done! Demis (at very high speed) rattles through the feature list of ServiceStack, talking about the array of platforms it supports - which is pretty much everything from the phone to the cloud. While the focus has always been on providing web services, Demis also talks about running the entire stack inside a machine so that you can provide local services as well. Check it out!
How much can a language do with only 25 keywords? Carl and Richard talk to Michael Van Sickle about Google's Go Language. The focus in Go is on simplicity and structure - it's amazing what you can do with so few keywords, plus fixed locations for braces, indentations, and so on. The benefit of Go is easy-to-read code that has great concurrency capabilities - the Actor model is a standard pattern of development for Go. Michael also digs into the tooling around Go, using Atom for an editor and various plug ins to make coding and debugging easier. So how good is Go? Docker is written in Go! Check it out!
So what does a web development stack look like today? Carl and Richard talk to Dan Wahlin about his explorations with the new ASP.NET vNext stack, checking out Angular2 (as opposed to the separately developed Angular1) and getting into using containers for development. Containers take virtual machines to the next level, with lower resource requirements and detailed manifests. As Dan points out, container technology comes after the configuration-as-code movement, and is a key part of the container approach. The focus is on Docker, but there are other container solutions out there that are well worth exploring!
Messaging in browsers? Carl and Richard talk to Derick Bailey about messaging patterns in Javascript. Yes, browsers always use messages, that's what HTTP is about - but there are messages, and there are messages. Derick talks about using the publish/subscribe pattern with RabbitMQ to build a highly scalable system. These are patterns that are popular outside of the web, but the modern web can do anything any other system can do - so it's time to put these messaging patterns to work in your web applications!
How much of a language is essential? Carl and Richard chat with Mark Seemann about what features are critical to a language, and which ones are redundant. Who would put redundant features in a language? Mark talks about how languages evolve, and how more advanced features can supercede older features, but the old features can never be removed without breaking existing code. And worst still, when building a language is your business, you'll add features whether they are needed or not - you need something new to sell! The conversation also digs into understanding languages more deeply - do you really need that if statement? Just because a feature exists doesn't mean you need to use it!
So how are you instrumenting your applications? Carl and Richard talk to Jason Taylor of Stackify and Michael Paterson of Carbonite about the power of great instrumentation to make awesome software. Stackify provides a set of free tools if you're working in Azure. And speaking of Azure, Carbonite lives on Azure and uses Stackify for instrumentation. Michael talks about how Stackify helped Carbonite understand performance problems and errors that were occurring in production that were very hard to see from logs or customer service requests - deeply instrumenting their application made all the difference!
So how deep are you into Domain Driven Design? Carl and Richard talk to David Rael about his work applying DDD principles to the systems his customers develop. David focuses in on the idea of the ubiquitous language, something Eric Evans admits he wishes he'd put earlier in his seminal book on DDD. The ubiquitous language is the assembly of all the terms needed and agreed upon about the particular domain that the application has being built for. Most of what you need to know to build an application lives in that language, and most of what can go wrong goes wrong there. Great, focused conversation from someone living the DDD life!
Microservices? Carl and Richard talk to Howard Dierking about his work building microservices starting with the name - Howard hates the term microservices. He prefers to call them focused services, which only makes sense. The goal is to write as little code as possible while delivering the capabilities needed, not all that different from most modern development approaches. The conversation turns to how we've twisted service design because deployment and versioning were so difficult. Today its better and we can take advantage of granularity to keep our services small, independently updated and flexible!
Remember Orleans? Once an MSR project to scale Halo 4 multiplayer mode, it has grown into a full blown actor model implementation. Carl and Richard chat with Barry Briggs about bringing Orleans to your project. Barry talks through some great ideas on the actor model and it's focus on building distributed highly scalable applications. Orleans is now an open source project hosted on GitHub, and is worth a look - compare it to Akka.NET!
So how does Docker change development? While at the Nebraska Code Camp, Carl and Richard chatted with Seth Lachner about his work with Docker and the impact it has had on him as a developer. Seth comes from the old school open source world of Linux and C, and has worked with Docker for a long time - he recognized the potential early on. The conversation digs into the concepts of Docker as a virtualization entity on top of an operating system, hooking tightly into the kernel of the operating system to provide isolation for applications without the heavy footprint of traditional VMs. The conversation ranges over the cloud, server and workstation uses of containers, even into the idea of Docker as a virtual application implementation. This tool has far reaching consequences, no wonder there is so much buzz around it!
Do you know about Google Cloud? Brad Abrams does! Carl and Richard talk to former Microsoftie Brad Abrams about the other big cloud player - and there's a lot to say. Brad starts out focusing on the Platform-as-a-Service offerings of Google such as the App Engine which lets you run Python, Java, PHP, and Go in the cloud with all the scaling options you could ever want. Rather a virtual machine? The Google Compute Engine handles that, with Windows as an option coming soon! Then the discussion turns to containers: lightweight, OS-agnostic virtual machines that work with Google Container Engine and scale with Kubernetes. And that's still only the beginning; there's storage options of all sorts and Brad's favorite bits, great tracing and debugging tools. There's room for a third player in the public cloud world!
While at NDC London, Carl and Richard talk to Ian Cooper about hexagonal architectures. Turns out the important part is not the six sides - it's the idea of ports and adapters. Originally talked about by Alistair Cockburn, this is an architectural approach that focuses on being tolerant to testing as well as separating commands from querying. It's not quite Command Query Responsibility Segregation (CQRS), but you can see it from there! Ian discusses testing in a hexagonal architecture and how Test Driven Development (TDD) works so well with the separation of concerns that ports and adapters offers. If you're working on a long lived application that needs to be maintainable, you should be looking at hexagonal architecture!
Carl and Richard talk to Scott Ford about taking over existing software projects. There's lots of negativity around existing code, calling them "brownfield" and "legacy projects." Scott looks at existing projects more like an older home that has been well used, but needs updating. The conversation digs into how to understand not only the code of the existing application, but also the intent of the app - more focus on why things are the way they are, rather than just the how parts. But once you understand the why, there's no reason to stick with old tools and techniques, and Scott talks about using modern tools to quickly take control of an existing codebase and make it more reliable, understandable and sustainable.
While at the NSBConf in Brooklyn, New York, Carl and Richard moderated a panel of Udi Dahan, Ted Neward, Oren Eini and Yves Goeleven about the future of the service bus. And the future is bright! Without much contention, the panel focused in on the advantages of message passing and creating coherent boundaries between application layers to make scaling and management much easier when building large applications. There is also a discussion about rendering the update of components asynchronous, so that not everyone has to be ready to upgrade at the same time - less big bang, more continuous delivery!
Carl and Richard talk to Jeff Palermo about building new applications without making the mistakes that end up creating legacy projects. The conversation starts out with Jeff describing ClearMeasure, his new organization focused on end-to-end services for his customers - Jeff considers his organization an outsourced IT department, handling development and operations. This leads to the topic of building sustainable applications. Jeff details key steps he takes to make better quality applications, many of which are simple steps like keeping individual code files small, having create source control and a plan for using that source control properly. He also talks about getting the infrastructure right at the beginning so that it's an asset to building software, not a liability. And when it comes to selecting technology for the project, the key measure is the certainty of success. Business software is pretty well understood these days, how do you build it as cost-effectively and reliably as possible?
Carl and Richard talk to Jim Holmes about managing technical debt - while still getting your work done. The conversation starts out talking about what exactly technical debt is... it's not just the code you're afraid of! Jim also digs into the business justification for reducing technical debt, focused on how you can show the cost of your technical debt in the form of tech support or how it slows down the development of new features. Once you've got cycles for mitigating technical debt, how do you go about it? Remember that this was the code you were afraid of in the first place, so tackling it takes time and care to do well. Jim digs into how to split your time between new features (and keep the lights on) as well as retiring the technical debt in your organization. After all, getting too deeply in debt is also a way to turn out the lights on your business - you need a plan to fight back!
While at the NSBCon in Brooklyn, New York, Carl and Richard talk to Udi Dahan about CQRS. CQRS is the acronym for Command and Query Responsibility Segregation. Udi begins the conversation talking a bit about the history of CQRS and how it derived from Bertrand Meyer's work on CQS back in the 80s. The cornerstone of CQRS is a separation between commands (insert/update/delete) and querying in databases - not just relational databases, of course, but certainly the focus is there. The power of the pattern is its ability to handle huge volumes of data in both directions, simplifying application design as the load increases. Great thinking from Udi as usual!
Carl and Richard talk to Julie Lerman and Steve Smith about the fundamentals of Domain Driven Design (DDD). Julie and Steve have collaborated on a very popular Pluralsight course about DDD that has made the methodology more approachable for more people. The conversation digs into the fact that DDD has been around for more than a decade, but hasn't caught on near as much as it should - and why is that? There's at least one alphabet soup moment: What about DDD, BDD, TDD, PDD, ADDDD and SJDD? Listen to the show for definitions of these acronyms and more!
Carl and Richard talk to Adam Tornhill about his work understanding the psychology of programming. The conversation starts out with some thinking around getting into "the flow," being able to focus effectively on programming. Adam then digs into where bugs come from and the role of complexity in code. He has been studying code repositories to determine where bugs are likely to appear based on the idea that complex code changes more than simple code. The discussion also explores the idea that while coding parallel code is challenging, parallel development is even harder - can you really get multiple people working on the same project at the same time? You think you do, but do you really! Time to study your source tracking system!
Carl and Richard chat with Anthony Eden about his work creating DNSimple and the languages he uses to create awesome. Yeah, the boys fangirl a bit on DNSimple, since they do love it so. But so what? It's a great product and you should use it. Anthony talks about his inspiration for building DNSimple, his experiences working in Erlang to build parts of the server, as well as Google's super-cool language Go. This is what polyglot programming is all about - using the best languages for the job.
Carl and Richard talk to Clemens Vasters about his latest work at Microsoft around making the Internet of Things (IoT). Clemens starts with a definition of IoT, describing massive numbers of devices sharing data seamlessly... and confusing people at the same time. What's an IoT device and what isn't? The conversation digs into the challenges around connectivity, thinking through the architecture and security necessary to deal with huge numbers of occasionally connected devices with data demands - such as cars! The foundations are being laid to bring IoT to life, have you got your head around the ideas?
Carl and Richard chat with Vishwas Lele about the architectural patterns of cloud development. Vishwas talks about how the cloud influences application design, focused on more asynchronous, scalable and flexible messaging focused architecture. While the patterns could be applied to any cloud technology, Microsoft Azure is particularly well-suited to these architectural patterns, providing services that cover each pattern approach for optimal results.
Carl and Richard talk to Udi Dahan about the state of NServiceBus. NServiceBus is Udi's on-going development effort to make the development and maintenance of complex, distributed systems easier. The conversation digs into how developers fall into the N+1 trap of adding more and more interactions between different applications until the system becomes unmanageable - or force the interaction to take place at the very back end of the system, like the database, leading to slow interactions and complexity in the database that shouldn't be there. Whether you use NServiceBus or not, Udi's thinking on bus-based application design will open your eyes!
While at DevIntersection in Orlando, Carl and Richard sat down to chat with Zoiner Tejada about his work instrumenting cloud-based web sites. Zoiner talks about using a wide variety of features in Google Analytics to instrument his Azure apps, including going directly to the Analytics APIs to do instrumentation of other kinds of apps, connecting up just about anything that can speak HTTP! The second half of the conversation dives into utilizing this analysis - with a long chat about what a real Minimal Viable Product means and how the Lean Startup principles can be abused. Great conversation from a brilliant guy!
Carl and Richard chat with Nicholas Blumhardt about his work on Serilog, a structured logging tool. But first, the conversation dives a bit into Octopus Deploy, an awesome tool for helping you manage your application packages and help deploy them to testing, pre-production, production, and so on. Then on to the main event - Nicholas' amazing Serilog product. Logging is a pain, and Serilog makes it as painless as possible - one line per log entry, and configuration to write your log anywhere: text files, other logging products, even Event Tracing for Windows!
While at the ModernApps2013 event in Mountain View, California, Carl and Richard got a chance to sit down with David Chappell and get his views on the changing landscape of software and software development. David talks about how applications have evolved into a devices+services model, where parts of the application live in the cloud, and the rest live in the various form factor devices that we all now use. Later the conversation turns to the evolution of Application Lifecycle Management, with concepts like Continuous Delivery and DevOps becoming essential skills for the modern developer. Great thoughts from an awesome thinker in our industry!
While at the Manchester stop of the UK Road Trip, Carl and Richard talked to James Lewis and Matt Collinge about micro service architectures. James served as a consultant from ThoughtWorks to comparethemarket.com where Matt is the lead architect. The conversation started out talking about the challenges that comparethemarket.com had with it's architecture a few years ago - an all too familiar problem of every new feature making the core applications less scalable, less stable and harder to maintain. James and Matt then dig into the process that comparethemarket.com went through to redesign the applications using micro services to simplify and strengthen the applications over time. Great architectural discussion!
Carl and Richard talk to Brian Noyes about Microsoft's Patterns and Practices Kona Guidance for developing Windows Store Line of Business Apps. The conversation digs into the evolution of 'Prism for WinRT' into Kona and how they are substantially different because Windows Stores are substantially different. Brian digs into specifics about Windows Store apps, like Suspend, Terminate and Resume and its impact on guidance. If you're interested in Windows 8 development, check out The Tablet Show, especially the shows in the links below!
Carl and Richard talk to Thiago Silva and Jeff Hewitt about building applications in Azure. The good? Scaling, deployment and costs. More good - great tools and information from Patterns and Practices. The bad? Getting coherent monitoring together. The conversation digs deep into Azure level monitoring, web level monitoring and application level monitoring. How do you relate the data together? What measurements matter? How do you get to the point where you have a dashboard that shows you the health of your application? Finally, there is the ugly - and it's called licensing. Thiago and Jeff talk about how some license models (like per-machine licensing) just don't work in Azure. Good stuff for getting serious about Azure!
While at the Bentonville stop of the .NET Rocks! Visual Studio 2012 Launch Road Trip, Carl and Richard sat down with Matt Nunn to talk about his vision around Modern Apps and the Modern App Lifecycle.
At the Tallahassee Code Camp stop of the .NET Rocks! Visual Studio 2012 Launch Road Trip, Carl and Richard chatted with Udi Dahan about development practices, architecture and methodology.
While at the Charlotte stop of the .NET Rocks! Visual Studio 2012 Launch Road Trip, Carl and Richard sit down with Rocky Lhotka to talk about his latest incarnation of CSLA. Yes it's true, Rocky has gotten CSLA running on Windows 8 in the Windows Store (formerly known as Metro) mode. Rocky talks through the challenges of making CSLA work - how do you live without reflection? The conversation turns more philosophical about the direction of development as whole. Computing is undergoing a major inflection point!
While at DevReach in Bulgaria, Carl and Richard moderated a panel on architecture with panelists Steve Smith, Miguel Castro and Charles Nurse. The conversation ranged over a broad swath of architecture topics, talking about brownfield and greenfield design, different scales of architectures, the tension between developers and architects, how to do both roles at once, and more!
Carl and Richard talk to Alan Stevens about leadership in software development. Really, leadership in everything. The conversation digs into the issues of trust, value, play and food being key to success in leading any kind of project. Alan tells some great stories about how to make leadership work. If you're looking to lead, this is a show for you!
Carl and Richard talk to Chris Patterson about MassTransit, an open source enterprise service bus. The conversation starts out talking about service bus in general, how the patterns around a service bus make it easier to build large, multiversion applications with the fewest dependencies possible. Chris sets MassTransit in context with large, expensive service buses like Biztalk. He also digs into some of the other projects he's worked on, including TopShelf (for building Windows services) and Magnum (the mother of all toolkits). The boys also ask Chris about his focus on open source, the advantages and disadvantages around licensing, pricing and support. Amazing smart guy with some awesome code!
Carl and Richard talk to Bob Martin about where object orientation is going. Bob starts out talking about the fundamentals of where object orientation came from and how it has progressed over the years. The conversation then digs into how hardware has changed - the CPU manufacturers have stopped making faster processors and switched to making more processors. The impact of this change means developers have to write parallel executing code, something that object orientation makes difficult. Bob talks about the resurgence of functional programming as a reaction to the need for parallelism. Has object orientation run its course?
Carl and Richard talk to Stephen Bohlen about architecture. The conversation starts with Stephen's work on spring.net and the relationship between Java and .NET. Then Stephen digs into the evolution of architecture, comparing his experience as a 'real' architect designing buildings to building software. He discusses how using the term software engineer is part of what led to the waterfall approach of software development and how agile is fighting back against the term and behavior.
Carl and Richard talk to Juval Lowy about his latest thoughts on software development. As always, Juval has a controversial angle on things. After outlining the problems of current software development approaches, Juval goes on to define a new role in the software development practice, the business architect. While the term is overloaded, the core idea is the ability to model business practices in technology quickly. Has Juval predicted the death of the developer?
Carl and Richard talk to Greg Philpott about X++, the most popular language you've never heard of. X++ is the programming language for Microsoft Dynamics AX, an Enterprise Resource Planning product formerly known as Navision. Greg digs into how X++ allows programmers to extend Dynamics AX, adding whole new modules as well as customizing behavior in the existing system.
Carl and Richard talk to Loren Goodman from InRule Technologies about rule engines. Loren talks about how rule engines help applications organize rules so that non-developers can modify them. The goal is to reduce maintenance costs for software. The conversation moves over to concepts of complex event processing and how it applies to developing new rules dynamically.
Carl and Richard talk to Geoff Smith and Howard van Rooijen about S#arp architecture. S#arp architecture provides guidance on how to build ASP.NET MVC applications with nHibernate. It follows Eric Evan's Domain Driven Design principles very closely. The conversation also jumped over to StyleCop, the CodePlex project for standardizing code standards and Templify, an open source tool for building T4 templates.
While at the Norwegian Developers Conference in Oslo, Carl and Richard sat down with Dominick Baier to talk about claims-based security. Dominick walks through the entire claims-based security process, separating identity claims from resource claims, how to actually work with active directory in a sensible way and how the whole thing comes together in your code in a way that won't make you cry every time you need to make a change. The time for claims-based security is now!
Carl and Richard talk to Udi Dahan about Command-Query Responsibility Segregation (CQRS). CQRS is an enterprise application pattern derived from the DDD movement, where responsibility for data integrity and consistency lies soley in the application itself. The conversation digs deeply into using caching intelligently - not just create and expire, but actual maintenance of caching with a publication approach. Udi is the software simplist and makes this potentially confusing pattern absolutely clear!
Carl and Richard talk to Rob Eisenberg about Caliburn.Micro, a MVVM framework available on Codeplex. Caliburn.Micro takes Convention-over-Configuration further, utilizing naming conventions to handle a large number of data binding, validation and other action-based characteristics in your app.
Carl and Richard catch up with MLB in Dallas. We find out what she's up to. An interesting question asked: What was the most challenging system you ever had to architect? And yes, of course she tells a joke at the end!
Rob Boucher talks about a very helpful (and free!) application architecture guide contributed to by the who's who in the .NET Community, both inside and outside of Microsoft. You'll pick up some great tips. Writers: J.D. Meier (Project Lead), Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr., Akshay Bogawat, Praveen Rangarajan (Test), and Dennis Rea (Edit).
Lee Zuckett from Microsoft talks about the Microsoft Customer Care Framework, which helps companies create valuable customer relationships by improving the customer experience across all interaction channels -phone, e-mail, chat, and web-bringing together disparate information from different applications into one view, without having to re-enter the same information.
The always-thoughtful Brian Noyes shares his thoughts on the state of WPF, Silverlight, WF, and WCF.
Aslam Khan tells us his thoughts on good software design, focusing on the domain, resisting prototypes and big design up front. He also shares his thoughts about Software as a Service.