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

CodeMashClosing

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)

ng01-download
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/.

ng02-localsite
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

ng03-ngrokexecuting
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.

ng04-redirect
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.

Web
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.

pbi01-start
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.

pbi02-home
Fig. 2

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

pbi03-GetDataButton
Fig. 3

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

pbi04-GetDataPage
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.

pbi05-GetFilesTile
Fig. 5

pbi06-Files
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.

pbi07-LocalFile
Fig. 7

pbi08-SelectFile
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.

pbi09-FileList
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.

pbi10-AskAQuestion
Fig. 10

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

pbi11-BlankCanvas
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.

pbi12-SelectData
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.

pbi13-SelectAggregateFunction
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.

pbi14-Visualizations
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

1/6
Today I am grateful to face 2019 with optimism.

1/5
Today I am grateful for books.

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

1/3
Today I am grateful for Chicago style pizza.

1/2
Today I am grateful for a 2-week vacation.

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

12/31

12/30
Today I am grateful for the first snow of the winter.

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

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

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

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

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

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

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

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

12/21
Today I am grateful for a new sports coat.

12/20
Today I am grateful to start my vacation.

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

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

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

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

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

12/14
Today I am grateful tacos last night with my boys.

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

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

12/11
Today I am grateful to say goodbye to my cousin Sharon.

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

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

12/8
Today I am grateful for online music.

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

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

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

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

12/3
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)