Category Archives: Articles

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 troubleshooting 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.

Connections

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.

 

A Tester and/or Unit Tests Should Be Your Friend

A little bit over 3 years when I started at Quicken Loans as a Software Architect  I did not know / understand how valuable the Quality Analyst (QA) or testing role was to a product or application.  When I started, on Day 2, Brian Friesen introduced me to a lot of people but one of the introductions I remember the most was to Hilary Weaver-Robb (https://g33klady.wordpress.com/). The reason why I remember this is because she had since built a conference talk around it.  Titled something like “QA and Developers should be best of friends” or something like that… 🙂  The story goes like this…

Day 2 at a new place after spending a FULL day in front of the company fire hose getting introduced to everything that is Quicken Loans, Brian introduced me to my new surrogate team (I was on loan for few months).  The introductions went along and eventually Brian introduces me to Hilary (some know her as Heather).   Brian says “This is Hilary, our QA”. I immediately, mostly jokingly, say “Ugh”. We all chuckled, although I believe Hilary, excuse me, Heather, secretly started hating me. And while I was partly joking at the time, in my experience prior to meeting Hilary, I’ve never understood the value of a Quality Analyst.  Until now.  Whether Hilary wants to believe it or not, I consider her a good friend, although I am not sure the feeling is mutual

 

 

Anyway, the real reason for this post.  In the last 3 years at Quicken Loans, I have learned the value of writing Unit test and having testers on a team.  There have been far too many times (at least one 🙂 ) where I have pushed code for my person projects (Desert Code Camp, MVP Summit Events, etc) and things have failed miserably. So, I have gone back to all of my personal projects and have added Unit Tests and you should too!  Not just in your personal projects but your professional ones. I know, it takes more time to write a Unit test or I write it the first time.  Believe me, it doesn’t and you don’t.  You’ll probably spend more time researching and fixing your problem that you would have “wasted” on building a unit test. So just do it!

 

 

15 Years Ago, I Witnessed Something That I Will Never Forget

There is an expression in the US and part of the world that goes ‘9/11 Never Forget’. I will never forget 9/11! I remember virtually every detail of that days and the weeks that proceeded. From just after the first plane hit, until two or three weeks after the ‘event’ . Here is my tale…

It started out as any other ordinary day. I took a bus to commuter train (LIRR) to the NY City subway to get to work at Guardian Life Insurance. I always got in early, around 7:00 to beat the rush. I was in my cubicle probably checking email or coding when a few coworkers came and said, “Do you see the World Trade Center is on fire?” At the time, I worked in downtown Manhattan at 7 Hanover Sq which was about a half of a mile from The World Trade Center. I replied “No” and I followed the people to the other side of the building where I watched the North Tower, 1 World Trade Center, smoke from what we know now as the first plane to hit the building. We watched in awe as the building was smoking and papers were flying around like it was snow at Christmas.

North Tower Plane Crash

We stood, the 6 of us, amazed the World Trade Center was on fire. Seventeen minutes later at 9:03 am EDT I and the 6 others were shocked when we saw the second plane hit the South Tower (2 World Trade Center).

Second Tower Hit

I was shocked! I watched as the plane, as we know now, as the second plane to fly in the sky and HIT the second building. ALL of us were like, “what the f#@#!?”. We had no idea what happened. We all scattered. like the NYC cockroaches do when the lights turned on and went back to our desks. I, like all the others, went back to our desks/cubicles. I called my wife (@deeguadagno) in a panic… “Did you see? I just saw a plane hit the World Trade Center?” Both of us at the time did not know what happened, I said to her “I’m out of here”, I told my boss at the time. “I just saw a plane hit the World Trade Center and both of them are on fire. I’m leaving!”. He, as most corporate managers would do said, “We do not have permission to leave yet.”. I said, “I don’t care, I’m leaving”. I left and called my direct reports and told them to head home if there were already in transit. As I walked the 4-7 blocks from the office to the subway station it felt like I was walking through dirty snow. There were paper and soot from the fires and ashes from the World Trade Center that was blocks away. I eventually got on a subway and the last commuter rail (LIRR) out of Penn station heading for home. At the time, I did not have a cell phone so I had to borrow someone else to call the wife and tell her I made it out of the City and was heading home. I and the other passengers were watching the World Trade Center smoke from a distance. I finally arrived home around 10:40 am where I hugged my wife and 2 kids to learned that both Towers have collapsed. I did not know what to do or say other then hug my family. I eventually went did some of the ‘Honey Do List’ items to take my mind off of what happened. While doing that, I tried to find out how some of my direct reports were doing. One was in Denver on training, two were en route to work. Unfortunately, as a result of the ‘attacks’, the telephone network was damaged. It took almost 24 hours until I found out that all of my direct reports were OK.

The weird thing about the event was that we, as a Family, were supposed to go on a vacation to LA on September 12th to go to Disney, Sea World, Hollywood and Southern California. Unfortunately, as we all know, flights were ground for a bit. While Dee was glued to the TV, I couldn’t watch it and did a lot of my ‘honey do list’ stuff like mow the lawn, fix stuff, anything to avoid the TV and the realization of what happened until the flights we no longer grounded.

Around September 14th or so, flights were allowed to take off again. Personally, outside of all of the tragedy, this one of the smoothest vacations around. We, a family of 4, were on a 737 or so aircraft with a configuration of 2 x 4 x 2. This plane could probably sit about 300 people or so. There were about 30 of us on the plane which meant each person had a row to themselves for the 4-hour flight. While on the trip, since no one seemed to be flying or vacationing at the time. we essentially had Disney World, Universal Studios , LegoLand and SeaWorld to ourselves. The trip was great! There were no lines at the parks, we went on rides multiple times and enjoyed life…

Fourteen days later I returned to reality. I got up at 5:00am and started my commute into work. This was roughly when “Lower Manhattan” was open to businesses. Unfortunately, at the time, the trains only went to about 14th street because the City was inspecting the rails and tunnels as a result of the collapse. This meant that my commute went from about an hour and a half to about two hours and fifteen minutes with about two miles of walking. The time or walk did not matter. It was more of ‘the walk’ or how we had to walk that mattered. The furthest south that the subway would stop was around 14th and Broadway. The easiest walk to our office was straight down Broadway. Broadway, for those of you that do not know NYC, ran parallel, one block away from the World Trade Center. That means that even day, to and from work, I walked by what was left of the World Trade Center. Let me tell that it SUCKED for a minimum of two weeks. Once I, and other commuters, got to the vicinity of the World Trade Center at was at an intersection we all stopped, looked and cried. Because of the different angles and the length of the ‘site,from’ this went on for about a half of a mile. Let me tell you it sucked! It was rough going into and leaving work every day and having to for 30 minutes or so as part of your ‘commute’.Don’t get me wrong, my crying and longer commute time do not compare to the 3000+ people that lost their lives or loved ones that still have to suffer.

So 15 years later I still remember the day as it was yesterday. It’s still hard to see a plane in the sky and not picture the plane I saw hit the South Tower. However, you have to remember that we, as a Country, have and will more on.

Fast forward about 20 or so months later to the Northeast Blackout of 2003  when NYC and others lost power. We had NO idea what happened. We all assumed another 9/11 type attack. We all panicked and migrated/ran/left the city. I walked home from the office, about 18 miles, in 85-degree heat and about 1000% humidity, until I got to my brother’s apartment. On route, I experienced people charging $5 – $10 dollars for a 16oz bottle of water.

While I can imagine what others felt around the tragedies of 9/11 or what the survivors or sufferers have been through, I will Never Forget 9/11.

Desert Code Camp

I posted on Twitter today that Desert Code Camp is not happening this year.  The venue that we use, Chandler – Gilbert Community College is going through some renovations and just could not fit us in this year, unfortunately.  A few people asked what we would need from a venue to help make Desert Code Camp happen.  I put together a list below:

  • Should be able to support 700-900 people (it grows about 100 people every Code Camp)
  • Should have at least 15 rooms
    • Rooms should have a projector
    • At least 7 rooms should be able to accommodate 30 people
    • At least 3 rooms should be able to accommodate 75 people
    • Preferably have 3 rooms that can support 100+ people.
  • There should be a large area to host breakfast, lunch, and a sponsor area for all of the attendees
  • The venue should have reliable WiFi for the attendees
  • Preferably free or very low-cost since this event is free

Some nice to have:

  • A room / venue large enough to hold all of the attendees for an opening and closing keynote.
  • Amble (free) parking for the attendees.

If you have any questions or would like to throw your venue in the hat, please reach out to me.

So you want to be a Microsoft MVP

It’s very common for myself and other Microsoft MVPs to get asked “What does it take to become a Microsoft MVP” or “I want to be an Microsoft MVP, please tell me what I can do” when we speak at conferences or chat with each others on social networks. The short answer is most people outside of Microsoft do not know that the “secret formula” is. The long answer requires a little bit of understanding of how Microsoft evaluates potential candidates for receiving the award and what the propose of the award is.

The rest of this post is my opinion on how you can become a Microsoft MVP. To see what Microsoft says about how you can become a Microsoft MVP visit http://mvp.microsoft.com/en-us/becoming-an-mvp.aspx

In order for one to earn the Microsoft MVP award, Microsoft has to see the recipient as some one who provides value to the Microsoft ecosystem and is influential in the software industry. The award is given based on the previous years contributions to the Microsoft ecosystem and is from one of the product teams. Product teams include, Microsoft Office, Microsoft Azure, Microsoft .NET and many others. Each product group budgets for a certain number of MVPs a year, depending on the specialty, there can be very few spots to many spots available to for new candidates. In addition to this, you need to get nominated by a Microsoft MVP or Microsoft employee for Microsoft to consider you.

OK, so how can I provide value to the Microsoft ecosystem you ask. That’s the tricky spot, there are no fixed rules, minimum contributions or formula for getting in. That being said there are a few things you can do to get on the radar:

  • you can blog
  • speak at conference / user groups
  • respond to forum post on MSDN, Stack Overflow, C# Corner and similar forums
  • help out you local user groups and Microsoft Developer Evangelists at events
  • contribute to open source projects, especially ones that Microsoft is interested in 🙂 (Thanks @jamie_dixon for the tip)

My recommendation is that you do not make becoming an Microsoft MVP a goal, but let it happen naturally by doing some of the things mentioned above and even if you do not get the Microsoft MVP award, remember that you are still helping people with your contributions.

Being More Productive with @Todoist

It’s not unusual nowadays for the typical person to be overwhelmed with tasks that we need to get accomplished on a day to day, week to week or just plain need to get done. Whether it’s for work, home, or just some personal tasks, we look to different ways of tracking this items or ways to remind us that we have something to do.  Some go old school and tie a ribbon or thread to a finger 🙂 Some write down tasks in Franklin planners or equivalent tools. Some followup methods that have been created by “productivity experts”. For me, I used a combination of my multiple emails accounts; work, personal x 2, and communities emails address along with PostIt notes. After my work email box got up to about 100 items I needed to act on and my personal got to about 75, I said enough is enough, I needed to find a better way to track the work I was working and when it was do, so I could better prioritize my day.  After searching the web and trying out a few applications I landed on Todoist.

Todoist basically provides a service to store your “TODOs”. However, Todoist is not just a todo list. The value is in the meta data that you add to the todo. Things like projects, labels, due dates. reminders, and notes.  Granted some of these features are extra, but at a cost of $29 a year, it is reasonable. Todoist is also available on multiple browsers, platforms, phones and plugins to web mail.  Look here for the full list.

The Application

Main

Todoist Interface

Todoist Interface

As you can see the interface is quite simple. On the left we have 3 links to “views” of your todo list. ‘Inbox” is used for anything that you did not assign to a project. “Today’ contains any items that are due today. ‘Next 7 days’ contain a list of the items due in the next 7 days. There are then links to the projects, that you create with the color your assigned them.  The slightly grayed out number represents how many items are in the view or project.

Right Side

To the right we have the todo list view.  It contains a header

Header Bar

Header Bar

The header contains the current filter applied (mine is overdue and next 7 days). A plus button to add a new task. A bell for you to see the application notifications. The shield and numbers represent your todo Karma rating and how it is trending.

Adding a Task

Adding a Task

Adding a Task

Adding a task is easy. Though out the desktop application the are multiple locations to add a tasks and the all look like the image above.  You simply type the text you want and optionally set a due date. Due dates can be set by selecting from the pop up calendar or typing in text like ‘Every Friday’.  See here for date options.

Overall the product is simple to use and it has helped me a lot in the last month.

Just a note, I did not receive anything for this blog post. I wrote the post because the application / service has been very helpful for me and I wanted to share.

Speakers are not Idols

I’ve noticed that at a lot of conferences I attend conference attendees are afraid to approach the conference speakers. It would appear that some attendees think that speakers are idols and untouchable. I want to say that conference speakers are not idols. While I can not speak for every conference speaker, I know myself, and the other conference speakers that I know, love when conference attendees come up to us. So when you are at your next conference, or user group meeting, feel
free to walk up to the speaker after the talk or if you see them in the
hall way.

Here are a few tips for interacting with a speaker:

  • Be respectful of the speakers time. Do not monopolize their time.
  • Do not expect the speaker to solve all your problems. Most will spend a few minutes to talk to you and to understand the issue so that they can provide suggestions, some may provide guidance.
  • Feel free to contact them.  Most speakers provide an email address and / or have social media accounts.  Please keep in mind that some speakers keep their Facebook accounts personal so do not be offended if they deny the request or do not approve it.
  • Avoid interrupting speakers if they are already talking to someone.
  • Avoid interrupting speakers while they are eating, if they are at your table they will most likely talk.

I’d love your feedback, please leave comments below with your thoughts.


Bootstrap Theme Switcher jQuery plugin

A few months ago a published an article on a Bootstrap Theme Switcher. I’ve since approved this post and the JavaScript and turned it into a jQuery plugin. This plugin works with the Bootswatch API to provide the user the following:

  • Loads a list of available themes from the API into a SELECT or a UL,
  • Dynamically change the site theme to the selected theme
  • Manually change the theme
  • Save the selected theme to a cookie, requires the jQuery Cookie plugin,
  • Loads the selected theme from a cookie, requires the jQuery Cookie plugin,

The plugin also allows you to load of list of local themes in case you to note want to use the Bootswatch site.

Let me know what you think.

Downloads

jQuery Plugin page
http://plugins.jquery.com/bootstrapThemeSwitcher/
GitHub Repository
http://github.com/jguadagno/bootstrapThemeSwitcher
Demo site
http://introtobootstrap.azurewebsites.net/

Next steps

  • NuGet Package
  • NPM module
  • Bower module
%d bloggers like this: