Xamarin Challenge: Santa Talk – Build an Intelligent, Serverless Xamarin App

Matt Soucoup

It’s the holiday season, and you know what that means… Santa will be coming to town to give gifts to all the well-behaved developers out there! Do you want to know a sure way to get on Santa’s “Nice List”? Building an intelligent, Serverless, Xamarin app. Or as we like to call it, completing the Santa Talk challenge.

Time to cozy up and hack away!

Santa Talk – The App

The Santa Talk app allows you to send a note to Santa, and then find out whether he’ll deliver a gift to your house.

Santa Talk App

(A very special thanks to the snppts website for the great inspiration on the user interface for Santa Talk! Y’all are definitely on the nice list this year!)

Santa’s a busy guy this time of year though. So this Xamarin.Forms app relies on Microsoft Cognitive Services – Text Analytics and Azure Functions to determine if you’re getting a gift.

You can download the app, and read instructions on how to install the Azure components of it from this GitHub repo.

Cognitive Services – Text Analytics

Text Analytics is one of over twenty different Cognitive Services products. And it can do some pretty neat things.

For example, it can parse a string of text and pick out the key phrases. In essence telling you just the important parts. It can also identify entities, or people, places, or things contained within a sentence.

Santa Talk uses Text Analytics’ ability to detect the language a string a text was written in. And it also parses the general sentiment of a string. Positive or negative thoughts behind the text.

Azure Functions

Even though Text Analytics provides a .NET SDK, you should not invoke it directly from a Xamarin app (or any client-based application for that matter).

Rather, you should only invoke a private resource like Text Analytics from a server-based client. You do not want to leak the private API key for Text Analytics after all.

And Azure Functions makes a great server-based client.

The benefits of Azure Functions are numerous, but Santa Talk exploits the ability to have a Function run in response to an HTTP call. Essentially making a Function a backing Web API.

Santa Talk – The Challenge

So what’s the challenge? How do you get on Santa’s “Nice List”?

  • Visit the existing Santa Talk app repo and fork/clone it.
  • Extend it in some way.
  • Open a pull request on the original repo and let us know:
    • How you extended the repo, and include some screenshots.
    • Your thoughts on the Azure services and/or Xamarin products that you used.
    • What went well and what did not.
    • Final date for submission is January 5th at 11:59PM Pacific

Get Sweet Xamarin Swag!

Everyone who participates can apply for some swag. Everyone will win Xamarin stickers and 10 entries will be chosen at random to receive a $25 gift card to the .NET Foundation Store. Which is packed with Xamarin t-shirts, monkeys, and stickers!

Xamarin swag including stickers, monkeys, and shirts

What Can You Add or Extend?

The world is your snow globe. Which means, any idea is a good idea!

Here are a few that we thought of:

  • Add in the ability to take a photo, and use Cognitive Services Vision to have Santa figure out if you’ve been naughty or nice.
  • Save the responses from Santa on device and display them with a `CarouselView`.
  • Redesign the user interface using `Shell`.
  • Track the user’s location when they make a request, and make annotations on a map where the naughty and nice developers live.
  • Connect to Azure Logic Apps to send a Tweet whenever Santa gets a “letter”.

So Get Going!

Additionally, there is a free tier of Cognitive Services and you can run Azure Functions locally – so this can all be done for FREE!

Here are some resources to get you started:


Discussion is closed. Login to edit/delete existing comments.

  • Oscar B.F 0

    Wow, it sounds good, It’s a good practice for Shell and serverless, what is the deadline?.

    • James MontemagnoMicrosoft employee 0

      Hey there, so instead of specifying the xml configuration file in your Android manifest, simply set this property on your application code in the manifest:


      This should set it app wide on all IP addresses from my understanding.

Feedback usabilla icon