OwlTail

Cover image of Patrick Smacchia

Patrick Smacchia

10 Podcast Episodes

Latest 3 Jul 2022 | Updated Daily

Episode artwork

NDepend with Patrick Smacchia

The Unhandled Exception Podcast

In this episode, I was joined by Patrick Smacchia, all the way from the beautiful island of Mauritius, to chat all about NDepend! An amazing tool for analysing .NET projects and displaying tons of useful information to help improve code quality. From scanning for code quality issues, to showing plenty of dependency graphs and code visualisations.For a full list of show links, see the website here

1hr 9mins

3 Oct 2021

Episode artwork

Testing using nDepend with Patrick Smacchia

.NET Rocks!

How do you do static testing in your applications? Carl and Richard talk to Patrick Smacchia of nDepend - one of the original testing products for .NET, stretching back to the very beginning! Patrick talks about how nDepend has grown over the years to provide a variety of tools for helping you to visualize the quality of your code, and to detect code smells - that is, aspects of code that may indicate a problem. The conversation dives into building out rules in projects to do static evaluation as code is created so you can catch problems early, to determine when its time to refactor older code!

57mins

2 Jul 2020

Similar People

Episode artwork

Testing using nDepend with Patrick Smacchia

.NET Rocks!

How do you do static testing in your applications? Carl and Richard talk to Patrick Smacchia of nDepend - one of the original testing products for .NET, stretching back to the very beginning! Patrick talks about how nDepend has grown over the years to provide a variety of tools for helping you to visualize the quality of your code, and to detect code smells - that is, aspects of code that may indicate a problem. The conversation dives into building out rules in projects to do static evaluation as code is created so you can catch problems early, to determine when its time to refactor older code!

57mins

2 Jul 2020

Episode artwork

Interview with Patrick Smacchia

Software Crafts Podcast

This week we have Patrick Smacchia, the creator of NDepend. We will discuss software maintainability, and for that, Patrick will share his opinion on the heuristic "No broken windows" from the Xebia Essentials repository (https://essentials.xebia.com/no-broken-windows/). Patrick's shares his experiences, from the early stages of his career to today. We share his principles and practices regarding software maintainability and how it is encoded in NDepend. We also have a glimpse over his views on testing! Patrick recommends the following resources: NDepend Blog - https://blog.ndepend.com/ Design by Contract, from Bertrand Meyer - https://bertrandmeyer.com/category/design-by-contract/ Scott Hanselman - https://www.hanselman.com/ 3Blue1Brown on Youtube - https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw Patrick has been fortunate to start programming as a child on 8bits computers in the 80s. Then he naturally graduated in Math and Software engineering. After a decade of C++ programming and consultancy, Patrick got interested in the brand new .NET platform in 2002. He wrote the best-seller book (in French) on .NET and C#, published by O'Reilly and also did manage some academic and professional courses on the .NET platform and C#. Over the years, Patrick gained a passion for understanding the structure and evolution of large complex real-world applications and good practices to improve software maintainability. As a consequence, he got interested in static code analysis and started the project NDepend.

31mins

30 Jun 2020

Most Popular

Episode artwork

.NET 011: SOLID and .NET Predictions with Patrick Smacchia

Devchat.tv Episode Roundup

In this episode of Adventures in .NET the panel interviews Patrick Smacchia who is known for his static analyzer, NDepend. The panel discusses NDepend, Patrick explains a bit about what is and how it works along with his history in .NET. Patrick is here to explains SOLID, an acronym introduced by Robert C. Martin outlining principles for object-oriented programming.  These principles teach programmers to use object-oriented programming correctly. The panel considers what can go wrong when object-oriented programming is misused. They also explain that the most important thing when it comes to SOLID is to try your best, it is impossible to be perfect in anything. Patrick explains that when your code is SOLID is will be easily testable and maintainable.  The five principles are Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion. Of all the principles, Single Responsibility is unique. Patrick explains that this principle is all about organization and advises developers to be very careful when using this principle in your domain. The domain is where it is most important to have SOLID code and it needs to be 100% covered by testing. The panel shares that this is the principle that they try the hardest to follow.   The definition given by Patrick for Single Responsibility is that a class should have a single responsibility or a class should have only one reason to change. Patrick warns the listeners that this is a very complex concept that is difficult to explain. The panel explains that Single Responsibility is a way to accomplish a separation of concern. The panel outlines the benefits of following this principle while Patrick shares some examples and walk the listeners implementing this principle.  The next principle is Open-Closed. Patrick’s definition of this principle is modules should be open for extension but closed for modification. He and the panel dive deeper into what this means. He advises developers when designing a class to be very careful when choosing the point of variation and make sure you don’t change the code in your base class. Caleb shares the problems they experienced in one of his recent projects when this principle was not followed. Patrick explains why the solution is more often the interface rather than the base class.  Moving on to the next principle, the Liskov substitution. Patrick explains how this principle using the example of the ibird. The Liskov substitution principle is that objects in a program should be replaceable so that you can’t tell the difference. In the ibird example, you can not replace the ibird with any bird because if the ibird can fly but the replacement bird is an ostrich it cannot perform the necessary functions. Patrick explains how ilists are in opposition to the Liskov principle.   Next is the Interface Segregation Principle. Patrick explains how this relates to the Single Responsibility Principle. He also discusses how the Liskov Substitution and the Interface Segregation are two sides of the same coin when it comes to designing interfaces. The Interface Segregation explains that many smaller client-specific interfaces are better that one large interface with everything on it.  The final principle is Dependency Inversion. Patrick explains that this principle does not help you design your interface, it helps you organize dependencies into your code structure.   This principle advises developers to depend on abstractions. He explains how this principle relates to dependency injection. The panel considers the damage dependencies can cause in a codebase if improperly used. Patrick explains when a developer will want to use abstractions and when to use classes. He explains that these 5 principles will become natural and feel like common sense as developers gain experience. Switching gears, the panel moves on to discuss a blogpost Patrick wrote explaining 4 predictions he had for the future of .NET. He wrote the article because of the announcement that .NET core will become .NET 5. The future of .NET has a great impact on NDepend and Patrick wanted to give some perspective to the changes and how they might affect his company.   His first prediction is that .NET standards won’t evolve much. Patrick explains that the purpose of .NET Standards was to support all the .NET flavors and with only .NET to support that job will become much simpler. He also speculates on the reasons for Microsoft wanting only one .NET. Some of the reasons he lists are that Microsoft does not have an endless workforce and .NET core is open source and multiplatform.  Patrick’s second prediction greatly impacts NDepend. His prediction is that Visual Studios will run on .NET 5, explaining why he is so sure that they will switch Visual Studios over to .NET 5. Patrick believes that it may take a while for the switch to happen. The panel considers the future of Windows.  The third prediction Patrick makes is that .NET will propose a cross-platform UI framework. Microsoft did a poll asking developers about the need for a cross-platform UI framework. The panel speculates how this framework will happen. Patrick wonders at the possibility of WPF. The panel brings up the final prediction, that Blazor has a bright future, and wonder if Blazor could become that cross-platform UI framework.   Panelists Shawn Clabough Caleb Wells Guest Patrick Smacchia Sponsors My Ruby Story React Native Radio Adventures in Angular CacheFly Links www.ndepend.com SOLID 4 Predictions for the Future of .NET  Satya Nadella reveals why Windows may not be the future of Microsoft’s business .NET 003: Blazor with Daniel Roth https://www.facebook.com/Adventures-in-NET-373059030062837/ https://twitter.com/dotNET_Podcast Picks Caleb Wells: https://www.packtpub.com/free-learning Shawn Clabough: https://conemu.github.io/

59mins

22 Oct 2019

Episode artwork

.NET 011: SOLID and .NET Predictions with Patrick Smacchia

Adventures in .NET

In this episode of Adventures in .NET the panel interviews Patrick Smacchia who is known for his static analyzer, NDepend. The panel discusses NDepend, Patrick explains a bit about what is and how it works along with his history in .NET. Patrick is here to explains SOLID, an acronym introduced by Robert C. Martin outlining principles for object-oriented programming. These principles teach programmers to use object-oriented programming correctly. The panel considers what can go wrong when object-oriented programming is misused. They also explain that the most important thing when it comes to SOLID is to try your best, it is impossible to be perfect in anything. Patrick explains that when your code is SOLID is will be easily testable and maintainable. The five principles are Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion. Of all the principles, Single Responsibility is unique. Patrick explains that this principle is all about organization and advises developers to be very careful when using this principle in your domain. The domain is where it is most important to have SOLID code and it needs to be 100% covered by testing. The panel shares that this is the principle that they try the hardest to follow.  The definition given by Patrick for Single Responsibility is that a class should have a single responsibility or a class should have only one reason to change. Patrick warns the listeners that this is a very complex concept that is difficult to explain. The panel explains that Single Responsibility is a way to accomplish a separation of concern. The panel outlines the benefits of following this principle while Patrick shares some examples and walk the listeners implementing this principle. The next principle is Open-Closed. Patrick’s definition of this principle is modules should be open for extension but closed for modification. He and the panel dive deeper into what this means. He advises developers when designing a class to be very careful when choosing the point of variation and make sure you don’t change the code in your base class. Caleb shares the problems they experienced in one of his recent projects when this principle was not followed. Patrick explains why the solution is more often the interface rather than the base class. Moving on to the next principle, the Liskov substitution. Patrick explains how this principle using the example of the ibird. The Liskov substitution principle is that objects in a program should be replaceable so that you can’t tell the difference. In the ibird example, you can not replace the ibird with any bird because if the ibird can fly but the replacement bird is an ostrich it cannot perform the necessary functions. Patrick explains how ilists are in opposition to the Liskov principle.  Next is the Interface Segregation Principle. Patrick explains how this relates to the Single Responsibility Principle. He also discusses how the Liskov Substitution and the Interface Segregation are two sides of the same coin when it comes to designing interfaces. The Interface Segregation explains that many smaller client-specific interfaces are better that one large interface with everything on it. The final principle is Dependency Inversion. Patrick explains that this principle does not help you design your interface, it helps you organize dependencies into your code structure.   This principle advises developers to depend on abstractions. He explains how this principle relates to dependency injection. The panel considers the damage dependencies can cause in a codebase if improperly used. Patrick explains when a developer will want to use abstractions and when to use classes. He explains that these 5 principles will become natural and feel like common sense as developers gain experience.Switching gears, the panel moves on to discuss a blogpost Patrick wrote explaining 4 predictions he had for the future of .NET. He wrote the article because of the announcement that .NET core will become .NET 5. The future of .NET has a great impact on NDepend and Patrick wanted to give some perspective to the changes and how they might affect his company.  His first prediction is that .NET standards won’t evolve much. Patrick explains that the purpose of .NET Standards was to support all the .NET flavors and with only .NET to support that job will become much simpler. He also speculates on the reasons for Microsoft wanting only one .NET. Some of the reasons he lists are that Microsoft does not have an endless workforce and .NET core is open source and multiplatform. Patrick’s second prediction greatly impacts NDepend. His prediction is that Visual Studios will run on .NET 5, explaining why he is so sure that they will switch Visual Studios over to .NET 5. Patrick believes that it may take a while for the switch to happen. The panel considers the future of Windows. The third prediction Patrick makes is that .NET will propose a cross-platform UI framework. Microsoft did a poll asking developers about the need for a cross-platform UI framework. The panel speculates how this framework will happen. Patrick wonders at the possibility of WPF. The panel brings up the final prediction, that Blazor has a bright future, and wonder if Blazor could become that cross-platform UI framework.  Panelists Shawn Clabough Caleb Wells Guest Patrick Smacchia Sponsors My Ruby Story React Native Radio Adventures in Angular CacheFly Links www.ndepend.com SOLID 4 Predictions for the Future of .NET  Satya Nadella reveals why Windows may not be the future of Microsoft’s business .NET 003: Blazor with Daniel Roth https://www.facebook.com/Adventures-in-NET-373059030062837/ https://twitter.com/dotNET_Podcast PicksCaleb Wells: https://www.packtpub.com/free-learning Shawn Clabough: https://conemu.github.io/ Special Guest: Patrick Smacchia .

59mins

22 Oct 2019

Episode artwork

Patrick Smacchia on Static Code Analysis - Episode 52

Azure DevOps Podcast

Patrick Smacchia is the founder and CEO of NDepend — a tool for .NET static analysis — and has been in the software world for over 20 years. He’s one of the world’s top tier experts in static code analysis. And today, with more than 8,000 client companies (including many Fortune 500s), NDepend offers deeper insight and understanding about their code bases to a wide range of professional users around the world. In this episode, Jeffrey and Patrick will be discussing static code analysis. Patrick elaborates on exactly what it is, how to think about it, why you should implement it, and gives his recommendations on how to get started as well as further learning. Everyone in the DevOps world needs to know what static code analysis is and how to put it in place, to tune in to learn all about this key concept! Topics of Discussion: [:40] Be sure to visit AzureDevOps.Show for past episodes and show notes! [:46] Jeffrey gives some announcements and lets you know where to get a hold of his book, .NET DevOps for Azure. [1:39] About today’s guest, Patrick Smacchia. [1:56] Jeffrey welcomes Patrick on to the show! [2:18] Patrick explains what static code analysis is and how he thinks of it. [7:46] Patrick further elaborates on the concept of treating the code as data with static code analysis. [15:25] How should we think about this realm of static code analysis? What advice would Patrick give someone on how to think about when it comes to static code analysis? [23:03] A word from Azure DevOps Podcast’s sponsor: Clear Measure. [23:30] When it comes to finding problems in the code, how does Patrick determine which code is too complex? [37:10] Resources Patrick recommends to listeners who would like to learn more! [39:34] Jeffrey thanks Patrick for joining him on today’s episode. Mentioned in this Episode: Azure DevOps Clear Measure (Sponsor) .NET DevOps for Azure, by Jeffrey Palermo bit.ly/dotnetdevopsproject bit.ly/dotnetdevopsbookforcommunity — Visit to get your hands on two free books to give away at conferences or events! Patrick Smacchia NDepend Want to Learn More? Visit AzureDevOps.Show for show notes and additional episodes.

40mins

2 Sep 2019

Episode artwork

#128 Patrick Smacchia, NDepend in 2019

no dogma podcast

Summary Patrick Smacchia of NDepend comes back on the podcast to talk about updates to the tool in the past two years. Details Who he is, what he does. A little bit of background on NDepend. Azure devops; NDepend in CICD, coming soon to Linux containers. Visual Studio extension, challenges in writing extensions in VS 2019, extension placement; no VS Code extension. How coming changes in .NET and Visual Studio will impact NDepend. Short and medium future for NDepend. Full show notes

44mins

26 Aug 2019

Episode artwork

#74 Patrick Smacchia, NDepend

no dogma podcast

Summary Patrick Smacchia creator of NDepend explains how this tool can improve the quality of your code. Details Who he is, what he does. Why he is interested in code quality. NDepend is 10 years old. Transitioning from free to commercial. What is static analysis. Comparing NDepend to other tools, Roslyn analyzer. Finding spaghetti code, all rules are linq queries. Measuring technical debt, estimating the cost of fixing the code vs leaving it alone. Call graphs, dependency matrix, tree map, code coverage. Visual Studio Team Services plugin, quality gates, comparing code coverage per release, testability and maintainability. NDepend can analyze dlls, it looks at the intermediate language. Patrick loves the book "CLR via C#", Bryan talks about the time Jeffrey Richter stared him down. Future work. Getting a free trial. How to really pronounce Smacchia.

42mins

5 Jun 2017

Episode artwork

Software Metrics with Patrick Smacchia

Hanselminutes with Scott Hanselman

Scott sits down with Patrick Smacchia, lead developer of NDepend, and talks about Software Metrics. What metrics lie beyond Lines of Code?

36mins

26 May 2009