# Thursday, January 31, 2019

GCast 33:

An Introduction to Power BI

Power BI is a tool that allows you to create visualizations from a variety of data sources. This video shows how to get started with this tool.

Thursday, January 31, 2019 8:03:00 AM (GMT Standard Time, UTC+00:00)
# Wednesday, January 30, 2019

ADeathInTheFamilyIt was years ago, but I still remember waking up to the phone, telling me about my sister's collapse. I drove across town to see her, but she was brain-dead by the time I arrived at the hospital, and her heart stopped beating within minutes of taking her off the machines that kept her organs functioning for 24 hours.

I remember the pain and the guilt and the anger and the confusion. I didn't know for what I was feeling guilty or at whom to direct my anger, but I felt it all.

James Agee captures these emotions beautifully in his powerful novel A Death in the Family - the story of a family dealing with the sudden and unexpected death of a father / husband / brother / son, who is killed instantly in an automobile accident, while returning from a visit to his own ill father.

Agee takes us back to the family before the death - showing us both the mundane and the memorable.

He takes us through the painful uncertainty experienced by the family, after they know of the accident, but before they know whether he survived.

He takes us through the heartbreaking trial of telling his children their father will never come home again.

He takes us through the pain and the anger and the guilt and the denial of dealing with unexpected loss.

He takes us along the dynamics of the family as they try to support one another and the helplessness of knowing that, in many ways, they cannot.

He takes us into the minds of all the survivors in the family and it rings very true to those of us who have lost a loved one - either suddenly or slowly over time.

A Death in the Family is light on plot, but heavy on emotions. Events just happen and Agee dives deep into the thoughts and emotions of the survivors. It rang true for me and brought back memories of my own lost family members.

Wednesday, January 30, 2019 2:23:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 29, 2019

ConfessionsOfNatTurnerSometimes a novel with very few facts can contain a lot of truth.

The Confessions of Nat Turner by William Styron was written in 1967 and was inspired by a slave rebellion 136 years earlier.

In August `1831, Virginia slave Nat Turner led a rebellion that killed 55 white people in southeast Virginia. Turner, was captured, confessed to the crime, and was executed. He claimed that he did what he did because he was directed by God.

Almost nothing is known about Turner, other than the documents pertaining to his arrest and trial. So, Styron attempts to recreate his life - not by researching historic records and biographies - but by hypothesizing how an educated black slave could come to lead such a rebellion. The result is far from accurate in a personal sense, but very real in relating the conditions of slavery and the relationships between slaves and masters in the antebellum U.S. south.

Very little in The Confessions of Nat Turner is true. Styron takes liberties with the day-to-day activities and with Turner's thoughts. But it rings true, because so many of Nat's reactions spring logically from a lifetime of being treated as property.

The hypothetical Nat of the novel is originally owned by a man who treats his slaves better than most slaveowners do. He believes in the potential of blacks, ensures that Nat receives and education, and even makes plans for Nat to serve an apprenticeship in Richmond and ultimately earn his freedom. But these plans of freedom are abandoned when a failing economy forces the owner to sell off some of his slaves, including Nat. This broken promise underscores the unfairness inherent in the institution of slavery. An owner may speak to his slaves with respect and refuse to beat them; but, ultimately, a slave was a possession the owner may do with what he wishes with that possession. Virginia law fully supported this inequity.

Nat passes to several more masters - some more cruel and some less so. Overall, his life is better than most American slaves of the time, but he has lost the hope of freedom that was promised to him, and he is left facing a lifetime of servitude. Nat's strong faith in God helps to sustain him, so he begins to preach to other blacks in the area and soon gains a following. When he is finally inspired to emancipate his fellow slaves, he enlists this following to help him execute his plan.

Some critics claim that Styron's skin color prohibits him from making any assumptions or writing about a black slave - particularly writing in the first person, as he does in this novel. But Styron does a good job of humanizing the mysterious Turner and of shining a light on the dehumanizing institution of slavery.

Tuesday, January 29, 2019 3:20:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 28, 2019

Episode 547

Jon Skeet on Versioning

Versioning is more complex than most people believe. Jon Skeet describes the issues and how we can deal with the complexities to keep software libraries from breaking client applications.

Monday, January 28, 2019 8:11:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 27, 2019

Microsoft Teams is a tool for communication and collaboration that is included in Office 365.

Fig. 1 shows the Microsoft Teams interface (with my organization's Teams, channel's and conversations covered up).

Fig. 1

Fig. 2 shows the list of tabs at the top of a channel.

Fig. 2

Click the [+] button to add display the "Add a tab" dialog, as shown in Fig. 3.

Fig. 3

The "Add a Tab" dialog lists templates available on which to base your new tab. Click the "Website" button (Fig. 4) in this dialog. To find this button more easily, you can filter this list by typing "Website" in the "Search" textbox.

Fig. 4

The "Website" dialog displays, as shown in Fig. 5.

Fig. 5

At the "Tab name" field, enter a name to display in the tab list, identifying this tab.

At the URL field, enter a URL accessible by team members. This can be external or internal; but it must be an SSL site, so it must begin with "https://".

If you check the "Post to the channel about this tab", a message will be added to the "Conversations" tab with a link to the new tab.

Fig. 6 shows a new tab with the https://microsoft.com site displayed.

Fig. 6

Fig. 7 shows the link in the "Conversations" tab. Users can click the link to navigate to the new tab.

Fig. 7

You have now learned to add a new tab pointing to web site. The real power of this is if you create and deploy a custom site that adds functionality useful to your team members and publishing that site on the Internet or your corporate Intranet, where users can access it through Teams.

If your organization uses Office 365, it is likely that you have access to Microsoft teams. If you do not, call your organization's IT department and ask them: "What's the problem?"

Sunday, January 27, 2019 7:56:00 AM (GMT Standard Time, UTC+00:00)
# Saturday, January 26, 2019

Microsoft Teams is a tool for communication and collaboration that is included in Office 365.

Among other features, it allows team members to share and collaborate on files with one another.

Fig. 1 shows the Microsoft Teams interface (with my organization's Teams, channel's and conversations covered up).

Fig. 1

The "Files" tab is a space for Team members to upload, download and share files with other members. If files exist in the Files tab, you can create a tab displaying one of those files for easy access, editing, and collaboration.

Fig. 2 shows the list of tabs at the top of a channel.

Fig. 2

Click the [+] button to add display the "Add a tab" dialog, as shown in Fig. 3.

Fig. 3

The "Add a Tab" dialog lists templates available on which to base your new tab. You can filter this list by typing in the "Search" textbox, as shown in Fig. 4.

Fig. 4

Fig. 5 shows the dialog if you select "Excel" as the template.

Fig. 5

Excel files in this channel are listed. Select the file you want; then click the [Select] button to create the new tab. If you check the "Post to the channel about this tab", a message will be added to the "Conversations" tab with a link to the new tab.

Fig. 6 shows a new tab pointing to an Excel spreadsheet in the channel's files.

Fig. 6

Fig. 7 shows the link in the "Conversations" tab. Users can click the link to navigate to the new tab.

Fig. 7

Users can click the [Edit] button to quickly make changes to this file. When editing, there is no need to save, as changes are auto-saved.

You have now learned to add a new tab pointing to an Excel file. The process is similar for adding other types of tabs.

If your organization uses Office 365, it is likely that you have access to Microsoft teams. If you do not, call your organization's IT department and ask them: "What's the problem?"

Saturday, January 26, 2019 8:37:00 AM (GMT Standard Time, UTC+00:00)
# Friday, January 25, 2019

Microsoft Teams is a tool for communication and collaboration that is included in Office 365.

Among other features, it allows team members to share and collaborate on files with one another.

Fig. 1 shows the Microsoft Teams interface (with my organization's Teams, channel's and conversations covered up).

Fig. 1

By default, each channel has a "Files" tab, as shown in Fig. 2.

Fig. 2

The "Files" tab is a space for Team members to upload, download and share files with other members.

You have the ability to upload a file to this tab or to create a new file directly in this interface.

Create a New File

To create a new file, click the [New] button and select the type of file from the dropdown menu, as shown in Fig. 3.

Fig. 3

At the next dialog, enter a name for your file, as shown in Fig. 4.

Fig. 4

The file is created and displays within the tab. Fig. 5 shows an Excel file. Note that changes to the file are automatically saved. There is no reason to click a [Save] button.

Fig. 5

Upload an Existing File

To upload a file, click  the [Upload] button; then navigate to a file on your local system and select the file you want to upload, as swoon in Fig. 6.

Fig. 6

If your organization uses Office 365, it is likely that you have access to Microsoft teams. If you do not, call your organization's IT department and ask them: "What's the problem?"

Friday, January 25, 2019 8:30:00 AM (GMT Standard Time, UTC+00:00)
# Thursday, January 24, 2019

GCast 32:

Handwriting OCR with Cognitive Services

See how to perform OCR on images with handwritten text, using Microsoft Cognitive Services. I walk through the API and show sample JavaScript code.

Thursday, January 24, 2019 8:21:00 AM (GMT Standard Time, UTC+00:00)
# Wednesday, January 23, 2019

Microsoft Teams is a tool for communication and collaboration that is included in Office 365.

Each team can have multiple channels. See this article to learn how to create a new team. By default, a team contains a "General" channel, but you can add more.

Fig. 1 shows the Microsoft Teams interface (with my organization's Teams, channel's and conversations covered up).

Fig. 1

To create a new channel, select the team in which you want to create a channel, as shown in Fig. 2.

Fig. 2

Then click the […] button and select "Add channel" from the popup menu, as shown in Fig. 3.

Fig. 3

The "Create a channel" dialog displays, as shown in Fig. 4.

Fig. 4

At the "Channel name" field, enter a name for the channel you wish to create. 

At the "Description", enter a brief description of this channel, if you wish.

If you check the "Automatically favorite this channel for the whole team" checkbox, the new channel will appear in the Favorites list of every member of this team.

Click the [Add] button to add the channel. The Channel will now appear below the Team in the side menu, as shown in Fig. 5, and be available for any member of this team.

Fig. 5

Congratulations! You have just added a new channel to an existing team.

If your organization uses Office 365, it is likely that you have access to Microsoft teams. If you do not, call your organization's IT department and ask them: "What's the problem?"

Wednesday, January 23, 2019 8:24:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 22, 2019

Microsoft Teams is a tool for communication and collaboration that is included in Office 365.

You can create multiple teams in the Microsoft Teams software. My organization creates a team for broad interest groups, like "Social" and for each new project. How you organize your teams is up to you and your organization, but here is how to create a new Team.

Launch the Microsoft Teams client.

Fig. 1 shows the Microsoft Teams interface (with my organization's Teams, channel's and conversations covered up).

Fig. 1

A menu (Fig. 2) displays along the left side of the screen.

Fig. 2

Click the [Teams] button (Fig. 3) on the menu to display a list of all the teams in your Favorites list.

Fig. 3

Click the [Join or create a team] button (Fig. 4) at the bottom of the screen to display the "Join or create a team" page, as shown in Fig. 5.

Fig. 4

Fig. 5

Click the [Create a team] button (Fig. 6) to display the "Create your team" dialog, as shown in Fig. 7.

Fig. 6

Fig. 7

At the "Team name" field, enter the name of your new team.

At the "Description" field, enter a brief description of your team.

At the "Privacy" dropdown, select "Private" to allow only Team Owners to add new members; or "Public" to allow any member to add new members to the team.

Click the [Next] button to advance to the "Add members to team" dialog, as shown in Fig. 8.

Fig. 8

Here, you can search for people in your organization and add them to the team by clicking the [Add] button. Click the [Skip] button to defer this until later.

The new Team page displays and is selected on the left, along with a default "General" channel, as shown in Fig. 9.

Fig. 9

The "General" channel is shown in Fig. 10.

Fig. 10

Team members can communicate in threaded conversations on the "Conversations" tab, which is selected by default.

Team members can upload files to share them with others on the "Files" tab.

Team members can enter notes on the "Wiki" tab.

In this article, you learned how to create a new team.

If your organization uses Office 365, it is likely that you have access to Microsoft teams. If you do not, call your organization's IT department and ask them: "What's the problem?"

Tuesday, January 22, 2019 8:32:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 21, 2019

Episode 547

Geisa Faustino on Teaching

Geisa Faustino loves to teach. She developed this love in her previous career as a university professor and continues to teach as a Software Engineer at Microsoft. She explains what she gains from teaching and how she helps others to learn.

Monday, January 21, 2019 8:06:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 20, 2019

HiBob88-year-old Bob Newhart sits down with other comedians to discuss the art of comedy and their experiences as comedians.

Hi, Bob by Bob Newhart exists only as an audiobook, so it sounds more like a 4-hour podcast than a traditional book.

The audio cuts between conversations with Will Ferrell, Jimmy Kimmel, Lisa Kudrow, Judd Apatow, Conan O'Brien, Sarah Silverman, and Marc Maron - often with Bob repeating the same questions to different comics. We hear the stories of these comedians and of Bob himself (the oldest of the group), who shares what it was like to break into comedy in the days before comedy clubs. You can hear the age in Newhart's voice, but you also can treasure his experience of 60+ years in this field.

Hi, Bob is informal, informative, and very funny.

Sunday, January 20, 2019 10:23:00 AM (GMT Standard Time, UTC+00:00)
# Saturday, January 19, 2019

"Dead men are heavier than broken hearts."

"I sat there and poisoned myself with cigarette smoke and listened to the rain and thought about it."

TheBigSleepPhillip Marlowe was one tough detective. And Raymond Chandler introduced him in his 1939 novel The Big Sleep. Marlowe is cool, hardnosed, and wisecracking. He sometimes breaks the rules; but he has a code of honor that he will not break.

Marlowe is hired by millionaire General Sternwood to investigate a main who is blackmailing his daughter Carmen. The blackmailer is murdered, and Carmen tries to seduce Marlowe and Carmen's sister Vivian tries to seduce Marlowe and the family chauffeur is found dead in the river and then it gets complicated.

It's a gritty novel of crime and betrayal and urban tough guys and femme fatales and all the elements of a noir detective story.

The narration is often poetic - filled with imagery and metaphors. So many writers have copied and parodied this style that it may sound cliché to hear this style of storytelling.

Chandler's similes are remarkable

"I was as empty of life as a scarecrow's pockets."

His description of people gives the reader a taste of the character he is describing and of the one doing the describing

"She lowered her lashes until they almost cuddled her cheeks and slowly raised them again, like a theatre curtain. I was to get to know that trick. That was supposed to make me roll over on my back with all four paws in the air."

"As honest as you can expect a man to be in a world where it's going out of style.”

The author often injects humor into serious situations.

"Neither of the two people in the room paid any attention to the way I came in, although only one of them was dead.”

"She bent over me again. Blood began to move around in me, like a prospective tenant looking over a house.”

Chandler succeeds in providing a view of the world around Marlowe, as well as the effect in has on his hero.

"It seemed like a nice neighborhood to have bad habits in.”

"I went to the kitchen to make coffee - - yards of coffee. Rich, strong, bitter, boiling hot, ruthless, depraved. The lifeblood of tired men."

The Big Sleep a complex story; and it's sometimes hard to keep straight all the characters and all the plot twists. But Chandler wraps it up well in the end and Marlowe has one last chance to philosophize about life and death.

"What did it matter where you lay once you were dead? In a dirty sump or in a marble tower on top of a high hill? You were dead, you were sleeping the big sleep, you were not bothered by things like that...You just slept the big sleep, not caring about the nastiness of how you died or where you fell. Me, I was part of the nastiness now."

Saturday, January 19, 2019 8:25:00 AM (GMT Standard Time, UTC+00:00)
# Thursday, January 17, 2019

GCast 31:

OCR with Cognitive Services

Cognitive Services can automatically detect text from pictures of text. This video shows how.

Thursday, January 17, 2019 8:17:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 14, 2019

Episode 546

Jackie Becker on Mixed Reality in the Real World

Jackie Becker describes how companies are using virtual reality and augmented reality to solve real-world problems.

Monday, January 14, 2019 7:39:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 13, 2019

StarshipTroopersStarship Troopers by Robert A. Heinlein a science fiction novel without much science. It is the story of earth fighting a war against bug-like aliens from another galaxy, but there are very few battle scenes. It describes a future Earth ruled by a military government, but this fascism is never questioned.

In fact, the book contains very little action and very little plot.

It's primarily the story of Johnny Rico, a rich earth kid, who decides to enlist in the Mobile Infantry against his father's wishes.

It's mostly a coming-of-age story for Johnny, who learns discipline, strength, duty, and courage while being indoctrinated into the armed forces.

The novel has sparked controversy for its praise of the military and for its casting the aliens as dehumanized invaders - much as Americans have dehumanized foreigners against whom they fought. I don't know about that. One should consider that the book was written and released before the social upheaval of the Vietnam War and the before the Civil Rights movement was widely covered; and Heinlein drew from his own experiences in the US Navy.

I do know that I liked Johnny. I felt for him when his mother was killed in the war; and identified with his struggle and reconciliation with his father.

And there is some good science - in particular, the powered armor worn by the soldiers that enhances the strength, information, and abilities of its wearer. This idea has been borrowed by countless other science fiction authors and by military organizations.

If you are looking for an enjoyable, quick read with a bit of action and sci-fi and a solid leading character, you could do worse than Starship Troopers.

Sunday, January 13, 2019 9:33:00 PM (GMT Standard Time, UTC+00:00)
# Saturday, January 12, 2019

FriendsAs I write this, I realize I cannot recall exactly how many times I have attended CodeMash. Is it 11? 12? 13? I know I missed the first one and that I've attended every one since, so I'll call this one N-1.

This one was different than most. For years, I was a community speaker and I worked for companies that sponsored CodeMash (sometimes because I convinced them to do so). Then, I joined Microsoft as an Evangelist and large community events like this were part of my job.

Not this year. My role at Microsoft has changed and community is not a part of it. So I invited myself to CodeMash.

DavidJonJenniferFor the third year in a row, we invited Jon Skeet to speak at the Great Lakes Area .NET User Group - a group that I ran years ago - prior to CodeMash. So, I drove to Michigan and Ondrej and I picked up Jon from the airport after his flight from London, UK. He spoke that evening on Versioning 1.0.1, the same talk he planned to deliver at CodeMash. After the meeting, we drove a caravan from Southfield, MI to Sandusky, OH.

GorillaFor me, it was a working week, so I only attended about a third of the conference, but I still got a lot out of it.

I saw a few sessions. Some good ones were
Deep Learning like a Viking - Building Convolutional Neural Networks with Keras, in which Guy Royse demonstrated how to build a machine learning model to recognize pictures of Viking runes.
Notebooks are still cool…with Jupyter, in which Ryan Bales introduced Jupyter Labs - the next evolution of Jupyter notebooks.
Code Checkup: Tools to check the health of your code, in which Doug Mair described a number of IDE plug-ins and stand-alone tools to analyze code quality.
Modern 2FA in ASP.NET Core, in which Ondrej Balas showed how to make your applications more secure with the latest 2-Factor Authentication tools and technology.

During dinner Thursday evening, Brian Prince gave an inspirational talk about how he became interested in programming and how he stood on the shoulders of giants. He concluded with the call to action: "Be someone else's shoulders". This session resonated with me because Brian has had a strong influence on my career as we worked together for years.

MagicianThere were other activities, including Lightning Talks (most were by technologists, but not about technology); a kids' track, known as "KidzMash" that taught children about programming; a magic show; and a water park (I visited but did not immerse myself).

FriendsAs always, I invested a significant amount of time in what some call the Conference Hallway Track, asking questions of technologists and learning what they are working on and the things that affect their work. I had several conversations about diversity in technology and what we can do to improve it.

This part of the country has a strong developer community and I have always been impressed with the willingness people have to share their ideas.

I enjoyed the conference and I look forward to attending next year for (N+1) - 1.


Saturday, January 12, 2019 1:44:51 PM (GMT Standard Time, UTC+00:00)
# Thursday, January 10, 2019

GCast 30:

Creating Applications with the Analyze Image Cognitive Services API

Learn how to create C# and node applications using the "Analyze Image" service of the Microsoft Cognitive Services Vision API.

Thursday, January 10, 2019 7:28:00 AM (GMT Standard Time, UTC+00:00)
# Wednesday, January 9, 2019

Sometimes you need to deploy a web site or app to the Internet. During development, that process is

  1. Make code change
  2. Deploy
  3. Test

This takes time and is difficult to debug.

But what if I could run my code locally and make it accessible to others on the Internet? This would save time in deployment and would make it easier to debug.

That is what ngrok does.

You can download ngrok for free at https://ngrok.com/download (Fig. 1)

Fig. 1

On Windows, this will download a ZIP file containing 1 file: ngrok.exe.

Unzip this file and place it somewhere in your computer's path.

Next, launch your local website or web application, using whatever tools you prefer. I created the node web site shown in Fig. 2 in 5 minutes by following the steps at https://shapeshed.com/creating-a-basic-site-with-node-and-express/.

Fig. 2

The syntax to redirect from a public internet URL to a site on your local computer is

ngrok http portnumber

where portnumber is the local port number hosting your site.

My site is hosted on HTTP Port 3000, so we will enter the following command in a Command prompt:

ngrok http 3000

This outputs information as shown in Fig. 3

Fig. 3

The output displays redirecting URLs. In my case, I can open a new browser window and navigate to either http://6dddba9b.ngrok.io/ or https://6dddba9b.ngrok.io/ and the browser will launch my local site, as shown in Fig. 4.

Fig. 4

Others will be able to access your site from the same URL.

Of course, you need an Internet connection for this to work. It's also worth noting that the redirect expires in a few hours, so this is not designed as a permanent solution - only to assist you while you develop and test your site or app.

Wednesday, January 9, 2019 9:23:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 8, 2019

Microsoft Power BI is a tool for users to create visualizations of data from disparate sources. You can get started with the browser-based version of Power BI by navigating to https://powerbi.com/. This page is shown in Fig. 1.

Fig. 1

If your company has an Office 365 account, you may be able to sign in by clicking the [Sign in] button and start using Power BI. If not, you can click the [START FREE] button to create a free account.

Once you are signed in, the Home page displays, as shown in Fig. 2.

Fig. 2

You can add data to Power BI to begin working with it by clicking the [Get Data] button (Fig. 3)

Fig. 3

The "Get Data" page displays, as shown in Fig. 4.

Fig. 4

From this page, you can choose to import data published by your organization ("My organization"), from a third-party service ("Services"), from a file on your computer or network ("Files") or from data in a database ("Databases").

Click the [Get] button on the "Files" blade (Fig. 5) to display the "Files" page, as shown in Fig. 6.

Fig. 5

Fig. 6

As you can see, you can import data from your local file system, from OneDrive, or from a SharePoint site.

Click the "Local File" blade (Fig. 7) to open a File Open dialog, as shown in Fig. 8.

Fig. 7

Fig. 8

Navigate to the folder containing your data file, select the file, and click the [Open] button.

A list of all files imported is displayed, as shown in Fig. 9.

Fig. 9

Click on your data file name to display the "Ask a question about your data" blade (Fig. 10); then, click the file name in this blade.

Fig. 10

A blank canvas displays, along with a side menu and a list of fields in your data, as shown in Fig. 11.

Fig. 11

Select the checkboxes next to some of the fields to create the first visualization on the canvas. In the example in Fig. 12, I selected "nMonths", which holds a number from 1-12, representing the month (Jan-Dec) that a measurement was taken. This is set as the x value. I also selected, "temp", which contains the measured temperature. This created the bar chart visualization at the left of the canvas.

Fig. 12

If you click on "temp" under "Value", you will notice that it shows the Sum of the temperatures, which is not very useful information. You can select something more useful, like "Average", "Minimum", or "Maximum" temperature from this menu, as shown in Fig. 13.

Fig. 13

If you don't like a bar chart, you can also change the type of visualization by selecting something different from the "VISUALIZATIONS" blade, as shown in Fig. 14.

Fig. 14

This quick overview shows some of the features available in Microsoft Power BI.

Tuesday, January 8, 2019 9:54:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 7, 2019

Episode 545

Isaac Bayoh on How Technology Impacts Developing Countries

Isaac Bayoh grew up in west Africa and continues to work with NGOs in his home country of Ivory Coast (Côte d'Ivoire). He has seen firsthand the effect that technology has on developing countries.

Monday, January 7, 2019 9:09:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 6, 2019

Today I am grateful to face 2019 with optimism.

Today I am grateful for books.

Today I am grateful to anyone who reads my blog or watches my videos.

Today I am grateful for Chicago style pizza.

Today I am grateful for a 2-week vacation.

Today I am grateful to Dan for tickets to an excellent Brian Regan show last night.


Today I am grateful for the first snow of the winter.

Today I am grateful to Tim for coming over and helping me with some heavy lifting yesterday.

Today I am grateful to return to my personal trainer after a long break.

Today I am grateful to spend a few days relaxing in Austin, TX.

Today I am grateful for an unexpected encounter with Ryan and Jade last night in Austin.

Today I am grateful that God sent his only son to save us.

Today I am grateful for lunch with Jeff and Chrissy yesterday.

Today I am grateful for a late-night walk through downtown Austin.

Today I am grateful to hang around the Magnificent Mile yesterday afternoon.

Today I am grateful for a new sports coat.

Today I am grateful to start my vacation.

Today I am grateful to attend my first Loyola home basketball game last night with Tim.

Today I am grateful to attend a community meeting last night with developers and government officials to discuss major changes in my neighborhood.

Today I am grateful for bike-riding weather in the second half of December.

Today I am grateful to see a performance by the Young People's Company at Piven Theatre yesterday.

Today I am grateful to have Nick visit for a few days.

Today I am grateful tacos last night with my boys.

Today I am grateful for all the kind words and thoughts and prayers yesterday.

Today I am grateful to spend time in California with my cousins.

Today I am grateful to say goodbye to my cousin Sharon.

Today I am grateful to attend a 49ers game yesterday at Levi's Stadium with John.

Today I am grateful for:
-Lunch with Sara yesterday
-Dinner and live music with Gail last night

Today I am grateful for online music.

Today I am grateful for a successful AI hackathon in Milwaukee this week.

Today I am grateful for my first visit to Fiserv Forum for a Bucks game last night.

Today I am grateful for dinner last night in Milwaukee with Hattan, Geisa, and Isaac.

Today I am grateful to avoid the snowstorm on my drive yesterday.

Today I am grateful to see an excellent concert last night by the Joey DeFrancesco Trio at Jazz Showcase.

Sunday, January 6, 2019 5:29:00 PM (GMT Standard Time, UTC+00:00)
# Saturday, January 5, 2019

New Home

2018 began with a big change and an expensive one. In January, I bought a condominium in the South Loop, making a homeowner for the first time in over 3 years. The condo isn't large or fancy, but it has a beautiful view of the Chicago skyline and wake up every morning to this.

New Job

The next big change of 2018 came at mid-year. Microsoft, my employer, had a reorganization.My old job - helping professors at top computer science schools teach cloud computing to their students - was eliminated. I was assigned a new role in which I was to work with engineers at various companies and help them build cloud solutions. In July, I was assigned to work with four companies and I began to build relationships with the technical folks at those companies. But because my company embraces change, we had another reorganization in December and I was assigned to work with different companies. So far, it has been good: I have learned a lot and I have worked in a number of new industries. It took some time to adjust to this role, but it was a familiar one, as it recalled my years as a technical consultant. I still miss the days of speaking at conferences and working with the developer community.


I continued to travel in 2018. I returned to Romania and Canada and made my first visit to Norway and England. I also visited Mackinac Island, Michigan's Upper Peninsula, Dorr County, WI for the first time. I made many of visits to Seattle, Austin, Toronto, Champaign throughout the year.

One highlight of the year came at the Imagine Cup Finals, where a team from the Toronto area - smartArm - were named world champions. I was excited or their success because I had mentored them at a hackathon at the University of Toronto early in the year and encouraged them to participate in the worldwide student competition.


Tim continued working as an IT consultant in the Chicago area. It has been great having him nearby and seeing him so often. Weary of his long daily commute to the suburbs, he began looking for other opportunities and he received two job offers in December.

Nick is in his second season as a basketball coach at Williams College in Massachusetts. He was promoted to top assistant this summer.

Much of my family got together this summer in Ellicott City, MD for a family reunion. Cousins from around the country met to share stories and hugs for a few days. It was a reprise of a similar event at the same location in 2002.

My cousin Sharon passed away in December after a long battle with cancer. We have been close since we were young and her death was difficult; but I was fortunate to be able to see her several times this year, including the days before her death. I will always be grateful that I arrived in California in time to say "Goodbye" to her. She died a few hours after I flew home.


I accelerated my reading during 2018. My purchase of a Kindle e-reader helped, as did a subscription to Audible. I could listen to books on my bike rides and read from my Kindle on long plane rides. As a result, my pace accelerated the second half of the year and I finished 2018 with a total of 47 books read. After years of effort, I even completed reading NPR’s list of the Top 100 science fiction and fantasy books.


I was blessed with good health last year. A return trip to the dermatologist revealed that I was cancer-free, following my surgery to remove basal cells from my temple. Despite my travel schedule, I kept up a regular gym schedule while I was at home and I even worked with a personal trainer. A back injury interrupted this in November, but I've recovered and I'm back on track with my exercise regimen.

I did a lot of bike riding this year. It was good exercise and a great way to explore Chicago, which I am still learning. I rode almost every day I was home in the summer, working up to rides of about 20 miles by the end of the summer.  A warmer than usual fall and winter allowed me to continue riding late into the year.


2018 was my 11th year of blogging and I published more posts (209) than any other year. In fact, this shattered my old record of 155, set in 2009 and 2012. In November, I accomplished something for the first time - publishing a new post every day of the calendar month.

I continued recording my Technology and Friends show in which I interview technologists on camera. Due to a change in policy at Microsoft Channel 9, I migrated the show to YouTube. This transition caused me to miss my weekly cadence for the first time in years, as I skipped my usual Monday episodes in February and March. Still, I published 45 episodes during the year, including #544 on December 31.

I also re-booted GCast - a show featuring educational technical screencasts. I had recorded a few episodes years ago, but it had been long enough that I decided to begin again at Episode #1 this year. I released 28 episodes during the 2018.


I continued my quest to see a game in every the stadium / arena of each team in the 4 major North American sports. I checked the following 12 teams off my list this year:

  • San Francisco 49ers
  • Green Bay Packers
  • Texas Rangers
  • Washington Nationals
  • Los Angeles Clippers
  • Milwaukee Bucks
  • San Antonio Spurs
  • Carolina Hurricanes
  • Dallas Stars
  • Detroit Red Wings
  • Montreal Canadiens
  • San Jose Sharks

The Bucks and Red Wings were return visits, because each recently built a new arena. If you are keeping score, I still have 44 to go (8 MLB; 10 NBA; 13 NHL; 13 NFL)


Chicago is a great place to see live music and I took advantage this year. Below are some of the concerts I attended in 2018

  • JD Souther
  • Steve Earle
  • C.J. Chenier
  • Average White Band
  • Freddy Cole
  • Electric Light Orchestra
  • Billy Joel
  • Stereophonics
  • Jeff Lorber Fusion
  • Joey DeFrancesco


I am optimistic about this coming year. I have two major goals: to learn as much as I can; and to take all my vacation, so I don’t end up forfeiting some, like I always do.

Saturday, January 5, 2019 9:49:00 AM (GMT Standard Time, UTC+00:00)
# Friday, January 4, 2019

I remember when I first discovered the list. I read the headline: "Top 100 Science-Fiction, Fantasy Books" and thought about all the science fiction and fantasy I read in my youth. Surely, I've read most of these, I thought.

Not even close.

I don't recall the exact number, but I know I had read less than 20. I had never even heard of many books on the list.

Still, I was determined. So I rolled up my sleeves, entered the book titles into a spreadsheet, and headed to my local public library, resolved to read every book on the list.

Upon closer inspection, I faced a bigger hurdle than I initially realized. The list did not contain 100 books. Many of the "books" were actually multi-volume series: Lord of the Rings is 3 volumes; Dune is 5; A Song of Ice and Fire is 5 large books and still growing; Wheel of Time is 14 volumes and each book averages 850 pages! In total, there were over 300 books in this list.

I did not want to commit to every single book in every series, so I resolved to read at least the first book in each series and to continue a series only if it interested me.

That was 7 years ago.

Last month, I finished The Way of Kings by Brandon Sanderson, completing my goal. I have now read at least one book in each series of the list and I completed all but 10 of the series. I even went back and re-read many of the novels that I had read during my youth, such as Fahrenheit 451, A Clockwork Orange, and Frankenstein.

The list was compiled by conducting a poll of NPR listeners; and, as with all polls, this list is subjective and is limited by those who choose to participate and the time at which it is taken.

It's difficult to argue with the top 5-10. All are classics and very few lists of this sort would deny the impact and quality of any of these. 

But some will quibble because their favourite book or series was left out.

Notably absent are Bram Stoker's Dracula", The Narnia Chronicles (although C.S. Lewis's Space Trilogy was included), The Hobbit (although The Lord of the Rings and The Silmarillion made the cut), the Harry Potter series, the Hunger Games series, and any works by H.P. Lovecraft.

This was my first time reading some authors of whom I had heard (Neil Gaiman, Kurt Vonnegut, Terry Pratchett, and others) and many authors with which I was completely unfamiliar (Neal Stephenson, Max Brooks, Peter S Beagle, Joe Haldeman, and others)

For the most part, I greatly enjoyed these books. I took the time to review many of them afterward.

I gave the highest ratings to the following books:

  • Perdido Street Station by China Mieville
  • Jonathan Strange & Mr. Norrell by Susanna Clarke
  • The Stand by Stephen King
  • Small Gods by Terry Pratchett
  • Stardust by Neil Gaiman
  • Fahrenheit 451 by Ray Bradbury
  • Merlin Trilogy by Mary Stewart
  • The Last Unicorn by Peter S Beagle
  • The Once and Future King by TH White
  • The Belgariad by David Eddings
  • The Eyre Affair by Jasper Fforde

The only book I disliked was Kushiel's Dart.

Here are some of my observations after finishing this reading.

There is more variety in science fiction than in fantasy. Most fantasy novels are coming-of-age stories.

A few themes were repeated in multiple novels on the list.

The Arthurian Legend is recounted in the following:

  • The Mists of Avalon by Marion Zimmer Bradley
  • The Once and Future King by TH White
  • The Crystal Cave by Mary Stewart
  • The Space trilogy by CS Lewis
  • The Wheel of Time by Robert Jordan

Time Travel is a primary topic in each of these stories:

  • The Time Machine by HG Wells
  • The Time Traveler's Wife by Audrey Niffenegger
  • The Eyre Affair by Jasper Fforde
  • The Outlander series by Diana Gabaldon
  • Doomsday Book by Connie Willis

and is at least part of the following stories:

  • The Hitchhiker's Guide to the Galaxy by Douglas Adams
  • Slaughterhouse Five by Kurt Vonnegut
  • The Dark Tower by Stephen King
  • The Book of the New Sun by Gene Wolfe

Three novels dealt with the end of the World

  • The Road by Cormac McCarthy
  • The Book of the New Sun by Gene Wolfe
  • Lucifer's Hammer by Larry Niven and Jerry Pournelle

Vampires are major characters in I Am Legend by Richard Matheson and Sunshine by Robin McKinley and are mentioned in the Discworld series

Most authors appeared only once on the list but 16 appeared multiple times and a few (Neal Stephenson, Neil Gaiman, and Ray Bradbury) appeared 4 times. Arthur C. Clarke and Robert Heinlein each had 3 books on the list. 11 authors were listed twice.

Two Graphic Novels made the list: Watchmen by Alan Moore and Dave Gibbons; and The Sandman by Neil Gaiman.

I found it interesting that every book on the list was originally published in English, except the two by Jules Verne: Journey to the Center of the Earth and 20,000 Leagues Under the Sea. I chalk this up to the fact that an American radio network conducted the survey.

If you would like to read my detailed opinions on the books, I have posted reviews for many of them at goodreads.com 

If you are ambitious, below is the complete list:

Rank Title Author Books In Series Books I Read Year Read
1 The Lord of the Rings JRR Tolkien 3 3 1985
2 The Hitchhiker's Guide to the Galaxy Douglas Adams 5 5 1985
3 Ender's Game Orson Scott Card 1 1 2013
4 The Dune Chronicles Frank Herbert 5 5 1988
5 A Song of Ice and Fire George RR Martin 5 5 2012
6 1984 George Orwell 1 1 1982/2018
7 Fahrenheit 451 Ray Bradbury 1 1 1977
8 The Foundation Trilogy Isaac Asimov 3 3 1985
9 Brave New World Aldous Huxley 1 1 1986
10 American Gods Neil Gaiman 1 1 2012
11 The Princess Bride William Goldman 1 1 2017
12 The Wheel of Time Robert Jordan 14 1 2012
13 Animal Farm George Orwell 1 1 1986
14 Neuromancer William Gibson 1 1 2012
15 Watchmen Alan Moore and Dave Gibbons 1 1 1990
16 I, Robot Isaac Asimov 1 1 1981
17 Stranger in a Strange Land Robert Heinlein 1 1 2010/2018
18 The Kingkiller Chronicles Patrick Rothfuss 3 1 2012
19 Slaughterhouse Five Kurt Vonnegut 1 1 2012
20 Frankenstein Mary Wollstonecraft Shelley 1 1 1976
21 Do Androids Dream of Electric Sheep? Pilip K.Dick 1 1 2011
22 The Handmaid's Tale Margaret Atwood 1 1 2013
23 The Dark Tower Stephen King 8 8 2013
oo 2001: A Space Odyssey Arthur C. Clarke 1 1 1978
25 The Stand Stephen King 1 1 2016
26 Snow Crash Neal Stephenson 1 1 2013
27 The Martian Chronicles Ray Bradbury 1 1 1976
28 Cat's Cradle Kurt Vonnegut 1 1 2012
29 The Sandman Neil Gaiman 10 10 2015
30 A Clockwork Orange Anthony Burgess 1 1 1990
31 Starship Troopers Robert Heinlein 1 1 2000
32 Watership Down Richard Adams 1 1 2012
33 Dragonflight Anne McCaffrey 1 1 2012
34 The Moon is a Harsh Mistress Robert Heinlein 1 1 2012
35 A Canticle for Leibowitz Walter M. Miller Jr. 1 1 2012
36 The Time Machine HG Wells 1 1 1977
37 20,000 Leagues Under the Sea Jules Verne 1 1 1975
38 Flowers for Algernon Daniel Keyes 1 1 2011
39 The War of the Worlds HG Wells 1 1 1975
40 The Amber Chronicles Roger Zelazny 10 10 2014
41 The Belgariad David Eddings 5 5 2017
42 The Mists of Avalon Marion Zimmer Bradley 1 1 2014
43 The Mistborn Trilogy Brandon Sanderson 3 3 2012
44 Ringworld Larry Niven 1 1 2014
45 The Left Hand of Darkness Ursula K LeGuin 1 1 1986
46 The Silmarillion JRR Tolkien 1 1 1988
47 The Once and Future King TH White 4 4 2016
48 Neverwhere Neil Gaiman 1 1 2015
49 Childhood's End Arthur C. Clarke 1 1 1977
50 Contact Carl Sagan 1 1 2011
51 Hyperion Dan Simmons 1 1 2013
52 Stardust Neil Gaiman 1 1 2017
53 Cryptonomicon Neal Stephenson 1 1 2013
54 World War Z Max Brooks 1 1 2013
55 The Last Unicorn Peter S Beagle 1 1 2017
56 The Forever War Joe Haldeman 1 1 2014
57 Small Gods Terry Pratchett 1 1 2015
58 The Chronicles of Thomas Covenant the Unbeliever Stephen R Donaldson 3 3 2014
59 The Vorkosigan Saga Lois McMaster Bujold 23 10 2016
60 Going Postal Terry Pratchett 1 1 2014
61 Mote in God's Eye Larry Niven and Jerry Pournelle 1 1 2013
62 The Sword of Truth Terry Goodkind 12 1 2018
63 The Road Cormac McCarthy 1 1 2012
64 Jonathan Strange & Mr. Norrell Susanna Clarke 1 1 2014
65 I Am Legend Richard Matheson 1 1 2014
66 The Riftwar Saga Raymond E. Feist 3 3 2018
67 The Sword of Shananara Terry Brooks 3 3 2017
68 Conan the Barbarian Robert E Howard 3 3 2016
69 The Farseer Trilogy Robin Hobb 3 3 2017
70 The Time Traveler's Wife Audry Niffenegger 1 1 2005/2018
71 The Way of Kings Brandon Sanderson 1 1 2018
72 Journey to the Center of the Earth Jules Verne 1 1 1976
73 The Legend of Drizzt Series RA Salvatore 24 1 2017
74 Old Man's War John Scalzi 1 1 2014
75 The Diamond Age Neal Stephenson 1 1 2015
76 Rendezvous with Rama Arthur C. Clarke 1 1 1990
77 The Kushiel's Legacy Series Jacqueline Carey 9 1 2017
78 The Dispossessed Ursula K LeGuin 1 1 2017
79 Something Wicked This Way Comes Ray Bradbury 1 1 2017
80 Wicked Gregory Maguire 1 1 2006
81 The Malazan Book of the Fallen series Steven Erikson 10 1 2018
82 The Eyre Affair Jasper Fforde 1 1 2017
83 The Culture series Iain Banks 10 1 2018
84 The Crystal Cave Mary Stewart 3 3 2018
85 Anathem Neal Stephenson 1 1 2016
86 The Codex Alera Series Jim Butcher 6 1 2017
87 The Book of the New Sun Gene Wolfe 4 4 2018
88 The Thrawn Trilogy Timothy Zahn 3 3 2014
89 The Outlander series Diana Gabaldon 7 1 2017
90 The Elric Saga Michael Moorcock 6 6 1990
91 The Illustrated Man Ray Bradbury 1 1 2016
92 Sunshine Robin McKinley 1 1 2017
93 A Fire Upon the Deep Vernor Vinge 1 1 2015
94 The Caves of Steel Isaac Asimov 1 1 1988
95 The Mars trilogy Kim Stanley Robinson 3 3 2014
96 Lucifer's Hammer Larry Niven and Jerry Pournelle 1 1 2015
97 Doomsday Book Connie Willis 1 1 2015
98 Perdido Street Station China Mieville 1 1 2017
99 The Xanth series Piers Anthony 40 1 2018
100 The Space trilogy CS Lewis 3 3 2013
Friday, January 4, 2019 9:23:00 AM (GMT Standard Time, UTC+00:00)
# Thursday, January 3, 2019

GCast 29:

Introducing Cognitive Services and Computer Vision

Microsoft Cognitive Services allow you to take advantage of Machine Learning without all the complexities of Machine Learning. In this video, I introduce Cognitive Services by showing how to use Computer Vision to analyze an image, automatically detecting properties of that image.

Thursday, January 3, 2019 12:53:21 PM (GMT Standard Time, UTC+00:00)
# Wednesday, January 2, 2019


Augie March is an unlikely and unassuming hero in an American saga.

Born of a working-class simple-minded single mother in depression-era Chicago during the Great Depression, Augie struggles to rise above his lot in life.

Saul Bellow chronicles his struggles in The Adventures of Augie March.

Augie March begins his way in the world as a small-time criminal - stealing books,

Self-described as "an American, Chicago born", Augie often drifts through life, finding work where he can and seeking love where he can. His adventures often occur because he follows others: He falls in love with a girl who takes him to Mexico to finalize her divorce and train an eagle; he accompanies a friend on a trip to smuggle workers into the US from Canada, but they become stranded when the police discover the friend is driving a stolen car.

But, Augie progresses. He travels the world and experiences life and meets a lot of people. He takes on a number of jobs: Running errands for a corrupt businessman; recruiting workers to a labor union; buying and selling on the European black market; eagle trainer; even a stint in the US Navy; 

Our hero's great hindrance is his desire to do the right thing. For example, his engagement to a rich girl is derailed when he helps a friend escape an abusive relationship and recover from a botched abortion. Augie's fiancé and her family refuse to believe he is not sleeping with the girl he is helping. He knows this will happen, but he does what he believes is right.

It's sometimes hard to tell where the story is going. There are so many characters and so much happens that the reader can't always see what is important. March seems to just travel through life experiencing his adventures, with little or no theme running through them all. He tries, and he fails, and he tries again - in his careers and in his romances. Repeatedly, he deals with the chaos that is life and moves on.

But I see Augie's life as a pursuit of the American Dream, which is bold in its reach, but limited in its explicit goals.  March is more self-aware than most, seeing his weaknesses and strengths and he never stops growing. And he never stops trying to move forward. And he never stops dreaming.

Wednesday, January 2, 2019 5:46:58 PM (GMT Standard Time, UTC+00:00)