I’m Speaking on a Boat

Well, it’s more than a boat is a cruise ship, the Norweigan Cruise Lines Escape. We will be departing from Miami with port stops in Falmouth (Jamaica); George Town (Grand Cayman); Great Stirrup Cay (Bahamas); Nassau (Bahamas); and come back to Miami.

Chris Woodruff and I will be providing 2 and half days of instruction on .NET Core at TechOutbound. It’ll be a combination of instruction and hands on workshops. Here’s the topics we will be covering.

  • C# 7
  • Entity Framework Core 2.0
  • ASP.NET Core MVC
  • ASP.NET Core Web API
  • Client-side Development with ASP.NET Core
  • Security and Identity
  • Testing
  • Debugging and Performance
  • Hosting and Deployment
  • Migrating from.NET Framework
  • Docker and Containers
  • ASP.NET Core and the Cloud

Register now by following the instructions and use code BFFJG when you do for an additional $100 off your registration

Why I Organize Desert Code Camp

While I was mingling at the Desert Code Camp after party, I was talking to a long time attendee, Liz. Liz makes the drive up from Tucson every year to attend the event. Liz and I were chatting for a bit when she told me how much she loved Desert Code Camp and how much she has learned from it. She also told me a few tips and tricks that she learned over the years to be about to handle all of the learning that happens. She was kind enough to share this with me so I will share it with you.

I learned some things about how to benefit myself best from DCC through the years. I used to go to all the sessions of which I knew nothing about and try to get some basic understanding. As it turned out, I usually felt a bit defeated because it was a lot more complicated than I anticipated, and required more fundamental understanding and skills than I had. The day, although enjoyable, would be highly arduous cognitively speaking. I would be very tired at the end and had a hard time even paying attention. This year, I finally did it right. I previewed the web site as often as time would allow and took notes on technologies listed. I perused them and let my mind wander to how I could use this and what I would want to learn from this. I began an interactive relationship with the subject before the actual camp. I picked sessions of which I had at least a little bit of understanding initially or picked sessions with which I could do a little bit of research beforehand to prime my brain. I also know that after the wonderful traditional pizza and pasta lunch, I get a bit sleepy. Not only did I work a little nap in on lunch hour, but I deliberately picked afternoon sessions which would be lighter as far as subject matter or presenter charisma so that I would be more engaged. As it turned out, this conference has been the best for me so far. Thanks to Joe Guadagno, Gilbert Chandler Community College, the sponsors and the volunteers for bringing together a fantastic camp.

People ask me all the time why do I organize Desert Code Camp every year? Why do I spend an average of 480 a year putting it together? This is the reason. I able to help people and make an impact on their lives. One of my life mantras is “Leave this world better than it was when you came into it“. I hope you can make an impact too.

Using SendGrid and emails are not being delivered to Hotmail/Outlook/Live/MSN.com recipients?

Me too, or at least I was… While the problem I was having might not be related to SendGrid exclusively, I am going to talk about the solution.

The Problem

Before I go into the solution, let’s talk about the problem first. Many of you know that I run Desert Code Camp in Chandler, AZ. Originally, the site ran on the Microsoft stack, it used ASP.NET (Web Forms) and SQL Server. There is an API for mobile apps and future development but that’s another story. The site has 12,000 registered users. A few thousand are SPAM/Bots, a few thousand are “inactive” accounts (opted out or moved), and the other 6000 or so are active users that have an interest in Desert Code Camp or have attended at least one.

And here lies the first problem.

When an announcement email goes out to our attendees or users of the site, we need to send out about 6000 emails. I used to do this by sending the email from a web page through code using System.Net.SMTP via localhost. At first, it wasn’t an issue. After a while, as Desert Code Camp grew, this became more and more of a problem. Typically the page would time out or IIS would die or something. So I needed to find a solution. Sometime last year, probably around this time, I offloaded the processing of emails to Azure Queue Storage and used Azure WebJobs to handle the “logic”. But wait, Azure does not support sending stuff via localhost. And that is true! This is where SendGrid comes into play. Azure provides, as of the creation of this post, a free 25,000 email per month subscription to SendGrid. For more on that, check out this post.

Now that I implemented the new Azure/SendGrid combination everything was great.

Fast forward a year, to this past weekend, I announced that the next Desert Code Camp was happening on Twitter and some people started submitting sessions. This is great! But I noticed that I was wasn’t getting my emails about the submissions.  At first, I thought, “Oh Joe, you forgot something when you ‘created’ the new event”.  It happens every time :). However, this was not the case this time. Microsoft decided to embrace something called DMARC, Domain-based Message Authentication, Reporting & Conformance. In a nutshell, it checks to see if you are sending emails from the domain you claim you are sending them from, which for me was bad.  Not because I was trying to be deceitful, but because I was sending emails saying they were from ‘@hotmail.com‘ and sending them via ‘SendGrid‘ because I wanted people to reply to my Hotmail address. Well, when Microsoft implemented the DMARC…

What this means: As of June 2016, you can no longer send with the From address being anything from a Microsoft address when sending to a domain that checks DMARC before accepting mail.

… it saw my email as not being ‘legitimate‘ and did not deliver it to my inbox and probably others.

The Solution

The answer is ‘Whitelist‘ your domains while using SendGrid. There are more detailed instructions on how to whitelist a domain using SendGrid here.

What is Whitelabeling?

Whitelabeling allows you to send through your own custom domain instead of SendGrid’s default settings. This will mask the header information of your emails with your data–not theirs–and will improve your email deliverability.

Non-Whitelabeled Example vs. Whitelabeled Example

Luckily, SendGrid makes it easy to whitelist your domain(s). Here is how you do it. Please note: You will need access to your domain records, you will be making changes to your TXT or CNAME entries to prove you have rights to the domain.

  • First, log-in to your SendGrid Account
  • Click ‘Settings’ (on the left)
  • Click ‘Whitelabels’
  • Click + Add Domain button.
  • SendGrid will walk you though everything else you need.

But what about the replies to @Hotmail.com

I’m glad you are still with me :). This part is the easy part. Essentially, I added ‘noreply@desertcodecamp.com‘ as the ToAddress and added ‘jguadagno@hotmail.com‘ as the ReplyTo. As shown in this gist.

I hope this saves you some time to troubleshoot mail delivery to @hotmail.com, @outlook.com, @live.com, @msn.com, @yahoo.com, and @gmail.com.

The Power of Community

This blog post has been a long time coming. As a matter of fact, it has been on my Todo list for about two years. I know I am behind :). While parts of this post might come off as bragging or boasting that is not the intent. The point I want to get across is how the community has helped me get to where I am today.

The Back Story

The journey started about 11 or so years ago when I first moved to Arizona. I had a few friends here, through my wife, and a job but I felt like I could not grow or expand in Arizona. I’ve spent most of my career building a name for myself in New York. After looking around at the technology scene in Arizona, there were a few groups around. AZGroups was the largest Microsoft focused group at the time. I decided to attend the meetings to network and to keep up with the latest and greatest in .NET. After a few months, I decided to, mostly because I didn’t feel like driving to AZGroups, to start my own user group in the Southeast Valley. Hence the “Southeast Valley .NET User Group” was started. This launched my public speaking “career”.  After that, I started to see how networking and the community could help me and others grow.  A little bit later I started Tech Lunch South, a weekly lunch for technology people in the Southeast part of the Phoenix metro area.  It was great because I got to meet and talk with people in technology outside the Microsoft world. A bit later, I helped out with Desert Code Camp and eventually became the sole organizer of it.

The Effect

At this point you are probably saying “Blah Blah Blah Joe, I can see why you think this could be interpreted as bragging” :).  Well, let me tell you the effect these community efforts had.   The first was more speaking opportunities, I was able to speak at other groups in Arizona and California, in addition to Code Camps. Eventually, I got to speak at paid conferences, although I think I have Hurricane Sandy to thank for that :(.   But the creating of the group or lunch or organizing Desert Code Camp was not the only reason for that, it was the networking.  Through the group, lunch, and code camp I have made a lot of friends and connections.  I also got a Microsoft MVP out of it which help improved on those connections. I also got to help people along the way.


As I eluded to earlier, these community groups that I started or continued, led to some really good connections.

Some of these connections helped others:

  • One of the connections I made from this, Mike Hamilton (@mikescott8), with a little bit of help from me started the Northwest Valley .NET User Group.
  • Another one, Barry Stahl (@bsstahl) was able to start AZGiveCamp
  • Worked with the International .NET Association as Directory of Marketing, Vice President, and President to help start other users and to help them and speaker grow.

Some of these connections helped me:

The Bottom Line

The moral of the story is to try and not be the “A-typical” developer and socialize at events. Use the user group, code camp, or conference to build up a network of peers to make you and them better.  If you are looking for help on how to socialize at these events, one of my friends and fellow speaker Jeremy Clark (@jeremybytesblogged about it.

Have a “Power of the Community” story to share, post a comment below.


Book Review: Practical Microsoft Visual Studio 2015

While the title of the book is “Practical Microsoft Visual Studio 2015”, the author, Peter Ritchie, outlines how you can use Microsoft Visual Studio to effectively develop software and lead a team. Peter covers, a quick walkthrough of Microsoft Visual Studio, how to work with teams, version control, design and architecture, development, deployments, and testing. Anyone getting started with Microsoft Visual Studio or even experienced engineers, architects and leaders can find stuff in this that is useful for their day to day tasks. The best part of this book is the way the author explains each topic in a simple way based on his 20 or so ( 🙂 ) years being in the software field.