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
May 18

Penny-Wise or Pound-Foolish?

When I mention using "Azure Virtual Desktop" as your daily driver for software development work, what is your reaction?

If you are a CISO or another cybersecurity professional, you like it because of the lower management overhead (hardware and software), enhanced security features, consistency between AVD instances/images, and the additional help with compliance it gives you. I would also hope this makes your job easier and improves your life at work.

If you are an experienced software engineer/developer who uses a bunch of software-based tools (i.e. Visual Studio, VS Code, NCrunch, LinqPad, JetBrains ReSharper, JetBrains dotCover, etc) to develop solutions, you are probably rolling your eyes right now. Your computing needs/wants are higher than someone who is slinging PowerPoint decks and Excel spreadsheets all day.

Sure, you can knock someone for using more tools to get the job done and tell all the "Back in my day..." stories you want. But if it speeds up their delivery, improves the quality of their code, and makes them feel better and less aggravated at the end of every working day, this is going to be an absolute win for the company in the end.

I don't understand for the life of me, why somebody would make the blanket decision that all contractors at the company cannot have a company provided computer and must use AVD. Then on the AVD instance they do get, the most RAM they can have out of the gate is 16GB. This might make sense for the contractors who spend most of their days slinging PowerPoint decks, Excel spreadsheets, and/or working with web-based apps where most of the compute is done on the server. But what about the software engineer who is running a bunch of tools that need more system resources to run smoother, with less aggravation and lag? This constant lag and waiting for applications is enough to pull you out of "Flow". As a software engineer, I love the State of Flow that you can get into while working. It's very calming and makes me feel amazing after a long stretch when I can turn around and see how much work I've done. Why would you want to put yourself in that environment where you can't get into that state for any great length of time?

Anyway, I feel like if you want a good job done right, then give the people you have working for you what they need. You don't want to give them phyisical hardware? Fine then give'em the 32GB or more of RAM on their AVD instance and let them do their thing. This shouldn't be rocket surgery.

What do you think? Is it worth it to provide software engineers with the resources they need to do a job quicker and with less pain even if it might be alittle more expensive or would you rather them do the job slower with more aggravation for cheaper? Penny-wise or pound-foolish?

Category: Rants | Comments Off on Penny-Wise or Pound-Foolish?
April 28

Q1 2024 Update

Let's go over the things that I have done in Q1 2024.

Certifications

  • Renew Azure Data Engineer Associate - Completed 1/14/2024
  • Renew Azure Security Engineer Associate - Completed 1/15/2024
  • Renew Azure Solutions Architect Expert - Completed 1/16/2024
  • Renew Azure Developer Associate - Completed 1/17/2024
  • Renew Azure Cosmos DB Developer Specialty - Completed 1/18/2024
  • Renew DevOps Engineer Expert - Completed 1/19/2024
  • Acquire Azure Administrator Associate - Completed 2/23/2024

Talks

I was planning on just 1 talk this quarter, but BJSS (my employer), had other ideas. I gave a short talk as part of the 1st BJSS External Tech Forum. This talk covered some of the particulars of how we did at CodeLaunch including drafting a company, the hackathon, and the big event itself. I thought it went off well.

Events

We did CodeLaunch again this year. Unfortunately, we were eliminated in the first round. However, we picked a good company (Glydr) and had alot of fun working with them.

What were my misses?

  • Take and pass the GitHub Foundations exam
  • Give talk on gRPC + .NET to the BJSS Houston Tech Forum

I think the GitHub Foundations exam should be easy to prep for so I'll bump that to one of the higher priority items. The talk on gRPC + .NET I ended up giving on 4/25/2024. It was still late though. I've put in to give the talk to the Houston .NET User Group as well as the North Houston .NET Group. I'll post more about that here when those get scheduled.

That's all I've got for now. I'll post another update at the end of Q2. Back to work!

Category: Azure, BJSS, Career, Certifications | Comments Off on Q1 2024 Update
April 1

CodeLaunch

This came about after the start of the year so it wasn't part of The Plan™. I ended up giving a quick talk over BJSS's participitation in CodeLaunch for BJSS Houston's first Tech Forum. Anyway, I thought the talk went well. Here is the link to the slide deck I put together for CodeLaunch Houston 2024 - EXT Tech Forum. Enjoy!

Oh! If you have any questions or comments, let me know.

Category: BJSS | Comments Off on CodeLaunch
January 12

Looking ahead to 2024…

I think I'm going to take an approach where I aim to do a project every month of 2024. It can be a certification, a talk, or an event. I think this approach gives me something that I can commit to doing and provide a flexible enough deadline to be able to get it done even with the rest of life happening around me. I have "projects" scheduled for every month in the first half of the year. I think when I get to June I'll stop, take a breath, and then plan out the remainder of 2024.

As far as BJSS work goes for 2024, I'm expecting to be on the same project throughout 2024. This will be good because I won't have the stress of having to change clients or do any ramping up for newer projects. This should also free up some time so I can work on other things too.

I also need to make an effort to post on this blog more about tech topics. Got any ideas?

2024

  • January 2024
    • Take and pass the AZ-104 exam
    • Take and pass the GitHub Foundations exam
  • February 2024
    • CodeLaunch 2024
  • March 2024
    • Give talk on gRPC + .NET to the BJSS Houston Tech Forum
  • April 2024
    • Give talk on gRPC + .NET to the Houston .NET User Group
    • Referee at the 2024 USA Powerlifting Collegiate National Championships
    • Take Cat II referee exam/practical
  • May 2024
    • Give talk on gRPC + .NET to the North Houston .NET User Group
  • June 2024
    • Run the USA Powerlifting Summer Power Fest with Mike Hafenbrack
  • December 2024
    • Participate in the Advent of Code 2024 (gotta get more BJSS Houston folks involved)

Certifications (New)

Here are the certification exams which I am prepping for right now. I was planning to have the AZ-104 taken and passed in 2023, but for reasons, that didn't happen. I passed the equivalent exam a few years ago while taking exams for the Azure Solutions Architect, so this is a "completitionist" task. I'll get it though. More labs, more practice exam questions, more reading...

  • Azure Administrator Associate (January 2024)
  • GitHub Foundations (January 2024)

Here is a list of certifications I could take this year. I don't anticipate getting the bulk of them, but I need a goal for beyond June 2024.

  • GitHub Advanced Security
  • GitHub Administration
  • GitHub Actions
  • AWS Developer Associate
  • AWS Solutions Architect Associate
  • AWS Data Engineer Associate
  • AWS SysOps Administrator Associate

Certifications (Renewals)

Here's a list of all the certifications I need to renew this year.

  • Renew Azure Data Engineer Associate (< 1/20/2024) - Completed 1/14/2024
  • Renew Azure Security Engineer Associate (< 2/23/3024) - Completed 1/15/2024
  • Renew Azure Solutions Architect Expert (< 3/3/2024) - Completed 1/16/2024
  • Renew Azure Developer Associate (< 4/15/2024) - Completed 1/17/2024
  • Renew Azure Cosmos DB Developer Specialty (< 4/30/2024) - Completed 1/18/2024
  • Renew DevOps Engineer Expert (< 6/15/2024) - Completed 1/19/2024
  • Renew Information Protection and Compliance Administrator Associate (< 9/28/2024)
  • Renew Identity and Access Administrator Associate (< 10/9/2024)
  • Renew Security Operations Analyst Associate (< 10/28/2024)
  • Cybersecurity Architect Expert (< 11/21/2024)

...and that's what I've got planned for 2024. I'll have to revisit this post in December 2024. I hope I get a bunch done.

Category: AWS, Azure, Career, Certifications, Certifications | Comments Off on Looking ahead to 2024…
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.