Episode 553

Jennifer Marsman on AI for Earth

Jennifer Marsman describes how Microsoft's AI for Earth team is using data to make the world a better place.


February 2019 Gratitudes

Comments [0]

3/3
Today I am grateful that my shower is finally fixed.

3/2
Today I am grateful for the many kind words posted here yesterday.
   
3/1
Today I am grateful for another successful trip around the sun.

2/28
Today I am grateful for someone to recruit me personally and sincerely (even though I'm not going anywhere).

2/27
Today I am grateful to Tim for helping me connect my sound bar to my TV last night.

2/26
Today I am grateful for my personal trainer.

2/25
Today I am grateful for a Spartan victory over um in both men's and women's basketball yesterday.

2/24
Today I am grateful for my new living room furniture.

2/23
Today I am grateful to sleep in this morning.

2/22
Today I am grateful to live close to so many good restaurants.

2/21
Today I am grateful for the opportunity to mentor high school students on their STEM projects in southwest Chicago yesterday.

2/20
Today I am grateful for a hot bath on a cold afternoon.

2/19
Today I am grateful for cheeseburgers with Tim last night.

2/18
Today I am grateful to see bluesman Jimmy Johnson at The Lagunitas Tap Room last night.

2/17
Today I am grateful that I finally bought a new couch for my home to replace the beat-up old furniture I've been living with all these years.

2/16
Today I am grateful for a call from Kevin last night.

2/15
Today I am grateful to see a home Chicago State University basketball game last night for the first time.

2/14
Today I am grateful I finally got my broken Surface Book replaced.

2/13
Today I am grateful for a walk around central Ottawa with my team in last night's snowfall.

2/12
Today I am grateful for an unexpected jazz big band at dinner last night.

2/11
Today I am grateful to see an overtime Bruins-Avalanche game yesterday in Boston.

2/10
Today I am grateful for my first visit to Williamstown to see Nick this weekend.

2/9
Today I am grateful to attend my first home Williams College basketball game last night.

2/8
Today I am grateful to see an exciting Lakers-Celtics game on my first visit to TD Garden last night.

2/7
Today I am grateful for 3 consecutive days with my personal trainer.

2/6
Today I am grateful to see an exciting basketball game in Champaign last night.

2/5
Today I am grateful to the friend who reached out to me when he noticed I was down.

2/4
Today I am grateful for a chance to donate blood yesterday for the first time in years.


APassageToIndiaAziz was a doctor and a father and a widow living in central India during the time of British colonization.

He was friendly and open with the English people and become close with some of those visiting, including the elderly Mrs. Moore, Adela Quested, who was engaged to Mrs. Moore's son, and Cyril Fielding, who ran a nearby government college. One day, Aziz invited some of his new friends to explore nearby caves.

During their spelunking expedition, Adela and Aziz were separated. Adela became disoriented inside a cave and later accused Dr. Aziz of trying to rape her.

Aziz's guilt was assumed, and the trial began quickly.

In A Passage to India, E.M. Forster focuses more on his characters than on the action of those characters and the most interesting character in the novel is Dr. Aziz.

Falsely accused by one he trusted and to whom he showed kindness, Aziz re-evaluates his attitude toward the British colonizers.

The novel explores the difference between the cultures and the attitudes of the English and Indians. It shows the bigotry inherent in colonialism, particularly (but not solely) among the English. Sometimes that bigotry is explicit, as many English consider themselves superior to the Indians - or any darker race, for that matter. Sometimes, it is more subtle, as when the English authorities and population are more likely to believe the false accusations of Adela, even before the trial begins.

The book explores whether personal friendships can exist under the shadow of colonialism. Aziz's opinion on this subject changes, after he is falsely accused.

A Passage to India is a beautifully written novel that makes the reader feel for the characters and think about the relationship between people, countries, and races.


Azure Search allows you to create a service making your own data searchable, in much the same way that public search engines like Google and Bing make data on the Internet searchable.

In previous articles, I showed how to create an Azure Search Service; and how to import and index data in that service.

In this article, I will show how to use a REST API exposed by the Azure Search service to return indexed results, based on search criteria.

You can do some limited searching using the Azure portal. Navigate to the Azure portal and login; then, navigate to the Azure Search service, as shown in Fig. 1.

as01-OverviewBlade
Fig. 1

Click the [Search explorer] button (Fig. 2) to display the "Search explorer" blade, as shown in Fig. 3.

as02-SearchExplorerButton
Fig. 2

as03-SearchExplorerBlade
Fig. 3

At the "Query string" field, you can enter a search term and click the [Search] button to return all the data (in JSON format) that matches the search term in any field you marked "FILTERABLE" in your index. Clicking the [Search] button issues an HTTP GET against the Search service's REST API. The results are shown in Fig. 4.

as04-SearchExplorerResults
Fig. 4

You have more flexibility calling the REST API with a POST request. This is not possible through the portal; but you can use a tool like Postman to make these requests.

The URL to which you POST can be found on the Azure service's "Overview" tab, as shown in in Fig. 5.

as05-Url
Fig. 5

The URL takes the form:

https://.search.windows.net

where is the name you assigned to this service.

You will also need the Query key. You can find the Query key by opening the Azure Search service's "Keys" blade (Fig. 6) and clicking "Manage query keys" to display the "Manage query keys" blade, as shown in Fig. 7.

as06-KeysBlade
Fig. 6

as07-ManageQueryKeys
Fig. 7

To test POSTing to the REST API, open Postman and open a new tab, as shown in Fig. 8.

as08-Postman
Fig. 8

At the Verb dropdown, select "POST".

At the "Request URL" field, paste in the URL. This will be the URL copied from the "Overview" tab, followed by "/indexes//docs/search?api-version=2017-11-11

where is the name of the index you created in the Azure Search service.

This is shown in Fig. 9.

as09-PostmanParamsTab
Fig. 9

Select the "Headers" tab, as shown in Fig. 10.

as10-PostmanHeaderTab
Fig. 10

Enter the following 2 key/value pairs:

Key="api-key"; value=the Query key copied from the service.

Key="Content-Type"; value="application/json"

These are shown in Fig. 11.

as11-PostmanHeaderTab
Fig. 11

Select the "Body" tab to enter search parameters, as shown in Fig. 12.

as12-PostmanBodyTab
Fig. 12

The example shown
{
   "select": "*",
  "filter": "state eq 'IL'",
  "orderby": "presentationDate desc"
}

instructs the API to select all the fields' to filter the data, returning only those in which the "state" field equals "IL"; and sort the results in descending order by presentation date.

The results are shown in Fig. 13.

as13-PostmanResults
Fig. 13

In this article, you learned how to use the REST API to access an Azure Search service.

Click  the [Send] button to POST to the API.


GCast 37:

Managing Blobs with the Azure Storage Explorer

The Azure Storage Explorer is a free resource to manage Azure Storage Accounts.
This video shows how to manage Azure blobs with this tool.


Azure Search allows you to create a service making your own data searchable, in much the same way that public search engines like Google and Bing make data on the Internet searchable.

There are three steps to configuring Azure Search:

  1. Create Azure Search Service
  2. Create Index
  3. Import data

In a previous article, I showed how to create an Azure Search Service.

This article will show how to import data into Azure Search service; then index that data.

Navigate to the Azure portal and log in.

For this demo, I am indexing a Table in Azure storage containing information about my public speaking events, as shown in the Azure Data Explorer in Fig. 1.

as01-TableData
Fig. 1

Open your Azure Search Service, as shown in Fig. 2.

as02-OverviewBlade
Fig. 2

Click the [Import data] button (Fig. 3) to display the "Import data" blade, as shown in in Fig. 4.

as03-ImportDataButton
Fig. 3

as04-ImportDataBlade
Fig. 4

At the "Data Source" dropdown, select "Azure Table Storage", as shown in in Fig. 5.

as05-DataSourceTableStorage
Fig. 5

The "Connect your data" tab displays, as shown in Fig. 6.

as06-ConnectYourData
Fig. 6

At the "Name" field, enter a name for this data source.

At the "Connection string" field, click "Choose an existing connection" and select the storage account containing your data, as shown in Fig. 7.

as07-ChooseConnection
Fig. 7

At the "Table name" field, enter the name of the table containing your data.

Click the [Next] buttons at the bottom of the tab until you advance to the "Customize target index" tab, as shown in Fig. 8.

as08-CustomizeTargetIndex
Fig. 8

This tab displays all the fields in your data. Here you can select which fields can be retrieved, which can be filtered on, which can be sorted on, etc.

After making all your selections, click the [Next: Create an indexer] button at the bottom of the tab to advance to the "Create an indexer" tab, as shown in Fig. 9.

as09-CreateIndexer
Fig. 9

On this tab, you can configure how often your index will be updated from data changes. You can also decide whether to remove deleted items from your index (which will slow down indexing).

Click the [Submit] button to begin the first indexing and set the indexing schedule as configured.

A few minutes after the indexer runs, you should see the DOCUMENT COUNT and STORAGE SIZE values in the "Indexes" tab of the Search Service's "Overview" blade, as shown in Fig. 10.

as10-IndexesTab
Fig. 10

In this article, I showed how to import data into an Azure Search Service; then index that data.

In a future article, I will show how to call the search service.


Azure Search allows you to create a service making your own data searchable, in much the same way that public search engines like Google and Bing make data on the Internet searchable.

Before you can begin using Azure Search, you must perform the following actions:

  1. Create Azure Search Service
  2. Create Index
  3. Import data
  4. Index the data

This article will show how to create an Azure Search Service.

Navigate to the Azure portal and log in.

Click the [Create a Resource] button (Fig. 1) to display a list of Azure resource categories.

as01-CreateResourceButton
Fig. 1

At the Search box, enter "Azure Search" and press Enter, as shown in Fig. 2.

as02-SearchAzureSearch
Fig. 2

From the list of matching services, click on "Azure Search", as shown in Fig. 3.

as03-SelectAzureSearch
Fig. 3

A blade describing the features of Azure search displays, as shown in Fig. 4.

as03-SelectAzureSearch
Fig. 4

Click the [Create] button at the bottom of this blade.

The "New Search Service" blade displays, as shown in Fig. 5.

as04-CreateAzureSearch
Fig. 5

At the "URL" field, enter a unique name for this service. The service will expose a REST endpoint with the URL: https://xxxx.search.windows.net, where xxxx is the name you enter here.

At the "Subscription" dropdown, select the Subscription in which you want to store this service.

At the "Resource group" dropdown, select the resource group in which to store this service or click the "Create new" link to add a new resource group, as shown in Fig. 6.

as06-NewResourceGroup
Fig. 6

At the "Location" dropdown, select the region in which you want to store this service. The region should be near the users of the service or near the data you intend to index.

At the "Pricing tier" field, select an appropriate pricing tier. Clicking this field expands the "Choose your pricing tier" blade (Fig. 7), which displays the approximately monthly cost and the features of each tier.

as07-PricingTier
Fig. 7

When you have completed all the fields in the "New Search Service" blade, click the [Create] button to create the service.

When the service is created, you can navigate to it, as shown in Fig. 8.

as08-OverviewBlade
Fig. 8

This article showed how to create a new Azure Search Service. In the next article, we will create an Index for this service.


Episode 552

Hilary Weaver-Robb on Front-End and UI Testing

"QA and Testers are the glue that holds teams together." Hilary Weaver-Robb describes how her team approaches software testing, how testers and developers work together toward the same goal, and some of the tools she uses.


InvisibleManThe unnamed African-American narrator of Invisible Man by Ralph Ellison recounts his life, growing up in the south; attending, then being expelled from a traditionally black college; emigrating to Harlem and taking up a group calling themselves "The Brotherhood", from which he ultimately separates. He does his best to assimilate with those he meets, repeatedly ceding his own ideas and identity; but it ends up for naught as he becomes more and more "invisible".

After discovering the narrator rescuing an evicted tenant from an angry mob, The Brotherhood recognizes his talent for persuasive speech and for mobilizing a crowd and he soon becomes the voice of this organization in Harlem. We are never given a clear picture of what The Brotherhood stands for. They support vague statements, such as "equality" and "the woman issue", but we know nothing of their details for achieving these goals. They may represent the Communist party, with which Ellison had a brief relationship. But they consolidate their power by manipulating others, including the black community of Harlem. When it suits their needs, they turn on the narrator and reverse their commitment to the local black community.

The Narrator loses ground every time he tries to assert his own opinions and his own characters. This leads him to label himself "invisible".  He is punished every time he asserts himself. When he acquiesces to those around him, he achieves temporary success, but he cannot maintain this success, as those in power shift their goals and expectations.

The book is filled with bizarre scenes that sometimes give it a surreal feeling. In one scene, a poor black farmer recounts in embarrassing detail how he came to impregnate his own daughter. In another scene, the narrator is forced to fight blindfolded against dozens of other black men to entertain a white audience, as a prerequisite to earning a college scholarship.

But Invisible Man is also filled with a very real, very poignant story about a young man trying to achieve success. He is thwarted because of the color of his skin; but also, because the system is stacked against anyone who tries to follow their own path.

He summarizes his position, as follows:
"I was pulled this way and that for longer than I can remember. And my problem was that I always tried to go in everyone's way but my own. I have also been called one thing and then another while no one really wished to hear what I called myself. So, after years of trying to adopt the opinions of others I finally rebelled. I am an invisible man."

To some extent, we all face a battle between success and invisibility; balancing our own goals with the goals of society. It is hard enough for those born into a position of privilege. But even harder for a black man living in 20th century America.


GCast 36:

Managing Tables with the Azure Storage Explorer

The Azure Storage Explorer is a free resource to manage Azure Storage Accounts.
This video shows how to manage Azure tables with this tool.


Episode 551

Jeremy Miller on Automated Testing in .NET Core

Jeremy Miller describes how testing ASP.NET applications is simpler with ASP.NET Core. He discusses the modularity of .NET, the lack of dependencies on IIS, and his open source testing project Alba.


"Atonement" by Ian McEwan

Comments [0]

AtonementCecilia Tallis and her Robbie Turner were making love in the Tallis family home when Cecilia's 13-year-old sister Briony saw them. Later, Briony witnessed the rape of her cousin in the darkness outside their home.

Despite getting no good look at the rapist, Briony's overactive imagination and her desire for attention lead her to wrongly accuse Robbie, sending him to prison.

This is the setup of Atonement by Ian McEwan.

It is the story of an aristocratic English family torn apart by a scandal and lives ruined by a lie and the lifetime of guilt that comes with the telling of the lie.

The book follows the 3 main characters at various points in their lives, following the initial scandal. World War II breaks out and Robbie enlists in the infantry after he is released from prison, while Briony and Cecilia work as nurses. McEwan gives us a look inside their heads (particularly Robbie and Briony) and how the incident affected them. The images of the war in Europe and the hospitals in England are particularly intense.

A final chapter takes place decades later with an aging Briony returning to the family home. Here we learn that the story is even more tragic than we originally believed.

The atonement itself is less satisfying than most readers will hope for. But Atonement the novel is a very good story of psychology and pain and guilt.



GCast 35:

Customizing Microsoft Teams

Microsoft Teams is a set of tools that help users collaborate with one another. Learn how to create a new Team, add a Channel to an existing team, and add a Tab to an existing Channel.


Episode 550

Cassandra Faris on Personal Branding

Cassandra Faris talks about her involvement with the developer community and how she has managed her personal brand.


GoTellItOnTheMountainSet against the backdrop of black families and churches in Harlem and in the American southeast during the Great Depression, Go Tell It on The Mountain by James Baldwin takes us through the struggles of a family dealing with God, religion, and temptation, sin, guilt, and redemption.

The story begins ends with John Grimes on his 14th birthday. John is troubled by his relationship with God, which is negatively affected by John's poor relationship with his unloving stepfather - an evangelical preacher at a Harlem storefront church.

But most of the book's stories are told in flashbacks: We learn of John's birth father, who was arrested and beaten by police because he was a black man walking around the city at night; We learn of John's aunt, who left home because her mother reserved her love for another child; and we learn of John's stepfather Gabriel.

Gabriel grew up a wild youth in the south. After years of rejecting God, Gabriel is saved and decides to become a preacher. His idealism helps him, but his weaknesses hinder him. Desperately desiring a son, Gabriel is frustrated at his wife's inability to conceive. He meets Esther at church, who flirts with him. A brief extramarital affair with Esther results in a bastard son, which Gabriel tries to cover up by stealing his wife's money and sending Esther out of town, thus compounding his sin. Like nearly all of us, Gabriel falls short of what he seeks to become; but his greatest weakness is his inability to accept personal responsibility for his mistakes. Consistently, he blames others for his own failings. This hypocrisy hinders his desire for forgiveness - from himself, from others, and from God. As he grows older, Gabriel becomes more bitter and unloving.

The most powerful scene of the novel is when Gabriel finally confesses his illegitimate son Royal to his wife Deborah after learning that the teenage boy has been murdered. Royal never knew his father, but Deborah knew all along. Deborah does not chastise Gabriel for his infidelity; instead, she chastises him for not helping Esther when she needed his aid and for not taking in his infant son after Esther's death and for not accepting the gift that God gave him.

The language of Mountain poetic, mixing references from Gospel hymns and the King James Bible. It is a beautiful story that is well told, even though it describes many ugly things.

Hours after finishing it, I was haunted by the characters and their actions and the circumstances that shaped them.


GCast 34:

Exposing Local Web Apps with ngrok

Learn how to speed up development and testing by using ngrok to expose to the public Internet web applications running on your local machine.


StrideTowardFreedomIn 1954, 25-year-old Dr. Martin Luther King, Jr. moved to Montgomery, AL to lead a small Baptist Church. Alabama of the 1950s was known for embracing "Jim Crow Laws" - which enforced racial segregation by bogusly claiming "separate but equal" services.  Among these laws were rules giving preference to white passengers on public buses.

In 1955, King helped organize a boycott of the Montgomery bus system after Rosa Parks was arrested for refusing to give up her seat for a white passenger. The protest lasted for over a year and ultimately resulted in the U.S. Supreme Court ruling that the segregation laws of Montgomery were unconstitutional.

Stride Toward Freedom: The Montgomery Story, Dr. King gives his firsthand account of the historic boycott. It is a moving story of strength and prejudice and perseverance and hatred and solidarity and bigotry.

The white establishment in Montgomery fought to end the boycott and to defend their segregationist laws. The protest was noted for embracing King's philosophy of Non-Violent Resistance, encouraging local blacks not to respond to white violence and threats of violence with violent acts of their own.

In between King's narrative, he describes how he came to his Non-Violent Protest philosophy, what it means, and how it could be effective. King embraced similar philosophies promoted by Jesus Christ and Mahatma Gandhi.

Ultimately, the Montgomery boycott was successful because of the U.S. court system, which took a position based more on fairness and constitionality than on maintaining the status quo.

King concludes this book by taking stock of where the country was regarding race equality following the events in Montgomery. He notes that equality is a national - not a regional - issue and he calls out many who were not doing enough, including the President, Congress, and people in both the North and the South.

I was struck by how little the boycott organizers demanded from the city (they did not ask to end segregation) and how forcefully the local police harassed the protestors (volunteer cab drivers were detained and those waiting for rides were arrested for loitering). It is unlikely that change would have taken place in Montgomery without the intervention of the Supreme Court.

Stride Toward Freedom is an excellent history of one of the most significant events of the U.S. civil rights movement. But it is also an inspirational story of what a small group of very determined people can do to change the world when they know they are right.

The United States has made progress since 1954. But we still see the ugly specters of racism and bigotry today.


Jennifer Wadella on Gatsby

Comments [0]

Episode 548

Jennifer Wadella on Gatsby

Jennifer Wadella describes how to use the Gatsby tool to quickly create static web sites.

Links
https://www.gatsbyjs.org/

January 2019 Gratitudes

Comments [0]

Today I am grateful that United Airlines found and returned my lost Kindle.

2/3
Today I am grateful that the worst of the polar vortex weather is behind us.

2/2
Today I am grateful to see Wanda Sykes in concert last night.

2/1
Today I am grateful for 1 year in my condo.

1/31
Today I am grateful that United Airlines found and returned my lost Kindle.

1/30
Today I am grateful for my new electric blanket, which arrived just in time for this polar vortex.

1/29
Today I am grateful for a week in London.

1/28
Today I am grateful for sightseeing in London yesterday with Brent, David, and Michael, including:
-a trip to the top of The Shard
-a visit to the Churchill Museum and War Room
-a cruise along the Thames
-a quest for Sunday roast!

1/27
Today I am grateful for a much-need 11 hours of sleep last night.

1/26
Today I am grateful for lunch with Andy yesterday.

1/25
Today I am grateful for everyone who helped make yesterday's meeting a success.

1/24
Today I am grateful:
-to visit St. Paul cathedral yesterday afternoon with Brent, David, and Michael
-to see my first play in London's famous West End theatre district with Jonathan.

1/23
Today I am grateful that the winter storms in Chicago last night did not cancel my transatlantic flight.

1/22
Today I am grateful for an extra blanket last night.

1/21
Today I am grateful to watch football with Tim yesterday.

1/20
Today I am grateful for the excitement of college basketball.

1/19
Today I am grateful for my new Kindle Oasis.

1/18
Today I am grateful for the ability to connect with people through social media when I cannot connect with them in person.

1/17
Today I am grateful for Thai food with Dan yesterday.

1/16
Today I am grateful for dinner last night with Timothy and Sanjeev.

1/15
Today I am grateful to visit Ottawa, ON for the first time in 12 years.

1/14
Today I am grateful for a gym in my building.

1/13
Today I am grateful to watch yesterday's snowstorm through my window from a warm living room.

1/12
Today I am grateful to all the volunteers who continue to make CodeMash a great conference year after year.

1/11
Today I am grateful for the generosity of Brian and Jonathan.

1/10
Today I am grateful to see so many old friends this week.

1/9
Today I am grateful to learn how to play Hanabi last night.

1/8
Today I am grateful for:
-A return to my old user group
-Driving to Sandusky last night with Jonathan and Jennifer

1/7
Today I am grateful to Ondrej and Desislava for their hospitality.


London Calling Me Back

Comments [0]

 IMG_3448_edited-1It took me over half a century to make my first visit to London. It took about two months for me to return.

I scheduled this trip to meet with a partner and help them design software for their educational software and to meet with UK teachers to get their input. After making these plans, I learned that a colleague was hosting a Hackfest for one of his customers; so, I was also able to serve as a mentor at that event while I was in London.

1 trip: 2 projects for 2 customers. Sounds like a win!

IMG_3391_edited-1I arrived at Heathrow Wednesday morning and rode the Heathrow Express high-speed train into London with my friend Michael. Michael invited me to go sightseeing with Brent and David later that afternoon. I accepted, even though it conflicted with my initial plan to sleep most of the day. After a brief nap and email catch-up, the four of us visited the Sky Garden observation deck over central London and St. Paul Anglican Cathedral. St. Paul is a beautiful house of worship and I was nearly wiped out after climbing over 500 steps to the top of the dome.

IMG_3405_edited-1After St. Paul, I said goodbye to Michael, Brent, and David and met my friend Jon for dinner at an excellent Italian Tapas restaurant (I didn't even know Italian Tapas was a thing), where we shared a variety of regional dishes. After dinner, Jon and I walked to the Duchess Theatre to see "The Play That Goes Wrong" - a hilarious farce about an incompetent theater company with very bad luck. It was my first time seeing a show in London's famous West End - an area comparable to New York's Broadway - and I was fortunate to secure front-row tickets.

Thursday was my first client meeting, which lasted most of the day. We did not accomplish everything we intended, but we got a lot done in the 5-hour design session. Thursday evening, I invited Frances, the Partner Manager to join Michael, Brent, David, and I for a dinner of fish and chips.

Friday and Saturday, I attended the Hackfest, where I served as a mentor, assisting customers in building IoT and ML projects. It was a juried event, with prizes awarded to the teams with the best hacks. The Hackfest began on Thursday, so I was a day late getting started, but I was happy to see that, when prizes were announced, the two teams I assisted the most finished in First and Second place.

IMG_3363_edited-1Sunday was a free day and the Brent, Michael, David, and I took advantage by experiencing London as typical foreign tourists. We began at The Shard, a building named for its unique shape. The Shard offers the highest observation deck in London and spectacular views of the city. From the Shard, we walked across Tower Bridge to the Tower of London. We had heard that Sunday Roast was a British tradition, so we set out on a long and ultimately successful quest that led us to 4 different restaurants before we found our goal. After filling our bellies, we visited the Churchill War Rooms. This is where Prime Minister Winston Churchill and his staff planned their World War II military strategy beneath a government building as the Germans bombed London above. The large space included reconstructions of the strategy rooms, an audio tour, and a museum dedicated to the life of Churchill. After sunset, we then took a cruise along the Thames, which offered beautiful - but chilly - views of the city. We finished the long day with a late dinner before I took a train to my hotel and passed out from exhaustion.

IMG_9831My homebound flight was scheduled Monday afternoon, so I took an hour before heading to the airport to visit the Sherlock Holmes Museum, located at 221B Baker Street, the boarding house where Arthur Conan Doyle's fictional detective and his partner Watson lived, while solving cases.

It's rare that I'm able to pack so much into a work trip, but I was assisted by the planning that others did in advance. I feel that I have a much better feel for London than after my first visit. I've already made a list of things to see on visit #3.


I've been posting updates to Facebook for over 10 years now. Sometimes, I want to find one or more old posts. There are several ways to view your posts.

Timeline

The simplest way to view your information is on your profile page. You can access your profile page by clicking on your name to the right of the SEARCH box or below the SEARCH box on the Facebook home page. These 2 buttons are circled in red in Fig. 1.

dfb01-FacebookHome
Fig. 1

The profile page is shown in Fig. 2. By default, this shows the "Timeline" tab in the List view.

dfb02-TimelineListView
Fig. 2

If the "Timeline" tab is not selected, you can select the "Timeline" link near the top of the page. Hover over this link to select either the List View or the Grid View from the dropdown menu, as shown in Fig. 3.

dfb03-TimeLineButton
Fig. 3

The Grid view is shown in Fig. 4.

dfb04-GridView
Fig. 4

View or download data

You can also view or download posts from the Settings page. Access the Settings page by selecting "Settings" from the dropdown menu at the top right of the main Facebook page (Fig. 5) or by selecting "Timeline settings" from the […] button at the top right of your profile page (Fig. 6).

dfb05-Settings1
Fig. 5

dfb06-Settings2
Fig. 6

To view or download your posts, select "Your Facebook Information" from the right menu of the Settings page, as shown in Fig. 7.

dfb07-YourFacebookInfo
Fig. 7

View Posts

To view your information, click the "View" link next to "Access your information", as shown in Fig. 8.

dfb08-AccessView
Fig. 8

The "Access your information" page displays, as shown in Fig. 9.

dfb09-AccessYourInformationPage
Fig. 9

Click "Posts" to expand the "Posts" tab, as shown in Fig. 10.

dfb10-Posts
Fig. 10

The Posts page displays, as shown in Fig. 11.

dfb11-PostsPage
Fig. 11

You can quickly filter these by the criteria on the left or by the year on the right. You can also type in the "Activity Search" box to search for posts containing specific text.

Download Info

To download your Facebook data, return to the "Your Facebook Information" settings page (Fig. 7) and click "Download your information" to display the "Download Your Information" page, as shown in Fig. 12.

dfb12-DownloadYourInformation
Fig. 12

You have the option to download any or all your information by checking and unchecking the checkboxes. You can also use the dropdowns at the top to filter by date range, select an output type, and specify the quality of images you want to download.

If you only want to download your posts, click "Deselect All" and check only the "Posts" checkbox; then click the [Create File] button.

You will receive an email when the file is ready. Click the link in the email, enter your Facebook password and download the file, which is a ZIP archive containing all the data you requested.

Conclusion

The steps above show 3 ways to view or download your Facebook posts. I use  the download option each month when I create a list of all my Gratitude posts, because it makes it easy to find all the month's posts in a single file.


GCast 33:

An Introduction to Power BI

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


Jon Skeet on Versioning

Comments [0]

Episode 547

Jon Skeet on Versioning

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


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

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

at01-MSTeams
Fig. 1

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

at02-TabsList
Fig. 2

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

at03-AddaTab
Fig. 3

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

aw04-WebsiteButton
Fig. 4

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

aw05-WebsiteDialog
Fig. 5

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

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

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

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

aw06-WebsiteTab
Fig. 6

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

aw07-PostedToChannel
Fig. 7

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

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


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

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

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

at01-MSTeams
Fig. 1

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

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

at02-TabsList
Fig. 2

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

at03-AddaTab
Fig. 3

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

at04-Filter
Fig. 4

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

at05-Excel
Fig. 5

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

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

at06-ExcelTab
Fig. 6

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

at07-PostedToChannel
Fig. 7

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

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

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


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

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

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

af01-MSTeams
Fig. 1

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

af02-FilesTab
Fig. 2

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

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

Create a New File

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

af03-AddFile
Fig. 3

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

af04-Create
Fig. 4

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

af05-EditFile
Fig. 5

Upload an Existing File

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

af06-UploadFile
Fig. 6

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


GCast 32:

Handwriting OCR with Cognitive Services

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


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

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

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

ac01-MSTeams
Fig. 1

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

ac02-TeamMenu
Fig. 2

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

ac03-ChannelMenu
Fig. 3

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

ac04-AddChannelDialog
Fig. 4

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

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

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

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

ac05-NewChannelDisplays
Fig. 5

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

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


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

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

Launch the Microsoft Teams client.

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

nt01-MSTeams
Fig. 1

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

nt01-Menu
Fig. 2

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

nt02-TeamsButton
Fig. 3

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

nt03-CreateOrJoinTeamButton
Fig. 4

nt04-JoinOrCreateTeamPage
Fig. 5

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

nt05-CreateATeamButon
Fig. 6

nt06-CreateYourTeamDialog
Fig. 7

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

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

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

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

nt07-AddMembers
Fig. 8

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

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

nt08-TeamAndChannel
Fig. 9

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

nt09-ChannelPage
Fig. 10

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

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

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

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

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


Episode 547

Geisa Faustino on Teaching

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


"Hi, Bob" by Bob Newhart

Comments [0]

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

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

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

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


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


GCast 31:

OCR with Cognitive Services

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


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.


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.


CodeMash 2019

Comments [0]

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


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.


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.


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.


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.


December 2018 Gratitudes

Comments [0]

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.


2018 in Review

Comments [0]

New Home

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

New Job

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

Travels

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

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

Family

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

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

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

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

Books

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

Health

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

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

Blogging

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

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

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

Sports

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

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

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

Concerts

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

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

2019

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


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

Not even close.

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

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

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

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

That was 7 years ago.

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

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

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

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

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

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

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

I gave the highest ratings to the following books:

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

The only book I disliked was Kushiel's Dart.

Here are some of my observations after finishing this reading.

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

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

The Arthurian Legend is recounted in the following:

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

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

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

and is at least part of the following stories:

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

Three novels dealt with the end of the World

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

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

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

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

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

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

If you are ambitious, below is the complete list:

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

GCast 29:

Introducing Cognitive Services and Computer Vision

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


The-Adventures-of-Augie-March-by-Saul-Bellow

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

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

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

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

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

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

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


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

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


Episode 544

Elizabeth Graham on Azure Logic Apps

Microsoft Global Black Belt Elizabeth Graham describes Azure Logic Apps and how to use them to solve integration and workflow projects.


GCast 28:

Natural Language Processing with LUIS

Learn how to use Microsoft Language Understanding Information Service (LUIS) to build models that provide Natural Language Processing (NLP) for your application.


<< Older Posts | Newer Posts >>