January 1

Looking back on 2023…

I've never written any kind of post-mortem on the year that was, 2023. So, what did I do in 2023?

Stepped down from my leadership roles at the Houston .NET User Group and the North Houston .NET User Group. I still regularly attend both, but needed a break. Luckily, we've found good stewards at Improving's Houston office and SmartDraw up in The Woodlands. I'll have to put together a talk to give at each one of those in 2024.

I had the bright idea of getting BJSS involved in the CodeLaunch 2023 event in Houston. The Head of Delivery and Software Engineering Capability Lead played an Uno Reverse Card and had me lead BJSS's team. I just wanted the company I worked for to be apart of the event, I wasn't expecting to lead anything. We had the 2nd draft pick and we drafted a company called Drinkicks. Hopefully we provided them some good tech to get them moving forward. It's tough to figure out how to squeeze the output of 24 hours of a hackathon into a ~30 sec demo.

I got "promoted" to Software Engineering Capability Lead for the BJSS - Houston office. I say "promoted" because it's one of those roles where there is no additional compensation, but I can update my LinkedIn profile. Which I did. The role covers a few areas including recruiting (interviewing) prospective candidates, playing matchmaker between client engagements and software engineers already on staff, and helping/encouraging software engineers to upskill themselves (certs, training, etc). So far it's been a good gig.

I served as the meet director for the 2023 USA Powerlifting Summer Power Fest. My wife and I have been running this competition every year except 2020 since the mid 00's. It's been alot of work and fun. It's good to see people who started their powerlifting career at our meet making it to the national and international levels of the sport.

I put together a talk on Command Query Responsibility Segregation (CQRS) for BJSS - Houston's internal Tech Forum event. I think the talk was received well. I'm not a big fan of giving presentations and it's something I definitely should get better at.

I was admitted into the USA Powerlifting Hall of Fame. Some people were paying attention when I was a competitor, coach, referee, meet director, and administrator. It was definitely one of those moments when you stop climbing the mountain and turn around and see how far you've come. I didn't get into the sport for this, but I am grateful USA Powerlifting thought so highly of me.

After the whirlwind of Azure certifications in 2022, I picked up the AWS Cloud Practitioner Certification. It was an easy exam. I just had to map the Azure names to the AWS names.

I planned to pick up the Azure Administrator Associate Certification. However, I ran out of time in 2023 to get it. Pushing this to 2024.

As far as client work goes, I worked for the same client all year. Good, steady pressure to deliver value and plenty of opportunities to contribute to the project beyond just building features and fixing bugs. The team I work with is a blend of the client's employees, BJSS employees, and another vendor's employees. Pretty good team, they just like to talk over each other in our 2 weekly scrum meetings.

In the first half of 2023, I renewed the following certifications:

  • Azure Data Engineer Associate
  • Azure Security Engineer Associate
  • Azure Solutions Architect Expert (I did this one cold turkey.)
  • Azure Developer Associate
  • Azure Cosmos DB Developer Specialty
  • Dev Ops Engineer Expert

In the second half of 2023, I renewed the following certifications:

  • Information Protection and Compliance Administrator Associate
  • Identity and Access Administrator Associate
  • Security Operations Analyst Associate
  • Security Administrator Associate (This is the first and last time I'll get to renew this one since Microsoft is retiring the certification. Kind of a bummer because this one was a pain in the ass to get.)
  • Cybersecurity Architect Expert

That's a high-level view of what I accomplished in 2023. It feels like things are getting busier in my life and I expect it to continue into 2024. My next post will have a rough plan of what I'll be doing in 2024.

Category: Uncategorized | Comments Off on Looking back on 2023…
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.
April 30

Passed Exam DP-420: Designing and Implementing Cloud-Native Applications Using Microsoft Azure Cosmos DB

I took the Exam DP-420: Designing and Implementing Cloud-Native Applications Using Microsoft Azure Cosmos DB yesterday and passed it. So I've added a new badge to the Certifications page.

Microsoft Certified: Azure Cosmos DB Developer Specialty badge
Microsoft Certified: Azure Cosmos DB Developer Specialty

Allright...so what's next? Good question. I'm supposed to be rolling on to a project at work so that's going to curtail my free time to chase these certifications. Here's some ideas:

Got another idea? Let me know.

Category: Azure, Certifications | Comments Off on Passed Exam DP-420: Designing and Implementing Cloud-Native Applications Using Microsoft Azure Cosmos DB
April 9

Beyond Senior Developer: The Next Steps For Your Technical Career

This past Friday night, I made the trek down to the Improving Houston office for a Houston Java Users Group meeting. If you say I'm not a Java developer, I'll say you are correct. The topic tonight peeked my interest since this is something that I've been thinking about lately. It was Beyond Senior Developer: The Next Steps For Your Technical Career by Bruno Souza. If you are a senior developer trying to figure out where to go next in your career, this talk is worth your time (even if you aren't a Java developer).

Thanks to Jim Bethancourt for the invite to attend this event.

Bonus: A baby opossum outside the Improving Houston office on 4/8/2022.

Category: Career | Comments Off on Beyond Senior Developer: The Next Steps For Your Technical Career
April 9

Passed DP-900: Microsoft Azure Data Fundamentals

Found about a week's worth of time to prep and take the DP-900: Microsoft Azure Data Fundamentals. Having passed it, I can now say I'm Microsoft Certified: Azure Data Fundamentals. This was one of the easier exams I've taken. Probably because I took the DP-203: Data Engineering on Microsoft Azure in the past and I took more time to prep for that one.

If you're looking to start taking Azure certification exams, this is a good first one to do to get a feel for how the exam process works, etc.

So what's next? Given that I'm on the bench currently and I have more time to dedicate to prepping for another certification; AWS Certified Cloud Practitioner. I'll have to take a deeper look into what that exam entails on Monday.

Category: Azure, Certifications | Comments Off on Passed DP-900: Microsoft Azure Data Fundamentals
February 24

Passed AZ-500: Microsoft Azure Security Technologies

Yep, you've read that right. I have passed the AZ-500: Microsoft Azure Security Technologies exam. When I did that, I got an email saying I won the following prize:

Microsoft Certified: Azure Security Engineer Associate

It's been awhile since I picked up the Microsoft Certified: Azure Solutions Architect Expert. It feels good to get another one. Specifically, the feeling you get when you click "Finish Test" in the exam, your score is displayed, and you passed.

I had the following question on BJSS's Slack this morning:

What practice exams did you do @Tony Cardella ? Any recommended learning materials ?

Sean D.

Excellent question and one that I've had before starting exam prep. Starting from scratch is a little daunting so I hope this helps point someone in the right direction.

By themselves, no bullet point covers all the bases, rather each one provides a slightly different perspective on the exam. I do want to make sure I call out John Savill's Technical Training YouTube channel for the excellent video he put together. The video is almost 3 hours long and it looks like he filmed it in a single take. Respect.

So what's next? I'm not sure yet. I'm flirting with the idea of taking Exam DP-900: Microsoft Azure Data Fundamentals. I'm open to other ideas though. Got an idea? Let me know.

Category: Azure, Certifications | Comments Off on Passed AZ-500: Microsoft Azure Security Technologies
December 29

“A jack of all trades is a master of none…”

I'm sure you've heard this saying somewhere in the past, but do you know the full saying? If not, here it is:

A jack of all trades is a master of none, but oftentimes better than a master of one.

Seems applicable in software development.

Category: Uncategorized | Comments Off on “A jack of all trades is a master of none…”
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
April 26

Another Update to My High Score

I have a job change coming up and I thought it would be a good idea to do an update to New High Score (update)! and New High Score! posts. Since those 2 posts I've had a couple work items that required updates to that monster class. Here is what the metrics look like now.

Maintainability IndexCyclomatic ComplexityDepth of InheritanceClass CouplingLines of Source Code
5094872102660516
Code metrics covering the class in aggregate.
Maintainability IndexCyclomatic ComplexityDepth of InheritanceClass CouplingLines of Source Code
512237822
0215481180
0284221237
Code metrics covering the 3 longest methods in the class.

I'm a big believer in leaving a code base better than you found it. I had a couple work items that required me to go in and refactor this monster class a bit. As a developer I feel a lot more comfortable making these kinds of changes (i.e. Strangler Fig design pattern) when I have the proper tools such as JetBrains ReSharper. The payoff for this change was that it allowed me to write unit tests to cover the part of the class that I needed to complete the work items. When you have a code base that is this convoluted, it's nice to have a series of unit tests to proof that the changes you made to the code base work. This came in handy in a discussion with a QA guy. I was able to walk him through each one of the tests I had written. Turns out the issue was in a basic understanding of the work item the way it was written. However, my code worked correctly in the end and I could prove it.

I wasn't the only one working on this code. There were at least 2 or 3 teams making changes to this code.

Category: .NET, C#, Design Patterns | Comments Off on Another Update to My High Score