NoLongerAtEaseIn Things Fall Apart, Chinua Achebe introduced us to Okonkwo, a west African tribesman trying to preserve his people's culture as European colonialists invaded his homeland in the late 19th century.

Achebe's second novel - No Longer at Ease - follows the life and downfall of Okonkwo's grandson Obi decades later.

Obi returns from a college education in England to begin a life of civil service in his homeland of Nigeria. He returns with high expectations and high ideals, but he finds himself conflicted in every part of his life.

He wants to help his people, but he has seen the world and known many of its pleasures.

He wants to marry Clara, but his family and the rest of society disapproves because she is an osu - an inferior caste. And he is tempted by other beauties.

He resists the temptations of bribery, but many of his friends and colleagues are ready with rationalizations why bribes are acceptable.

He earns far more than most Nigerians, but he finds himself overwhelmed by his expenses and constrained by the salary of a civil servant.

Even his education presented conflict. The elders who loaned him for his education instructed him to study Law; but Obi decided he liked English better and switched majors during his tuition.

Worse, he discovers on his return that Lagos has changed - more modern and more corrupt - from his earlier days. It is the late 1950s and the colonial era is ending and countries like Nigeria are struggling to find their new, post-colonial identity.

Achebe brings to life the time and his characters in a lyrical, yet straightforward style. He peppers the speech of his character with frequent African proverbs.

I loved the reference back to the first novel: The rift between Obi's father and grandfather when his father converted to Christianity, rejecting the violence of the past and beginning the family's assimilation.

No Longer at Ease is a story of Local Culture vs Colonialism; of Idealism vs Practicality; of Individualism vs Duty; of Acceptance of Modern Christianity vs Adherence to an old caste system; and of Tradition vs Progress.

The reader struggles with these conflicts along with Obi.


The Microsoft Cognitive Services Computer Vision API contains functionality to infer a lot of information about a given image. One capability is to convert pictures of text into text, a process known as "Optical Characer Recognition" or "OCR".

Performing OCR on an image is simple and inexpensive. It is done through a web service call; but first, you must set up the Computer Vision Service, as described in this article.

In that article, you were told to save two pieces of information about the service: The API Key and the URL. Here is where you will use them.

HTTP Endpoint

The OCR service is a web service. To call it, you send an HTTP POST request to an HTTP endpoint. The endpoint consists of the URL copied above, followed by "vision/v2.0/ocr", followed by some optional querystring parameters (which we will discuss later).

So, if you create your service in the EAST US Azure region, the copied URL will be

https://eastus.api.cognitive.microsoft.com/

and the HTTP endpoint for the OCR service will be

https://eastus.api.cognitive.microsoft.com/vision/v2.0/ocr

Querystring Parameters

The optional querystring parameters are

language:

The 2-character language code of the text you are recognizing. This helps the service more accurately and quickly match pictures of words to the words they represent. If you omit this parameter, the system will analyze the text and guess an appropriate language. Currently, the service supports 26 languages. The 2-character code of each supported language is listed in Appendix 1 at the bottom of this article.

detectOrientation

"true", if you want the service to adjust the orientation of the image before performing OCR. If you pass "false" or omitting this parameter, the service will assume the image is oriented correctly.

If you have an image with English text and you want the service to detect and adjust the image's orientation, the above URL becomes:

https://eastus.api.cognitive.microsoft.com/vision/v2.0/ocr?language=en&detectOrientation=true

HTTP Headers

In the header of the HTTP request, you must add the following name/value pairs:

Ocp-Apim-Subscription-Key

The API key you copied above

Content-Type

The media type of the image you are passing to the service in the body of the HTTP request

Possible values are:

  • application/json
  • application/octet-stream
  • multipart/form-data

The value you pass must be consistent with the data in the body.

If you select "application/json", you must pass in the request body a URL pointing to the image on the public Internet.

If you select "application/json" or "application/octet-stream", you must pass the actual binary image in the request body.

Body

In the body of the HTTP request, you pass the image you want the service to analyze.

If you selected "application/json" as the Content-Type in the header, pass a URL within a JSON document, with the following format:

{"url":"image_url"}

where image_url is a URL pointing to the image you want to recognize.

Here is an example:

{"url":"https://www.themeasuredmom.com/wp-content/uploads/2016/03/Slide11.png"}

If you selected "application/octet-stream" or "multipart/form-data" as the Content-Type in the header, pass the actual binary image in the body of the request.

The service has some restrictions on the images it can analyze.

It cannot analyze an image larger than 4MB.

The width and height of the image must be between 50 and 4,200 pixels

The image must be one of the following formats: JPEG, PNG, GIF, BMP.

Sample call with Curl

Here is an example of a call to the service, using Curl:

curl -v -X POST "https://eastus.api.cognitive.microsoft.com/vision/v2.0/ocr?language=en&detectOrientation=true" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: f27c7436c3a64d91a177111a6b594537" --data-ascii "{'url' : 'https://www.themeasuredmom.com/wp-content/uploads/2016/03/Slide11.png'}"

(NOTE: I modified the key, so it will not work. You will need to replace it with your own key if you want this to work.)

Response

If all goes well, you will receive an HTTP 200 (OK) response.

In the body of that response will be the results of the OCR in JSON format.

At the top level is the language, textAngle, and orientation

Below that is an array of 0 or more text regions. Each region represents a block of text within the image.

Each region contains an array of 0 or more lines of text.

Each line contains an array of 0 or more words.

Each region, line, and word contains a bounding box, consisting of the left, top, width, and height of the word(s) within.

Here is a partial example of the JSON returned from a successful web service call:

{
    "language": "en",
    "textAngle": 0.0,
    "orientation": "Up",
    "regions": [
        {
            "boundingBox": "147,96,622,1095",
            "lines": [
                {
                    "boundingBox": "408,96,102,56",
                    "words": [
                        {
                            "boundingBox": "408,96,102,56",
                            "text": "Hey"
                        }
                    ]
                },
                {
                    "boundingBox": "282,171,350,45",
                    "words": [
                        {
                            "boundingBox": "282,171,164,45",
                            "text": "Diddle"
                        },
                        {
                            "boundingBox": "468,171,164,45",
                            "text": "Diddle"
                        }
                    ]
                },
                etc...
                 }
            ]
        }
    ]
}
  

The full JSON can be found in Appendix 2 below.

Errors

If an error occurs, the response will not by HTTP 200. It will be an HTTP Response code greater than 400. Additional error information will be in the body of the response.

Common errors include:

  • Images too large or too small
  • Image not found (It might require a password or be behind a firewall)
  • Invalid image format
  • Incorrect API key
  • Incorrect URL (It must match the API key. If you have multiple services, it’s easy to mix them up)
  • Miscellaneous spelling errors (e.g., not entering a valid language code or misspelling a header parameter)

In this article, I showed how to call the Cognitive Services OCR Computer Vision Service.

Appendix 1: Supported languages

zh-Hans (ChineseSimplified)
zh-Hant (ChineseTraditional)
cs (Czech)
da (Danish)
nl (Dutch)
en (English)
fi (Finnish)
fr (French)
de (German)
el (Greek)
hu (Hungarian)
it (Italian)
ja (Japanese)
ko (Korean)
nb (Norwegian)
pl (Polish)
pt (Portuguese,
ru (Russian)
es (Spanish)
sv (Swedish)
tr (Turkish)
ar (Arabic)
ro (Romanian)
sr-Cyrl (SerbianCyrillic)
sr-Latn (SerbianLatin)
sk (Slovak)

Appendix 2: JSON Response Example

{
    "language": "en",
    "textAngle": 0.0,
    "orientation": "Up",
    "regions": [
        {
            "boundingBox": "147,96,622,1095",
            "lines": [
                {
                    "boundingBox": "408,96,102,56",
                    "words": [
                        {
                            "boundingBox": "408,96,102,56",
                            "text": "Hey"
                        }
                    ]
                },
                {
                    "boundingBox": "282,171,350,45",
                    "words": [
                        {
                            "boundingBox": "282,171,164,45",
                            "text": "Diddle"
                        },
                        {
                            "boundingBox": "468,171,164,45",
                            "text": "Diddle"
                        }
                    ]
                },
                {
                    "boundingBox": "239,336,441,46",
                    "words": [
                        {
                            "boundingBox": "239,336,87,46",
                            "text": "Hey"
                        },
                        {
                            "boundingBox": "359,337,144,35",
                            "text": "diddle"
                        },
                        {
                            "boundingBox": "536,337,144,35",
                            "text": "diddle"
                        }
                    ]
                },
                {
                    "boundingBox": "169,394,576,35",
                    "words": [
                        {
                            "boundingBox": "169,394,79,35",
                            "text": "The"
                        },
                        {
                            "boundingBox": "279,402,73,27",
                            "text": "cat"
                        },
                        {
                            "boundingBox": "383,394,83,35",
                            "text": "and"
                        },
                        {
                            "boundingBox": "500,394,70,35",
                            "text": "the"
                        },
                        {
                            "boundingBox": "604,394,141,35",
                            "text": "fiddle"
                        }
                    ]
                },
                {
                    "boundingBox": "260,452,391,50",
                    "words": [
                        {
                            "boundingBox": "260,452,79,35",
                            "text": "The"
                        },
                        {
                            "boundingBox": "370,467,80,20",
                            "text": "cow"
                        },
                        {
                            "boundingBox": "473,452,178,50",
                            "text": "jumped"
                        }
                    ]
                },
                {
                    "boundingBox": "277,509,363,35",
                    "words": [
                        {
                            "boundingBox": "277,524,100,20",
                            "text": "over"
                        },
                        {
                            "boundingBox": "405,509,71,35",
                            "text": "the"
                        },
                        {
                            "boundingBox": "509,524,131,20",
                            "text": "moon."
                        }
                    ]
                },
                {
                    "boundingBox": "180,566,551,49",
                    "words": [
                        {
                            "boundingBox": "180,566,79,35",
                            "text": "The"
                        },
                        {
                            "boundingBox": "292,566,103,35",
                            "text": "little"
                        },
                        {
                            "boundingBox": "427,566,82,49",
                            "text": "dog"
                        },
                        {
                            "boundingBox": "546,566,185,49",
                            "text": "laughed"
                        }
                    ]
                },
                {
                    "boundingBox": "212,623,493,51",
                    "words": [
                        {
                            "boundingBox": "212,631,42,27",
                            "text": "to"
                        },
                        {
                            "boundingBox": "286,638,72,20",
                            "text": "see"
                        },
                        {
                            "boundingBox": "390,623,96,35",
                            "text": "such"
                        },
                        {
                            "boundingBox": "519,638,20,20",
                            "text": "a"
                        },
                        {
                            "boundingBox": "574,631,131,43",
                            "text": "sport."
                        }
                    ]
                },
                {
                    "boundingBox": "301,681,312,35",
                    "words": [
                        {
                            "boundingBox": "301,681,90,35",
                            "text": "And"
                        },
                        {
                            "boundingBox": "425,681,70,35",
                            "text": "the"
                        },
                        {
                            "boundingBox": "528,681,85,35",
                            "text": "dish"
                        }
                    ]
                },
                {
                    "boundingBox": "147,738,622,50",
                    "words": [
                        {
                            "boundingBox": "147,753,73,20",
                            "text": "ran"
                        },
                        {
                            "boundingBox": "255,753,114,30",
                            "text": "away"
                        },
                        {
                            "boundingBox": "401,738,86,35",
                            "text": "with"
                        },
                        {
                            "boundingBox": "519,738,71,35",
                            "text": "the"
                        },
                        {
                            "boundingBox": "622,753,147,35",
                            "text": "spoon."
                        }
                    ]
                },
                {
                    "boundingBox": "195,1179,364,12",
                    "words": [
                        {
                            "boundingBox": "195,1179,45,12",
                            "text": "Nursery"
                        },
                        {
                            "boundingBox": "242,1179,38,12",
                            "text": "Rhyme"
                        },
                        {
                            "boundingBox": "283,1179,36,9",
                            "text": "Charts"
                        },
                        {
                            "boundingBox": "322,1179,28,12",
                            "text": "from"
                        },
                        {
                            "boundingBox": "517,1179,11,10",
                            "text": "C"
                        },
                        {
                            "boundingBox": "531,1179,28,9",
                            "text": "2017"
                        }
                    ]
                },
                {
                    "boundingBox": "631,1179,90,12",
                    "words": [
                        {
                            "boundingBox": "631,1179,9,9",
                            "text": "P"
                        },
                        {
                            "boundingBox": "644,1182,6,6",
                            "text": "a"
                        },
                        {
                            "boundingBox": "655,1182,7,9",
                            "text": "g"
                        },
                        {
                            "boundingBox": "667,1182,7,6",
                            "text": "e"
                        },
                        {
                            "boundingBox": "690,1179,31,12",
                            "text": "7144"
                        }
                    ]
                }
            ]
        }
    ]
}
  

GCast 51:

Creating an Azure Container Instance

Learn how to create an Azure Container instance from a container repository.


The Microsoft Cognitive Services Computer Vision API contains functionality to infer a lot of information about a given image.

As of this writing, the API is on version 2.0 and supports the following capabilities:

Analyze an Image

Get general information about an image, such as the objects found, what each object is and where it is located. It can even identify potentially pornographic images.

Analyze Faces

Find the location of each face in a video and determine information about each face, such as is age, gender, and type of facial hair or glasses.

Optical Character Recognition (OCR)

Convert a picture of text into text

Recognize Celebrities

Recognize famous people from photos of their face

Recognize Landmarks

Recognize famous landmarks, such as the Statue of Liberty or Diamond Head Volcano.

Analyze Video

Retrieve keywords to describe a video at different points in time as it plays.

Generate a Thumbnail

Change the size and shape of an image, without cropping out the main subject.

Getting Started

To get started, you need to create a Computer Vision Service. To do this, navigate to the Azure Portal, login in, click the [Create a resource] button (Fig. 1) and enter "Computer Vision" in the Search box, as shown in Fig. 2.

cv01-CreateResource
Fig. 1

cv02-SearchForComputerVision
Fig. 2

A dialog displays, with information about the Computer Vision Service, as shown in Fig. 3.

cv03-ComputerVisionSplashPage
Fig. 3

Click the [Create] button to display the Create Computer Vision Service blade, as shown in Fig. 4.

cv04-NewSvc
Fig. 4

At the "Name" field, enter a name by which you can easily identify this service. This name must be unique among your services, but need not be globally unique.

At the "Subscription" field, select the Subscription with which you want to associate this service. Most of you will only have one subscription.

At the "Location" field, select the Azure Region in which to store this service. Consider where the users of this service will be, so you can reduce latency.

At the "Pricing tier" field, select "F0" to use this service for free or "S1" to incur a small charge for each call to the service. If you select the free service, you will be limited in the number and frequency of calls that can be made.

At the "Resource group" field, select a resource group in which to store your service or click "Create new" to store it in a newly-created resource group. A resource group is a logical container for Azure resources.

Click the [Create] button to create the Computer Vision service.

Usually, it takes less than a minute to create a Computer Vision Service. When Azure has created this service, you can navigate to it by its name or the name of the resource group.

Two pieces of information are critical when using the service: The Endpoint and the API keys.

The Endpoint can be found on the service's Overview blade, as shown in Fig. 5.

cv05-OverviewBlade
Fig. 5

The API Keys can be found on the service's "Keys" blade, as shown in Fig. 6. There are 2 keys, in case one key is compromised; you can use the other key, while the first is regenerated, in order to minimize downtime.

cv06-KeysBlade
Fig. 6

Copy the URL and and one of the API keys. You will need it to call the web services. We will describe how to make specific calls in future articles.


GeorgeClinton-1It's a good thing The Aragon Ballroom in Chicago's Uptown has such a large stage. They needed all of it to hold about 20 singers and dancers and rappers and guitarists and horns and drummers that make up George Clinton's Parliament Funkadelic.

But even with its large size, the Aragon stage could not contain the entire band for the entire concert Friday night.   At least three musicians jumped over the front into the orchestra pit and ran out into the audience during the performance.

Many years ago, Parliament and Funkadelic were two separate bands (although with largely the same members), but today Clinton has combined them into a single entity - Parliament Funkadelic.

GeorgeClinton-2Clinton conducted... no, that's not the right word... Directed...? No... He more or less presided over the band's performance, stepping forward occasionally to acknowledge a performer, deliver a few lyrics, or lead the audience in handclapping. In fact, the 77-year old spent much of the concert sitting on a chair in front of the drum set.

The show started slowly, not helped by failing sound systems and the poor acoustics of the Aragon; but Clinton gained energy as the night went on.

The crowd expressed most delight when the band broke into their old songs - "Give Up the Funk", "Flashlight", "One Nation Under Groove", ...)

GeorgeClinton-3With no seats on the ground floor, the audience could not help but dance, clap, and wave their hands through much of the show. It wasn't perfect, but the crowded stage delivered enough to delight those who made it out for the night.

His health is failing, and his energy is waning, and this will likely be his last tour. But he gave what he could to the crowded ballroom audience, who waited through three warmup acts to see the Rock and Roll Hall of Famer.


Episode 566

Hattan Shobokshi on TerraForm

Hattan Shobokshi describes how to use Terraform to implement Infrastructure As Code.


May 2019 Gratitudes

Comments [0]

6/2
Today I am grateful for the newly-renovated hallways in my building.

6/1
Today I am grateful to see George Clinton and Parliament Funkadelic in concert last night.

5/31
Today I am grateful to attend the AWS Summit yesterday.

5/30
Today I am grateful for a fresh tune-up on my new (to me) bicycle.

5/29
Today I am grateful to get my son moved into a new home last night.

5/28
Today I am grateful for good health insurance.

5/27
Today I am grateful to sleep in my own bed last night.

5/26
Today I am grateful for 4 days in Stockholm, one of Europe's great cities.

5/25
Today I am grateful to be invited to speak at the DevSum conference in Stockholm for the third time.

5/24
Today I am grateful for dinner at a Viking restaurant and fancy drinks with friends last night in Stockholm's Old City.

5/23
Today I am grateful for dinner last night with Jay and Mike in Stockholm.

5/22
Today I am grateful for 2 days in Copenhagen - my first visit to Denmark.

5/21
Today I am grateful for dinner and a long walk through Copenhagen yesterday with Joseph and Deidre.

5/20
Today I am grateful for Sunday brunch with Dave, Sue, Gary, and Debora.

5/19
Today I am grateful for a full day at home.

5/18
Today I am grateful for a week in Germany.

5/17
Today I am grateful for a German dinner with my team last night.

5/16
Today I am grateful to learn and teach DevOps with Lufthansa this week.

5/15
Today I am grateful for my first time staying in Germany in 31 years.

5/14
Today I am grateful to experience an Escape Room for the first time yesterday.

5/13
Today I am grateful to finally meet my team members in person.

5/12
Today I am grateful for:
-the opportunity to speak at the Chicago Code Camp yesterday
-an upgrade to Business Class on my transatlantic flight last night.

5/11
Today I am grateful to Hattan and Dave for answering my stupid questions the last few days.

5/10
Today I am grateful for dinner with Gary last night.

5/9
Today I am grateful for Korean burgers and Kimchi fries with Tim last night.

5/8
Today I am grateful to see Rev. Al Green in concert last night.

5/7
Today I am grateful for a bike ride last night through Chinatown, Pilsen, and the Lower West Side.

5/6
Today I am grateful for a visit to the Skokie Northshore Sculpture Park.


ThingsFallApartThings Fall Apart by Chinua Achebe tells the story of Okonkwo, a self-made man of the Umuofia clan in pre-colonial West Africa. Okonkwo worked hard to overcome the reputation of his lazy and cowardly father, who died with numerous debts. Okonkwo rose from poverty until he had acquired 3 wives, 10 children, a successful farm, and a position of respect and leadership among the clan.

But Okonkwo was also hot-tempered and violent: he would beat his wives and children when they displeased him, and his great strength made him feel he could and should use violence to settle disputes.

His rise to power was interrupted when he accidentally killed a fellow tribesman and was exiled for seven years for this crime. When he returned to the clan, everything had changed:  British colonists have arrived, bringing with them their culture, their laws, and their religion. The society that Okonkwo knew began to disappear, as it was subsumed by the colonists.

Unlike many English novels of this period, Things Fall Apart tells the story of the colonization of Africa from the point of view of the Africans. We see the indigenous people's respect for their ancestors and their focus on doing what is best for the community as a whole; and we see the unpleasantness of their society, such as the killing of a youth to placate angry gods.

We learn about Okonkwo - his strengths and his weaknesses. He is admired for his hard work and his sense of duty; but we also witness his uncontrolled rage and his intolerance.

The point is that we see the complexity of their society - not the ignorant savages so often portrayed by Westerners to justify their methods of "education" and "liberation".

Okonkwo was not a likeable man. But he had his principles and stuck to them, until his world was turned upside down by outsiders. And Achebe leads us toward his inevitable destruction.


GCast 50:

Angular pt 9: Incremental Search

Implementing Incremental Search with Angular JavaScript framework


Episode 564

Eric Boyd on Microservices

Eric Boyd describes the principles of Microservices and how he uses these principles to build better software.

Links:


PowerAndGloryIn the 1930s, the Communist Mexican government outlawed Catholicism and officials imprisoned or killed priests who refused to renounce their faith.

Graham Greene's The Power and the Glory chronicles the story of a Mexican priest on the run from a Mexican policeman.

We never learn the name of the priest or the policeman, but we learn much about the priest.

He is flawed in many ways and overwhelmed with guilt over the sins of his life. He drinks so much that he refers to himself as a "whiskey priest"; and he broke his vow of chastity years ago, resulting in an illegitimate daughter. But he clings to his faith, despite the risk to his life.

As the priest travels from town to town, the policeman pursues him, going so far as to execute those who did not turn in the priest when they had the chance.

Many characters come in and out of the story and nearly all are suffering from the poverty and/or from shame. Poor and weak and struggling with his faith, the priest's life is also filled with misery.

But The Power and the Glory still leaves us with a feeling of hope and a belief in redemption. For people and for the church.


LuckyJimJim Dixon is miserable.

He is petty and shallow; he is unqualified for his job; he is lazy and judgmental and sexist; he makes faces at people behind their back; and he is a drunk.

And he is miserable. Miserable because he is trapped in a job that he dislikes working for people he doesn't respect and he is convinced he will be fired soon. Almost everyone in his life is pretentious or boring or neurotic or arrogant. And most of them are trying to bully or manipulate him.

He is the title character of Kingsley Amis's first novel: Lucky Jim.

Lucky Jim is a farcical story filled with failure and petty revenge and self-destruction. But Amis's wit succeeds in making it enjoyable for the reader and even getting us to cheer for the novel's anti-hero.

The book is filled with excellent prose, like the following description of Jim's feelings the morning after a night of hard drinking.

"He lay sprawled, too wicked to move, spewed up like a broken spider-crab on the tarry shingle of morning. The light did him harm, but not as much as looking at things did; he resolved, having done it once, never to move his eyeballs again. A dusty thudding in his head made the scene before him beat like a pulse. His mouth had been used as a latrine by some small creature of the night, and then as its mausoleum. During the night, too, he’d somehow been on a cross-country run and then been expertly beaten up by secret police. He felt bad."

Read this silly book to laugh with and about an underdog, who somehow makes good, despite his best attempts not to do so.


GCast 49:

Angular pt 8: HTTP

Learn how to make HTTP calls from within your Angular app.


Episode 564

David Makogon on Streaming Data

David Makogon talks about streaming data and the tools to help you make it happen.

David on Twitter


CryingOfLot49Oedipa Moss's life was uncomplicated until her former lover - millionaire Pierce Inverarity - passed away and she was named the executor of his estate.

She said goodbye to her husband Mucho Maase and traveled to San Narciso, CA to investigate Pierce's assets.

During her investigation, she encountered a plethora of bizarre characters with bizarre names (Dr. Hilarius, Genghis Cohen, Mike Fallopian, Stanley Koteks, …), along with an ancient secret society dedicated to providing an alternative mail delivery system, to break the monopoly of the U.S. Postal Service.

The Crying of Lot 49 by Thomas Pynchon is an absurd, satirical novel with a huge number of twists, considering its brief length.

On the surface, this is a detective story; but it leaves most questions unanswered and most mysteries unresolved.

Its strength is in its humor and in the creative way it bounces Oedipa from one situation to the next.

The story includes the following:

A lawyer happens to be a former child star with the stage name "Baby Igor". He seduces Oedipa by feeding her tequila and playing strip baccarat while one of his old movies plays on the TV.

Oedipa's psychiatrist is intent on providing hallucinogenic drugs to his patients and ultimately reveals his Nazi past during a violent, paranoid, nervous breakdown.

An American rock band dresses like the Beatles and sing all their songs with a British accent.

And the story of the secret society, rebelling against the government by subverting its monopoly of the postal system keeps coming back to the front. It seems such a bizarre form of protest. But appropriate to this novella.

The novella makes up for its brevity by packing a great deal of quirkiness into less than 200 pages.


MovieGoerThe Moviegoer by Walker Percy tells the story of Binx Bolling, a young stockbroker existing in New Orleans of the 1050s.

Binx spends most of his spare time chasing his secretaries and watching movies.

At first glance, Binx seems the shallowest of people. But he often sees the world through fresh eyes, even if he struggles to articulate these observations to those around him.

Percy takes us through life in New Orleans and Chicago as seen through Binx's eyes. He likes adventure, but he is easily bored. He loves his family, but he cannot relate to them. He cares for his cousin Kate, but not enough to protect her.

We see Binx interacting with his extended family, a remnant of southern aristocracy, who lament the changing ways of their society. We experience his relationship with Kate, who recently attempted suicide. Without thinking how it might concern Kate's parents, Binx and Kate leave suddenly for a week in Chicago, without informing anyone of their departure.

"What do you think is the purpose of life - to go to the movies and dally with every girl that comes along?", his aunt asks him? He responds "No", but the reader suspects otherwise.

One might think this is a tragic tale, but it is told in a lighthearted fashion and it ends with some optimism.


GCast 48:

Angular pt 7: Routing

Routing in Angular is similar to routing in an MVC framework - except it happens on the client side. Learn how to implement it here.


Episode 563

J Tower on .NET Standard

J Tower describes .NET Standard, .NET Core, and the .NET Framework and how developers can get different flavors of .NET to work together.


CallItSleepDavid's mother brought him to New York City from eastern Europe as a baby. Call It Sleep by Henry Roth follows young David through his first eight years, growing up in the tenements of early twentieth century New York City.

Life on the lower east side of Manhattan has been hard. Hard because the family struggles to make ends meet; hard because the quiet sensitive David is bullied by the other neighborhood boys; but, mostly hard because of David's abusive father Albert, whose temper and paranoia often prevent him from even holding down a job. Albert frequently takes out on his frustration on his young son.

David is sensitive and quiet and clings to his mother. His lack of assertiveness makes him an easy target for those who use him or bully him or blame him for their own mistakes. And there is no shortage of people in his world anxious to do this - from neighborhood kids to the local rabbi to his bratty cousins. The more the world troubles him, the more he clings to his mother for protection.

There is a constant tension between all the characters - partly the result of the stress of being a struggling immigrant in an unfamiliar country, but mostly because of Albert and his temper. And Roth does a good job bringing us into their lives and making us feel their angst.

When the point of view switches to young David, Roth often gives us an eloquent description of David's impressions of the world around him. But when angst overtakes the boy, Roth switches to a stream-of-consciousness inner dialogue, revealing young David's angst through incomplete sentences and phrases.

There is a lot of dialogue in this book and much of it is spelled phonetically to indicate the European or Bowery accents of the speaker. Add to that the occasional Yiddish word and this can be a difficult book to read.

But it is a good story that will make you feel for the characters trapped in it.


AlGreenA pile of roses sat on a table far at stage left.

The band entered the stage and played a few minutes of a funky groove before Al Green walked out and picked up a handful of flowers and handed or tossed them to ladies in the audience. He repeated this gesture multiple times during his  performance.

This was an appropriate beginning to Green's performance. He did not as much perform for the audience as he charmed them. And, for the most part, they were delighted to be charmed.

It was Green's first tour in seven years and his stop in Chicago Tuesday night was a popular one.

The audience sang along to songs that were never pop hits. But, when he played some of his most popular songs ("Let's Stay Together", "Here I Am", "Tired of Being Alone", "I'm Still In Love With You"), everyone rose to their feet in appreciation.

I remember these songs as soulful melodies, delivered at a slowburn pace. But Green's band (9 instrumentalists + 3 backing vocalists) increased the tempo, delivering each one a little funkier than the original.

Green played mostly R&B and soul, but mixed in a bit of Gospel music. Al Green is an ordained minister with his own church in Memphis and he moved us with his rendition of "Amazing Grace". A medley of songs by the Temptations ("My Girl"), the Four Tops ("Sugar Pie, Honey Bunch"), and Otis Redding ("Dock of the Bay") pleased the audience.

The band closed with a rousing rendition of "Love and Happiness".

At 73, Rev. Green is a few years older, a little thicker in the waist, and lacks some of the energy he possessed during his popularity of the 1970s and 1980s. His performance lasted only about an hour and did not include an encore; but he still can hit the high notes that made him famous; and he still projects joy while singing the songs that brought joy to so many of us during our youth.


DavidAtThatConferenceLately, I’ve done less public speaking than in past years. But I still have a few presentations scheduled.

I will be delivering a presentation titled "We Want the Func! Using Azure Functions to Ease Deployment" at the following events:

Date Event Location
May 11, 2019 Chicago Code Camp Chicago, IL
May 23, 2019 DevSum Stockholm, Sweden
July 22, 2019 Chicago Cloud Conference Chicago, IL

In addition, I will present "How Cloud Computing Empowers a Data Scientist" August 8, 2019 at the PASS Cloud Virtual Group – an online user group.


GCast 47:

Angular pt 6: Services

Learn how to use Services in Angular to separate functionality and take advantage of dependency injection.


Keeping a computer system available all or almost all the time is a challenge.

Sometimes software patches or upgrades need to be installed on a server. Sometimes, old hardware needs to be replaced. Sometimes, hardware unexpectedly fails. Sometimes power to building or part of a building fails.

All these things can contribute to downtime - some of it planned and some of it unplanned.

Monitoring, redundancy, and planning all reduce the risk of downtime in Azure.

Many resources in Azure are written in triplicate. Only one copy of that data or service is live at any given time. The other two exist in case the live copy becomes unavailable. If this happens, Azure will automatically route requests to one of these "backup" copies. The live copy is sometimes called a "hot" copy, while the 2 redundant backups are sometimes referred to as "cold" copies.

This works well during planned software and hardware upgrades.  The cold copies' servers are upgraded first; then, new requests are routed to one of the upgraded cold copies, making it the hot copy, before the original hot copy is upgraded. Azure maintains something called "Update Domains" to help manage this. Systems in separate Update Zones will not be shut down for upgrades simultaneously, in order to avoid downtime.

Unexpected downtime is harder to manage. This is typically caused by hardware or software failure or a failure of a system, such as a power supply on which a service depends. All hardware fails at some point, so this must be dealt with.

To handle these failures, Azure continuously monitors its systems to determine when a failure occurs. When a failure on a hot copy is detected, requests are routed to a cold copy; then, a new copy of the service or data is deployed onto available hardware in order to maintain 2 redundant cold copies. Redundant copies of a service are kept in different parts of a datacenter, so that they don't rely on a single point of failure. These independent parts of the data center are known as "Fault Domains" because a fault in one Fault Domain will not affect services in the other Fault Domains.

As a result of these practices, Azure can guarantee a certain level of uptime for each of its paid services. The level is dependent on the service and is usually expressed in terms of percentage uptime. Azure guaranteed uptimes range from 99.5% to 99.99%. This guaranteed uptime percentage is known as a "Service Level Agreement" or "SLA"

You can view the current uptime guarantee for each Azure service here.

An uptime of 99.5% would be down a maximum of 1.83 days per year and an uptime of 99.99% would be down a maximum of 52.6 minutes per year.

Azure guarantees this by agreeing to credit all or part of a customer's charges if the uptime target is not met in any given month. The exact credit amount depends how much the target is missed.

As of this writing, here are the guaranteed uptimes for each Azure service.

Service Uptime Notes
Active Directory 99.90%
Active Directory B2C 99.90%
AD Domain Service 99.90%
Analysis Service 99.90%
API Management 99.90%
App Service 99.50%
Application Gateway 99.50%
Application Insights 99.90%
Automation 99.90%
DevOps 99.90%
Firewall 99.50%
Front Door Service 99.99%
Lab Services 99.90%
Maps 99.90%
Databricks 99.50%
Backup 99.50%
BizTalk Services 99.90%
Bot Service 99.90%
Cache 99.90%
Cognitive Services 99.90%
CDN 99.90%
Cloud Services 99.50% Assumes at least 2 instances
VMs 99.50% Assumes at least 2 instances
VMs 99.90% Assumes Premium storage
CosmosDB 99.99%
Data Catalog 99.90%
Data Explorer 99.90%
Data Lake Analytics 99.90%
Data Lake Storage Gen1 99.90%
DDoS Protection 99.99%
DNS 100.00%
Event Grid 99.99%
Event Hubs 99.90%
ExpressRoute 99.50%
Azure Functions 99.50%
HockeyApp 99.90%
HDInsight 99.90%
IoT Central 99.90%
IoT Hub 99.90%
Key Valut 99.90%
AKS 99.50%
Log Analytics 99.90%
Load Balancer 99.99%
Logic Apps 99.90%
ML Studio 99.95%
Media Services 99.90%
Mobile Services 99.90%
Azure Monitor 99.90%
Multi-Factor Authentication 99.90%
MySQL 99.99%
Network Watcher 99.90%
PostgreSQL 99.99%
Power BI Embedded 99.90%
SAP HANA on Azure Large Instances 99.99%
Scheduler 99.99%
Azure Search 99.90%
Security Center 99.90%
Service Bus 99.90%
SignalR Service 99.90%
Site Recovery 99.90%
SQL Database 99.99%
SQL Data Warehouse 99.90%
SQL Server Stretch Database 99.90%
Storage Accounts 99.99% 99.9% for Cold Storage
StorSimple 99.90%
Stream Analytics 99.90%
Time Series Insights 99.90%
Traffic Manager 99.99%
Virtual WAN 99.95%
VS App Center 99.90%
VPN Gateway 99.95%
VPN Gateway for VPN or ExpressRoute 99.90%
Information Protection 99.90%
Win10 IoT Core Svcs 99.90%
VMWare Solution 99.90%

Services like Azure Backup and Azure Functions, which can be easily retried, have the lowest guaranteed uptime.

The highest guaranteed uptimes are reserved for mission-critical services, such as DNS and Traffic Manager, along with all the database and storage offerings.

Free services are not listed here, as they almost never have a guaranteed uptime. Even if they did, there is nothing to credit to the account.

Azure has systems in place to guarantee high availability and reliability and Microsoft has enough confidence in those systems to guarantee a predictable level of uptime and base that guarantee on monetary credits.


Saturday, I passed the Microsoft Azure Fundamentals exam (AZ-900).

The topics covered for this exam are listed here.

It had a lot of general knowledge question (a few where you just needed to know the difference between IAAS and PAAS). But there were some trivia questions, as well.

I studied for 2-3 days and got an 850.

Here is how I prepared:

  1. I completed this 12-module course, which took about 8 hours: Azure Fundamentals course
  2. I reviewed this PowerPoint deck: AZ-900 Certification Training, created by Daniel Baker.

While studying the above 2 resources, if I found any service with which I had no experience, I opened the portal and created that service and poked around in it a bit. I found it stuck in my memory much better when I did that.

Also, I kept open a text document while studying, in which I listed any topics that I did not know or felt weak in. After studying, I returned to this and reviewed these topics multiple times.

Related to this practice, I saved a copy of the above deck and deleted the slides covering topics I felt I knew well. I reviewed the remaining slides until I could read the title and articulate the ideas covered by that slide.

This was probably the least technical Microsoft certification exam I've taken. It wasn't difficult, but it did require some preparation on my part. I've worked in Azure for years, but I don't think I would have passed without studying. There were too many questions about support options and SLAs and other things I don't spend much time on.


Episode 562

Mike Benkovich on Visual Studio 2019

Microsoft MVP Mike Benkovich discusses the important new features in Visual Studio 2019


April 2019 Gratitudes

Comments [0]

5/5
Today I am grateful to pass an Azure certification exam yesterday.

5/4
Today I am grateful to chat yesterday with people from 3 different continents.

5/3
Today I am grateful to attend the AUVSI XPONENTIAL conference this week and see some amazing uses for drones.

5/2
Today I am grateful to see "Avengers: Endgame" with Tim last night.

5/1
Today I am grateful I did not have to go out in the storm the last couple days.

4/30
Today I am grateful I was able to figure out my son's CRM questions yesterday.

4/29
Today I am grateful for a walk around Park Ridge yesterday.

4/28
Today I am grateful:
-to participate in this year's Global Azure Boot Camp yesterday
-for a visit from my son Nick this weekend.

4/27
Today I am grateful for my first visit to Ottawa when the temperature was above freezing.

4/26
Today I am grateful to successfully complete a project we have been working on for months.

4/25
Today I am grateful I've managed to keep up this "Daily Gratitude" thing for 6 years.

4/24
Today I am grateful for an excellent ramen dinner with my team last night in Ottawa.

4/23
Today I am grateful to arrive safely in Ottawa after many delays.

4/22
Today I am grateful to spend Easter in Michigan with my siblings and their families.

4/21
Today I am grateful to attend the first playoff game at Little Caesars Arena, which was also my first time seeing the Pistons at LCA.

4/20
Today I am grateful for lunch in East Lansing, MI yesterday.

4/19
Today I am grateful to David, Mike, and J. for answering my technical questions yesterday .

4/18
Today I am grateful for a walk around Glencoe Beach yesterday evening.

4/17
Today I am grateful for the opportunity to learn something new every day.

4/16
Today I am grateful for people who reach out unprompted to see how I'm doing.

4/15
Today I am grateful to learn the TV in my building's Community Room has HBO.

4/14
Today I am grateful for this view before I go to bed each night.

4/13
Today I am grateful to finish preparing my taxes in time.

4/12
Today I am grateful to watch lightning splash across the downtown sky last night.

4/11
Today I am grateful for good Project Managers who take over some of my headaches.

4/10
Today I am grateful for good news (I.e., no news) from my surgeon at my follow-up appointment yesterday.

4/9
Today I am grateful to wake up to this view every morning.

4/8
Today I am grateful to spend hours in Andersonville coffee shops yesterday afternoon, reading a detective novel.


AssistantFrank wants to be good. But he keeps doing bad things - really bad things, like armed robbery and rape. Still, he tries to make up for it. Most of the harm he causes is to the Bober family, an immigrant family struggling to keep their Brooklyn grocery store going.

So, Frank volunteers to work in the store at slave wages to make up for his sins. Customers like him and business increases. The family is kept from destitution by Frank's hard work and the fact that he sneaks some of the money he stole back into the cash register.

But soon, he is stealing again from the cash register. And trying to redeem himself again.

The Assistant by Bernard Malamud focuses on 3 characters:

Morris Bober, the impoverished, long-suffering Jewish immigrant grocery store owner. He works 18-hour days, but sees his business and savings evaporating.

Helen Bober, Morris's bright daughter, who defers her dreams of college in order to help support her family.

Frank Alpine, an Italian-American orphan, struggling to survive and to regain his lost morality.

Frank and Helen fall in love, to the horror of their parents, who disapprove of the gentile Frank. And as Morris grows older and weaker and frailer, Frank works himself sick to help the family that he feels he owes.

Ultimately, Frank succeeds the overworked, suffering Morris as his ultimate atonement.

Through Frank's story, Malamud shows us that we are all capable of redemption - no matter how terrible our sins.


GCast 46:

Angular pt 5: Master Detail Components

Continuing the Angular tutorial: Learn how to coordinate the data-bound items in a list with a component showing the selected item.


Episode 561

Adam Hecktman on Civic Tech

Adam Hecktman describes Civic Tech and what Microsoft is doing to help the city and people of Chicago.


It was the early 20th century and ragtime black pianist Coaltrain Walker was returning from New Rochelle to New York City after visiting his fiancée Sarah and their infant son, when he was accosted by a group of white firemen, led by Chief Will Conklin. The firemen demanded he pay a "toll" for driving on their road. While Walker went to fetch a policeman, the firemen vandalized his new car. The policeman took the side of the racist vandals. Soon after, Walker's fiancé died when after being struck by a policeman and receiving inadequate medical attention.

Coaltrain Walker quickly took action. He firebombed the station where he was harassed, he demanded the surrender of Conklin, he demanded the repair of his car, and he demanded an apology. Ripple effects were felt - not only by the society who learned of his violence - but by the white family that had assisted him and his family.

"Ragtime" by E.L. Doctorow looks at race relations in this country

Coaltrain's isn't the only story in this novel, but it is the most important. And the other stories and characters weave together imaginatively. For example, Tateh, a character introduced early in the novel (he is an impoverished artist, who is assisted by the former lover of Mother's Little Brother) reappears later as a fake Baron who makes animated movies.

"Ragtime" attacks race relations in America head on. Often, even those whites who are helpful to blacks still see them as inferior. Walker's experience is insulting enough that we feel sympathy for him, even as he resorts to vigilantism.

There is a network of people affected by this story. We never know the names of some of the most important ones - for example, the family that takes in the fiancée and baby are identified by names like "Father" and "Mother" and "Mother's Younger Brother"; and some are well-known historical figures, such as J.P. Morgan, Harry Houdini, and Robert Peary.

But Doctorow takes us on a journey through many lives and the effects they have on one another.


UnderTheVolcanoUnder the Volcano by Malcolm Lowry takes place almost entirely on a single day - The Day of the Dead in Mexico. It is the day that Geoffrey Firmin's estranged wife Yvonne returns after a year apart, in an attempt to save their marriage. But it is too late. His current relationship with alcohol has replaced his previous relationship with his wife.

It is the last day of Geoffrey Firmin's life.

Geoffrey misses and loves his wife, but he destroys his chance, spending the entire day in a drunken haze, sliding into self-destruction. He is clearly a high-functioning alcoholic and he tests this by drinking more and more as the day goes on.

The novel gives us a look into the mind of Geoffrey, his wife, his brother Hugh, and his old friend Jacque. We get a peek into their actions and memories, and (in the case of Geoffrey) hallucinations. It gives us a look at the problems of substance abuse and the denial inherent in those who suffer it.

Beer, whiskey, tequila, and mescal lead the protagonist on a downward spiral. We know where it ends; but, like a highway accident, we cannot look away.

The title refers to the two volcanoes that loom above the central Mexican City of Quauhnahuac, where the action takes place; but, also to all the unspoken conflict below the guilt and anger felt by the main characters.

Those who know me well will know what memories Geoffrey's behavior triggered in me. In Geoffrey, I saw a version of myself in a period of my life when I embraced the pain inflicted by another, rather than attempting to heal my wounds. Fortunately, I emerged from my self-destructive behavior and recovered (mostly).

Geoffrey did not.


GCast 45:

Angular pt 4: Displaying a List

Learn how to use Angular to bind to a list of items and iterate through that list.


Episode 560

Frank Gill on Azure SQL Database Managed Instances

DBA Frank Gill discusses Azure SQL Database Managed Instances - a cloud-based managed database service. He describes what they are, how they differ from Azure SQL Databases, and when it is appropriate to consider them.

Links:

https://skreebydba.com/
https://twitter.com/skreebydba


AreYouThereGodI have vivid memories of my childhood. I can remember the names of my teachers and of many of my classmates and what the classroom looked like and how it felt when I moved from Maryland to Michigan and had to adjust to a new school. I remember the peer pressure and the angst of feeling like I didn't fit in. I remember noticing girls and not knowing why or what the big deal was or who I would or should be attracted to.

Reading Judy Blume's Are You There God? It's Me, Margaret brought back a lot of those memories and feelings.

11-year-old Margaret Simon moves to a new town and a new school just before sixth grade. She struggles with a lot of things, but one of her main struggles is with her religious identity. Her parents - one raised a Christian and the other raised Jewish - abandoned their religions when their parents objected to their mixed marriage. As a result, Margaret grew up without religion. She feels that she lacks a sense of belonging to a community. As she puts it, she doesn't know whether to join the Y or the Jewish Community Center.

Margaret does have a very personal relationship with God, and she talks with Him frequently, always beginning the conversation with the book's title. She finds comfort in this relationship, but sometimes grows frustrated at God, who does not answer her directly.

I absolutely loved this book! Margaret felt very real to me. It took me back to my 11-year-old self and all the conflict I felt at that time and how important everything seemed to me. When Margaret discovered one of her friends lying, I recall the pain and disillusionment of exactly that same experience. When she described the peer pressure, I could instantly relate, as pre-teen me was overwhelmed by such pressures.

Some of Margaret's issues are exclusive to girls (bras, boys and menstruation); but many are common to both boys and girls of that age. We all struggled to find an identity and our place in the world. Margaret shows us how.


GuyInChicagoSpoiler alert: I've never seen "Diners, Drive-Ins, and Dives", the popular Food Network show in which restaurateur and food-lover Guy Fieri visits good restaurants around the world and shows off their tasty offerings.

But I'm aware of the show and my understanding is that Guy won't televise a visit unless he likes the restaurant. It's likely he won't even visit a restaurant unless someone on the staff has vetted its quality and recommended it.

I'm also aware that Guy has visited 30 restaurants in Chicago. I know this because many of these restaurants proclaim his visit with a large sign and a photo of Guy sporting his trademark grin and spiky hair. Last year, I found the complete list of Chicago restaurants visited for the show and I decided to try them all for myself.

It turns out that 4 of the visited restaurants (Galewood Cookshack, The Depot American Diner, Panozzo's Italian Market, and Chicago Brauhaus) have closed since Guy's visit and that one (Cemitas Puebla) has changed locations. Looking down the list, I saw that I had already visited 4 of them (Smoque, Tre Kronor, Big & Little's, and Saucy Porka)

This left me with 22 remaining restaurants that I had yet to taste.

Game on!

Earlier this week, I visited Tufano's Vernon Park Tap, completing my quest to enjoy a meal at every restaurant.

My conclusions:

There were no bad restaurants in the list. Guy and his staff do their homework, so each one was worth visiting. In some cases, it has been years since Guy's visit; yet the quality of each restaurant remains good.

Not all the restaurants are dives. There were some very nice bistros and tapas bars included and the prices at these places reflected their upscale image.

There were a few outstanding restaurants on the list. My favourites were:

  • 90 Miles Cuban Cafe. I sampled a variety of their Latin-American dishes and all were great.
  • bobNGrill. Creative fusion of hamburgers with Korean spices.
  • La Scarola. The best Italian restaurant I've ever experienced.
  • Smoque. Not quite up to Texas standards, but this place has the best BBQ in Chicago.

There was a lot of variety in the styles of food. I tasted Italian, Mexican, BBQ, Kosher, hamburgers, and a lot of fusion recipes.

Of course, this journey also gave me a chance to explore many different neighborhoods in Chicago. The restaurants tended to be located in the northeast quadrant of the city, which is where most tourists go; but this is a big area and they were scattered throughout.

Chicago has an excellent culinary culture and this show helped me to discover a bit more of it.

Now, I should probably watch the show.


GCast 44:

Angular pt 3: The Hero Editor

Learn how to do 1-way and 2-way data binding in Angular


Episode 559

Lwin Maung on IoT Hardware Options

Lwin Maung shows us various IoT devices and describes the differences between them and the uses for each.


IClaudiusTiberius Claudius Caesar Augustus Germanicus, better known as "Claudius" was a small child afflicted with a limp and a stammer. His family assumed he was mentally impaired, and he spent most of his time studying and writing history. So, he was largely ignored as other members of his family conspired to rule the Roman Empire.

In I, Claudius, Robert Graves gives a first-person narrative of Claudius's life and the early Roman Empire and those that shaped it.

The story begins with the assassination of Julius Caesar and the ascension of Augustus as the first Roman Emperor a few decades before Claudius's birth in 10BC. It concludes with the assassination of the Emperor Caligula, which led to Claudius being named Emperor.

In between are numerous assassinations, betrayals, and political maneuverings as many vie for power in the Empire.

Claudius is the perfect narrator because he is close to the power, without being part of the power. Through him, we encounter some startling evil people, such as:

Claudius's grandmother Livia. She is ruthless in her quest to see her line on the throne - destroying and murdering rivals, including some in her own family.

Caligula, whose extravagance quickly bankrupts Rome when he becomes Emperor, so he resorts to arresting and executing rich men to justify stealing their fortunes.

Tiberius, whose paranoia prevents him from effectively ruling his Empire.

In fact, we encounter very few good people in this "autobiography" (or "Game of Romes", as I like to call it). In addition to murder and assassination, many in power see nothing wrong with incest, adultery, and robbery.

Claudius survives because everyone underestimates him. No one considers him a threat or rival, thanks to his bookishness, submissiveness, and physical shortcomings.

I cannot attest to the historical accuracy of this novel, but I've read that Graves did extensive research before writing it. I can tell you that it is very entertaining. If you enjoy a story of political intrigue and conspiracies, you will likely enjoy I, Claudius.


Femme fatale? Check.

Wisecracking Private Investigator? Check.

Corrupt police chief? Check.

Ruthless criminals? Check.

Fixed boxing match? Check.

Double-crosses? Check.

Back-stabbing (both literal and figurative)? Check.

RedHarvestThese elements are cliché in the noir genre of film and books. But, in 1929, when Dashiell Hammett published Red Harvest, the genre was in its infancy. It was Hammett's success that led others to copy these elements so much that they became clichés.

The unnamed narrator - a private investigator from San Francisco is called to meet with a newspaper publisher in the small town of Personville. Personville is so infiltrated with mob corruption that many people call it "Poisonville". This nickname is reinforced when the publisher is murdered before the narrator meets with him.

The narrator (often referred to as "The Continental Op", because he is an operative for the Continental Detective Agency) is then hired by the murdered publisher's father Elihu Willsson, the most powerful man in town to investigate his son's murder; then to clean the town of corruption. When the Op solves the murder, Willsson tells him to forget about cleaning up the town, but the Op decides to do it anyway.

He does so by setting the rival mobs against one another and the corrupt police force.

As a detective story, Red Harvest does not offer much. Many of the crimes are solved when someone confesses. But as an action story, it is remarkable. Dozens of people are killed in the gang war. And as a study in character, it holds up well. We never know quite what motivates The Op to continue his quest to clean up the town. He is nearly framed for murder for his troubles.

Although Red Harvest falls short of being a classic, its influence on literature and film noir cannot be ignored. And it is a fun read.


GCast 43:

Angular pt 2: The Application Shell

This video walks you through creating the application shell for the Angular Tutorial at angular.io


Episode 558

Melanie Adcock on TechMonthChicago

Melanie Adcock has a passion for the Chicago tech community
She organizes TechMonth Chicago each October to shine a light on the numerous activities at meetups, startup incubators, public libraries, and schools in the city. This includes a website, a printed newspaper, and a semi-monthly radio show on Lumpen Radio 105.5 WLPN.

Links:

http://lumpenradio.com/techscene.html

http://techcopyauthority.com/

https://techmonthchicago.com/


March 2019 Gratitudes

Comments [0]

4/7
Today I am grateful for the Spring Brunch in my building yesterday.

4/6
Today I am grateful for a mid-day nap.

4/5
Today I am grateful I can work from home when it makes sense.

4/4
Today I am grateful
-to have the opportunity to mentor Hubbard High School students with their STEM projects this year.
-to see Mott the Hoople in concert last night

4/3
Today I am grateful to make it back to the gym yesterday for the first time since my surgery.

4/2
Today I am grateful to attend the NCAA Women's Regional Basketball Final in Chicago last night.

4/1
Today I am grateful for:
-Spending the day with Tim
-Lunch with Tim and Natale yesterday
-The Spartans in the Final Four after an exciting victory over the most talented team in the country

3/31
Today I am grateful to attend a hackathon at Georgia Tech this weekend.

3/30
Today I am grateful to visit the Jimmy Carter Presidential Library and Museum yesterday.

3/29
Today I am grateful to attend an OpenHack this week in Chicago and learn a lot about managing data in Azure.

3/28
Today I am grateful to see Nick Moss and Dan Carelli at Buddy Guy's Legends last night.

3/27
Today I am grateful that so many others from the CSE team are in Chicago this week.

3/26
Today I am grateful for dinner with Brent last night.

3/25
Today I am grateful for an exciting NCAA basketball tournament.

3/24
Today I am grateful to deliver my first community presentation of 2019 yesterday.

3/23
Today I am grateful to the lady who comes to my home every month to clean it.

3/22
Today I am grateful to spend time yesterday with my team.

3/21
Today I am grateful to work from home for a few days while I recover.

3/20
Today I am grateful for good health insurance.

3/19
Today I am grateful for everyone's prayers yesterday.

3/18
Today I am grateful to witness the Spartans win another championship at the United Center yesterday.

3/16
Today I am grateful for lunch with Nick yesterday

3/15
Today I am grateful
-to deliver a guest lecture at Michigan State University yesterday
-to see "Miss Saigon" in East Lansing with Amanda last night.

3/14
Today I am grateful for bike-riding weather.

3/13
Today I am grateful for the new speaker on my TV.

3/12
Today I am grateful for a choice of many coffee shops to work in when I feel like it.

3/11
Today I am grateful for 3 days in Bellevue.

3/10
Today I am grateful to be part of a successful IoT hackathon at T-Mobile this weekend.

3/9
Today I am grateful for breakfast with Josh yesterday.

3/8
Today I am grateful for 4 days in Toronto - one of North America's great cities!

3/7
Today I am grateful to learn so much about IoT and Azure this week.

3/6
Today I am grateful for dinner last night at the top of the CN Tower overlooking downtown Toronto.

3/5
Today I am grateful that my son sometimes calls me just to chat.

3/4
Today I am grateful to see "Hamilton: The Musical" yesterday.


TheHeartOfTheMatterGeorge Scobie is a British policemen, who has been living and working in a west African colony for the past 15 years. World War II now rages around him, but he and is wife Louise are isolated in a small port city, far from the civilization they knew. The love has long evaporated from their marriage and Louise is unhappy with her life and begs George to buy her a ticket to South Africa. George cannot afford the ticket on his small salary, so he borrows the money from a local black marketer of questionable scruples. After Louise's departure, George begins an affair with the recently-widowed Helen Rolt.

This is the happy plot of The Heart of the Matter by Graham Greene.

It is not an adventure story because very little action takes place. It is not a love story, because George clearly does not know what love is, although he tells himself that he does.

It is an exploration of the mind and sould of a weak, but well-intentioned man, who struggles with morality and his choices and his sins.

George Scobie tries to be a good man; but he is never honest with himself - even deluding himself into believing his affair is kept secret from others in town. He is weak: He recognizes and confesses his sin; but is powerless to keep stop from repeating it. His best trait is that he does not want to hurt anyone. He is motivated by pity (an emotion he often mistakes for love) and he tries to find a solution that will hurt neither Helen nor Louise. Invevitably, everyone is hurt by his inactions.

Scobie is a practicing Catholic, but he cannot go to confession because he knows his adultery will continue and, therefore, will not receive absolution. He is tempted by suicide, but his religion has taught him this is an unforgiveable sin that will result in eternal damnation.

In the end, this unrepentant sinner rationalizes a path that he thinks will hurt the least number of people; but, ultimately has no positive impact on anyone.

The Heart of the Matter raises moral questions, but leaves it to the reader to answer them.


Yeah, it's a mighty long way down rock 'n' roll!
As your name gets hot so your heart grows cold!
And you gotta stay young man, you can never be old!
All the way from Memphis!

-Mott the Hoople

MottTheHoople (1)In 1974, Mott the Hoople recorded and released a live album, probably without realizing it would be their last. Ian Hunter's decision to pursue a solo career led to the band's breakup a few months after the album's release.

In 2019, the surviving members - guitarist/vocalist Hunter, keyboardist Morgan Fisher, and guitarist Ariel Bender - reunited to tour North America. Wednesday night, that tour landed at the Chicago Theatre and a legion of gray-haired and graying haired fans came to pay tribute.

The opening act was The Suburbs - a pretty good band from Minneapolis, whose music sounded like the synth-heavy, horns-enhanced music of 1990s MTV. The singer joked "As you can tell, we are very young", even though gray hair sat atop the heads of most of the band members. They filled a pleasant 40 minutes.

Around 9PM, the stage darkened, and the recorded music of Gustav Holst filled the theatre as Mott the Hoople marched onstage. The spotlight shone on Hunter and Fisher, who performed an acoustic version of the opening of Don McLean's "American Pie". After the line about "the day the music died", Hunter asked: "Or did it?" and the rest of the band launched into an energetic version of "The Golden Age of Rock 'N' Roll". They had begun the concert exactly as they had begun the 1974 tour!

For almost 2 hours, this trio and the five others in the band entertained a theatre full of aging rock fans. The band consisted of keyboards, guitars, bass, drums, and one virtuoso, who kept switching instruments.

MottTheHoople (2)Through power rock and rockabilly and ballads, the band kept the audience on their feet, singing along and cheering on the heroes of their youth. Mott the Hoople was known for great originals, like "All the Way from Memphis" and covers like Lou Reed's "Sweet Jane" and they played plenty of both on this night. Other highlights of the night were "I Wish I Was Your Mother", "Roll Away the Stone", and "Walking with a Mountain", which featured a blistering guitar solo by Bender. For local color, they sang the chorus of Hunter's hit "Cleveland Rocks", replacing the iconic line with "Chicago Rocks" to the pleasure of the locals. On the rock numbers, the band sometimes featured 4 guitar players - not counting the bass guitar.

Of course, they finished the night with David Bowie's "All the Young Dudes" - Mott the Hoople's biggest hit.

It was amazing how much the band sounds the same, despite 45 years apart and vocal chords and fingers that are in their seventh decade. More impressive was how much fun they seemed to be having and how that fun energy transmitted itself to an audience. Band members and audience members connected with one another and for a couple hours, it was as if all the years had not passed and we were all still young fans and rock gods.


GCast 42:

Angular pt 1: Getting Started

Learn how to install Angular and its prerequisites and build a simple Angular application using the CLI.


Episode 557

Brent Stineman on the Evolution of Serverless

Brent Stineman describes Serverless cloud technologies and how they have evolved to make applications more flexible.


IAmMalalaIt was October 9, 2012, just after noon. A group of Taliban terrorists boarded a bus in Swat District, Pakistan and shot 15-year-old Malala Yousafzai in the head. They targeted her for pursuing an education for herself and for promoting education for women - something The Taliban insist is forbidden by the Quran. They left her for dead.

But Malala did not die. Thanks to emergency medical attention in Pakistan, and further treatment in the UK, she survived to become an international advocate for female and youth education. Two years later, she was awarded the Nobel Peace Prize (the youngest Nobel recipient in history), and she wrote I Am Malala: The Story of the Girl Who Stood Up for Education and Was Shot by the Taliban - a book chronicling her story.

Malala describes her home province as a beautiful landscape that serves as a vacation destination for many Pakistanis; but it is also a battleground between the Pakistani army and the Taliban - a fundamentalist terrorist organization that seeks power for itself and strict adherence to Muslim law. They strive to achieve these goals through violence and intimidation.

Malala's story starts long before the attack on the bus. Her father Ziauddin ran the school that his daughter attended. He was progressive enough to allow girls into his school and generous enough to allow some of the poorer students to stay and eat at the family's home. Ziauddin was an outspoken proponent of education for all, which hid not endear him to groups like the Taliban. At a young age, Malala herself began writing an anonymous blog, promoting the right to education for all.

The book's writing style reminds us that Malala is still a school girl; but the message is a powerful, adult one: A young girl's courage to stand up to terrorism, violence, and oppression can inspire us all.

I became aware of Malala shortly after her recovery from the assassination attempt, when she began speaking publicly and meeting with international officials, such as Barack Obama and Queen Elizabeth. But I was unaware that she had been fighting for these things for most of her life. She was awarded Pakistan’s first National Peace Award for Youth at the age of 14 - an award that now bears her name.

She grew up during a turbulent time in northern Pakistan. National politicians largely ignored the remote region, except during elections. Political power in the district was concentrated among a few families. Drone attacks from the U.S. in the area and suspicion of U.S. spies led to a general distrust of America by the locals. The U.S. Military discovered Al-Qaeda leader Osama Bin Laden hiding in a compound a few miles from Malala's home and killed him during a raid. The Pakistani military did not assert its full power to maintain the safety of the citizens. All these factors allowed the Taliban to gain influence in the area and eventually assert control at least as strong as the Pakistani military. The Taliban arrived when Malala was 10 years old. They steadily increased their power in the region by recruiting the disenfranchised and by terrorizing any who disagreed with their interpretation of Islam.

I am Malala was co-written by British journalist Christina Lamb, but it still retains the voice of a teenage girl, concerned with her friends and her clothes and arguing with her brothers; but also recognizing the importance of what she and her father are doing. And having the courage to voice that importance. Malala Yousafzai miraculously survived an assassination attempt at point-blank range; and she seized the opportunity to spread her message throughout the world. This book is part of that.


GCast 41:

Using the PowerPoint Selection Pane

The Selection Pane is a little-used PowerPoint feature that can make it easier to manage a complex slide.


Episode 554

Bret Stateham on IoT Edge

Bret Stateham describes how to effectively use IoT Edge to move some of your processing and logic closer to your IoT devices.


RabbitRunHarry "Rabbit" Angstrom isn't much good at anything. In high school, he was an outstanding basketball player, but he has accomplished little since then. After tasting that early success, life feels empty at 26 - trapped in a boring job and a loveless marriage to an alcoholic wife.

So, one day, he abandons his pregnant wife Janice and their toddler son and moves in with a prostitute.

Rabbit - the main character of John Updike's 1960 novel Rabbit, Run - is decidedly unlikeable. He is self-absorbed and shallow and oversexed and manipulative. Still, those around him seem to like him and are more than willing to give him multiple chances to prove his integrity. It may be because he says and does whatever comes into his head. But his tendency toward immediate gratification is his main problem and often comes at a high cost to others. Rabbit never considers the consequences of his actions or the people he hurts as he runs from his responsibilities and obligations.

In particularly examples of self-absorption and manipulation, he coerces his lover into performing fellatio, because he learns she once did it for someone else. The next morning, he abandons his lover and returns to his wife without even a phone call. A few weeks later, he storms out of his apartment when his wife refuses to have sex with him shortly after giving birth.

Updike has a way of keeping the reader engaged, even during the most mundane moments. We see inside Rabbit's mind and feel his rationalizations. But the story isn't just about Rabbit. Updike tells the thoughts of the others in Rabbit's lives and their troubles. And many of them also run from their troubles - particularly Janice, who escapes into alcohol.

Of course, the most dramatic parts of the story are also engaging. I could not look away as Updike described the inevitable tragedy near the end of the book. Rabbit's wife is home with their baby, and she is drinking when "the worst thing that has ever happened to any woman in the world has happened to her." We see it coming a mile away, but it is still a shock, when it happens.

Rabbit, Run is a good look into the psyche of an American male trying to find himself, and what happens when he focuses too much on that goal.


<< Older Posts | Newer Posts >>