# Thursday, January 23, 2020

GCast 70:

Deleting an Azure DevOps Project

Deleting a project from an Azure DevOps organization is not intuitive (at least it wasn't for me). Here is how to do it.

Thursday, January 23, 2020 6:08:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 20, 2020

Episode 594

Christian Geuer Pollmann on Erlang and Elixir

Christian Geuer-Pollmann describes the Erlang ecosystem, the Elixir language, and open source Azure tools he has built with Elixir.



Monday, January 20, 2020 9:34:00 AM (GMT Standard Time, UTC+00:00)
# Saturday, January 18, 2020

MIsForMagicM is for Magic collects 11 short stories by fantasy author Neil Gaiman.

The title is a tribute to Ray Bradbury's short story anthologies R Is for Rocket and S Is for Space and Gaiman's style is not dissimilar to Bradbury's.

The collection opens with "The Case of the Four and Twenty Blackbirds" - A detective story in the style of Dashiell Hammett's or Raymond Chandler's pulp novels, but featuring characters from nursery rhymes. Hard-boiled private eye Jack Horner attempts to solve the mystery of whether Humpty Dumpty fell from a wall or was pushed. The story is often laugh-out-loud funny.

10 more stories and a poem follow; they cover various subjects and styles, but revolve around the genres of fantasy, horror, and science fiction. These tales were written by Gaiman over a period spanning over 20 years. Many of them have appeared in other collections, but they were all new to me.

My favourite was "Chivalry", which tells of an old lady who buys the Holy Grail in a local thrift store for 70 pence and likes the way it looks on her mantle. When Sir Galahad arrives on his quest for the Grail, he offers her priceless treasures in exchange; but she really likes the way it looks between a ceramic figurine and a photo of her late husband.

Most of the stories are a bit scary, but none is terrifying. There is a bit of nudity and sex, so I would not recommend M is for Magic for young children. But teenagers and young adults will enjoy Gaiman's wit and creativity; And grown-ups like me will also like it.

The stories:

The Case of the Four and Twenty Blackbirds

Detective Jack Horner investigates the fall of Humpty Dumpty.

Troll Bridge

A young boy stumbles upon a giant troll, who declares he will eat the boy's life. The boy dissuades the troll by promising to return when he has experienced more life.

Don't Ask Jack

A mysterious and malevolent jack-o-lantern frightens the family

How to Sell the Ponti Bridge

An elaborate scam that impresses other grifters

October in the Chair

Each of the months of the year gather around a fire to exchange stories


An old lady discovers the Holy Grail in a secondhand shop. A few days later, Sir Galahad comes to her house on his holy quest.

The Price

The devil shows up and battles an adopted stray cat

How to Talk to Girls at Parties

Teenage boys attend a party hosted by alien females


An epicurean club travels to Egypt to capture and eat an extremely rare bird

The Witch's Headstone

A boy encounters the ghost of witch burned centuries ago and tries to help her


A poem about what to do if you find yourself in a fairy tale.

Saturday, January 18, 2020 11:43:00 AM (GMT Standard Time, UTC+00:00)
# Friday, January 17, 2020

The C# string class provides a convenient method for replacing one string with another. The syntax is

string.Replace (<old string>, <new string>);

So the following code:

var oldName = "David";
var newName = "Mr. Giard";
var oldSentence = "My name is David";
var newSentence = oldSentence.Replace(oldName, newName);

stores the value "My name is Mr. Giard" in the variable newSentence.

It is simple and it works. But I recently discovered a limitation: Searching for the old string is always case-sensitive. If I want to do a case-insensitive search and replace instances of "David" or "david" or "DAVID" (or even "daVid"), the string.Replace method does not support this.

The following code:

var oldName = "DAVID"; 
var newName = "Mr. Giard"; 
var oldSentence = "My name is David"; 
var newSentence = oldSentence.Replace(oldName, newName);

Results in the value "My name is David" being assigned to newSentence. In other words, the Replace method did nothing.

Fortunately, I can use the regular expression library to do this. The code is below:

var oldName = "DAVID"; 
var newName = "Mr. Giard"; 
var oldSentence = "My name is David"; 
var regex = new Regex(oldName, RegexOptions.IgnoreCase); 
var newSentence = regex.Replace(oldSentence, newName);

It is only one more line than using Replace and it allows for much more flexibility. And, as Regular Expressions go, this one is quite simple.

Friday, January 17, 2020 7:16:13 PM (GMT Standard Time, UTC+00:00)
# Thursday, January 16, 2020

GCast 69:

Azure DevOps Branch Policies

Learn how to set branch policies in Azure DevOps, including requiring approvers and requiring a linked work item.

Thursday, January 16, 2020 9:30:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 13, 2020

Episode 593

Annie Bougie on Autonomous Driving

Annie Bougie describes the different levels of autonomous vehicles and the state of the industry today.

Monday, January 13, 2020 9:28:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 12, 2020

RecognitionsThe Recognitions by William Gaddis tells the story of Wyatt Gwyon, a talented but commercially unsuccessful painter. Recktall Brown, an unscrupulous art dealer, convinces Wyatt to produce paintings in the styles of Flemish masters and sell the as newly discovered originals. But it tells many other stories of dozens of characters who pass in and out of its pages.

There are some things that I really like about this novel. I marveled at the cleverness of much of the dialogue. I particularly enjoyed the fragmented conversations pieced together at cocktail parties - a technique Gaddis repeated multiple times. I liked the parallel issues of art forgery, a currency counterfeiting, plagiarism, and passing off an artificially aged mummy - different takes on those who dishonestly profiting from the works of others.

But the book went out of its way to confuse the reader and obfuscate its stories.

Gaddis seems to take pleasure in confusing his readers. He jumps from story to story and from character to character with wild abandon. I frequently found myself flipping back several pages in an effort to figure out who was speaking or who the author was describing. Even then, I was often unsuccessful. Add to this that some of the dialogue is in a foreign language and those phrases are sometimes significant to the story, so the reader is forced to set down the novel and translate the phrase. A thousand pages of this left me fatigued and confused.

Gaddis seemed to know that his novel’s complexity would tire the reader. He included one scene in which a book critic admits to reviewing a long book after reading only the jacket.

I powered my way through it, but ultimately found it unsatisfying.

Sunday, January 12, 2020 9:57:00 AM (GMT Standard Time, UTC+00:00)
# Monday, January 6, 2020

Episode 592

Jes Schultz on Data Engineering

Jes Schultz discusses the roles and responsibilities of a Data Engineer.

Monday, January 6, 2020 9:24:00 AM (GMT Standard Time, UTC+00:00)
# Sunday, January 5, 2020

Today I am grateful for the lady who cleans my home twice a month.

Today I am grateful for a sleep study last night.

Today I am grateful for 2 weeks vacation at the end of the calendar year.

Today I am grateful for college football.

Today I am grateful for an exciting year.

Today I am grateful for a visit to the Grohmann Museum yesterday.

Today I am grateful to ride around Chicago last night in shorts.

Today I am grateful to sleep in my own bed.

Today I am grateful for 3 days in Detroit.

Today I am grateful for my first visit to the Detroit Institute of Arts in decades.

Today I am grateful to celebrate Christmas with my family.

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

Today I am grateful for 3 days in Kalamazoo, MI.

Today I am grateful for a visit to 2 museums in Kalamazoo, MI yesterday.

Today I am grateful for lunch with my son after watching him coach his college team yesterday.

Today I am grateful for a late-December bike ride through downtown Chicago yesterday.

Today I am grateful to see Wilco in concert last night.

Today I am grateful to watch the Spartans defeat Northwestern at Welsh-Ryan Arena last night.

Today I am grateful to edit months worth of photos yesterday.

Today I am grateful for a week in Denmark and Sweden.

Today I am grateful for the hospitality and generosity of Tiberiu and Nicoleta and their family.

Today I am grateful for a walk around Helsingborg, Sweden yesterday evening.

Today I am grateful for dinner last night in Helsingborg with Tiberiu, Nicoleta, and their family.

Today I am grateful for dinner last night with Magnus and his family.

Today I am grateful to everyone who made the DevOps OpenHack in Copenhagen a success this week.

Today I am grateful for sushi last night in Copenhagen with Christian, Sasa, and Erhunse.

Today I am grateful for great books.

Today I am grateful for an empty seat next to me on each of my flights yesterday.

Today I am grateful to see Nick's game last night with Tim and Nathale.

Today I am grateful for 2 excellent sons.

Today I am grateful for good news from multiple medical test results this week.

Today I am grateful for dinner with Emilija yesterday.

Today I am grateful for good health care.

Today I am grateful to return to my trainer yesterday after a month of travel kept me away.

Today I am grateful for time to set up and arrange furniture in my home yesterday.

Sunday, January 5, 2020 12:34:20 PM (GMT Standard Time, UTC+00:00)
# Saturday, January 4, 2020

2019 was an amazing year for me. I’ve listed some details of my experiences at the bottom of this post, but here are the highlight.


As 2018 ended, I did not feel comfortable with my job. I had moved to a new division (the company eliminated my old position) and I struggled to understand the new processes and to make a positive impact. In early 2019, things began to click. I was involved in a number of successful projects and I learned a great deal. I worked with customers to build and deploy valuable software and I mentored at OpenHacks and other workshops to teach developers how to write code and use the tools of IT.


My 2 sons also enjoyed success this year - both personally and professionally. In October, Nick was named Head Basketball Coach at Kalamazoo College. He and his longtime girlfriend became engaged in November. Tim began a new job in January working for an IT consulting company. He is enjoying the work and the people and he does not have the long commute of his old job. In the spring, I helped him move into a new house. His only major setback was tearing his Achilles tendon while playing basketball, but he is recovering well from this injury.

My brother Dan lives in Australia, but he spent much of this year working in Phoenix, AZ. In August, I flew to Phoenix and we spent some time together. Our trip included a Diamondbacks game, a visit to Flagstaff, and a musical journey to stand on a corner in Winslow, Arizona.

My sister Debbie moved to Hawaii this year. With Dan living in Australia, family get-togethers are becoming smaller and smaller. Dan did fly to Michigan to celebrate Christmas with us.


If you know me, you know that I love music and I love to see live music. I attended 18 concerts in 2019 - many featuring bands and musicians I enjoyed in my youth. The most memorable concert was seeing Peter Frampton's farewell tour with my son Tim.


I've always enjoyed live theater. This year, I made an effort to see more, including some world class performances on Broadway and London's West End. I attended a London West End play on 2 separate visits and my friend Jon (a big theatre fan who lives in the UK) was kind enough to join me on my first visit.


I traveled internationally more this year than I ever have in the past. Most of my trips were for work, but I often stayed a couple extra days to explore. I made my first visits to Denmark and the Netherlands and I returned to Italy and Germany for the first time in 30 years. I also visited the UK, Sweden, and Canada this year, along with a number of US locations.

The best trips were those in which I stayed with friends: The aforementioned trip to Arizona to visit Dan; a few days in Las Vegas to stay with my friends Jay and Christina and their family; and a few days staying with my friend Tibi and his family in Helsingborg, Sweden. I'm also grateful to my friend Jon for allowing me to stay with him during the CodeMash conference in January.

Sporting Events

I made a dent in my quest to visit every NFL, NBA, NHL, and MLB stadium/arena, but not as much as I hoped. I visited 5 new places in 2019, barely staying ahead of the pace at which teams are building new homes.

I also attended a Minor League baseball game in Joliet, IL; college basketball games at Kalamazoo College, Western Michigan University, the University of Chicago, and Chicago State University; a US Women's National Team soccer game against Korea at Soldier Field; a WNBA Chicago Sky home game; and the NCAA Division 1 Women's Regional Finals basketball game, featuring Notre Dame vs Stanford.

The best game I saw was the 2019 Big Ten Basketball Tournament finals at the United Center, in which the Michigan State Spartans came from behind to defeat the university of michigan 65-60 for Tom Izzo's sixth conference tournament title. It was a highlight in a season of highlights that also included a regular season championship and a Final Four appearance.


For the second year in a row, I focused heavily on reading. Most of the books I chose this year came from Time Magazine's list of the Top 100 English language novels. I had hoped to finish the list by the end of the year, but I ran out of time and fell about 20 books short. In all, I completed 62 books in 2019.

A complete list of what I read is at the bottom of this post or you can follow me on Goodreads to see what I'm reading and my thoughts on the books I’ve completed.


In 2019, I published 226 blog posts – a new record for me.

I continued my commitment to producing my 2 TV shows: Technology and Friends and GCast, publishing almost 100 episodes of these shows during the year.

Public Speaking

I have significantly reduced the amount of public speaking that I do - mostly because it is no longer part of my day job and that job consumes so much of my time. But I did manage to deliver a few presentations. Most were local or online, but I did deliver presentations in Stockholm, Las Vegas, and Atlanta. I hope to return to a more frequent speaking schedule before the community forgets about me.


These past 12 months, I learned a lot, I experienced a lot, and I accomplished a lot. I feel blessed.

The one thing I did a poor job at this year was volunteering my time to charitable causes - something I had increased the 2 previous years. I plan to do better at this in 2020.

2019 was outstanding. I saw the world, I connected with old friends, my family had success, and I advanced in my career. Experience has taught me that this good fortune will not last forever - that eventually, things will go badly. But I don't dwell on that. Instead, I will treasure this year and recall it whenever I hit the hard times.


Concerts attended in 2019

  • Nick Moss and Dan Carelli
  • Mott the Hoople
  • Al Green
  • George Clinton and Funkadelic
  • The Rolling Stones
  • Peter Frampton
  • Rev. Sekou
  • Santana and The Doobie Brothers
  • Max Weinberg
  • Squeeze
  • Bruce Cockburn
  • Billy Cobham Crosswinds Project featuring Randy Brecker
  • Willie Nile
  • Kansas
  • Madonna
  • Incognito
  • John Hiatt
  • Wilco

Live Theatre in 2019

  • 'Matilda' at the Cambridge Theatre in London, UK
  • 'Phantom of the Opera' at the Majestic Theatre in New York, NY
  • 'Hamilton' at the CIBC Theatre in Chicago, IL
  • 'True West' at the Steppenwolf Theatre in Chicago, IL
  • 'Miss Saigon' at the Wharton Center in East Lansing, MI
  • 'The Play That Goes Wrong' at the Duchess Theatre in London, UK

Places visited in 2019

  • Peterborough, England
  • London, England (2x)
  • Rome, Italy
  • Copenhagen, Denmark (2x)
  • Frankfurt, Germany
  • Amsterdam, Netherlands
  • Stockholm, Sweden
  • Helsingborg, Sweden
  • Helsinore, Denmark
  • Ottawa, Ontario (2x)
  • Dallas, TX
  • Seattle, WA
  • Tampa, FL
  • Phoenix, AZ
  • Boston, MA
  • Williamstown, MA
  • Las Vegas, NV
  • New York, NY
  • Michigan
  • Wisconsin

Books read in 2019

  • 'The Man Who Loved Children' by Christina Stead
  • 'Infinite Jest' by David Foster Wallace
  • 'The Heart Is a Lonely Hunter' by Carson McCullers
  • 'Through the Woods' by Emily Carroll
  • 'Wide Sargasso Sea' by Jean Rhys
  • 'Nimona' by Noelle Stevenson
  • 'An American Tragedy' by Theodore Dreiser
  • 'The Day of the Locust' by Nathanael West
  • 'Good Omens: The Nice and Accurate Prophecies of Agnes Nutter, Witch' by Terry Pratchett
  • 'White Noise' by Don DeLillo
  • 'Their Eyes Were Watching God' by Zora Neale Hurston
  • 'Light in August' by William Faulkner
  • 'White Teeth' by Zadie Smith
  • 'Herzog' by Saul Bellow
  • 'Ubik' by Philip K. Dick
  • 'Tropic of Cancer' by Henry Miller
  • 'A Portrait of the Artist as a Young Man' by James Joyce
  • 'A Handful of Dust' by Evelyn Waugh
  • 'Mrs. Dalloway' by Virginia Woolf
  • 'Deliverance' by James Dickey
  • 'The French Lieutenant's Woman' by John Fowles
  • 'Possession' by A.S. Byatt
  • 'Housekeeping' by Marilynne Robinson
  • 'Never Let Me Go' by Kazuo Ishiguro
  • 'Arrow of God' by Chinua Achebe
  • 'Claudius the God and His Wife Messalina' by Robert Graves
  • 'The Sheltering Sky' by Paul Bowles
  • 'No Longer at Ease' by Chinua Achebe
  • 'The Power and the Glory' by Graham Greene
  • 'Lucky Jim' by Kingsley Amis
  • 'The Crying of Lot 49' by Thomas Pynchon
  • 'The Moviegoer' by Walker Percy
  • 'Call It Sleep' by Henry Roth
  • 'The Assistant' by Bernard Malamud
  • 'Ragtime' by E.L. Doctorow
  • 'Under the Volcano' by Malcolm Lowry
  • 'Are You There God? It's Me, Margaret' by Judy Blume
  • 'I, Claudius' by Robert Graves
  • 'The Heart of the Matter' by Graham Greene
  • 'I Am Malala: The Story of the Girl Who Stood Up for Education and Was Shot by the Taliban' by Malala Yousafzai
  • 'Rabbit, Run' by John Updike
  • 'Odd and the Frost Giants' by Neil Gaiman
  • 'Naked Lunch' by William S. Burroughs
  • 'The Prime of Miss Jean Brodie' by Muriel Spark
  • 'American Pastoral' by Philip Roth
  • 'A Passage to India' by E.M. Forster
  • 'Invisible Man' by Ralph Ellison
  • 'Atonement' by Ian McEwan
  • 'Go Tell It on the Mountain' by James Baldwin
  • 'Stride Toward Freedom: The Montgomery Story' by Martin Luther King Jr.
  • 'A Death in the Family' by James Agee
  • 'The Confessions of Nat Turner' by William Styron
  • 'The Big Sleep' by Raymond Chandler
  • 'Starship Troopers' by Robert A. Heinlein
  • 'The Adventures of Augie March' by Saul Bellow
  • 'The Painted Bird' by Jerzy Kosinski
  • 'Death Comes for the Archbishop' by Willa Cather
  • 'Revolutionary Road' by Richard Yates
  • 'Things Fall Apart' by Chinua Achebe
  • 'Hi Bob!' by Bob Newhart
  • 'Red Harvest' by Dashiell Hammett

Professional Stadiums and Arenas visited in 2019

  • Arizona Diamondbacks at Chase Field
  • Boston Celtics at TD Garden
  • Boston Bruins at TD Garden
  • Detroit Pistons at Little Caesars Arena
  • Las Vegas Knights at T-Mobil Arena

Public Presentations

Date Topic Event/Host Location
3/14/2019 Guest lecture: Cloud Computing and Azure Michigan State University East Lansing, MI
3/23/2019 How Cloud Computing Empowers a Data Scientist SQL Saturday - Chicago Lisle, IL
3/29/2019 How Cloud Computing Empowers a Data Scientist T-Mobile Student hackathon Atlanta, GA
5/11/2019 We Want the Func! Serverless Computing with Azure Functions Chicago Code Camp River Forest, IL
5/23/2019 We Want the Func! Serverless Computing with Azure Functions DevSum Stockholm, Sweden
7/18/2019 We Want the Func! Serverless Computing with Azure Functions IndySA Indianapolis, IN
7/22/2019 We Want the Func! Serverless Computing with Azure Functions Chicago Cloud Conference Chicago, IL
7/22/2019 Serverless Computing with Azure Functions Chicago Cloud Conference Chicago, IL
8/8/2019 Effective Data Visualization SQL PASS Virtual UG Online
10/10/2019 We Want the Func! Serverless Computing with Azure Functions Las Vegas .NET User Group Las Vegas, NV
10/30/2019 AI for Earth JPMC IT Conference Chicago, IL
Saturday, January 4, 2020 8:06:34 PM (GMT Standard Time, UTC+00:00)