# Saturday, 08 December 2018

JourneyToCenterEarthIt was 1864 and not much was known about the interior of the Earth. But that did not stop Jules Verne from writing an adventure story about 3 explorers, on a quest to reach the Earth's center.

Verne took what he knew about geology and combined it with his own fertile imagination to create "Voyage au centre de la Terre", which has been translated into English as Journey to the Center of the Earth.

The story is told in the first person by Axel, a young German, whose uncle - the brilliant and eccentric Professor Lidenbrock - discovers an encoded message written centuries earlier. The message describes a volcano in Iceland with underground passages that lead to the Earth's center. So, the uncle and his reluctant nephew set out for Iceland and, along with their guide Hans, descend into the bowels of the Earth in an attempt to reach the center.

The story takes a while to get going, as the men prepare for their adventure and travel to Iceland; but once they descend into the volcano, they encounter wild creatures and monstrous vegetation and violent weather and many other dangers. The second half of the novel is a thrill ride.

I like how detailed Verne is about the world his explorers encounter and how rational he is about their explanations. Of course, he was limited by the existing scientific knowledge of the 19th century; but he does well within these limits. Although many of the "scientific" points of the story are now known to be false, Verne creates a believable story by providing plausible explanations - mostly through the mouth of professor Lidenbrock - for what the party experiences.

It makes sense that prehistoric creatures could escape extinction for millennia below ground, where they were isolated from the topside environment. It makes sense that underground caverns could be illuminated by electrical charges in the gas. It makes sense that vast underground caverns could contain enormous seas on which to carry the travelers.

For some inexplicable reason, my translation changed the names of the main characters from Professor Lidenbrock and Axel to Professor Hardwegg and Harry.

But this did not diminish Journey to the Center of the Earth for me. It is a grand adventure story that I enjoyed as a teenager and enjoyed again today.

Saturday, 08 December 2018 09:10:00 (GMT Standard Time, UTC+00:00)
# Friday, 07 December 2018

Azure Machine Learning Studio (ML Studio) gives you the ability to create experiments to generate machine learning models on existing data.

But first, you must get data into ML Studio. ML Studio runs in the Azure cloud; so, if that data is on your local hard drive, you will need to import it.

You can do so by creating a new data source.

Sign into Machine Learning Studio and select "DATASETS" from the left menu, as shown in Fig. 1.

UD001-DataSetTab
Fig. 1

To create a new dataset, click the [+NEW] button (Fig. 2) at the bottom left of the screen.

UD002-NewButton
Fig. 2

From the popup menu, DATASET | FROM LOCAL FILE, as shown in Fig. 3.

UD003-NewDataSet
Fig. 3

The "Upload a new dataset" dialog displays, as shown in Fig. 4.

UD004-UploadANewDataset
Fig. 4

Click the [Browse…] button and select a file from your local computer and click the [Open] button, as shown in Fig. 5.

UD005-SelectFile
Fig. 5

This closes the "File Open" dialog and returns you to the "Upload a new dataset" dialog, as shown in Fig. 6.

UD006-FileType
Fig. 6

At the "ENTER A NAME FOR THE NEW DATASET" field, enter a name by which you wish to refer to this dataset in your ML experiments. This defaults to the filename on your computer.

At the "Select a dataset type…" dropdown, select the format of the file you selected.

Click the Check button when finished.

The file uploads to the cloud server and is listed in the "DATASETS" tab, as shown in Fig. 7.

UD007-DataSetList
Fig. 7

Once you have uploaded a file as a dataset, it is available within any of your experiments. From within an ML Experiment, expand "Saved Datasets" and "My Datasets". Your file should be listed under "My Datasets", as shown in Fig. 8.

UD008-MyDatasets
Fig. 8

You can drag this dataset onto your experiment design surface to work with it.

In this article, I showed how to create a dataset, based on a file on your local computer.

Friday, 07 December 2018 09:10:00 (GMT Standard Time, UTC+00:00)
# Thursday, 06 December 2018

GCast 25:

Azure Durable Functions

By default, Azure Durable Functions are stateless. But durable functions allow you to maintain state across multiple, long-running functions.

Thursday, 06 December 2018 09:20:00 (GMT Standard Time, UTC+00:00)
# Wednesday, 05 December 2018

In previous articles, I showed how to create an application using the Microsoft Bot Framework using Visual Studio. But you can also create a chatbot application directly within the browser.

Navigate to the Azure Portal and log in.

Click the [Create a resource] button (Fig. 1) and select AI + Machine Learning | Web App Bot, as shown in Fig. 2.

BB01-CreateButton
Fig. 1

BB02-Menu
Fig. 2

The "Web App Bot" blade displays, as shown in Fig. 3.

BB03-NewBotBlade
Fig. 3

At the "Bot name" field, enter a unique name for your bot.

At the "Subscription" field, select the Azure subscription with which to associate this bot.

At the "Resource group" field, select an existing resource group to contain your bot or click the "Create new" link to create a new resource group.

At the "Location" field, select a region in which your bot should be located. Consider the location of any resources it will be consuming and users that will communicate with it.

At the "Pricing tier", select "F0" for a free bot or "S1" for a paid bot with fewer limitations.

At the "App name" field, enter a unique name for the web service exposed by your bot.

At the "Bot template" field, select either "Basic Bot" for a simple example of a bot using LUIS, Analytics, and Storage or "Echo Bot" for an even simpler bot.

If you select "Basic Bot" template, you will need to select the location of the LUIS service. Only a few regions currently support LUIS; but you should try to keep it close to your bot location.

At the "App service plan" field, select or create a new App Service plan. This defines the location and location of the servers on which your code will run. At creation, only S1 servers are available, but you can change this after the bot is created.

At the "Azure Storage" field, select or create an Azure Storage account in which to save bot configuration and state information.

If desired, turn on application insights and select a location for this service.

An App ID and password are required for a Microsoft Bot. By default, these values are automatically generated for your. If desired, you may explicitly set these values. 

A completed blade is shown in Fig. 4.

BB04-NewBotBlade
Fig. 4

After a few minutes, a notification indicates the bot is created. Click the [Go to resource] button (Fig. 5) or use the left menu to search for the bot by name.

BB05-GoToResource
Fig. 5

By default, the bot's "Overview" blade displays, as shown in Fig. 6.

BB06-BotOverview
Fig. 6

To test your bot, click the "Test in Web Chat" blade and type "Hello" in the textbox labeled "Type your message here" to begin a conversation. A sample conversation for the Basic Bot is shown in Fig 7.

BB07-TestBot
Fig. 7

From the "Build" blade (Fig. 8), you can click the "Open online code editor" to edit your code directly in the browser; or click the [Download bot source code] to generate and download a ZIP file of a C# solution containing your code.

BB08-BuildBlade

In this article, I showed how to build a bot app in the portal in your browser.


Fig. 8

Wednesday, 05 December 2018 07:52:30 (GMT Standard Time, UTC+00:00)
# Tuesday, 04 December 2018

Joey DeFrancesco TrioJazz musicians are famous for playing the notes around the melody, adding their own interpretation of a tune. But the tremolo of Joey DeFrancesco's organ does much of that for him.

the Joey DeFrancesco Trio brought played a delightful set Sunday night at the Jazz Showcase in Chicago's South Loop. Most songs began with a mellow feel, then increased in energy until each was swinging and/or rocking.

Like most great band leaders, DeFrancesco knows to find and showcase great musicians. In this trio, it was saxophonist Victor North, whose solos captivated the audience. Drummer Khary Shahee was solid throughout and seemed determined to play every solo with his eyes closed.

David and JoeyThe Trio played a mix of originals ("Blues in Three", "Trip Mode") and arrangements of other composers tunes, including an extended version of Cole Porter's classic "Night and Day".  One highlight was the beautiful melody of "Easy to Remember" and the final song of the night – an up-tempo, frenzied piece in which each member of the band tried to outperform one another in turn.

It wasn't a long set - maybe 75 minutes - and the second set was canceled due to low ticket sales; but those who came out saw an excellent performance.

Tuesday, 04 December 2018 09:28:00 (GMT Standard Time, UTC+00:00)
# Monday, 03 December 2018

Episode 540

Bill Wagner on Nullable Reference Types

C# 8 will have support for Nullable reference types, which will allow you to know better when you need to check for null in your variables. Bill explains the syntax and implication of this upcoming language feature.

Monday, 03 December 2018 09:04:00 (GMT Standard Time, UTC+00:00)
# Sunday, 02 December 2018

12/2
Today I am grateful to pay off some sleep debt the past few days.

12/1
Today I am grateful for a warm day in December.

11/30
Today I am grateful that I live 1 block from a grocery store.

11/29
Today I am grateful for floor seats to see an exciting DePaul - CSU basketball game last night on my first visit to WinTrust Arena.

11/28
Today I am grateful that the severe back pain that began earlier this month is almost entirely gone.

11/27
Today I am grateful for a hot bath on a cold evening.

11/26
Today I am grateful that my toilet is finally fixed.

11/25
Today I m grateful to stay home and watch college football on a Saturday.

11/24
Today I am grateful for. a slow drive across Michigan with frequent stops yesterday.

11/23
Today I am grateful to spend Thanksgiving with my family.

11/22
Today I am grateful for my first visit to the UK.

11/21
Today I am grateful
-for a guided walking tour of historic London yesterday morning
-for a visit to the UK National Gallery yesterday afternoon
-to my new manager for traveling to London to meet me for dinner last night

11/20
Today I am grateful for lunch with Andy yesterday.

11/19
Today I am grateful to meet up with 2 old friends in a foreign country: James at lunch; and Tobiasz at dinner.

11/18
Today I am grateful to speak at #GangConf in Detroit yesterday.

11/17
Today I am grateful for:
-Lunch with Suzanne and Darcy yesterday
-Ondrej and Desi letting me stay at their home last night

11/16
Today I am grateful for my first acupuncture session yesterday.

11/15
Today I am grateful for all 4 seasons.

11/14
Today I am grateful for Taco Tuesday at Flaco's.

11/13
Today I am grateful for an independent press.

11/12
Today I am grateful for a day in Milwaukee with friends.

11/11
Today I am grateful for my first-ever visit to a chiropractor yesterday.

11/10
Today I am grateful to work from on the first very cold day of the season.

11/9
Today I am grateful for the opportunity to mentor startups and entrepreneurs at The University of Chicago Polsky Exchange the past 4 years.

11/8
Today I am grateful to see The Jeff Lorber Fusion in concert last night at The Promontory.

11/7
Today I am grateful for the opportunity to vote yesterday.

11/6
Today I am grateful for a tour yesterday of Epic Systems, one of the most creatively-designed campuses I've seen.

Sunday, 02 December 2018 18:38:13 (GMT Standard Time, UTC+00:00)
# Saturday, 01 December 2018

BridesheadRevisitedIn his first year at University, Charles Ryder meets Sebastian Flyte and is immediately attracted to him. Sebastian is handsome, rich, charming, and carefree and the two of them quickly become inseparable, drinking together at every opportunity.

Sebastian invites Charles home to Brideshead Castle. Sebastian describes the palatial estate as "It's where my family lives". Despite the barriers Sebastian erects between himself and his family, the Flytes almost immediately accept Charles as one of their own.

The family is an interesting mix of characters - the beautiful and intelligent Julia, who looks and sounds much like Sebastian; the idealistic Cordelia; the strong and pious mother Lady Marchmain; and the father Lord Marchmain, who abandoned his family to live with his mistress in Venice. Sebastian spends much of his time at home drinking to excess, despite his family's efforts to prevent him from doing so.

Eventually, Sebastian's drinking becomes so severe that his family has no idea how to help him; and he leaves home, largely exiting the story except in secondhand reports.

But Charles and the Flytes remain and Brideshead Revisited by Evelyn Waugh is their story.

The Flytes are very wealthy and part of the upper social strata of English aristocracy. But they are also Roman Catholic, which is a rarity in Anglican England and which affects both how they view the world.

The story follows Charles through 3 phases of his life - framed by a wartime visit to an abandoned Brideshead, which sparks his memories of his life with the Flytes.

In Part 1 ("Et In Arcadia Ego"), Charles and Sebastian meet and form a very close relationship. Some critics have described this as a homosexual relationship. I'm inclined to believe it is not because Waugh never mentions anything physical between the two and he does explicitly introduce other homosexuals into the narrative. Regardless, Sebastian and Charles become close enough that they end up spending all their free time together and eventually stop seeing their other friends - a pattern into which romantic couples often fall. There is no question of the love they feel for one another. It is in this part that Charles begins to bond with the Flyte family.

In Part 2 ("Brideshead Deserted"), the characters drift apart. Sebastian is an alcoholic and has left the family and traveled to Africa. Charles marries and becomes a successful painter. The other Flytes go out in the world, seeking careers and love. It concludes with Charles reconnecting with and falling in love with Sebastian's married sister Julia. Each agrees to divorce their spouse to be free to marry one another.

In Part 3 ("A Twitch Upon the Thread"), most of the family returns to Brideshead, including the dying Lord Marchmain and deal with their changing lives. The Catholicism of the Flyte family takes center stage in this section, particularly when contrasted with the agnostic Charles and Lord Marchmain.

Brideshead is about the English idle rich between the world wars; about the British caste system; about the decline of the aristocracy; about personal responsibility; about religion and its influence on moral choices; about sexuality; and about love and friendship.

Charles is an outsider in the aristocratic world of the Flytes; but he is not a dispassionate observer. He injects himself fully into the family and they embrace him. Some even love him. But the family is filled with drama and conflict. And Charles becomes part of it.

Most of the characters deteriorate as the novel progresses. Even Brideshead Manor itself falls into disrepair as the family abandons it to pursue interests elsewhere. In the beginning, most characters possess the optimism of youth; but, by Part 3, they have either aged poorly, become disillusioned, or squandered their lives as a wandering alcoholic. Still, there is optimism in this novel. And some are at least partially saved by an epiphany and a religious conversion late in life.

Brideshead Revisited is a complex story that reminds us that life is a journey that takes us both forward and backward and that we have control over where it takes us. It is a personal story told by Charles and his recollections force him at last to reconsider his life.

Saturday, 01 December 2018 09:52:00 (GMT Standard Time, UTC+00:00)
# Friday, 30 November 2018

Given an Azure Function, you may wish to change the URL that points to this function. There are several reasons to do this:

  1. Make the URL simpler
  2. Make the URL more readable
  3. Make the URL conform to your organization's standards

To reassign a Function's URL, you will need to know the existing URL. To find this, select the Function and click the "Get function URL" link, as shown in Fig. 1.

FP01-GetFunctionUrl
Fig. 1

The Function URL dialog displays, as shown in Fig. 2.

FP02-FunctionUrl
Fig. 2

Click the [Copy] icon to copy this URL to your clipboard. You may wish to paste this into a text document or another safe place for later use.

Each Azure Function App contains a "Proxies" section, as shown in Fig. 3.

FP03-Proxies
Fig. 3

Click the [+] icon to display the "New proxy" blade, as shown in Fig. 4.

FP04-Proxy
Fig. 4

At the "Name" field, enter a name to identify this proxy. I like to include the name of the original function in this name, to make it easy to track to its source.

At the "Route template" field, enter a template for the new URL. This is everything after the "https://" and the domain name. If the function accepts parameters, you will need to add these and surround them with curly brackets: "{" and "}".

At the "Allowed HTTP methods" dropdown, select "All methods" or check only those methods you wish your new URL to support.

At the "Backend URL" field, enter the full original URL copied earlier to your clipboard. If the function accepts parameters, you will need to add these and surround them with curly brackets: "{" and "}". The parameter name here must match the parameter name in the "Route template" field.

An example

For example, if I created a Function with an HTTPTrigger and accepted all the defaults (as described here), you will have a function that accepts a querystring parameter of "name" and outputs "Hello, " followed by the value of name.

My original function URL looked similar to the following:

https://dgtestfa.azurewebsites.net/api/HttpTrigger1?code=idLURPj58mZrDdkAh9LkTkkz2JZRmp6/ru/DQ5RbotDpCtg/WY/pRw==

So, I entered the following values into the "New Proxy" blade:

Name: HttpTrigger1Proxy
Route template: welcome/{name}
Allowed HTTP methods: All methods
Backend URL: https://dgtestfa.azurewebsites.net/api/HttpTrigger1?code=idLURPj58mZrDdkAh9LkTkkz2JZRmp6/ru/DQ5RbotDpCtg/WY/pRw==&name={name}

With these settings, I can send a GET or POST request to the following url:

https://dgtestfa.azurewebsites.net/welcome/David

and receive the expected response:

Hello, David

This new URL is much simpler and easier to remember than the original one.

In this article, I showed you how to create a proxy that redirects from a new URL to an existing Azure Function.

Friday, 30 November 2018 09:43:00 (GMT Standard Time, UTC+00:00)
# Thursday, 29 November 2018

GCast 24:

Azure Function CosmosDB Binding

Using the CosmosDB binding in an Azure Function allows you to read and write documents in an Azure CosmosDB database without writing code.

Thursday, 29 November 2018 09:22:00 (GMT Standard Time, UTC+00:00)