# Sunday, May 3, 2020

5/3
Today I am grateful to discover a beautiful park just a couple miles from my home.

5/2
Today I am grateful for a birthday card and hand-painted watercolor from Abby and Rachel.

5/1
Today I am grateful to virtually hang out with Chris last night.

4/30
Today I am grateful to take a hot bath almost every day for the past 2 months.

4/29
Today I am grateful I made it home yesterday before the thunderstorms began.

4/28
Today I am grateful to clean and organize my second bedroom so it is now a guest bedroom instead of a storage room

4/27
Today I am grateful to play online games with my sons yesterday.

4/26
Today I am grateful for my new nightstand.

4/25
Today I am grateful to enjoy a bad musical last night with Kendall and Heather

4/24
Today I am grateful for a call from Kevin yesterday.

4/23
Today I am grateful to grocery store employees who work hard, putting their health at risk - often for low wages.

4/22
Today I am grateful to finish my taxes last night.

4/21
Today I am grateful for mostly empty streets and sidewalks, which makes it easy to maintain distancing while I ride my bike in the city.

4/20
Today I am grateful to live in a city with so much history.

4/19
Today I am grateful for the kindness and generosity of Christine and Carol, who care about my safety.

4/18
Today I am grateful for a Friday afternoon virtual coffee hour with my team.

4/17
Today I am grateful for a new Raspberry Pi my boss sent me yesterday.

4/16
Today I am grateful to Heba for helping me learn Java and answering my questions.

4/15
Today I am grateful for the people and technologies that make remote working easier than it would otherwise be.

4/14
Today I am grateful for a new headlight for my bike

4/13
Today I am grateful to celebrate Easter virtually with my family over Teams yesterday.

4/12
Today I am grateful that He is risen.

4/11
Today I am grateful to Patrick and Susan, who recognized my plight and shipped me some coffee.

4/10
Today I am grateful to Jesus Christ, who died for my sins.

4/9
Today I am grateful for an unexpected call from Greg

4/8
Today I am grateful for the years we had John Prine and the joy his music brought us.

4/7
Today I am grateful for my new reflective belt, which makes me feel safer riding my bike at night.

4/6
Today I am grateful that I finally fixed this table lamp that has been broken for 2 years.

Sunday, May 3, 2020 1:56:48 PM (GMT Daylight Time, UTC+01:00)
# Saturday, May 2, 2020

EntreleadershipDave Ramsey has built a company that provides financial advice via seminars, a radio broadcast, a podcast, and numerous books.

His 2011 book "Entreleadership" is not about personal finance; but about what it takes to build and run a company. Ramsey coined the title word, combining "entrepreneur" and "leader" because he believes that one must embrace both roles in order to successfully build a small company.

He supports most of his advice with anecdotes from his own successes and failures as he grew his company.

The message running through this book is that a company is a team. As such, employees should be treated as team members; and the boss should think of himself as a leader; and you should hire candidates with a passion for what you are building, rather than those just looking for a job.

He talks about setting priorities: identify and perform the tasks that are important and urgent before turning to those that are important/not urgent or urgent/not important. Skip those that are neither important nor urgent.

He talks about the importance of a leader's ability to make a decision.

He talks about the importance of trust: "People will not buy from you if they don’t trust you, your product, and your company."

He talks about communication: it is important for a leader to share their goals with their team members, so they can make intelligent decisions.

He talks about debt, which he advises against - a philosophy I apply to my personal finances.

Much of Ramsey's thinking is based on his relationship with God. As a practicing Evangelical Christian, he looks to the Bible to lead him in his daily activities, including his business activities.

I was unfamiliar with Ramsey before reading this book.

I don't think I could work for him, primarily because he requires everyone in the company to spend their day at their desk in the office - a lifestyle I rejected years ago; and also because the following passage gave me pause: "privacy isn't a big deal to people who are living a clean life and doing the right thing."

But the book contains a lot of practical, common-sense advice, delivered in a straightforward manner.

Saturday, May 2, 2020 9:00:00 AM (GMT Daylight Time, UTC+01:00)
# Thursday, April 30, 2020

GCast 83:

Supporting POST HTTP Requests with Spring Boot

Create a web service that supports HTTP POST requests using the Spring Boot framework

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

Episode 606

Layla Porter on Test Driven Development

Twilio Senior Developer Evangelist Layla Porter discusses Test-Driven Development and how you can use it to improve your code.

Links:

https://www.twitch.tv/laylacodesit

https://youtu.be/EcoIjf3RABI

Monday, April 27, 2020 9:28:00 AM (GMT Daylight Time, UTC+01:00)
# 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:

Customer.LastName

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.

Links:

https://accessibilitydays.it/2020/it/

https://globalaccessibilityawarenessday.org/

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)