The Definition of Insanity…

Many folks will say is continuing to do the same thing over and over and expecting different results.  According to dictionary.com though, the first definition is:

the condition of being insane; a derangement of the mind.

Both definitions work though when it comes to the 25.4 Developer Podcast. We went ahead and did episode 2 and 3, pretty much the same way we did episode 1 but expecting to produce a good show. Anyway, you can catch up by watching episode 2 and 3 below, subscribing to the RSS feed, checking out the 25.4 website, and following @25point4podcast on twitter.

Episode 2

Episode 3

Advertisement
Posted in Entertainment, Podcast, Windows Phone, Windows Store, Windows Universal | Leave a comment

25.4 Podcast Episode 1

Some fellow developers and I have started a new show called the 25.5 developer podcast. 25.4 minutes is the average commute time in the US and we want the show to be something you can listen to in its entirety on your way to or from work so we will do our best to keep the show length at 25.4 minutes.

Last night was episode 1 and in case you missed it, you can watch it below. I think you will agree that it was definitely… something.

Posted in Computers and Internet, Podcast, Windows Phone, Windows Store, Windows Universal, WP8 | Leave a comment

What Will a Free $10 Amazon Gift Card Buy You? Anything You Want*

*as long as it costs $10 or less.

And you will receive a $10 GC if you are one of the first 100 people to sign up for a free 30-day trial to IBM Bluemix before 12/18/14 and email me your Bluemix username at andrew.long@catchyagency.comPlus, you will be entered into a drawing to win a $150 Amazon GC. No strings attached*

*but please read the full terms and conditions anyway

What is IBM Bluemix?

Bluemix is IBM’s new cloud platform that gives mobile and web developers access to IBM software for integration, security, transaction and other key functions, as well as software from business partners. Bluemix is new, so you may not be familiar with it. If you are a Windows Phone developer, you may want to read my recent series on integrating the power of IBM’s Watson in your Windows Phone apps, or just jump right into the Bluemix docs.

It’s free to sign up and you don’t even need to give out a credit card number. It’s almost as easy as falling out of bed, but it will be less painful.

So, just to recap and give you a plan of attack:

  1. Signup for your free 30-day IBM Bluemix trial
  2. Email your Bluemix username to andrew.long@catchyagency.com
  3. Read the terms and conditions

Do it quickly enough and you’ll get that $10 Amazon Gift Card. Regardless, you’ll be registered to win the $150 Amazon Gift Card.

 

Posted in Computers and Internet, Get Paid Online | Leave a comment

Custom Slack Integrations With ASP.Net Web API

Slack is one of the internet’s golden children right now. If you are not familiar with it, Slack is a platform for facilitating communication and collaboration amongst your teams. Aside from just chat, Slack allows for file uploading and sharing as well as integrations with many popular services such as Dropbox, GitHub, IFTTT, JIRA, Twitter and many, many others.

For example, if your team uses GitHub for source control and issue tracking, you could configure the GitHub integration to post to a Slack channel whenever there is activity on an issue.

That’s great, but what if your team has some custom data store or service that you would like to integrate with Slack? Maybe a timesheet app you would like to query from Slack by typing in “/timesheet John Smith” to find out how many hours John has clocked this week? Well Slack actually makes it fairly easy to do this.

Slack offers an integration called “Slash Commands”. This integration can be configured to send data to a URL that you specify such as an ASP.Net MVC Web API. Your service can then return data to Slack either as a response to the user that initiated the request or as a post to the entire channel.

For this example, we are going to create a slash command that will return a random YouTube video for a specified search term. The syntax for using this command will be:

/youtube [searchTerm]

The first step is to setup the command in Slack. You will be asked to enter the command. In this case enter “/youtube”. Then enter your service URL, and select the method for Slack to send data to your service – either GET or POST.

capture

 

Slack also generates a Token for your new command. This token will be sent with all requests so you can use it to validate that requests coming into your service were actually generated from your command.

Optionally you can also provide autocomplete help text and a descriptive label.

capture

Once you are happy with everything, click the “Save Integration” button.

As I mentioned in the title, we are going to send our Slack command to an ASP.Net Web API controller. So… let’s open up Visual Studio and create a new Web API project. Right-click on the Controllers folder and add a new Web API controller matching the name you specified when you setup the slash command.

When your command is invoked, Slack will hit your service URL with the following parameters:

token
team_id
channel_id
channel_name
user_id
username
command
text

So depending on the template you selected, either create or edit the Get method in your API controller to accept those parameters:

capture

The last two parameters, command and text, tell us the slash command the user specified in Slack as well as the text they entered along with it.

The body of our control method is very straightforward:

capture

We are using a switch statement so we can easily handle additional commands from the same controller method. I’m then using my own YouTube library to do a search with the text parameter passed into the method and then selecting a random video.

If our Slash Command only needed to return the video URL as a message back to the user that initiated the command, our API method would just return the URL as text. In this case, however, we want to actually post the URL back to the Slack room. This requires us to setup an additional Slack integration called a WebHook. When you setup your WebHook, you will receive a custom URL. You will use this URL to post a JSON string with the data we are sending back to Slack. At a minimum this is just some text. Optionally we can (and will in this example) specify a username, icon, and the channel to send the post to.

The format for this JSON looks like this:

capture

The most important thing to note is that if you include a URL in your text response, you must enclose it in <>.

After you post this data back to your WebHook URL, you should see something like this show up in your Slack channel:

capture

Posted in ASP.Net, Computers and Internet | Tagged , , , | Leave a comment

Psycho-Analyzing People You Hate On Twitter With IBM Bluemix and Watson cont.

10Last time we explored the Watson User Modeling service and all the personality data that it generates for you. In this post we are going to wire that all up in our app and also explore an additional method on the User Modeling service that takes all that data and creates a cool interactive chart like the one at right.

The visualize service is very simple. All it does is take the exact JSON response that was returned from our call to the profile service. There are also some additional parameters that can be passed on the request URL such as width, height and a profile image URL. The method returns the full source for displaying the interactive SVG chart you see on the right.

Signup for your free IBM Bluemix account

So how do we get to there? Well the first thing I did was refactor my ModelUser method – which originally was making the call to the Profile service and then deserializing the JSON response – into two separate methods:

Capture

 

GetModelUserJsonResponse now just makes the call to the Profile service and returns the JSON response. Now I can hang on to that JSON in my app for if and when I need it to call the Visualize service. ModelUser now just takes the JSON response and deserializes it into my UserModelingResponse.RootObject class.

8To display the User Modeling data in my app, I didn’t do anything special, just some nested ListViews with increasing left margins to display some indent and visualize the nesting of each set of child data. Admittedly, it’s not very pretty, but it works for the sake of this demo.

Once you scroll all the way down to the bottom of this data, there is a “Visualize Modeling Data” which will let us – duh – view the visualization of the modeling data.

As I mentioned earlier the Watson User Modeling service’s Visualize method just takes in the JSON response from the Profile method – verbatim. You don’t need to do a thing to it. Here is my method for calling out to the service:

Capture

 

As you can see I’ve added width, height, and profileImageUrl parameters which get appended as querystring values to the service URL. I am using the LinqToTwitter library for retrieving a user’s tweets, and I am also able to grab their profile image URL from there as well.

All I need to do is return the HTML that the service generates for me. The visualize page in my app is just a full-screen WebView that I load up with that HTML. If you would like to see a sample of what the service returns, you can check out this GIST.

If you want to see the full source, you can check it out here. You can also download the Ask Watson Windows Phone app.

And if you haven’t already signup for your free IBM Bluemix account.

Posted in Uncategorized, Windows Phone, Windows Universal, WP8 | Tagged , , , | 1 Comment

AI In Your Windows Phone Apps pt 3 – Psycho-Analyzing People You Hate On Twitter

Let’s Review Shall We

In parts 1 and 2 we went over the process of signing up for a free IBM Bluemix account, creating an app, and adding the Watson Question and Answer service to the app. We then built a Windows Phone 8.1 XAML app that consumes the Watson REST service and provides you with answers to your healthcare and travel-related questions. If you haven’t read them yet, or just want a little refresher, you can read Part 1 and Part 2 now and/or check out the full source.  We’ll wait…

Everyone’s a Shrink… Or Needs a Shrink

Today, we are going to explore the Watson User Modeling service. As you might deduce from the name, this service allows you to analyze personality traits for somebody based on digital communications. More specifically, from the documentation found here:

The service uses linguistic analytics to extract cognitive and social characteristics, including Big Five personality, values, and needs, from text. These insights help businesses to understand their clients’ preferences and improve customer satisfaction by anticipating customer needs and recommending the next best actions. This allows businesses to improve client acquisition, retention, and engagement, and to strengthen relations with their clients.

The documentation talks a lot about how you can use this data to gain insights into your customers, understand your customers, market to your customers, blah, blah, blah. I don’t know about you, but I don’t really have any customers, so I’m going to use this service to create profiles of random people on Twitter.

Signup for your IBM Bluemix account

Service Me Watson

Instead of completely repeating parts 1 and 2, I am just going to tell you that you need to repeat the same steps we took there to add the User Modeling service to our Bluemix app and make a note of our service credentials. Then we are going to use Fiddler again to create a post request to the /systemu/service/api/v2/profile service. The only difference here will be the content of the request. The profile service expects something like the following:

CaptureIt is also important to note that the service will not analyze your request unless the content contains at least 100 (and preferably 2000) words. Once we have a JSON response, we are going to let Web Essentials and the “Paste JSON as Classes” functionality do the hard work of creating a response model class for us.

Signup for your IBM Bluemix account

Analyze This

So let’s take a closer look at the kind of data the user modeling service will give us. The User Modeling service extracts three types of personal characteristics from the text that is passed to it:

  1. Big 5 Personality: This is the most used personality model, describing how a person generally interacts with the world through the following traits:
    • Openness-to-Experience: Associated with curiosity, intellect, and an appreciation for art and adventure.
    • Conscientiousness: Associated with organization and industriousness.
    • Extraversion: Associated with positive and outgoing attitudes toward other people.
    • Agreeableness: Associated with compassion and cooperation toward other people.
    • Neuroticism: Associated with a sensitivity to negative emotions.
  2. Basic Human Values: This model describes factors that influence a person’s decision-making. Currently the model includes five dimensions based on Schwartz’s work in psychology:
    • Self-Transcendence: Motivated by helping others.
    • Self-Enhancement: Motivated by increasing social status.
    • Hedonism: Motivated by pleasurable experiences.
    • Openness-to-Change: Motivated by experiencing new things in the world.
    • Conservation: Motivated by tradition and conformity.
  3. Fundamental Human Needs: This model is based on Maslow’s hierarchy of needs. It tries to describe which aspects of a product will appeal most to a person.
    • Ideal: The person likes high-end, finely crafted products.
    • Self-Expression: The person likes products that help them establish closer relationships with family and friends.
    • Closeness: The person likes products that help them establish closer relationships with family and friends.
    • Excitement: The person likes products that provide exciting, adventurous experience.
    • Practicality: The person likes products that simply get the job done.

Signup for your IBM Bluemix account

Your Honor, I Object

The last thing we are going to do in this post is take a closer look at the JSON data that is returned from the service, how the Web Essentials add-in converts that into a C# class, and how we go about deserializing the JSON into our model using JSON.net.

Below is the formatted JSON with all nested properties collapsed:

Capture

We can see here the “tree” property – which contains the actual personality models – id, source, word_count_message, and word_count properties.

If we look at our model class we can see the same properties in the generated “RootObject” class:

Capture

Expanding the tree property in our JSON, we see we now have id, root, and children properties.

Capture

In our generated model, we see a corresponding Tree, Child and Child1 class:

Capture

The children property of our Tree class represents each of the three models we discussed above:

Capture

Each model then has its own children, again representing the sub-traits mentioned above:

Capture

Quite honestly, this is all quite confusing, and you might be thinking that we are not just going to be able to get away with calling JsonConvert.DeserializeObject<UserModelingResponse.RootObject>() to convert this JSON into our model class. That’s what I thought anyway, but I was wrong. JsonConvert.DeserializeObject works just fine here and that cuts about 3 paragraphs and 2 pictures from the length of this post.

In the next post we will update our Windows Phone app to allow for searching for a Twitter username and analyzing their recent posts using the User Modeling service.

Signup for your IBM Bluemix account

 

Posted in Windows Phone, Windows Universal, WP8 | Tagged , , , , , , | 1 Comment

AI In Your Windows Phone Apps? Elementary, My Dear Watson, pt. 2

In part 1, we talked about IBM’s Watson, BlueMix and how to setup a new cloud app to be able to access Watson’s APIs.

If you haven’t already done so, now would be a great time to sign up for your IBM Bluemix account.

In part 2 we are going to take a closer look at Watson’s Question and Answer service and build a Windows Phone 8.1 app to allow us to ask Watson some questions and see what he comes up with.

To get started, let go take a look at the API reference for the Watson Question and Answer service. We will be focusing on the /v1/question/{id} method which is only accessible via POST requests.

Nero Wishes He Was This Good

As with so many great stories, the story of Nero fiddling while Rome burned is much more fiction than fact. But Telerik’s Fiddler is every bit as good as you may have heard. We’re going to use Fiddler to construct some test POST requests in order to get a sample of the JSON returned by the Question and Answer service. With this JSON data we’ll use the excellent Web Essentials Visual Studio add-in to create models for use within our app.

When you startup Fiddler, it will immediately start tracking all of your outbound HTTP traffic. We don’t need that so click File and uncheck “Capture Traffic”. Next click the Capture button on the menu and then click “Remove All”. This will clear out the sessions window.

To begin creating our request, click on the “Composer” tab. You should now see something like this:

Fiddler Composer

Fiddler Composer

Update your request to look like this:

Our API request

Our API request

The only thing you need to change is your Authorization token. To do this, grab your service username/password as we discussed in step 1. In Fiddler, click Tools –> Text Wizard. In the text wizard, enter your username/password in this format: username:password then click the To Base64 radio button, and there’s your authorization string. Once you have the request ready, just click the “Execute” button. If everything went well you should now see something like this in the sessions list:

Capture

If the result status is 200 then everything worked, otherwise there was an issue somewhere along the way. Either way, you need to click on that line and then click the “Inspectors” tab to get a closer look. From the inspectors tab you have a number of ways of viewing the response. There is a plain text view, XML view, JSON view, etc. We are most interested in the Text and JSON views. If you received an error, you should be able to see the details of the error here and go back and fix your request accordingly.

YMMV Framework

And now we finally get to spend some time in Visual Studio. If you don’t already have Web Essentials installed, go to Tools –> Extensions and Updates –> Visual Studio Gallery and search for Web Essentials.  Download…install…restart… We’ll wait.

Now let’s start a new Windows Phone 8.1 project (Alternatively, you can just download the current solution from my GitHub account). I used the blank app for Windows Phone template, but you can use any of the templates, or Windows Phone Silverlight, or even a Windows Phone 8 project if you want. I always prefer to have a good separation of my code no matter how small the project may be so let’s also add a new PCL project as well.

Web Essentials has a handy little feature that makes it much easier for working with web APIs that return data in XML or JSON.  Let’s go back to Fiddler and from the Text view of our response, copy the entire JSON response.

Forest Gump Was Right

Now that we have the JSON response on our clipboard, let’s add a new folder called “Models” to our PCL project. Next we’ll add a new class to the Models folder called AskWatsonResponse.cs.

Place your cursor inside the class’ namespace declaration and under your Edit menu, you

Web Essentials generated classes

Web Essentials generated classes

should now see an option added by Web Essentials called “Paste Special”, with options to either Paste JSON as classes or Paste XML as classes. Since we copied JSON data, we’ll select the Paste JSON option. Web Essentials has magically generated classes corresponding to the JSON data we had on the clipboard. This is a great feature for getting models created quickly and easily when you are working with a web API. You should now have something like the image to the right.

Web APIs are like a box of chocolate – you never know what you are going to get. And if you look closely you will notice a couple of interesting things with the generated classes. Namely the Rootobject class and the Class1 class. These are here because Web Essentials found JSON objects at the beginning of the response that were not named. There’s nothing technically wrong with that, so that’s fine until we ask JSON.net to deserialize a JSON response string into this class structure. It’s kind of hard to map an object or property that doesn’t have a name in the JSON to a class or property.

If you take a look at the raw JSON, you will see that the first named object is named “question” and so the Question class is really what we are going to concern ourselves with in the generated classes.  We’ll discuss deserializing our responses from the Watson service a bit more in a few minutes.

Where’d You Go To School? UI?

Let’s build a quick UI to use for asking questions of Watson. I will be referring to the 3Windows Phone 8.1 XAML controls, but you can just as easily build a similar interface for Windows Phone 8.1 Silverlight or using 3rd party controls from the likes of Telerik or Infragistics, etc.

Our UI is just a ComboBox for selecting the category we are asking about, a TextBox for entering the question, a Button to send our question to Watson, a ProgressBar so the user knows we are doing something, and finally a ListView to display the results.

Currently, Watson only supports searching against two categories: Healthcare and Travel, so the Category ComboBox is just hard-coded with these two options.

To get a full look at the xaml and code-behind for the UI, just pull down the AskWatson Git

The Missing Link

So we have a model class and we have a UI, all we need now is something to tie it all together. Let’s add a new class to our PCL and call it AskWatsonService. This class will contain all the methods for calling out to the Watson services, retrieving data and deserializing to our own model classes.

To start off with, the AskWatsonService class will have two methods. A public method representing the Watson Question and Answer service:

AskWatson method

AskWatson method

And a generic private method that takes care of creating the actual service request and returning the JSON from the API to our public method:

_GetJsonResponse method

_GetJsonResponse method

As we mentioned earlier, there were some, um, minor issues with the JSON being returned by the API that makes it impossible for us to do a simple deserialization with code such as the following:

return JsonConvert.DeserializeObject<Models.Rootobject>(jsonResponse);

Instead we first need to parse the JSON into an array of JSON.net JToken objects using the JArray.Parse method. Once we have the JToken array we can then use the DeserializeObject method on the first item in the array which contains the question object and return the model back to the UI.

What Now?

To get a closer look at the code and how it works, you can checkout the AskWatson Git repository. If you want the most current version of the demo app on your Windows Phone 8.1 device, you can download the Ask Watson app from the store. And if you want to play around with the Watson services for yourself, signup for an IBM Bluemix account.

What’s Next?

In part 3 we will take a look at Watson’s User Modeling service and analyze the personal characteristics of some of our favorite people.

Posted in Windows Phone, WP8 | Tagged , , , | Leave a comment

AI In Your Windows Phone apps? Elementary, My Dear Watson pt. 1

IBM’s Watson supercomputer achieved celebrity status in 2011 when it beat Brad Rutter and Ken Jennings in the Jeopardy! Challenge.  According to IBM:

Watson is a cognitive technology that processes information more like a human than a computer—by understanding natural language, generating hypotheses based on evidence, and learning as it goes. And learn it does. Watson “gets smarter” in three ways: by being taught by its users, by learning from prior interactions, and by being presented with new information. This means organizations can more fully understand and use the data that surrounds them, and use that data to make better decisions.

Wouldn’t it be cool if you could harness the power of Watson in your Windows Store and Windows Phone apps?

Sign up for a FREE 30-day trial with IBM Bluemix

Of course it would, and that is exactly what we are going to start doing right now.

IBM Bluemix

Bluemix is IBM’s cloud application platform and the gateway to accessing Watson’s REST-ful APIs. There are 8 differenct Watson APIs currently available ranging from language identification to user modeling to a question and answer service. In this article we are going to work with the Question and Answer service, but in future articles we will explore other services as well.

To get started, you first need to create a Bluemix account and start your 30-day FREE trial. Once your account is created and you are logged in, you will be able to access the Bluemix dashboard.

Bluemix dashboard

Bluemix dashboard

At this point, the main difference you will see is that your dashboard is blank and you do not have any apps or services yet. While the Watson APIs are services, it is still necessary to create an app and then bind the Watson service to that app to be able to access the REST APIs.

Sign up for a FREE 30-day trial with IBM Bluemix

Create Your App

I wonder what this button does?

Creating an app is as simple as clicking on the ridiculously large “Create an App” button on your dashboard.

You should now see a list of Boilerplate apps. You can literally select any one of these and it doesn’t matter. I chose the “Node.js Cache Web Starter” because Node.js has some cache amongst the hipster/startup crowd.

You will be prompted to enter a name and host for your new app and then click the “Create” button. You will be taken to your app’s dashboard page where you can see its current status. It may take a few minutes for your app to spin up.

Sign up for a FREE 30-day trial with IBM Bluemix

Service With a Smile

Once your app is running you can return to the dashboard page. We are now going to click the “Add a Service” button to add the Watson Question and Answer service to our app. You should now see the following screen:

Add a service

Add a service

Once you click on the Question and Answer service, you will be prompted to bind the service to an existing app. Unless you’ve gone crazy with creating apps, you should only see the app we created earlier. Select it from the App drop down, change the service name if you like, and click the create button.

Sign up for a FREE 30-day trial with IBM Bluemix

Free as in Beer

One thing you may have noticed is that the Watson services are all listed as currently being in BETA. So while that does mean that the full power of Watson is not quite available in all of these services, it also means that your use of the Watson services is completely free, even after your 30 day trial runs out.

Sign up for a FREE 30-day trial with IBM Bluemix

As I might have mentioned a few times, the Watson services are all accessible via REST APIs and the full documentation for those APIs is right here. And since we are all good little devs and have accessed REST APIs hundreds, if not thousands of times before, I can stop right now and go to bed, because you can figure the rest out for yourselves, right?

Not so Fast

One important thing you won’t find on this page is the URL for the service API or the credentials to be able to access the Watson service. Let’s go back to the dashboard page and click on your application. On the application page, you will see each of the services that are bound to it listed. On the bottom of each service box is a “Show Credentials” link. Click that link and you will see the following.

Service URL and credentials

Service URL and credentials

You now have everything you need to start accessing the Watson Question and Answer service. In the next post we will create a Windows Phone 8.1 app with a “Ask Watson” page. If you are anxious to check it out, you can find the source code for the app on GitHub.

If you haven’t already done so: Sign up for a FREE 30-day trial with IBM Bluemix

Posted in Windows Phone, Windows Store, Windows Universal, WP8 | Tagged , , | Leave a comment

Promote your Windows Phone app on Twitter every time you get a review

One of the best ways to encourage people to download your Windows Phone app is through positive reviews. But only people browsing in the app store are going to see those right? Well what if there was a way you could share with your Twitter followers every time you got a new 5-star review? Or what if you wanted to be notified if you received a 1 or 2-star review so you could contact the reviewer through the developer portal?

If you are an active Twitter user you may already be familiar with IFTTT (If This Then That) or other similar services such as dlvr.it. These services allow you to create some basic scenarios where if something happens, then do this. A common example would be if there is a new item on an RSS feed, make a post about it on my twitter account.

You can probably see where I’m going here, right? Just find an RSS feed with reviews for my app and I can setup IFTTT to tweet every time I get a 5-star review. Easy enough. So where is that RSS feed…?

Well it is easy enough to build with ASP.net web API, HTML Agility Pack and Azure Web Sites. I’ll talk a little about the code, but won’t do a deep dive. You can download the full source from GitHub.

AppReviewRSS solutionAll there is basically is a web API project. I added a ReviewModel class, a Reviews controller which handles the web API calls and contains the logic for scraping reviews from the store page, and a SyndicationFeedFormatter class that takes a collection of reviews and creates the RSS feed content.

The real heavy lifting is in the ReviewsController scraping the reviews from the Windows Phone store app page, but even that is made easier thanks to the HTML Agility Pack which parses HTML documents into a straightforward, easy-to-use DOM. What also helps is when the html is nice and clean with unique IDs or other attributes that can be used to identify the elements you are trying to pull data out of. Below is a portion of the HTML containing reviews:

reviews

The only thing you should have to edit in the web project is the appSetting called WhitelistAppIds. Populate this value with a comma-separated list of application IDs that you want to allow to be served up. This will prevent others from leeching off of your web deployment to get reviews for their apps.

You can deploy the website to any web host that supports ASP.net MVC and Web API, but I chose to host my site on Microsoft Azure. Microsoft Azure provides you with 10 free websites and the integration with Visual Studio is terrific.

So once the website is deployed, you just need to access /api/Reviews/MyAppId where MyAppId is your Application ID to get an RSS feed. The default feed will return only 5-star reviews. You can add querystring parameters for minimumReviewValue and maximumReviewValue to further refine the feed. For example, accessing /api/Reviews/MyAppId?minimumReviewValue=4&maximumReviewValue=5 would return 4 and 5-star reviews.

RSS Feed

feedchannelOnce you have an RSS feed setup you can now setup a new “recipe” at IFTTT. When you create a new recipe, you choose a “this” and a “that”. Your this is going to be from the Feed
channel. You then have the option of choosing whether you want your action to be kicked off from a new feed item or an item that matches a certain keyword or phrase. I selected new feed item. Supply the address for the RSS feed when prompted and click “Create Trigger”.

For your “that” select Twitter. If this is your first time using the Twitter action, you may be prompted to activate the Twitter channel which is just authorizing IFTTT to access your account as you would for any other 3rd party Twitter app. You will then be presented with a number of Twitter actions. Click “Post a tweet”, and you should see the following:

that

The default message includes the Title and URL from the RSS feed. By default, the title will be “Another n-Star Review!” where n is the number of stars from the review. You can modify this easily in the SyndicationFeedFormatter class. The URL will be your apps Windows Phone store page. You may want to customize this text with your apps name or a hashtag as well. When you are done just click “Create Action” and you’re done.

As I mentioned earlier, you could also setup a recipe to be informed of 1 or 2-star reviews that you may want to look at and respond to through the developer portal. When you create an IFTTT recipe to do so, just select Email as your “that” and set it up accordingly.

Posted in Windows Phone, WP8 | Tagged , , , , | 1 Comment

#WPDEV – Stop shaving in November and fight cancer

A few weeks ago I got lazy and stopped shaving for several days. I was reminded of the No-Shave November initiative run by the American Cancer Society and thought that would be  a great way to raise some money for cancer research and excuse myself from shaving for a whole month.

I have family members who have both fought and won as well as succumbed to this horrible disease, so the American Cancer Society is one of my favorite charities.

What is No-Shave November? Read on…

From no-shave.org:

No-Shave November is a unique way to raise cancer awareness. The goal of No-Shave November is to grow awareness by embracing our hair, which many cancer patients lose, and letting it grow wild and free. Donate the money you usually spend on shaving and grooming for a month to educate about cancer prevention, save lives, and aid those fighting the battle.

Then I did a little more thinking about what a close-knit group the Windows Phone developer community is. Have an issue with something you are working on? Post a tweet to the #wpdev hashtag and you will most likely have a response from somebody in minutes willing to help. So I decided to start a team for No-Shave November. The team name is WPDevSU2C which stands for WP Devs Stand Up To Cancer.

Ready to join the team already?

With the power of the #wpdev community, I’ve set a goal of our team raising $10,000. Sound like a lot? I don’t think so. If we can get 100 devs signed up to our team, and each of those devs can get 10 people – friends, family, co-workers, strangers on the internet – to donate $10 – we’re there. And really, you only need to recruit 9 people to make that $10 donation because your $10 sign-up fee counts as a donation as well.

Join team WPDevSU2C now!

In addition, I’ve built an app so we can all easily track our team and individual progress as view the No-Shave gallery of team members who post their No-Shave selfies to Twitter using the #WPDevSU2C hashtag.

Download the #WPDevSU2C app now!

So let’s show everybody the power of the WPDev community. Sign up for our team, pester your friends and neighbors and get ready for that final shave in about a month!

Share these links:
This blog post: http://bit.ly/wpdevnoshave
WPDevSU2C Team page: http://bit.ly/wpdevsu2c
#WPDevSU2C App: http://bit.ly/noshaveapp

Posted in Windows Phone, Worthy Causes | Tagged , | 5 Comments