# Friday, April 24, 2020

I use Excel a lot - sometimes just to format a lot of text by applying the same formula to a bunch of strings.

The CONCAT function is great for this. It concatenates together 2 or more strings to create a new string.

The syntax is:

CONCAT(text1, [text2],…)

where each argument (text1, text2, etc., up to 253 arguments) is a string or a reference to a cell containing a strng.

So, if cell A1 contains the string: "Customer" and cell B1 contains the string "LastName" and you want to store the following string in cell C1:


You can do so with the following formula in cell C1:

=CONCAT(A1, ".", B1)

One challenge with the CONCAT function occurs when you want your new string to include double quotes ("). Because double quotes are used to delimit strings, this can cause confusion.

For example, you may want to take the inputs above and form a string like the following:

"Customer" : "LastName"

The following formula generates and error because Excel cannot tell where a string argument ends

=CONCAT(""",A1,"" : "", B1,""")

I've found 3 ways to approach this.

Use single quotes instead of double quotes. This is a compromise, but it can work sometimes, as double quotes and single quotes are considered the same in many contexts.

The following formula accomplishes this.

=CONCAT("'",A1,"' : '", B1,"'")

Use a double set of double quotes

Excel uses the special escape sequence "" to indicate double quotes within a string.

Here is an example of this:

=CONCAT("""",A1,""" : '", B1,"'")

Use CHAR(34)

Excel contains the CHAR function that returns the character associated with an ASCII value. A double quotation character has an ASCII value of 34, so you can use this instead of the character itself. It is perfectly acceptable to embed one Excel function within another.

Here is an example of this:

=CONCAT(CHAR(34),A1,CHAR(34)," : ", B1,CHAR(34))

The last 2 options are my preference. Which you choose depends on which you find more readable.

Friday, April 24, 2020 7:26:00 AM (GMT Daylight Time, UTC+01:00)
# Thursday, April 23, 2020

GCast 82:

Creating a RESTful Web Service with Spring Boot

Use the Spring Boot framework to create a RESTful web service.

GCast | Java | Screencast | Video | Web
Thursday, April 23, 2020 9:29:00 AM (GMT Daylight Time, UTC+01:00)
# Monday, April 20, 2020

Episode 605

Andrea Salterello on Accessibility

Andrea Salterello is a Microsoft Regional Director, software developer, university instructor, and the organizer of Accessibility Days in Milan. discusses ways that technology can help those with disabilities, how to build accessibility into your applications, and his upcoming conference, which focuses on developing accessible software.




Monday, April 20, 2020 2:33:00 PM (GMT Daylight Time, UTC+01:00)
# Sunday, April 19, 2020

PlayItAsitLaysPlay It As It Lays by Joan Didion tells the story of Maria. She is beautiful. She is a former model. She has had a moderately successful acting career. She is the wife of a successful movie director. She is sinking into depression.

Her situation is driven by an unhappy marriage, a series of meaningless sexual encounters, an abortion, an addiction to alcohol and prescription drugs, and an institutionalized daughter.

In a stream-of-consciousness narrative - told in the present and in flashbacks - Didion takes us inside Maria's head as she stumbles through months of self-destructive behavior.

Maria has no direction in her life; her nihilism is symbolized by her habit of hopping into an expensive car and speeding through the highways of Los Angeles. She is surrounded by the decadence and opulence of the 1960s Hollywood inner circle, but she is disconnected from it.

It's an emotional ride. I started reading in the evening and stayed up half the night to finish it.

Sunday, April 19, 2020 9:19:00 AM (GMT Daylight Time, UTC+01:00)
# Saturday, April 18, 2020

SotWeedFactorEbenezer Cooke was an 17th-18th century English poet, who traveled briefly to Maryland as a young man; then returned later in life to take possession of his inherited estates in the British colony. In 1708, Cooke published "The Sot-Weed Factor, or A Voyage to Maryland, A Satyr" - a poem based on his travels.

All the above is true.
In 1960, John Barth published The Sot-Weed Factor - a novel of Ebenezer Cooke's life. Almost all of this book originated in the imagination of Mr. Barth.

The "Eben" Cooke of Barth's novel is forced to leave England in the 17th century when he falls in love with a prostitute and is confronted by her pimp for non-payment. He sails for Maryland to take over a family estate there. Upon arrival, Governor Charles Calvert appoints him Poet Laureate of Maryland.

During the years after his exodus from England, a comedy of errors causes him to lose his estate, his family, his friends, and the woman he loves. At the beginning of the novel, Cooke is arrogant and cowardly, but those are not the faults that cause his misfortunes. Often, others take advantage of him because of his naivety.  By the end of this bildungsroman, Cooke's numerous misadventures have transformed him into a mature and honorable man.

The story itself is written to sound like a 17th century novel. The author frequently employs words like forsooth, anon, and suchwise to transport the reader to colonial times. It is farcical and satirical and funny and sad. It is a complicated plot, but so many of the seemingly extraneous stories introduced early return to prove relevant to Cooke's life.

The events of the story consist of a string of coincidences so unlikely that they border on the absurd. Many characters are not who they seem - particularly Eben's tutor Henry Burlingame, who crosses paths with Eben multiple times wearing a different disguise almost every time. Cooke is captured by pirates and by Native Americans during his quests to regain his estate and to find his lost love. While pursuing his quests, Eben is determined to maintain his virginity, despite numerous temptations. But this is not only the story of Ebenezer's quest. It is also Burlingame's quest for his identity and the Native Americans' quest for vengeance on the invading Europeans and the New World's quest for an identity.

Unlike some long, complicated novels I've read recently, I had no trouble keeping track of all the characters in this story.

The Sot-Weed Factor is an enjoyable story for anyone who craves an adventure.

Saturday, April 18, 2020 9:30:00 AM (GMT Daylight Time, UTC+01:00)
# Monday, April 13, 2020

Episode 604

Sarah Lean on Adjusting to the Pandemic

As a Microsoft Cloud Advocate, Sarah Lean used to travel around the world speaking to IT professionals. The recent COVID-19 pandemic has forced her to accomplish her goals while staying at home. She talks about the adjustments she has made.

Monday, April 13, 2020 9:04:00 AM (GMT Daylight Time, UTC+01:00)
# Saturday, April 11, 2020

LovingHenry Green's Loving opens with "Once Upon a day..." and closes with "...and lived happily ever after", but it is not a fairy tale.

The novel takes place in the castle home of the rich Tenant family, but the story focuses on the servants.

It is the middle of World War II and the butler has just passed away. Footman Charley Raunce is promoted to butler, so the Tenants stop calling him "Albert" (which wasn't his name anyway) and start calling him Mr. Raunce. The position goes to his head and some of the other servants resent him for it, but it does not deter Edith the maid from falling in love with him.

Then the servants catch one of the Tenants in an adulterous act and Mrs. Tenant loses a valuable ring and the servants are left alone in the house for days and the ring is found and people argue and they laugh and they gossip and they fall in love.

"Loving" is just a story about ordinary life among a particular class of people in a particular place and time. Nothing much happens. The War rages throughout Europe, but not in neutral Ireland. Instead of action, we get a lot of dialogue and a peek into personalities and prejudices (everyone seems to dislike and distrust the Irish and the Catholics) and lonely people craving affection and the tension between the ruling class and serving class.

It is a small story, but it's a good one.

While not a fairy tale and not the classic that some claim, I enjoyed Mr. Green's novel.

Saturday, April 11, 2020 9:50:00 AM (GMT Daylight Time, UTC+01:00)
# Thursday, April 9, 2020

GCast 81:

Spring Boot Quick Start

Learn how to quickly generate a Java application based on the Spring Boot framework.

GCast | Java | Screencast | Video
Thursday, April 9, 2020 9:02:00 AM (GMT Daylight Time, UTC+01:00)
# Monday, April 6, 2020

Episode 603

Brent Stineman on Remote Recording

Brent Stineman talks about an internal podcast he produces for Microsoft and the challenges of interviewing people hundreds or thousands of miles away from him.

Monday, April 6, 2020 9:03:00 AM (GMT Daylight Time, UTC+01:00)
# Sunday, April 5, 2020

Today I am grateful my ankle is now healed after I twisted it last week.

Today I am grateful for the singing and cheering and flashing lights every evening in my neighborhood

Today I am grateful for a lunchtime virtual meeting yesterday with old friends and to Jeff for inviting me.

Today I am grateful I have started interviewing people for my show again.

Today I am grateful that Donald Trump is an honest, humble man, who puts the interests of our country above his own profits and insecurities and that he is totally not a racist.

Today I am grateful to all the teachers who put their health at risk going to a crowded classroom full of potentially sick kids every day and have quickly shifted to online teaching when it became necessary.

Today I am grateful for a virtual lunch with Nick, Tim, Adriana, and Nathale yesterday.

Today I am grateful to successfully complete a project with a customer last week.

Today I am grateful to Stephen for giving me a Postmates credit.

Today I am grateful for an online chat yesterday with David, Kevin, Joel, and Richard that included lots of puns and laughter.

Today I am grateful to be a guest on Jeffrey's live Twitch stream yesterday.

Today I am grateful to all the health care workers who are working even harder than usual this year and putting themselves at greater risk to help us.

Today I am grateful to Carl for playing his guitar and singing from his living room every night for those of us listening all over the world.

Today I am grateful I was able to set up 2 wireless old printers, 2 old PCs, and a scanner this weekend.

Today I am grateful to try a food delivery service for the first time.

Today I am grateful to those who trust me enough to tell me their problems.

Today I am grateful for spring and the hope that it brings.

Today I am grateful for a hot bath before going to bed last night.

Today I am grateful that I'm used to working from home.

Today I a m grateful for good health care.

Today I am grateful that I had plenty of toilet paper at home when the madness struck.

Today I am grateful for dinner last night with Rob and George and their families.

Today I am grateful to have a working printer in my home for the first time in years.

Today I am grateful to Adam for picking me up at the hospital and driving me home yesterday.

Today I am grateful to attend a Windy City Bulls G-League game last night for the first time.

Today I am grateful for birthday gifts that arrived in the mail last week.

Today I am grateful for a third straight Big10 championship

Today I am grateful to speak at the Global Integration Boot Camp yesterday

Today I am grateful to see They Might Be Giants in concert last night.

Today I am grateful to work at Microsoft.

Today I am grateful to Tim for taking me out for an excellent Italian dinner for my birthday last night.

Today I am grateful for tacos.

Today I am grateful for books

Today I am grateful for all the birthday wishes yesterday - particularly those that included an extra kind message.

Sunday, April 5, 2020 2:30:29 PM (GMT Daylight Time, UTC+01:00)