Archive for the ‘Advocacy’ Category

Protecting your evangelist/advocates : Part 1 – Have a plan to get home post event

Evangelists and advocates are asked to be public figures, that means they expose themselves to potential harassment and risk both online and in person. In this series, I will share some practical tips and tricks to help ensure the safety of yourself and your team

Our first tip comes from @TheTrendyTechie, Co-Founder & CTO of Crescendo, and it’s a good one “Have a plan to get home after the event”

Many evangelists and advocates attend events and conferences. You don’t want to find yourself stranded outside a building in a neighborhood you don’t know so here are a few simple things you can do to ensure you have a safe ride back to your hotel or office.

Person standing in the rain at night on desolated street with cell phone battery at 3%


Ensure you will have access to a charged phone

A simple step to ensure you get home safe, is to make sure you have a charge left on your phone at the end of the day. You may need to request a cab/ride-share, or look up directions for walking or driving. Before you walk out the door for that flight or taxi ride do the following:

  1. Fully charge your phone
  2. Put the phone in low battery mode so the battery lasts as long as possible
  3. Charge and carry a portable battery charger as a back up in case your phone runs out of battery

Ensure you will have internet access on your phone

Having a phone without data is not a lot of use in this day of taxi and navigation apps.

  • Don’t rely on wi-fi at the event. Event wi-fi is notoriously unreliable and might even be disabled by the time you leave. $8 for a one day roaming package or $20 for a local SIM card is a small price to pay for your safety.

If you are planning to purchase a local SIM card

  • Make sure your phone is SIM Unlocked and will work with a SIM Card from other providers
  • Bring your passport with you to purchase the SIM card, many countries have ‘traveller’ SIM Cards which can only be activated if you show your passport
  • Find out ahead of time if you can purchase a local SIM. Japan, e.g. does not sell local SIM cards, but you can purchase a pocket wi-fi and use that to get internet access for your phone, tablet, and laptop

Learn from Susan’s mistake: After being stranded and unable to create a taxi account in Malaysia because all the ride-share and taxi apps require a local phone number. I realized I needed a local SIM. The next morning, I got up early and walked 20 minutes to a local store to purchase a SIM Card. The staff told me they could not activate the card unless I had my passport, which was back at my hotel. I did not have time to go back to the hotel and get it before my next meeting. I had to muddle through the entire day getting co-workers to order my taxis and finding ways to repay them until I had another chance to purchase a SIM card.

Figure out your transportation options BEFORE you get to the venue

  1. Does the city have a ride share program such as Uber/Lyft/Grab? Do you have the required app installed and an account created?
  2. If the city does not have a ride-share program such as Uber/Lyft/Grab/ is there a city wide taxi app you can install and use to order the nearest cab? These tend to find cabs faster than apps for specific taxi companies.
  3. If you are going to be using a new cab or ride share service, install the app and create the account with billing information BEFORE you leave for the event. I was at a university outside Singapore with a fully charged phone and a data plan. When I tried to create an account on the Grab and the local taxi app it required a local phone number, which I did not have! I had to get a co-worker to order my a ride, and the next day I had to purchase a local SIM card so I could create an account and order my own rides
  4. If you will be at an event away from the city centre, you may want to rent a car instead of assuming you can get a taxi.

Learn from Susan’s mistake: I once spent over an hour waiting for a taxi at the University of British Columbia in Vancouver, BC, Canada. I did not know Vancouver has no ride share programs and a shortage of taxis. I did not have the generic Vancouver taxi app installed. It was raining, and when I called the taxi company they told me my taxi would arrive in approximately one hour. I was on a university campus at a building with multiple entrances. I spent over an hour constantly scanning the streets looking for my taxi and hoping no-one else had taken my cab. Apparently catching cabs on rainy or snowy days in Vancouver is always a challenge. I now rent a car any time I have events in Vancouver outside the downtown core.

Use the app not the phone number

Always use an application to order your ride instead of calling the taxi company.

  • Using an app often allows you to track the location of your ride
  • Most apps give you and the driver the ability to contact each other if they can’t find you.
  • The app provides a record of who drove you in the event you leave something in the taxi or need to complain about any sort of harassment

Learn from Susan’s mistake: I was in Malaysia and used the Grab app to order a ride from the airport to my hotel. I left an expensive digital camera in the back of the car! I was able to contact Grab and report the lost item. The driver located the camera in the back seat, and for a small fee drove back to the hotel and left it at the front desk while I was out during the day!

Be prepared to walk

Despite your best efforts, sometime ordering a taxi or ride-share does not work out. Sometimes you can walk down the road to public transit or a better location to find a taxi.

If your event shoes are impractical for walking, consider throwing some foldable flats in your purse so you have decent walking shoes in a pinch. (Of course @TrendyTechie would know that you can buy fashionable foldable flats, though she tells me she did not purchase the zebra stripes)

Learn from Susan’s mistake: I was at an event at the science museum in Chicago. They provided shuttle service to the event, but there was no shuttle service when the event ended around 10 PM. There were about 400 people all leaving the event at the same time trying to find taxis and ubers. It was a mess. Fortunately, I was wearing practical shoes and had a 6 foot+ tall male co-worker with me. The two of us walked about 500 meters towards a L-Train stop figuring we could take an L-train into downtown. As it turns out we found a well lit street corner and flagged down a taxi just as we approached the L-Train.

Catching an early flight to the airport? Ask the hotel to arrange your transportation

Take advantage of your hotel concierge, especially if you are booking one of those dreaded 4 AM rides for an early flight. Why would I rely on the hotel instead of a cheaper ride-share?

  • You can’t be sure of finding a ride share service in a timely manner at 4 AM, showing up 20 minutes late for an event is one thing, missing your flight is quite another
  • The hotel may have a free or cheap airport shuttle service, these often require booking ahead of time
  • If the taxi does not show up at the expected time, the hotel now has some responsibility for finding you alternate transportation
  • The hotel (should) have a reliable and safe transportation company


A little common sense goes a long way when it comes to personal safety. If you are travelling internationally always ask the locals for any additional tips they can share to keep you safe. Attending events and travelling for work can be a wonderful experience, following the tips above will reduce your stress and keep you safe. Share your own tips so we can update this post and provide great suggestions for future posts!




Getting the most out of hackathon sponsorship

Sponsoring a hackathon can be expensive and time consuming, but it’s a great way to reach new developers. In this post I’ll outline the critical success factors to hackathon sponsorship.

Define your goal

There are typically four reasons to sponsor a hackathon:

  1. Get developers to try your tech
  2. Recruiting
  3. Contactability
  4. Brand awareness
  5. Collect feedback on your product and documentation

You may want to do all of the above, that’s fine, but if you do, rank those goals! It is difficult, almost impossible to do all of them well.  Pick one as a primary goal, and another as a secondary goal.

1. Get developers to try your tech

If your goal is getting developers to try your API, or use your software here are some options you may want to consider in your sponsorship agreement:

  • Hackathon prize category: The best way to get hackers to try your code is to bribe them with a prize! Be specific, e.g. use *this* API in your hack and you qualify for our prize category. Just watch out for hidden costs which I cover later in this post.
  • Workshop: Hosting a workshop during the hackathon is a great way to help hackers be successful. They have a lot of prize categories to choose from, if it’s too hard to get going with your API, they may just give up and try for a different category.
  • Pitch in opening ceremonies: This is your best opportunity to make sure all the hackers know about your prize and how to win it. But keep it short! I’ll share tips on how to pitch at opening ceremonies later in this post
  • Booth: You need a place for mentors to hang out if coders are having trouble with your tech and have questions
  • Pre- and Post event emails: Can you provide a customized email to hackers before or after the event pointing them to great learning resources or upcoming events and competitions where they can try your tech?
  • Social: Can the hackathon promote your hackathon prize and learning resources on their social media

2. Recruiting

If your goal is recruiting here are some options you may want to consider in your sponsorship agreement:

  • Resumes of all hackers:  Some hackathons provide hackers with the option of providing their resumes to interested companies
  • Interview room: Do you want the ability to do interviews on site with interested parties?
  • Booth: it may be helpful to have a booth where recruiters can hang out and talk to interested hackers
  • Time to talk in opening ceremonies: This is a tricky one, because hackers usually get pretty bored listening to one company after the other present during opening ceremonies. But if you can be short, concise, and deliberate it’s your best opportunity to present to all the hackers at once.
  • Prize sponsorship: hackers are there to hack, so offering a prize is a great way to get their attention. It also gives you a chance to get a sense of their technical skills. But, it comes with a lot of extra work and costs as I explain in the section on hidden costs.
  • Pre- and Post event emails: Can you provide a customized email to hackers before or after the event to let them know about job opportunities and how to apply?
  • Social: Can the hackathon share recruiting messages and links to application pages on their social media?

3. Contactability

With the new data protection rules, having the ability to email or otherwise contact a new developer is a becomng a more and more common goal. If your goal is the ability to contact hackers here are some options you may want to consider in your sponsorship agreement:

  • Booth: Can you have a raffle or premium swag at the booth that requires signing up for communications?
  • Pre- and Post event emails: Can you provide a customized email to hackers before or after the event to with a request to sign up for communications (and something that makes them believe it’s worth it to sign up for the communications)
  • Social: Can the hackathon share messages and links with the Call to action of signing up for communication or some other follow up to get them in your funnel

4. Brand awareness

If your goal is brand awareness here are some options you may want to consider in your sponsorship agreement:

  • Logo placement: hackathons offer many opportunities to display your logo. There are the obvious t-shirts, signage, website options. Consider other options such as Lanyards, attendee badges, water bottles for all attendees
  • Swag bag content: Hackers love swag. You may be able to provide swag to the hackathon that will be given out when hackers register. (short rant: I have a love hate relationship with swag, so much ends up in landfill, how many fidget spinners does a hacker need, so please think creative on the swag, methinks I may have to write an entire post on swag!)
  • Spot prizes: this probably doesn’t require any extra $ but what if you gave out prizes to people wearing your shirt or hat during the hackathon 🙂 I’ve done it at conferences. Just make sure it’s something really obvious, we once did spot prizes for people wearing our temporary tattoos and it was harder than we expected to walk around and spot the temporary tattoos without being creepy!
  • Booth: a booth is great for having conversations, but you need a reason for people to stop at your booth. If you aren’t sponsoring a prize or recruiting they need another reason to stop by and talk. Maybe some premium swag or a raffle for a good prize
  • Pre- and Post event emails: Can you provide a customized email to hackers before or after the event to raise their brand awareness
  • Social: Can the hackathon share your brand message on their social media channels?

5. Collect feedback on your product and documentation

The great thing about hackathons is it gives you a chance to see what happens when a developer tries your product for the first time. This is an opportunity to find out whether  your documentation is complete, whether there are features missing, or whether you ahve the right tutorials to help a beginner.
If your primary goal is to get feedback here are the sponsorship package options you should consider:

  • Hackathon prize category: The best way to get hackers to try your code so you can get feedback is to bribe them with a prize! Make sure you tell them you are looking for feedback
  • Workshop: Hosting a workshop during the hackathon is a great way to communicate with interested hackers.
  • Pitch in opening ceremonies: This is your best opportunity to make sure all the hackers know you are looking for feedback and about how you are bribing them to try it with a prize. Consider feedback on the product as part of the judging criteria or swag for those who provide feedback too.
  • Booth: You need a place for your team to talk to developers and collect feedback

Don’t be afraid to order off menu

Is there something you want to do that is not listed in the sponsorship package? Do you want a combination of the bronze and silver package? Talk to the organizers, explain what you want to do and negotiate a price. They prefer sponsors to order off the menu, but chances are they are willing to accommodate custom sponsorships.

Budget for the hidden costs!

Sponsoring a hackathon will cost anywhere from $500 to $50,000 depending on the prestige, size, and sponsorship level. It’s easy to look at a sponsorship package and say ‘we can afford the silver package’ but don’t forget all the hidden costs both in terms of time and money!

Booth costs

  • Signage: How will hackers know which booth is yours. This might include anything from banners, to backdrops or balloons.  Prices vary greatly as do shipping costs. Tip: If you bring a tablecloth ask the sponsors for the table size, those new stretchy tablecloths in particular don’t always work if the table is too big or too small
  • Swag: Giving away swag can accomplish two things. It can draw people to your booth, and it can also get the hackers advertising your brand
  • People: If you have a booth, you need people to talk to at the booth. You need to decide whether or not to have people at the booth overnight at the continuous hackathons. Typically you would only consider staffing overnight if you are providing code mentors for a hackathon prize
  • Travel costs: will people attending need to pay for fuel, parking, rental cars, flights, hotel? Tip: Ask the hackathon if there is free parking for sponsors

Sponsoring a hackathon prize category?

If your goal is to get developers to try your tech, chances are you are sponsoring a prize category. Don’t forget some of the extras that come with it. Here are a few questions you should ask yourself:

  • Do you need to purchase prizes? Most of the time you as a sponsor provide the prize
  • How many people can be on a hackathon team? Can your prize be divided among the team members or do you need to purchase multiple items to award as prizes?
  • Is your prize good enough to get hackers to enter your prize category? Ask the organizers what types of prizes and how many sponsors they had last year. If you can’t afford a premium prize, you might want to make your prize category more open-ended so hackers can enter your prize category and other prize categories with the same hack
  • Who will be onsite to provide help to coders who get stuck trying to use your technology?  Typically you provide mentors at the booth. If the hack runs overnight, will you have mentors on site overnight? Not everyone does, but the hackers appreciate those who do
  • Who will judge the winner of your prize category? You can get your mentors to help with this, but make sure someone is on point to co-ordinate. How many judges do you need? Ask the organizers how long you have for judging (then assume you will have 30 mins less than that because it almost always starts late), and ask how many entries a typical hack category receives. Then do the math 🙂
  • Will you need to pay for travel, car mileage, parking, or accomodations for anyone working at the hackathon? Ask the hackathon team about parking arrangements
  • Any legal stuff you need to do? When I worked at Microsoft we had to prepare Terms & conditions for every hackathon and sometimes there was paperwork winners had to complete before we could give them prizes. WE had a legal team who would help us, but this took time to get done
Hacker looking for late night help

Where did everybody go?

Rocking the opening ceremonies

Opening ceremonies suck. As a sponsor they are invaluable. They are our one chance to talk to all the hackers at the same time when they are awake, eager and ready to hack. The problem is they are all ready to hack. The last thing they want to do is spend 2+ hours listening to executives and recruiters drone on about the size of their company, or the parameters required to use their API.

Keep it short

Even if you have a sponsorship level that gives you 15 minutes to speak, please don’t! Think of opening ceremonies as a pitch competition. Give yourself 2-3 minutes to pitch to the audience. If you can’t win them over in 2-3 minutes you probably need to re-work your pitch. You are one of 10-30 companies who will be presenting one after the other, as the hackers sit there thinking, how many more of these do we have to listen to before we can start hacking. Keep it short! Sponsoring a prize category? All the hackers want to know is what’s the prize and what do I have to do to get it. Recruiting? What sort of person are you hiring (e.g. new grads vs first years) what are the pre-reqs (specific skills, degree type), why is your company awesome (in ONE slide with max 3 bullet points!) and who do I talk to to learn more.

Get creative

I was tempted to leave this out, because it’s sort of my personal secret to success. I love being sponsor 8 of 15. I love being the next presenter when the audience is getting restless and bored. That’s my opportunity to be the person who wakes them up with something memorable. I’ve done it by taking 30 seconds instead of 4 minutes. I’ve done it by singing a song, I’ve done it with a parody of We will Rock You getting the audience to clap and stomp along (You need, You need Azure!) . What can you do that will a) wake up the audience from their stupor and b) stand out from the other sponsors? Do you play the accordion? Do you juggle or do cartwheels? How about a skit? (no-one expects the Spanish inquisition! our primary weapons are APIs, Python code, and cloud! if you don’t get the reference, then I guess I am getting old 🙂 ) Throw swag into the audience before you start. Make the opening ceremonies more fun for everyone including yourself!  Don’t be afraid to step out of your comfort zone a bit (trust me my legs always shake when I sing but I get hackers at the next hackathon ask if I am singing another song)

Presenter 9 of 16 at opening ceremonies

Presenter 9 of 16 during opening ceremonies

Make it as easy as possible for the hackers to use your tech

You want the hackers to use your tech, help them!

  • Have mentors on site
  • Monitor the Slack or Discord channel for questions about your tech
  • Run a workshop to help them get started
  • Have online resources readily available for those who miss the workshop
  • Have a shortened URL or QR code at the booth or on swag to direct hackers to those online resources

Have a plan for judging

Judging takes more work than you think. A little work ahead of time reduces stress when you have a fixed amount of time to pick your winner.

Pre-define judging criteria

Some of the hackers are just there to win! So let them know what you are looking for in a hack? Creativity? Technical complexity? User experience? Originality? or is there a theme such as social justice, diversity, or thinking green that affects scorting? Your judges and mentors may appreciate having the criteria ahead of time as well.

Communicate the judging criteria

Let the hackers and your judges know the criteria. You can post it to the Discord or Slack channel, or have it displayed at the booth or on the hackathon website.

Do the math

How many entries will you receive? How much time do you have to judge? How much time do you need between project presentations to take notes and move to the next team for judging? You may find that you need to split your judges up to get to all the hacks with enough time to evaluate and score them.

Set a time limit and stick to it

To be fair to all hackers, once you have done the math, set a timer to determine exactly how long you spend with each team. Otherwise you might spend too long at the first projects and be rushed at the later projects. Ideally everyone should have the same amount of time with your judges. I tell the hackers how long they have and I put my phone right on the table with the timer running so there are no surprises.  Decide if that time limit is for the presentation and they get extra time for Q&A or if Q&A needs to fit into that original time limit.

Ask about judging logistics before judging starts

  • Will teams sign up for timeslots and come to your booth to present? or will teams go to numbered tables and you receive a list of teams whose tables you need to visit?
  • If it is a numbered system what is the layout? I was at a hackathon with teams on two stories, it would have been useful to know ahead of time tables 56 and higher were upstairs.
  • What time does judging start?
  • How and when will you receive the list of teams to judge (table numbers to visit or timeslots teams signed up for?) – I ran into an issue where one of our program managers did the sponsorship negotiation and sorted out all the shipping, and they emailed the list of teams to them instead of me during the hackathon, since they had been the primary point of contact. We lost 30 minutes of judging time.
  • Do you need to provide the name of the winner to the hackathon organizers before you present the prize at closing ceremonies? If so, who do you notify and how?

Use ranking in addition to scoring

If you have to split up the judges (i.e. not every team is seen by every judge) then absolute scores may not be the fairest way to select a winner. Think back to school some teachers just mark tougher than others! The same is true with judges. I found the quickest way to identify a winner was to have each judge use their personal scores to identify their top 2. Each judge or judging group presents #1 hack, and we decide on a winner as a group.

The best laid plans of mice and men often go awry… roll with it

For some reason, something ALWAYS goes wrong when it gets to judging time. It starts late, you don’t receive the email with the list of teams to judge, You go to the assigned table and the team you are meant to judge is not there, or a different team is there. A couple of helpful tips:

  • Stay calm. I guarantee you the person organizing the judging for the hackathon is aware that they are late or that things are messed up. They are stressed out trying to solve whatever the problem is. Even when I am angry with them, I don’t yell at them. I ask ‘ so when *can* we expect the list of teams, okay, and will closing ceremonies be delayed so we still have the same amount of time or judging?’ and deal with it. I can complain later in a feedback email post-event.  Remember, the hack organizers are probably exhausted, and you may be as well, not the best time to get angry (my co-workers will tell you that I have been known to vent to them when things are really messed up)
  • Before a team pitches to you, confirm the team name and whether they actually entered your prize category.  You don’t want to accidentally give the prize to a team that didn’t enter your category just because you read table 38 when it was actually table 39!
  • Find out who at the hackathon is in charge of judging and how to reach them (Slack and Discord don’t count! you want a room number, a cell phone number, or instructions like find one of the organizers in a pink shirt with a walkie talkie). That way when something goes wrong like you cannot find a specific team, its 30 minutes late and you haven’t got the list of teams to judge yet, or you need an extra 20 minutes because you got more entries than expected, you don’t have time to spend running around trying to find out who can help you

Be prepared for closing ceremonies

We are often so focused on the hacking time or judging that closing ceremonies are an afterthought. Here are a few questions you can ask ahead of time to make everything run a little more smoothly:

  • Where are the prizes stored during the hackathon itself? I do NOT recommend putting them under the table at the booth. We have had Xboxes stolen 😦 Ask the hackathon organizers if there is a locked room where you can put the prizes
  • If the prizes are in a locked room who can let you into that locked room before closing ceremonies so you have the prizes to give the winners? How do you contact that person if you can’t find them?
  • Where are closing ceremonies? Will you need help carrying the prizes to the location? Ahhh yes, memories of lugging four Xboxes across a university campus in sweltering heat to a different building!
  • Who announces the winners during closing ceremonies? You or the hackathon organizers?
  • How much time do you have on stage when you announce or congratulate the winners?
  • Will there be a chance to take a photo on stage with the winners?
  • If you need the winners to fill out forms, where should you meet them or take them to fill out the paperwork so they can have their prizes.

TIP: If the hackathon is running late and you are freaking out because you have a flight to catch, talk to the organizers, they can usually help you out by either announcing your prize earlier or getting someone to present the prize on your behalf and send you the pictures afterwards.

Packing up and heading home

Hey everyone around me is packing up their booth, I guess I should too! Packing up the booth is usually pretty straightforward (assuming you didn’t accidentally throw out a box you should have kept and you have packing tape), but what happens with those boxes now?

  • Is someone taking them home in their car?
  • How do we get the stuff from here to the car, is there a cart we can borrow? a freight elevator we can use?
  • Are there shipping labels somewhere we stick on the boxes? Where are the shipping labels, oh in an email, how do I print those out now?
  • Where do we leave the boxes so the shipping company can find them tomorrow?
  • When the shipping company shows up and can’t figure out where the boxes are who can they call? I’ll be in another city so I can’t help!

It’s a good idea to figure out as much of this as you can before you pack up the booth, especially since you are probably doing this at the same time as you are about to start judging.  Ask the hackathon organizers if there is a specific shipping company they work with for post-hackathon pick up. You can pre-purchase and pre-print shipping labels (but make sure you have packing tape to attach them!)

To sum up

Wow, Susan that was a really long post!

Yes it was, I have been to many, many hackathons, and I have seen many, many things go wrong. I was famous(infamous?) on my team because I always created a hackathon guide to distribute to all the people supporting me on site letting them know all kinds of logistics: parking, phone numbers, swag distribution rules, judging criteria, maps, hackathon schedules, etc…  Sponsoring a hackathon is a lot of work, especially if you are sponsoring a prize, don’t underestimate the effort. But the payoff of seeing new developers discover your technology and building amazing hacks using your tech can be worth every minute and every dollar and gosh darn it, it can be fun too!

Happy hacking and hey in addition to my work at AI Gaming, I do some developer relations consulting, so reach out if I you need help! (though to be clear, I do not want a full time job managing all your hackathon sponsorships :))

Check out other Developer Relations posts such as Setting goals for your evangelism and advocacy teams.


Object detection with Custom Vision Service

In this post I’ll show you how to train your own model to detect objects in an image.

As many of you know, I am a runner. After I run a race I usually get an email trying to sell me my race photos. This got me thinking about how photographers manage to sort through all the photos.  It’s a great example of leveraging image analysis for a business. You need to find the runner in the photo, locate their bib, and read the number on their bib.

In this post I’ll show you how I was able to use a drag and drop tool to locate the bibs in race photos.

If you want to try it yourself, you need a Microsoft account and an Azure subscription.

Launch the Azure Custom Vision Service.

Custom Vision Service Home Page

Custom Vision Service Home page

Sign in with your Microsoft account, and Create a New Project

Create New Project Custom Vision Service

Create New Project

  • Enter a project name and description.
  • Select the project type to Object Detection
  • Select Create new resource group
Set Project Properties

Set Project Properties

A resource group is like a project folder. Your custom vision service will be stored inside the resource group.

  • Enter a name for your resource group
  • Select your Azure subscription
  • Select a data centre location where you want your resource group stored
  • Select a pricing tier
Create resource group

Create resource group

Select Create resource and then select Create project to create your project.

You will be redirected to the project home page.

You need to upload images to train your model.

Upload images

Upload images

Select Add images and upload at least 15 images containing the object you wish to detect

If you want to try the running bibs example, you can use the images in the zip files in my Analyze Image GitHub \ Object Detection folder. These images were generously provided by some of my running friends.

Once the images are uploaded, you need to tag each image with the object you are training your model to detect. I am going to train my model to identify runners and bibs.

Select the first image you uploaded and it opens in the tagging page



Once you have your image open, click on the surface and draw a rectangle around the object you want to detect and then provide a tag to identify that object.

I have drawn a box around the runner in the middle of the photo and their bib and tagged them as runner and bib.

I repeat the same process for the other runners in the picture and for their bibs if they are visible


When you are done you can close the window and open the next photo for tagging, or you can just select the arrow key to the far right of the Image detail to scroll to the next image to tag.


Complete this process for each of your training images.

Now select Train from the top menu bar to train your model.


Select a Training Type

Fast training is great for proof of concept situations like this one. Advanced training allows you to increase the training time (which will consume more cloud credits) and will notify you when training is completed.



Once training is complete you will see your iteration statistics and you can test it using Quick Test


Select Browse local files or provide a URL to an image containing the object you want to detect. The trained model will attempt to identify the regions containing the images and provide a probability/confidence level for each.Results

My model has successfully identified multiple runners in the photo and the location of the race bib.

The trained model can now be called from code to retrieve the predictions as JSON.  I have an example of how to call a classification model created with this tool in my GitHub.




Setting goals for your evangelism and advocacy teams

Having an advocate or evangelist team engaging with your community is a good thing, but it’s essential to decide up front what goals you want to achieve. This post will help you understand how and why to define those goals.

All too often, companies hire a few knowledgeable presenters, send them out to present at conferences and call it evangelism. Yes, presenting at conferences is great, but at some point, someone should ask the question, what’s the return we get from this team.

Even if you decide your goal is to present to new audience, the speakers themselves need direction. Can they present on any topic at all? Databases? Websites? Diversity in the workplace? Presentation skills?

If you hired an evangelist or advocate you likely had a goal in mind when you did. Something you thought would be improved by hiring the team. It’s a good idea to define the goals of the team before you hire them and send them out to be awesome.

The goals you set for your team should be SMART goals: Specific, Measurable, Achievable, Relevant, Timely.

What is a SMART Goal?


Target a specific area for improvement. You want to reach more developers, what types of developers? University students? Developers working at companies? Beginner developers? Back end developers? Front end developers? You can developer better tactics to achieve your goals if you are specific.


Once you set a goal how will you know if you achieved it if it is not measurable. It’s great to have a high level vision of what you want to achieve such as ‘strong relationships with the developer community’ but how do you measure it? Do you want to track the number of user groups you meet? The number of developers who post in your community forum? Or the number of developers who download your SDK?

You need to be VERY careful when you decide what to measure. If you tell your team their goal is to get as many developers as possible to download your SDK, they might decide to give away flying monkeys at conference booths to everyone who downloads the SDK. Okay you get a lot of downloads, but are you actually engaging with the developers and building interest and loyalty in your product? (side note I am infamous for always wanting to give away flying monkeys)

flying monkey

Flying Monkeys for everyone who downloads the SDK


When you decide on a goal that is measurable you need to set a target. Are you trying to get 5,000 developers to download your SDK or 50,000?

Your goal should be a stretch. You want to push your team to be creative, but it should also be achievable. If you set a target that cannot be achieved there is a risk your team will be frustrated and demoralized.


(sometimes listed as Realistic but I find that redundant since achievable is already a criteria)

Your goals should be relevant to the company objectives and direction.

Over the years, Microsoft’s mission statement changed from “a computer on every desk and in every home” in the Bill Gates years, to “create a family of devices and services for individuals and businesses that empower people around the globe at home, at work and on the go, for the activities they value most” in the Steve Ballmer years to “empower every person and every organization on the planet to achieve more” under Satya Nadella. When I was a developer evangelist at Microsoft in the Ballmer years, my goal was to get developers to build apps for Windows Phone and Windows. If a phone has a wider selection of apps, consumers are more likely to purchase the device. I understood how my goals helped the company achieve their mission.


Set a timeframe for your goals. Many teams set yearly goals because that ties in nicely with annual performance reviews.

Managing team expectations

Once you have set your team goals, make sure they are clearly communicated to the team. Everyone should understand what defines success for the team, so they can work together to achieve success.

In my perfect world, I could get a job as an evangelist and just spend my time picking and choosing conferences I want to attend and presenting to developers. I love presenting at conferences and workshops, it’s fun, and all modesty aside, I’m pretty good at it. Another evangelist might prefer to spend their time playing with the product and creating git repos. Another evangelist might want to spend all their time blogging and tweeting. Which one is right for your team, and which one will be happy on your team, depends on a match of your goals with their skills and interests.


Evangelism and advocacy teams can add a lot of value, but make sure you sit down each year and agree on goals for your team to define what success looks like for your team!

If you found this post helpful, you may want to check out my previous post: Evangelism vs Advocacy


Evangelism vs Advocacy

In this post I’ll explain the difference between evangelism and advocacy

For 5 years, I had the job title “Technical Evangelist” it was an interesting title and frequently resulted in questions and comments. Developer evangelists and technical evangelists were popping up at a number of high tech companies. But, over the past 3 years or so a new job title has emerged: “Developer advocate”. What is the difference?

dictionaryDictionary Definitions

Let’s start by looking at the definitions.


According to Merriam Webster an evangelist is:

  1. “A writer of the 4 Gospels” (definitely not the definition that applies here)
  2. “A person who evangelizes”.  (That’s not very helpful, so need to look up their definition of evangelizing… here we go: “to preach the gospel to”; “to convert to Christianity”.)
  3. “An enthusiastic advocate”

It’s that third definition that seems to fit the spirit of the technical or developer evangelist role. However the other definitions are still very much entrenched in most peoples psyches. In fact, if you look up the definition of evangelist in the Oxford dictionary you only see two definitions:

  1. The writer of one of the four Gospels (Matthew, Mark, Luke, or John)
  2. A person who seeks to convert others to the Christian faith, especially by public preaching

The Oxford dictionary doesn’t recognize any non-religious definitions of evangelist. This is likely why I heard so many jokes about trying to convert people to Microsoft or preaching the word of Microsoft. Fortunately, I just had fun with this and would occasionally do my best tele-evangelist imitation “All hail the mighty Microsoft! I shall cleanse your soul from the clutches of Google” and then stop to explain that my real job was to help developers understand how Microsoft technology could help them.

Let’s return to the 3rd definition in Merriam Webster: “An enthusiastic advocate”.  Technical and developer evangelists are enthusiastic. They have passion for the technologies they represent. They share that passion by delivering workshops, writing tutorials, and presenting at user groups and conferences.


According to Merriam Webster an advocate is:

  1. One who pleads the cause of another” 
  2. “One who defends or maintains a cause or proposal” 
  3. “One who supports or promotes the interests of a cause or group”

All three definitions emphasize that an advocate acts on behalf of the group, promoting their interests, pleading and defending their cause. A developer advocate should support developers not preach to them.

Advocates perform similar activities to evangelists: delivering workshops, writing tutorials, and presenting at user groups and conferences. But, a true advocate always does so with their customer in mind first instead of the company.

Whether I am an advocate or an evangelist,  If I work for a particular company, I am going to be promoting their products!

Having said that, let’s make one point clear: Whether I am an advocate or an evangelist,  If I work for a particular company, I am going to be promoting their products! But, there is an expectation that an advocate does so in a way that puts the developer or customer first. Good evangelists do this as well, but the shift to advocacy from evangelism is an done to emphasize a customer first focus.

An Advocate and an Evangelist walk into a conference…

Let me give you a specific example. An evangelist might go to a conference and deliver a session called “Introduction to facial recognition APIs”.  This presentation teaches you all you need to know to implement the API.

An advocate would be more likely to deliver a session called “How to leverage facial recognition to improve security”. This session teaches you how facial recognition is useful for security applications and how to leverage Facial recognition APIs to do it.

Both presentations can be very effective. Both presentations could be amazing sessions to attend. Both sessions provide the same core content: How to implement the company facial recognition API. But, the advocate’s presentation puts a different spin on it, the title itself tells you this session will help you with security. In designing content and talks an advocate should always ask themselves how does this presentation help my audience? How does this support them?

Evangelism vs Advocacy

Evangelism vs Advocacy

Inbound vs Outbound communication

twowayBecause the advocate is seen as someone who pleads and defends the cause of their customer they may also take on an additional responsibility: collecting feedback from customers and sharing it with product teams.

The evangelist was generally an outbound role, they presented and shared what they knew. There job is to drive awareness and adoption of the product.

The advocate role should be outbound and inbound

The advocate role should be outbound and inbound. In addition to presenting and sharing what they know with others, they should also collect feedback from the community and represent the customer needs back to the product teams.

Preparing for inbound communication collected by advocates

Many product teams are starving for real customer feedback and appreciate the opportunity to get feedback through the advocates.

bombardedI’m an advocate presenting at a conference. A developer comes up to me after my talk and explains they tried to use the API but there’s a parameter missing that makes it difficult to use. Fantastic, this is exactly the sort of real world feedback we want to collect, but you need to put some thought into what you do with that feedback after it’s collected otherwise it can get lost.

How will advocates provide feedback to the product teams?

Feedback may be provided to the advocate verbally, through social media, or by email. How do you want the advocate to physically share that feedback with the product teams? There are a number of options: Email; Feature request forms; Create an item in the backlog; Reporting in meetings or stand ups; The advocate could also point the developer to a community feedback form where the developer can provide feedback to product teams directly.

How frequently will advocates provide feedback?

Customer feedback does not follow a schedule but your product teams probably do. Do you want to develop a rhythm for your advocates to share feedback with the product teams or will they share it ad-hoc as it comes in?

How will you prioritize feature requests from advocates?

Priority-ListCustomer feedback collected by advocates is just one input into your requirements. The product team has a constant backlog of requirements, bugs, and feature requests from the product roadmap; paying customers; beta testing; focus groups, and more.

How much weight or priority do you assign to feedback from your advocates? The answer is the ubiquitous “it depends”. Priority is usually based on some combination of effort, urgency, and impact. You would likely assign a different priorirty for feedback from someone actively using and paying for the product than you would for feedback from someone just trying it out at a hackathon.

You may need your train your advocates to collect enough information to prioritize feedback appropriately.

Communication and expectations

If a customer provides feedback through an advocate, what are their expectations? Will they ever know if their product feedback was shared with the product team? Will they know if their feedback was considered but is not feasible at this time or whether it resulted in a new feature request? Who is responsible for following up.

If the advocate forwards the feedback they received verbally in an email to the product team is their work done? Is the advocate responsible for following with the product team to find out if the feature requested is already in the backlog, or that the error message reported is in fact just an error you receive if you are using the incorrect Python library.

If a product team member has additional questions about the feedback “What version of Python were they using when they encountered this error?” is there a way to reach back to the customer? Does the product team member reach out directly or is communication done through the advocate?

Adding the inbound feedback to the responsibilities of an advocate can result in a lot more work, but it could also result in a better product for your customer!


Having evangelists or advocates can benefit your company hopefully this post helped you understand the difference in philosophy between them.

If you found this post helpful you may want to read my previous post: Why do evangelism/advocacy? or my next post: Setting goals for your evangelism and advocacy teams.




Azure Machine Learning Service Visual Interface vs Azure Machine Learning Studio

In this post I’ll compare the Azure Machine Service Visual Interface to Azure Machine Learning Studio.

If you are a fan of Azure Machine Learning Studio this should help you get started with Azure Machine Learning Service Visual Interface and understand some of the differences.

I quite like Azure Machine Learning Studio. It’s a drag and drop tool for training machine learning models and deploying them to a web service hosted on Azure. It has limitations, but it allows you to train, tweak, and retrain machine learning models without writing any code.  The tool was deprecated a couple of years ago.  Which in software terms usually means, we aren’t doing any more work on this tool and don’t recommend continuing to use it.  I think Machine Learning Workbench was supposed to replace it, but that product did not gain much traction in the market and is also deprecated.

So, I was very interested to see the Visual Interface Preview for Azure Machine Learning Service, which looks very familiar to Azure Machine Learning Studio users.

In this post I’ll talk about the difference in

  • Home Screen
  • Launching the tool
  • Datasets
  • Data prep and column selection
  • Running your experiment
  • Deploying your model

Home Screen

At first glance the only notable difference is the appearance of the +New button, and the lack of Notebooks through the interface. You can create Azure notebooks seperately, but the preview does not have integrated notebooks.

Home page Azure Machine Learning Service Visual Interface preview

Azure Machine Learning Service Visual Interface (preview)

Home Page Azure Machine Learning Studio

Azure Machine Learning Studio

Because Azure Machine Learning Service Visual Interface is such a long winded product name, I will refer to it as the ML Visual Interface from this point forward in my post. I will refer to Azure Machine Learning Studio as ML Studio.

Launching the tool

The first difference ML Studio users will notice is it’s a little more work to reach the home page pictured above in ML Visual interface. with ML Studio you could just go to the ML Studio home page and log in. The Azure back end was abstracted from the user.

To get started with ML Visual Interface you need an Azure subscription and you need to use the Azure portal . From the portal, you create a Machine Learning service workspace. If you want to try it yourself, you can find instructions in the Quickstart: Prepare and visualize data without writing code in Azure Machine Learning.

Creating Azure Machine Learning Service Workspace

Create an Azure Machine Learning service workspace

Once you have created the workspace you launch the visual interface from the menu blade

Launch Visual Interface from menu

Launch Visual Interface


Both tools come with a variety of pre-loaded datasets. Both tools allow you to upload your own datasets. I was mildly disappointed that my favorite flight dataset is not pre-loaded in ML Visual interface. I found training a model to predict which flights were late or on time was a great example, since you don’t need to be a data scientist to understand what data might affect whether or not a flight is likely to be late.

I have uploaded the titanic dataset to try and predict which passengers would survive.

As soon as I drag the dataset to the work area I discovered the first ‘quirk’ of the preview. When I try to visualize my dataset, that option is grayed out. I am going to assume this is just one of the joys of working with a product in preview and will be fixed in a later release. But it is quite irritating, because of course I always want to look at my data set and make sure it uploaded correctly.

Data set added to work area but VIsualize menu item is grayed out

Adding data set to work area

Data prep and column selection

We still have all the great modules like Select Columns in DatasetClean Missing Data, and Edit Metadata.

Unfortunately and I will also chalk this up to quirks of previews that will be fixed in a later release, whatever module you connect first (e.g. Select Columns in Dataset) will not know the names of the columns in your dataset.  So you will want to make sure YOU know the column names because you have to type them in and the interface will not warn you if you enter an invalid column name.

Entering column names manually for select olumns in dataset does not catch invalid column names

You can specify invalid column names

Running your experiment

In ML Studio, you were unable to scale up the compute power used to run your experiment even though it was running on cloud resources. This meant it sometimes took a LONG time to run.

One of the great things about the ML Visual Interface is you control the compute power used to run your experiment! The only drawback is you have to create the compute instance before you can run your experiment. Well worth it for the benefits of being able to use more compute power when needed!

The first time you run the experiment you will need to create new compute. I am just using the preconfigured defaults for now, but I could go to the Azure portal and create a new compute target (you will need to learn to do that at some point anyway, because when you are ready to deploy it will require you to create a compute manually)

Creating compute can take 5-15 minutes, so go ahead and grab a coffee while you wait.

Create compute to run your experiment in Azurel Machine Learning Service Visual interface

Create compute to run your experiment

The good news is after the compute is created and the experiment runs, you can use the Visualize to see your modified datasets after the task (though you still can’t visualize the original dataset).  Also, any tasks you add to your experiment will now validate columns names.

Data visualization after running experiment

Visualization of Data

Training and Scoring your model

Just like ML Studio, you just drag and drop the tasks you need to prepare your data, split, train, score, and evaluate your model. Set the properties in the property window. The user experience for adding modules and setting properties is the same in ML Visual interface as ML Studio.

Finished experiment in Azure Machine Learning Service Visual Interface

Finished Experiment

When you re-run your experiment, you do not need to Create new compute every time. You can select existing and re-use the compute you created for the first run of your experiment. The first time I used the tool I had problems with my previous compute not showing up in the list of existing compute targets (even when I selected Refresh) but when I closed the browser window and re-opened it, it would show up.  Still faster than creating new Compute every time I want to run the experiment.  Today, I did not need to refresh and my compute target was listed as you would expect, so maybe they fixed it (if so well done that was quick!), or maybe it depends on your browser or maybe it’s an intermittent quirk of the preview.

re-use existing compute when rerunning experiment

re-use existing compute

Deploying your model

To deploy, you must first create and run a predictive experiment, just like ML Studio.

One of the other BIG differences in ML Visual Interface is the ability to deploy the model somewhere other than an Azure web service.  You have control. If you know your way around managing and deploying models, the world is your oyster. I have not yet had a chance to try it myself (if you try it before I do, please share your experience). Check out Deploy models with the Azure Machine Learning Service for more instructions and details.

If you just want to deploy it to a web service the way we did in ML Studio, that still works. Possible kudos to the product team for quick work, because when I tried this last week it required me to create a compute target with 12 nodes to deploy. Today I was able to re-use the existing compute I had used to run my experiment which had only 6 nodes.

Requiring 12 nodes was a hassle because my Pay as You Go Azure subscription had a quota limit of 10 nodes. I had to submit a request to increase my CPU quota. To the credit of the Azure support team (no pun intended) The request was processed almost immediately.  I was able to confirm my new quota with the Azure CLI command.

az vm list-usage –location “EastUS”

Quota limit

Quota limit

Just for extra fun, the VM family I requested a quota limit for was not one of the valid VMs supported by the tool, so I had to look up which VM family supported the VMS listed as supported in the error message to request the correct quota increase.

I did not have to do ANY of that stuff with quotas today, I just clicked DEploy web service, and re-used the existing comptue I created to run my experiment. I am leaving those links and information in the blog post, just in case anyone else runs into it and also so I can remember how to do it if I ever run into that issue again with another service.  Blogs make a handy place to keep notes for yourself.

Testing your trained model

If you deploy your trained model as a web service, you can test it and find sample code to copy and paste just like you did with ML Studio.

Select Web Services | Test

Type in your values and see the result.

TEsting the trained model Azure MAchine Learning Service VIsual Interface

Testing the trained model

This is not a secure way to deploy your model, but it’s great for proof of concept, and testing.

You will see a warning with links to instructions on secure deployment when you open the web service.

Instructions are provided for secure deployment on web service page

Secure deployment


Fans of Azure Machine Learning Studio are likely to become bigger fans of Azure Machine Learning Service Visual Interface.  Two of the biggest complaints about ML Studio were the inability to scale compute and the inability to deploy models outside of Azure web services. Both of these concerns are addressed with Azure Machine Learning Service Visual Interface.


Why do evangelism/advocacy?

In this post I’ll explain the value of evangelism/advocacy programs vs traditional sales and marketing tactics.

“Why would a company hire someone with no sales or marketing experience to help drive product adoption?”

More and more companies large and small are hiring evangelists and advocates. I spent 8 years in these types of roles at Microsoft. I am a coder. I have a bachelors degree in electrical engineering. The closest I came to a business course was a first year economics course. Why would a company hire someone with no sales or marketing experience to help drive product adoption? The answer: ‘authenticity’.

Sales person telling me an API is great vs person at computer coding telling me API is great

Trust the coder

For some people, the word ‘sales’ can have negative connotations. I have visions of someone at a used car lot trying to convince me the 8 year old Mustang in front of me was only driven on Sundays to and from church or a phone call interrupting my dinner offering a special discount on duct cleaning.

Where do we turn when we want advice on which product to purchase? Looking for running shoes with better traction? The website may tell me this shoe has “unsurpassed grip on any surface” but can I believe them?

Most of us turn to our friends, our peers, and ‘experts’.  I use the term experts loosely, because with the advent of the internet there is a plethora of experts out there ready to give you advice on everything from the how to tell if an avocado is ripe to which phone games I should try if I like Candy Crush.

When I am trying to find a running shoe with better traction, I want a review from an actual runner. I want advice from someone I can relate to, someone who speaks my language, someone who understands the challenges I face training and racing through Canadian winters. I trust a fellow runner to go beyond the ‘marketing pitch’ and let me know is the traction good for ice or mud? is the shoe light or heavy? how stiff is the sole? is it waterproof?

salesperson telling me shoe is has great traction vs runner in snow telling me show has good traction

Trust the runner

When I am coding and want to explore a text analytics service to detect emotion, I want advice from another coder. Someone who understands the hidden hassles of coding. I want to hear from someone who installed the libraries, got the API key, and figured out  which parameters I need to set in the HTTP headers. Oh, and hey, since you went through all that, can you please give me a video or GitHub repo with detailed instructions so I can don’t have to mess around with all that and I can get my own code up and running quickly.

The runner and the coder speak with an authentic voice, they have real world experience I can relate to, so I am more likely to believe and trust them. They can also provide information that a marketing or sales person might not realize I need.

“Advocates and evangelists do NOT replace traditional sales and marketing”

Advocates and evangelists do not replace traditional sales and marketing. They complement them. They provide an authentic voice representing your product to your target audience.

Advocates and evangelists are paid employees who represent your product. They should work with your sales and marketing teams. They may report into your sales and marketing division.

I realize this is just an introduction to the concept and if you are trying to get an evangelism/advocacy team up and running you likely have more questions: What skills should they have? Should they have quotas? What’s the difference between an evangelist and an advocate? What type of person would I hire for the role? Maybe you have other questions.  Leave your questions below or your compliments on my amazing art work 😉 and I will try to answer them in future posts. So stay tuned! If you can’t wait for the next post, just send me a note on LinkedIn!

If you found this post helpful you may want to read the next post: Evangelism vs Advocacy