Archive for the ‘Advocacy’ Category

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.

Evangelist

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.

Advocate

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!

Summary

Having evangelists or advocates can benefit your company hopefully this post helped you understand the difference in philosophy between them. Coming soon, I’ll talk about the importance of defining goals for an evangelism or advocacy program.

 

 

 

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

Datasets

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

Summary

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!

How to set up the Windows Command Prompt for code demos

In this post I will share a few simple things you can do to set up your Command Window to help ensure a smooth code demo.

  • Change font size and colors
  • Set up the properties for copy and paste
  • Useful commands and keyboard shortcuts

Change the font size and colors

The default colors and font sizes are designed for someone working at their computer and may not provide good visibility when using a projector to display code to a larger audience.

Default appearance of command window

Default appearance of Command Window

You can edit the properties of the command window to change the font and colors.

Right click on the title bar of the window and select Properties.

Accessing properties menu on

Accessing properties menu on Command Window

  1. Select the Font tab.
  2. Increase the Size
  3. Select Bold fonts
Command Window Font Properties

Font Properties

I recommend leaving the font to Consolas, it is a good font choice for code demonstrations. For more tips on font selection see my post “How to rock a code demo – selecting your font”

You may also want to change the colour scheme, darker fonts on lighter colors can be easier to read in a well lit room.

  1. Select the Colors tab
  2. Set the Screen Text color
  3. Set the Screen Background color
Command Window color properties

Color properties

The end result is easier to read commands.

Command window appearance after changing font and color properties

Updated Command Window appearance

Set up the properties for copy and paste

Ah yes, the joys of copy and paste in the command window. Windows 10 brought some great improvements to the command window for fans of copy and paste (which is basically everyone!)

There are a few properties you probably want to ensure you have enabled. Just right click on the title bar and select Properties | Options

Command Window Options Property window

Command Window Options

  • QuickEdit Mode – allows you to use the left mouse button to highlight and select text in the Command prompt window and right click to select the text, then the next time you right click in the window it will paste the text. If you have Quick Edit mode disabled then you get
  • Enable Ctrl key shortcuts – allows you to use CTRL+C and CTRL+V to copy and paste
  • Filter clipboard contents on paste – will remove tabs, and convert smart quotes to regular quotes.
  • Enable line wrapping selection – Allows you to easily copy a command that wraps over multiple lines

Check out the post “How to copy and paste in cmd” by Baz Edwards for a more complete list of copy and paste options, or check out the post “the new features of the Windows 10 command prompt” by Martin Brinkmann for a more complete list of all the Command Window properties.

Useful commands and keyboard shortcuts

Knowing a few commands and keyboard shortcuts can make you look like a pro!

  • cls  clear the screen
  • Up arrow  scroll through previously issued commands
  • Right arrow recreate the previous command character by character
  • Toggle between full screen and windowed mode
  • Enter/Exit Mark mode – When you are in mark mode you can use the arrow keys to move your cursor around the window

34 Useful Keyboard Shortcuts for the Windows Command Prompt by @wjglenn if you want more keyboard shortcuts.

When I published this post, the most current Windows Command documentation was at Docs.Microsoft.com . However, the documentation page has a warning indicating that they are not maintaining the page, so it is possible there have been updates since this page was last updated.

How to rock a code demo – Selecting your font

FontChoicesIn this post I will provide tips on how to select a suitable font for code demonstrations.

One key factor in success when delivering a code demonstration is the visibility of your code. The font you use affects how easily I can read your code.

In this post I’ll discuss four characteristics to consider when selecting the font for your code:

  • Character differentiation
  • Character width
  • Monospace/Proportional
  • Ligatures

Character differentiation

The first thing you need to check is whether your font clearly differentiates different characters. A good test is to compare

  • The number 0 from the letter ‘O’
  • The number 1 from a lowercase letter ‘L’ or an uppercase letter ‘i’.

Variable names and assignments, API Keys, file paths, and URLs can contain a variety of characters. Selecting a font with good character differentiation can help avoid confusion when walking through your code.

Below is a character comparison for a variety of fonts you might find pre-installed in your code editors. Many code editors default to Consolas which has excellent character differentiation.

FontsCharacterDifferentiation

Character width

Another factor to consider is whether how much horizontal space is taken up by a single character. Ideally you want the code to fit on a single line without scrolling, so a narrower font may make it easier to display your code.

All the samples in the table below are the same font size.

At first glance Verdana and Segoe UI look similar, but Segoe is a narrower font so might be a better choice. You do need to be careful not to pick a font so narrow it becomes difficult to read such as TW Cen MT Condensed.

FontWidth

Monospaced/proportional fonts

General consensus is that you should always use a monospace (proportional) font for code. Monospace fonts use the same amount of horizontal space for each character.

The advantage to a monospaced font when displaying code is a string of 10 characters will always take up the same amount of space, so it’s easier to visualize variable lengths. Punctuation symbols can also be quite narrow and harder to see in non monospace fonts.fontMonoSpace

Ligatured fonts

Ligatured fonts are the fonts which have characters that connect to each other. If you are going to use a ligatured font for coding make sure it is designed for coding. e.g. Fira Code, Monoid, or Hasklig. unless they were designed for displaying code. Scott Hanselman wrote an interesting blog post discussing ligatured fonts. 

Ligatured fonts have a very different look when programming, some people absolutely love it, but it might cause confusion to an audience that is not familiar with this type of font.  The characters on the left are with ligatures, the characters on the right are without ligatures.

If you like ligature fonts, but your audience is confused by them, most code editors give you the ability to turn off ligatures for ligature supported fonts.

DisableLIgatures

There are other decisions to make with regards to font for code demonstrations including font color and size, but picking a suitable font is a great place to start!

 

 

How to add an FAQ bot to your website

Hosting an event? Attendees always have questions, you can bury them on your website or you can add a chat bot for quick Q&A based on your existing FAQ!

In this post I will show you the steps to

  • Create and test a FAQ knowledge base
  • Create and deploy a bot that connects to your knowledge base
  • Get a hyperlink so your website can launch a chat with the bot

This tutorial uses Azure so you need an Azure subscription to continue. If you are a student you can sign up for free Azure without a credit card at aka.ms/Azure4Students . If you are not a student you can sign up for a free Azure trial.

Create and test a FAQ knowledge base

Azure has a tool called QnA Maker which allows you to create a knowledge base automatically from an existing set of FAQ.

Visit the QnA Maker site and select Create a knowledge base from the top menu.

CreateAKnowledgeBase

Select Create a QnA service.

CreateAQnAService

You will be redirected to the Azure portal. Sign in using the account associated with your Azure subscription.

TIP: If you are redirected to a different Azure page after signing in, just go back to the QnA Maker page and select Create a QnA Service again to bring back the blade for creating a new QnA Service.

Specify

  1. Service Name
  2. Select the Management pricing tier (TIP: the ones that start with “F” are free, you can switch to a paid tier later when you need to support more calls per minute)
  3. Select your pricing tier (TIP: the ones that start with “F” are free, you can switch to a paid tier later when you need more storage)
  4. You can change the App name if you wish, it defaults to the name of your service. The name must be unique across all Azure users since it will determine the URL of your service.
  5. You can change the other values if you wish or leave them at their default values then select Create.

QnAServiceSettings2

After a minute or two your service will be created. Go to  Notifications in the top right corner and select Go to Resource.

GoToResource2

Now that you have a QnA Service you can return to the QnA Maker site and create your knowledge base. Refresh the page so the site picks up your recently created QnA Service.

Select your Azure directory, subscription name and services using the drop down lists.

Then enter a name for your Knowledge base

ConnectServiceToKB

Provide the URL for one or more web pages with your FAQ or upload one or more files containing your FAQ.

Select Create your KB to create your knowledge base.

CreateKB

You can add additional questions by selecting + Add QnA pair

AddQAPair

Type in a question the way you think a user might ask it and the suggested response.

TIP: Use the + symbol for any question to add different phrases that might be used to ask the same question.NewAnAPair

Once you have the questions and answers you want, select Save and train from the top menu to save and train your QnA service model.

SaveAndTrain Select Test to test your trained service. Enter a question and see what comes back. Note you do not have to type in the questions exactly as they appear in the FAQ, that’s because the service is using LUIS (Language Understanding ) to figure out the intent of each question.

TestQnAService

When you are finished testing select Test again to collapse the testing window. You can go back and forth adding new questions and phrasing then retraining the model as often as you wish until you feel the most common questions from users will find a suitable response.

When you are satisfied with your responses select PUBLISH from the top menu and select Publish to publish your service and get an endpoint you can use to call the service.

PublishService

Once it is deployed you will see the screen below. You can Edit then retrain and republish your service as often as you want.

You will need some of the details in the HTTP request shown on this screen to create a bot that connects to your service.

ServiceDeployed

Congratulations you have successfully deployed a QnA service. Your next step is to create a Bot and connect it to your service.

Create and deploy a bot that connects to your knowledge base

Return to the Azure portal

Select Create a resource and search for Web App Bot

CreateWebAppBotStep1

Select Web App Bot from the list of search results then select Create

AStep2CreateWebAppBot

Enter a Bot name and a pricing tier

Select your Bot template:

  • Change the SDK version to SDK V3
  • Choose either C# or Node.js as your SDK language
  • Choose the Question and Answer template

MyQnABot

While you are waiting go back to the QnAMaker and select My Knowledge bases

Select your knowledge base

Go the Settings tab

Scroll down to the Deployment details and find the

  • KnowledgeBaseID – This value will go in the QnAKnowledgeBaseID field
  • EndPointHostName – This value will go in the QnAEndpointHostName field
  • EndPointKey – This value will go in the QnAAuthKey field

AppSettingsForBot

Once your Web app bot is created, select it in the portal and choose Application Settings

Scroll down until you see the Application settings

Select Show Values to see the individual application settings and enter the values you looked up for

  • QnAAuthKey
  • QnAEndpointHostName
  • QnAKnowledgebaseId

Don’t forget to select Save after you enter the values

ChangeBotSettings

You can test to ensure your Bot is connected to the knowledge base by selecting Test in Web Chat. Type in a few questions, you should get the same responses you saw when you tested in QnAMaker. If you do not get an answer, you can try republishing the QnA Service in QnA Maker and double check the app settings are copied correctly.

TEstInWebChat

Get a hyperlink so your website can launch a chat with the bot

Now that you have a bot, you need a way to call the Bot.  There are many different ways to call a bot. You can set up channels to call the Bot from Skype or Facebook. Some platforms are quite a bit of work because you need authentication keys from the applications and you have to go back and forth connecting the application to your service passing keys back and forth.

For many of us, the ability to call the chat bot from a website is sufficient. Let me show how to get a hyperlink you can use to launch or an iframe to embed the bot into your website.

Open your bot in Azure and select Channels 

Select Get bot embed codes from the Channels blade

GetBotEmbedCodes

On the pop up page select Click here to open the Web Chat configuration page

WebChatConfiguration

Select Show to display your secret key.

If you want to embed a chat window inside your website copy everything in the Embed code to your webpage. Replace the text YOUR_SECRET_HERE with the secret key from the text box above.

If you want to open the chat window in a separate window, just create a hyperlink that points to the URL https://webchat.botframework/embed/YOURBOTNAME?s=YOUR_SECRET_HERE that appears inside the embed code. Replace YOUR_SECRET_HERE with the secret key from the text box above

LinkToBot

If you open the hyperlink you will get a new tab with the chat window

webchatwindow

If you embed the code in an iframe it will appear within your web page. You will probably want to set the height and width properties of the iframe.

 

<h1>Look a chat bot</h1>

I added this to my web page

https://webchat.botframework.com/embed/AwesomeQnABot?s=xxxxxxxxxxxxxxxxxxx

neat eh?

ChatBotInIframe

Congratulations! You have just created and deployed a chat bot that will answer frequently asked questions using natural language and artificial intelligence!

Find out more about

 

 

 

Ten Tips for writing better blogs posts

This post will share ten specific things you can do to imrpove your blog posts.

  1. Make sure your post is worth reading
  2. Use a summary sentence
  3. Use lists to summarize content of long posts
  4. Use screenshots and pictures
  5. Complement your post with video
  6. Include hyperlinks
  7. Open links in a separate tab or window
  8. Let your personality come through
  9. It’s all in the title
  10. Go back and edit your post

1. Make sure your post is worth reading

Abandon the philosophy “I blog therefore I am”. Writing a blog post can be a selfish act, you may be really happy about something, or really angry about something or maybe you just figured something out and you want to show the world ‘look what I figured out”.

Ask yourself – What will the reader get out of reading this post?

There is too much “stuff’ on the internt. When you add to that collection of stuff, make sure it’s worth someone’s time to read it.  Are there successful blogs that rant constantly? Yes, but the successful ones are deliberately written to entertain or inform. Make sure you have a take away for your reader in mind. What will I learn from your post?  ‘how to install node.js’ ‘how to make a healthy snack your kids will actually eat’ or ‘how to avoid overspending on a laptop’

imageHere’s an example, this Imagine Cup post is a first person story by a student who won first place in a competition. What’s notable is the content helps a student understand the value of participating in the competition. It’s not just a brag about winning.

2. Use a summary sentence

When you search online for ‘what laptop should I buy?’, you get two thousand matches. How do you decide which search results is worth clicking?

The average user spends about 5 seconds glancing at a page before they decide whether it’s worth staying to read that page. Remember point #1 make sure your post is worth reading! The user wlil take about 5 seconds to decide if your post is worth reading. So, provide a single sentence to tell me what I learn if I take the time to read your post.

It helps to make your summary sentence stand out visually by using italics or a different colour.

image

Another advantage to the summary sentence: Your summary will appear in the details of the search results soI know what I wil learn from the search results page as well. I wrote this post two years ago and it still gets hits (Mental note: go update this post so people aren’t finding out of date information…)

image

3. Use lists to summarize content of long posts

Sadly some of the best blog posts are the least read.

Why? Because when someone takes the time to write out all the details to explain something, the end result can be a very long blog post.

Your reader may be looking for something very specific. You may provide that information half way through your post, but they are unlikely to read through 4 pages to see if you cover that one topic. If you break your post into sections, you can provide a list at the top listing all the sections. If you really want to make the user happy, add hyperlinks so your reader can click on a topic and go straight to the section of interest to them.

image

4. Use screenshots and pictures

A picture is worth a thousand words!

If you are going to try and show me how to use a piece of software, or how to bake a cake, please include pictures and screenshots.  It is visually appealing and can be more effective than describing with text. Pictures also break up the endless text in a longer blog post. If I see a really long post with nothing but text I am less likely to read it.

If you are going to share screenshots, invest in software that will let you capture delayed screenshots so you can show pop-up menus. It helps to have an editor so you can add boxes, arrows, and highlights to your screenshots.

All the screenshots in this post are captured and edited with Snagit.

SNAGHTML28ce7630

5. Complement your post with video

If a picture is worth a thousand words, a video can be worth a million!

Whether you are showing me how to apply a compression bandage, how to cook an omelet or how to deploy an Azure website, video can be a great complement to your blog post. But keep it short. If you embed a 57 minute video in your blog post, chances are your video will go to the ‘when I have time’ list along with a number of other excellent recordings that I really want to watch when I have the chance. I find somewhere in the 4-9 minute range is about the longest video I will watch when it is embedded in a blog post. You are better off creating 4×5 minute videos than one 20 mintute video if you can find a way to break up the content.

As with screenshots, take the time to invest in some software for recording your video and a microphone to improve the audio quality of your recordings. The other advantage to short recordings is they take less time to redo when you make a mistake. If you are doing a software demo, increase the font sizes and consider a tool like Zoomit to help highlight and zoom in on the important parts of the screen during your demo.

Watch the video below and try to imagine writing a blog post to explain how to use this feature instead of using video. FYI, I used Zoomit to zoom in and draw a few arrows. (my Zoomit skills pale in comparison to @GeekTrainer who uses it really effectively in his Microsoft Virtual Academy videos). FYI, I used my headset instead of my Snowball Microphone for this recording and I did get feedback from a viewer saying the audio was hard to hear.

Sample video using Zoomit and headset microphone

6. Include links!

When you recommend a tool or resource, please provide a hyperlink!

I LOVE bloggers who include links to related resources. If you are showing me a recipe for a cocktail and the recipe calls has an ingredient of “ginger simple syrup” please give me the link to a recipe for ginger simple syrup, that’s not somethig I can just pick up at the store! If you are writing a technical post and you start tell me I need to have a Microsoft account and Visual Studio installed, give me links on where to create a Microsoft account and where I go to install Visual Studio! Please!

I suspect one of the people who read this post has already clicked on a link in this post. If not here’s one for you to click now.

7. Open links in a separate tab or window

Don’t lose your reader!

You’ve added links to your blog post, but what happens when your reader clicks on them? Do they leave your post? Will they ever come back?

If you don’t open links in a new window or tab, I may click on that link in and never return. You put time and effort into the post, you convinced me to start reading it. Increase your chances of me reading the whole thing by opening links in a new tab or window.

8. Let your personality come through

This is your blog post! You have a personal style, let it come through in your post.

Whether it’s a  tradition of including a picture of your cat in each blog post, links to random silly videos, song parodies, or a tendancy to write run on sentences, something I have been accused of doing from time to time even though that goes against best practices when writing blog posts.

9. It’s all in the title!

You may have written the best explanation of how to change a tire ever! But if you gave it the title “I figured it out and so can you” Chances are I will never find your post when I am searching for tips on how to change a tire.

Your title needs to give me an indication of what I will learn or at least catch my attention so I am curious enough to visit your post and read your summary sentence.

Personally I despise titles with hyperbole such as “The most amazing unbelievably scrumptions chocolate sauce ever” I find them too much and they actually turn me away. So do be careful with adjectives in your title. I prefer a simple descriptive title “An easy dark chocolate sauce recipe” is more likely to get my attention especially when you add a nice photo of a slice of chocolate cake draped in your velvety sauce… hmmm hungry now.

When in doubt, a popular title is Top Ten <fill in the blank>, people often search for top laptops, top video games, top new features, top attractions, so it’s a good fallback title, of course it does force you to come up with 5 – 10 good points to cover in your post!

10. Go back and edit your post!

Edit and then edit again!

Re-read your post and look for spelling mistakes. Spell check won’t catch everything! I recommend reading the post from bottom to top to look for spelling mistakes. After all their mite bee some words that spell check says are syntactically valid but inn you’re post are used inn the wrong context.

A good friend of mine writes short stories and has had several published. She told me when you finish a store or chapter, you should go back and edit it with the goal of removing sentences and words that do not add to the story. When you are finished your edit, your story should be about one third shorter! The result is a cleaner, faster paced story. You would be amazed how much you can remove while still delivering the same message sharper and cleaner!

Go forth and write!

There are many other ways to write great blog posts, but hopefully this helps! Apologies  to all my readers for all the posts I have written where I didn’t folllow my own rules!