March 26

Seeking Input for My Upcoming Talk on Code Metrics

Howdy!

I'm preparing a talk on code metrics and would love input from the community on what to cover. I'll be presenting this later this year at both the Houston .NET User Group and the North Houston .NET User Group.

Throughout my software engineering career, I’ve encountered many of these metrics, but I’ve rarely seen a single, clear explanation of them all in one place. My goal with this talk is to demystify code metrics—helping software engineers, architects, and engineering managers understand what these metrics are, what insights they provide, and their limitations.

Right now, I’m planning to cover the following metrics:

  • Code Coverage %

  • Cyclomatic Complexity

  • Maintainability Index

  • Lines of Code (LOC)

  • Code Churn

  • Afferent & Efferent Coupling

  • Instability

  • Coupling Between Objects

  • Depth of Inheritance Tree (DIT)

  • Lack of Cohesion in Methods (LCOM)

  • Tight Class Cohesion / Loose Class Cohesion

  • Response for a Class (RFC)

  • Duplication Percentage

  • Defect Density

This is probably more than I can fit into an hour, so I’d love your input:
✅ Which of these metrics should I prioritize?
✅ Are there any important metrics I’ve overlooked?
✅ Have you found specific metrics useful or misleading in your work?

If there’s enough interest, I could explore a deeper dive or a follow-up session on specific metrics. Let me know what you think!

Category: .NET | Comments Off on Seeking Input for My Upcoming Talk on Code Metrics
March 22

Supercharge Your .NET Testing with NCrunch – The Slide Deck

On Thursday, March 20, 2025, I gave a lightning talk at the North Houston .NET User Group meeting in The Woodlands, Texas. If you are interested in the slide deck I put together here's the PowerPoint presentation; Supercharge Your .NET Testing with NCrunch.

The slide deck doesn't really have anything earth shattering. I used it mostly as a guide for what I wanted to cover.

I felt the talk went well. I was hoping for alot of audience participation which I got. Turns out there are a few people who have used NCrunch who were there. It was a good opportunity to compare notes.

TLDR; NCrunch is awesome and you should use it.

If there are any additional questions, let me know and I'll get them answered.

Category: .NET, Tools, unit testing | Comments Off on Supercharge Your .NET Testing with NCrunch – The Slide Deck
March 14

Speaking at the March 2025 North Houston .NET User Group

At the upcoming North Houston .NET User Group meeting (3/20/2025), Tony Cardella, Software Engineer and Software Engineering Capability Lead at BJSS, will be delivering a lightning talk on the topic of NCrunch.

Title: Supercharge Your .NET Testing with NCrunch

Tired of waiting for tests to run? NCrunch is a powerful continuous testing tool for .NET that runs your tests in the background, providing instant feedback, real-time code coverage, and parallel execution to speed up development. In this lightning talk, we’ll explore how NCrunch works, highlight its key features, and see it in action with a quick demo.

More information is available here: https://www.meetup.com/nhdnug/events/305901663/

Hope to see you there!

Category: .NET, BJSS, C#, Tools, unit testing | Comments Off on Speaking at the March 2025 North Houston .NET User Group
December 1

Advent of Code 2024

It's that time of year again. That's right it's Christmas time and that means...Advent of Code!

Why am I doing Advent of Code this year?

  1. I'm trying to learn Python better. This is the perfect excuse.
  2. My employer, BJSS, is a sponsor again this year.

Language + Tech Stack

In previous years, I've done AoC with .NET/C#, but this year I will be using Python. While an IDE is not needed for Python, I've decided to use JetBrains PyCharm. Check it out if you haven't seen it. I'm still learning the shortcuts, which reminds me to print out the shortcuts. I like using unit testing to help verify that my code works and for that I'll be using pytest. I've been using NCrunch as my .NET continuous test runner but I'll have to use something else for Python; pytest-watch.

Source Control

Git/GitHub is my source control of choice. I added a CI/CD pipeline to validate the code once it's been pushed to the master branch.

Workflow

  1. Setup the code for the puzzle of the day (i.e. add the boilerplate code, but try to keep the amount down)
  2. Read the prompt for part 1.
  3. Start writing code to get the example working for part 1.
  4. Once the code is running with the example, run it against the actual input.
  5. Submit the actual output value.
  6. If the answer is incorrect, rework the code and go to step 4.
  7. If the answer is correct, update the expected value for the part 1 test so that it's green.
  8. Read the prompt for part 2.
  9. Start writing code to the example working for part 2.
  10. Once the code is running with the example, run it against the actual input.
  11. Submit the actual output value.
  12. If the answer is incorrect, rework the code and go to step 10.
  13. If the answer is correct, update the expected value for the part 2 test so that it's green.
  14. Commit the puzzle as is to Git.
  15. Refactor the code til it looks presentable to the public and/or resolve any perf issues.
  16. Commit the refactored code to Git.
  17. Done.

Where can I see your progress?

You can see my progress on my GitHub repo.

Category: .NET, Advent of Code, BJSS, C#, Python | Comments Off on Advent of Code 2024
September 21

gRPC + .NET: Lessons from the Trenches Retrospective

Now that I've had a chance to slow down a bit let's do some creative writing. Let's talk about the "gRPC + .NET: Lessons from the Trenches" talk I gave at the North Houston .NET User Group. As I said previously, the talk was received well and I was really happy about that.

The inspiration or the idea to talk about gRPC came from the work I was doing at a large oil & gas company located in the Energy Corridor in Houston, Texas. My stint on the project lasted about 20 months.

This was actually the 3rd time I've given the talk. The first time was for an internal BJSS event in April of 2024. The second was at the Houston .NET User Group back in June 2024. The neat thing about taking a talk from scratch all the way through several iterations is how the presentation "feels". You should find potholes as you go and make notes to double back to correct and/or add to them.

The intent with the talk was to answer the following questions:

  • What is gRPC?
  • Can you give some evidence that shows that gRPC out-performs REST API?
  • Have you ever used gRPC on a real project?
  • What were some of the issues/problems you encountered and how did you work around them?
  • When should you use gRPC?
  • When should you NOT use gRPC?

I feel like when I got to the 3rd iteration of the talk I was answering all those questions completely and coherently. Including the benchmarks in this version of the talk was a good addition and I'll credit Daniel Wright, Principal Technologist @ BJSS Houston with the idea for that one.

I was surprised that the audience this time around had more experience with gRPC than I was expecting. This lead to alot of good questions and some leading questions that came up right before I answered them on the next slide. The talk started to take on more of a conversation kind of feel than a lecture.

While I did have fun putting this talk together and giving it, I don't think I'm going to hang up my developers hat yet. I'm sure there is still a project out there that needs my help! Now it's time to find another topic to talk about and then probably re-do the circuit next year.

Category: .NET, BJSS, C#, gRPC | Comments Off on gRPC + .NET: Lessons from the Trenches Retrospective
September 20

gRPC + .NET: Lessons from the Trenches Powerpoint Slide Deck

Hey! If you were one of the people who came out to the September 2024 North Houston .NET User Group meeting tonight...thank you! You all were a great audience and I loved the interaction.

As promised, here is a copy of my Powerpoint slide deck (gRPC + .NET: Lessons From the Trenches). Feel free to ask questions if you still have any.

Have a suggestion for another talk I should do? Let me know and if there is enough there I can put one together.

Category: .NET, ASP.NET, ASP.NET Core, C#, gRPC | Comments Off on gRPC + .NET: Lessons from the Trenches Powerpoint Slide Deck
September 11

How to Host a gRPC Service With an Azure App Service (as of 9/10/2024 anyway…)

I'm giving a talk on gRPC next week and I wanted to add more content around some gRPC benchmarks. The recent work I was doing for a client with gRPC was hosted in containers and hosted in AWS. This worked well and we had minimal issues once we got it up and running. For the benchmarks I'm looking to run, I just needed to host the gRPC service in an Azure App Service. Now that I found the correct documentation, this is a piece of cake and I'd like to point it out to anybody else who might be looking for this information in the future.

This is the documentation for deploying a gRPC app on an Azure App Service:

I can confirm that this will also work for .NET 8. It was not working for .NET 9 as of 9/11/2024. I'd expect that to get fixed in the near future.

Category: .NET, ASP.NET, ASP.NET Core, Azure, C#, gRPC | Comments Off on How to Host a gRPC Service With an Azure App Service (as of 9/10/2024 anyway…)
August 6

H2 2024 Update

Well...we're alittle over 1 month into the second half of 2024. It's been a bizarre July filled with a hurricane, a vacation, and some unexpected twists and turns.

Let's go over the TODO list of the things that I know I need to do.

  • Take and pass the GitHub Foundations exam (holdover from H1 2024)
  • Renew Information Protection and Compliance Administrator Associate (< 9/28/2024) - Completed 8/6/2024
  • Renew Identity and Access Administrator Associate (< 10/9/2024) - Completed 8/7/2024
  • Renew Security Operations Analyst Associate (< 10/28/2024) - Completed 8/8/2024
  • Renew Cybersecurity Architect Expert (< 11/21/2024) - Completed 8/9/2024
  • Give gRPC + .NET: Lessons from the Trenches talk to NHDNUG in September 2024
  • Attend HDNUG meetings
  • Attend NHDNUG meetings
  • Attend HAUG meetings
  • Attend Clear Measure Architect Forums
  • brainstorm ideas for another talk to give in 2025 (maybe with more of a Azure-cloud flavor?)

And then the areas that still need more clarification:

  • Decide on a cert path to go down
    • GitHub - Actions, Advanced Security, Administration
    • Azure AI - AI-900, AI-102
    • AWS - AI Practitioner, Solutions Architect Associate, Developer, DevOps Engineer, Solutions Architect Professional

That's all I've got so far. I still need to have some conversations with people at work to figure out what I need to prioritize with respect to my employer. I'll provide an update when I have one.

Category: .NET, Azure, Career, Certifications | Comments Off on H2 2024 Update
August 9

Moq phoning home with/to SponsorLink? What to do about it.

Hopefully you've heard about the latest changes to a popular Open Source Software Project used by the .NET ecosystem. No? Well here is some reading material:

This issue in Moq's GitHub repo has more information as well.

https://github.com/moq/moq/issues/1372

Ok...so how do you handle this? I'm sure most of us out there in the world have other projects in flight and don't want to end up accidently pulling in this problematic NuGet package. Most clients/project managers/projects don't respond well to having to stop active development on a dime just to refactor a bunch of test code. So what do we do? Microsoft has us covered in this scenario. In this case we only want to allow Moq v4.18.4. We will come back later on when we have time to refactor/replace Moq. Let's consult the docs shall we?

In the beginning we see that we have Moq v4.18.4 installed and there is an update to v4.20.2.

We need to go through our solution and replace each PackageReference for Moq in each project that uses it. So we're going from this:

<PackageReference Include="Moq" Version="4.18.4" />

to this:

<PackageReference Include="Moq" Version="[4.18.4]" />
After changing all the PackageReferences for Moq in the solution, you'll notice that the package is no longer showing up in the Updates tab.

Is this foolproof? No, you can still update the Moq package. By removing the option in the Updates tab, you will have removed the temptation to update it.

Category: .NET, unit testing | Comments Off on Moq phoning home with/to SponsorLink? What to do about it.
November 18

When I Get a New Job, I’m Updating My Licenses

If you've been paying attention to LinkedIn, you've probably noticed that I am looking for a new job. If you are hiring and you would like to talk, shoot me an email.

When I get this new job and I have some income, I'm going to update my licenses for the following Linqpad and NCrunch.

LINQPad

I love this app. I first used this back during my tenure at Logica when we were working with StreamInsight. It's a good app to use to be able to quickly test out chunks of C#, VB.NET, and F# code. The app is extensible so you can download other drivers that let you hook up to other SQL/NoSQL databases. Really cool for learning/prototyping code. Check out the website for more information: https://www.linqpad.net.

NCrunch

NCrunch is an automated concurrent testing for Visual Studio. What that means in English is that you can configure it to run your unit tests as you are typing your code. You can configure it to run the unit tests that are impacted by the changes you make so you aren't running the entire suite of unit tests. This is very handy, especially if you have good code coverage. It even collects code coverage numbers and performance metrics. More information can be found on the website: https://www.ncrunch.net.

Category: .NET, Reactive Extensions, Tools, unit testing | Comments Off on When I Get a New Job, I’m Updating My Licenses