# 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)