Episode 745

Haider Ghany on Azure Data Centers

Haider Ghany works at Azure Data Centers in the Chicago area. He discusses how the data centers maintain reliability and security and how Microsoft is making data center changes to meet goals around sustainability.


"Towers of Midnight" is the thirteenth book in the epic "Wheel of Time" series and the second authored by Brandon Sanderson, following the death of series originator Robert Jordan.

The saga picks up steam in this volume as it moves forward several plot threads and resolves others, leading to the Last Battle between the forces of light and dark. It is a busy book with lots of action. 

Among the storylines:

  • Rand plans to release the Dark One from imprisonment, so he can be defeated directly in battle, deciding the conflict once and for all. He begins to face and feel comfortable with his destiny.

  • Nynaeve's power grows to the point that she can heal madness in men, but the Aes Sedai still insist on subjecting her to their testing before they officially raise her to full Aes Sedai rank.

  • Perrin faces a trial for killing two Children of the Light many books ago; then attempts to reconcile his human and wolf halves and battle an old enemy.

  • Mat and Tom enter an alternate dimension to rescue a friend we have seen for many books.

  • Queen Morgase comes out of hiding.

Sanderson sticks to Jordan's outline but puts his thumbprints on the tale. Jordan often spent the first 90% of a novel building the world, the characters, and the dialog. He would save the action for the final 10%. In contrast, Sanderson leaps right into the action in this book. In the first half of "Towers," we see:

  • Mat being pursued by the gholam - a mystical creature who lives to kill
  • Bubbles of Evil popping up unexpectedly, causing unnatural destruction where they occur
  • A battle in which the dark enemy launches monsters into the opposing army via trebuchet

A few books ago, I considered abandoning this series. I am now excited for the climax and conclusion in the next volume.


After her third miscarriage and the collapse of her marriage, Jaya decides to travel to India to visit her dying maternal grandfather. She feels no connection to her ancestral homeland and knows nothing of her extended family. Even her immediate family is not close. Her mother showed little affection toward Jaya and never spoke of the country of her birth, except to say she was told to go to America and never to return. She begs Jaya not to make the trip.

Jaya's journey sets up a story of exploration in Sejal Badani's 2018 novel "The Storyteller's Secret." The book alternates between Jaya's story and that of her grandmother Amisha, who came of age during the British occupation of India.

Badani tells Jaya's story in the first person and present tense, which gives the reader a feeling of immediacy as if the scenes are taking place right now. Jaya hears Amisha's story from Ravi - a servant, confidante, and friend of the grandmother. Ravi was my favourite character in this novel because he showed remarkable kindness, intelligence, and humor, despite being born into the outcast "untouchable" caste.

Jaya and Amisha are at similar points in their lives, but fate gave them different paths. The troubles of her young adulthood shattered Jaya's life of privilege in America. Amisha was forced into a life of servitude by an arranged marriage and a patriarchal society that treated women as second-class citizens. She hid from the world her love of writing and her love for another man and she experienced very few moments of true happiness. Marrying into a wealthy family did provide some privilege, which she used to help Ravi.

After learning her grandmother's story, Jaya reassesses her own life. Amisha's struggles, denied dreams, and lost love put into perspective Jaya's problems. Amisha's story connects Jaya to her family and homeland that she previously lacked. She gains an understanding of her mother and a renewed focus on her own life.

The novel focuses on conflict and resolution. Conflict exists between the occupying British and the Indians; between women and a patriarchal society; between the Indians and the untouchables; and between Jaya and her husband. Some of these conflicts resolve, and some end in tragedy. But the story also focuses on empathy. When she learns her family history, Jaya significantly alters her feelings about her mother and her own life.

Badani's novel is a heartfelt story that gives the reader a peek into another culture and provides a hopeful message passed from one generation to another.

 


The ancient Greek architect Vitruvius believed in the beauty of balance. Leonardo da Vinci immortalized the architect's name when he created The Vitruvian Man - a drawing showing the symmetry inherent in the human form.

Peter Leeson's book "Vitruvian Quality" explores balance as it applies to quality in goods and services and how organizations can achieve that quality.

Two thousand years ago, Vitruvius defined quality in his building as the presence of Firmitas, Utilitas, and Venustas (Stability, Usefulness, and Desirability.) Leeson applies these concepts to modern businesses. Although these things are difficult to quantify, the author makes an attempt to do so.

We get lessons in this book on history, quantum computing, and zoology. Leeson uses these as metaphors to help us understand what is difficult to define. For example, he uses a zoology to point out that an organization will be more successful emulating the adaptability of an octopus rather than a shark's evolutionary dead end.

Leeson provides some explicit guidance, such as suggesting that managers block focus time for themselves and their employees, but the book focuses more on general advice than on specific recipes.

My favourite chapter compared management with leadership. "You must obey a manager; you want to follow a leader," says Leeson, emphasizing the vision and knowledge sharing that helps leaders to inspire others.

VQ's lessons can be summarized: Try, Listen, Look, Adapt, and Adopt. Peter Leeson articulates these lessons well. He presents these concepts in a straightforward manner with intelligence and wit.


GCast 146:

Granting YouTube Permissions to Other Users

Learn how to grant access to your YouTube channel to other users, allowing them to view, edit, and/or create videos and other settings in your channel.


Overview

I have been experimenting with ChatGPT for the past few weeks, searching for ways it can help me in my work. I played around with the UI and I asked smart people who provided me with ideas.

Here are some interesting questions I have asked and some intersting responses ChatGPT generated that may help me do my job better.

Software Programming

Input:

How do I delete a row in MongoDB using PHP?

Output:

To delete a row in MongoDB using PHP, you can use the deleteOne() method of the MongoDB\Driver\Manager class. Here's an example code snippet:

// connect to MongoDB
$mongo = new MongoDB\Client("mongodb://localhost:27017");

// select the database and collection
$collection = $mongo->mydb->mycollection;

// delete a document
$result = $collection->deleteOne(['_id' => new MongoDB\BSON\ObjectID('60c1f230a8d72c44e2fe603f')]);

// check if the document was deleted
if ($result->getDeletedCount() === 1) {
    echo "Document deleted successfully";
} else {
    echo "Error deleting document";
}

In this example, the $filter variable specifies the row to delete based on its _id value. You can modify the filter to delete rows based on other criteria as well. The $options variable specifies the delete options, such as justOne to delete only one document that matches the filter. The executeCommand() method is used to execute the delete command, and the $result variable contains the result of the operation.

 

Input:

What does this code do?
https://github.com/AutoMapper/AutoMapper/blob/master/src/AutoMapper/Execution/ExpressionBuilder.cs

Output:

The code is the C# source code for the ExpressionBuilder class in the AutoMapper library, specifically the Execution namespace.
The ExpressionBuilder class provides methods for building and compiling Expression trees that can be used to map data between objects.
The code includes various methods for constructing and manipulating Expression trees, including methods for creating and combining binary and unary expressions, invoking methods, accessing and setting properties and fields, and other operations commonly used in mapping scenarios.
Overall, the ExpressionBuilder class plays a central role in the AutoMapper library by providing the underlying infrastructure for generating code that performs object-to-object mapping using Expression trees.

 

Input:

Generate sample baseball statistics data as CSV

Output:

Sure, here's an example of sample baseball statistics data as a CSV file:

Player,Team,G,AB,R,H,2B,3B,HR,RBI,SB,BA,OBP,SLG
Mike Trout,Los Angeles Angels,162,618,135,198,44,7,39,108,24,0.321,0.438,0.624
Mookie Betts,Los Angeles Dodgers,157,603,135,188,35,9,29,90,23,0.312,0.402,0.563
Jose Ramirez,Cleveland Indians,156,548,103,164,32,5,39,105,28,0.299,0.409,0.604
Freddie Freeman,Atlanta Braves,162,606,102,189,44,1,34,107,2,0.312,0.390,0.567
Trea Turner,Washington Nationals,151,632,112,199,27,8,28,79,43,0.315,0.368,0.548
Jacob deGrom,New York Mets,32,69,5,11,1,0,0,3,0,0.159,0.159,0.159
Gerrit Cole,New York Yankees,33,0,0,0,0,0,0,0,0,0.000,0.000,0.000
Shohei Ohtani,Los Angeles Angels,106,362,63,98,14,2,28,73,12,0.271,0.361,0.619
Aaron Judge,New York Yankees,112,379,77,100,21,0,28,71,3,0.264,0.370,0.554
Fernando Tatis Jr.,San Diego Padres,119,471,98,146,23,3,39,96,24,0.310,0.375,0.653

This CSV file contains statistics for 10 baseball players, including their name, team, games played (G), at bats (AB), runs (R), hits (H), doubles (2B), triples (3B), home runs (HR), runs batted in (RBI), stolen bases (SB), batting average (BA), on-base percentage (OBP), and slugging percentage (SLG). You can use this sample data for testing or practice purposes. Note that this data is completely fictional and not based on any actual baseball statistics.

 

Input:

Extract as JSON:
David is a valued customer with an account balance of $1000 in US dollars currency. His account was created on March 1st, 2023, and he is currently not in default, as indicated by the "delinquent" field. David's account has a 5% discount, and his email address is david@customer.com. Interestingly, his account description describes him as "A hoopy frood who really knows where his towel is at," which may indicate that he is a fan of Douglas Adams' "The Hitchhiker's Guide to the Galaxy" series.

Output:

Here's an example of how you could extract the provided information as a JSON object:

{
"name": "David",
"status": "valued",
"balance": {
"amount": 1000,
"currency": "US dollars"
},
"created_on": "March 1st, 2023",
"delinquent": false,
"discount": 5,
"email": "david@customer.com",
"description": "A hoopy frood who really knows where his towel is at"
}

In this example, each piece of information is mapped to a key in the JSON object. The balance and discount values are represented as numbers, while the delinquent value is represented as a boolean. The created value is represented as a string in the format of "YYYY-MM-DD", which is a common date format for JSON.

 

Writing

Input:

Write a blog post on the dangers of artificial intelligence

Output:

Artificial intelligence (AI) has been one of the most exciting and rapidly evolving fields of technology in recent years. From self-driving cars to virtual assistants, AI has already shown its potential to transform our lives in countless ways. However, along with the promises of AI come several dangers that must be considered and addressed.
One of the most significant dangers of AI is the potential for job loss. As AI becomes more capable, it will replace many jobs that are currently done by humans. For example, autonomous vehicles could eliminate the need for truck drivers, and automated customer service systems could replace call center employees. While new jobs may be created to replace those that are lost, there will inevitably be a significant transition period during which many people may find themselves without work.
Another danger of AI is the potential for biases and discrimination. Machine learning algorithms, which are a core component of many AI systems, are only as unbiased as the data they are trained on. If the data contains biases or discriminatory patterns, then the algorithm will learn and perpetuate those biases. This has already been seen in instances where facial recognition systems have been shown to be less accurate for people of certain races or genders. As AI becomes more integrated into our lives, it is critical that we ensure that these systems are designed and trained in a way that is fair and impartial.
AI can also pose a significant threat to our privacy and security. As more and more devices are connected to the internet and capable of collecting data, it becomes increasingly difficult to keep that data secure. AI systems that are designed to analyze this data could potentially be used to target individuals with ads, manipulate elections, or even commit acts of terrorism. It is essential that we establish regulations and safeguards to protect the privacy and security of individuals and organizations.
Finally, AI raises the specter of autonomous weapons, which could make decisions to kill without human intervention. This type of technology could lead to disastrous consequences, as decisions made by machines could be based on faulty or incomplete data. It is essential that we prevent the development and use of autonomous weapons before they become a reality.
In conclusion, while the potential benefits of AI are immense, there are also significant dangers that must be considered and addressed. As we continue to develop and integrate AI into our lives, it is critical that we establish regulations and safeguards to protect against the risks that it poses. Ultimately, it is our responsibility to ensure that AI is used to benefit society as a whole, and not just a select few.
 

Input:

Write an outline for a presentation on having fun with ChatGPT

Output:

I. Introduction - Briefly introduce ChatGPT as an AI language model and explain its capabilities. - Discuss how ChatGPT can be used to have fun and entertain oneself. II. Chatting with ChatGPT - Explain how to start a conversation with ChatGPT. - Discuss the different types of questions or topics that ChatGPT can respond to. - Demonstrate some fun and interesting conversations that can be had with ChatGPT. III. Playing games with ChatGPT - Discuss some popular games that can be played with ChatGPT, such as trivia or word games. - Demonstrate how to play a game with ChatGPT and provide some examples of fun games to try. IV. Getting creative with ChatGPT - Explain how ChatGPT can be used for creative writing prompts or story generation. - Discuss how ChatGPT can be used to generate art or music. - Provide examples of creative projects that can be done with ChatGPT. V. Conclusion - Summarize the various ways in which ChatGPT can be used to have fun and entertain oneself. - Encourage the audience to try out ChatGPT and explore its various capabilities.
 

Input:

Write this in the active voice The code I wrote benefitted from a few hours of refactoring

Output:

I refactored the code I wrote for a few hours, resulting in several benefits.
 

Input:

Write an email to my boss with a plausible excuse why I am late on my project

Output:

Dear [Boss's Name],

I hope this email finds you well. I am writing to inform you that I am running a bit behind schedule on the project we discussed. I wanted to explain the reason for this delay and reassure you that I am doing everything I can to get the project back on track.
The main reason for the delay is that I have encountered some unexpected challenges while working on the project. Despite my best efforts to anticipate and plan for potential roadblocks, these issues have proven to be more time-consuming than I originally anticipated.
However, I want to assure you that I am actively working to address these challenges and have already made progress in overcoming them. I am working diligently to get the project back on schedule and will do everything in my power to meet the original deadline.
I understand the importance of this project and the impact it has on our team's goals. I am committed to delivering high-quality work, and I apologize for any inconvenience this delay may have caused.
Please let me know if you have any questions or concerns about the project's status. Thank you for your understanding and continued support.

Best regards,
[Your Name]
 

Other

Input:

Write a job description for a Cloud Solution Architect

Output:

Job Title: Cloud Solution Architect Job Summary:
We are looking for an experienced Cloud Solution Architect to join our team. The Cloud Solution Architect will be responsible for designing and implementing cloud-based solutions that meet our clients' business needs. The ideal candidate will have in-depth knowledge of cloud computing technologies, excellent problem-solving skills, and a proven track record of designing and implementing complex cloud-based solutions.

Responsibilities:
Work closely with clients to understand their business requirements and recommend appropriate cloud-based solutions. Design, plan and implement cloud-based solutions using industry best practices and cloud-based technologies such as AWS, Azure, or Google Cloud.
Evaluate the cloud infrastructure and provide recommendations on how to optimize performance, security, and cost.
Develop and implement cloud security best practices and ensure compliance with industry standards and regulations.
Collaborate with development teams to ensure that cloud-based applications are designed and implemented in accordance with best practices.
Monitor cloud-based systems to identify and resolve issues proactively.
Participate in the development and implementation of disaster recovery and business continuity plans.
Provide technical leadership and mentorship to other members of the team.

Requirements:
Bachelor's degree in Computer Science, Information Technology, or a related field.
Minimum of 5 years of experience in cloud solution architecture and implementation.
In-depth knowledge of cloud computing technologies such as AWS, Azure, or Google Cloud.
Excellent problem-solving skills and a proven track record of designing and implementing complex cloud-based solutions.
Strong communication skills and the ability to work collaboratively with clients and team members.
Knowledge of cloud security best practices and experience implementing security solutions.
Experience with infrastructure automation tools such as Terraform, Ansible, or Chef.
Experience with containerization technologies such as Docker and Kubernetes.
If you are a highly motivated individual with a passion for designing and implementing cloud-based solutions, we encourage you to apply for this exciting opportunity. We offer a competitive salary, comprehensive benefits package, and a collaborative work environment.
 

Input:

Explain autoscaling

Output:

Autoscaling is a technique used in cloud computing to automatically adjust the resources allocated to a system based on demand. This is achieved by setting up rules that automatically add or remove resources to maintain a consistent level of performance and availability.
Autoscaling is typically used in scenarios where demand for a particular service or application is highly variable. For example, a retailer may experience a sudden surge in traffic during a major sales event, or a social media platform may experience a spike in usage during a breaking news event. Without autoscaling, these organizations would need to manually adjust their resources to ensure that they can handle the increased demand, which can be time-consuming and costly.
Autoscaling works by monitoring the utilization of resources, such as CPU, memory, and network bandwidth. Based on the predefined rules, the system can automatically add or remove resources to maintain a consistent level of performance. For example, if the CPU utilization exceeds a certain threshold, autoscaling can automatically add additional virtual machines to handle the increased load. Similarly, if the CPU utilization drops below a certain threshold, autoscaling can remove the virtual machines to save costs.
Autoscaling can be set up using a variety of cloud services and tools, including Amazon Web Services (AWS) Auto Scaling, Google Cloud Platform (GCP) Autoscaler, and Microsoft Azure Autoscale. These services typically provide a range of options for setting up autoscaling rules, such as scaling based on CPU usage, network traffic, or a custom metric.
Overall, autoscaling can help organizations optimize their cloud resources and ensure that their applications and services are always available and performant, without incurring unnecessary costs.
 

Input:

Explain autoscaling in 1 sentence

Output:

Autoscaling is the automatic adjustment of resources allocated to a system based on demand.
 

Input:

Explain autoscaling like I am 5

Output:

Autoscaling is like having a magical robot that adds more helpers when you need them to do a big job, and sends them away when the job is done so you don't have to pay for them when you don't need them.
 

Input:

Explain autoscaling like a pirate

Output:

Arrr, me hearties! Autoscaling be like havin' a crew o' scallywags who be joinin' ye ship when ye be in the thick o' battle and leavin' when the storm be calm, so ye don't have to pay fer 'em when they be not needed! It be makin' sure yer ship be always ready fer whatever the seas be throwin' yer way, savvy?
 

Conclusion

The last example is a bit silly, but I wanted to throw in a bit of fun.

It is worth pointing out that one must apply ethical standards when using the output of ChatGPT. Using it to create a blog post and taking credit for that blog post feels wrong. I would not want to see students copying homework answers directly from ChatGPT. However, ChatGPT can give you a good starting point and can validate ideas you have already documented and I think that is an ethical approach. Also, using ChatGPT to create an outline for an article or presentation feels ok to me. You are still left with the responsibility of filling in the content.

I hope this article gives you some ideas about how you can use ChatGPT to improve your job performance. I hope it sparked some ideas not listed here.


Overview

ChatGPT is a language model capable of processing and generating natural language text, trained on a vast corpus of data and designed to assist in a wide range of tasks.

It allows you to ask questions, converse in a natural language (such as English), and respond appropriately. Its answers are usually correct, and it is quick to admit when it does not know something or will not respond to your query. But it is often a good starting point for work or a way of validating or explaining something quickly.

Features

ChatGPT offers the following features beyond a simple search engine or chatbot:

  • ChatGPT understands natural language, including colloquialisms, idioms, and slang.
  • ChatGPT can generate human-like responses to various questions and prompts, including conversational chit-chat, factual questions, and creative writing prompts.
  • ChatGPT can understand and respond in multiple languages, including English, Spanish, French, German, Chinese, and others.
  • ChatGPT remembers earlier parts of a conversation and can use this to understand the context of a current question or statement.
  • ChatGPT provides an API which allows developers to integrate it into their applications.
  • ChatGPT continues to learn, allowing it to improve over time.

Limitations

ChatGPT has limitations, including the following:

  • ChatGPT was trained on data from the Internet - data that can contain biases. The generated content is likely to reflect those same biases.
  • Sometimes ChatGPT does not understand the full context of a question or discussion.
  • ChatGPT's knowledge is not infinite. It can only respond to conversations involving domains on which it has been trained. For example, most of the training data is from 2021 or earlier, so it has limited knowledge of recent world events
  • ChatGPT does not generate original content, even though it often appears to do so. Its responses reflect its training data.
  • The current version of ChatGPT (ChatGPT-3) works with text. It does not understand images, videos, or sound.
  • ChatGPT is sometimes incorrect. It infers answers from the data on which it was trained. The good news is that it is a closed-loop system, meaning that it can accept and learn from feedback. So, you can call out incorrect information and help to improve the model.

Getting Started

To start using ChatGPT, navigate to https://chat.openai.com/.

If you are not logged in, a welcome message displays, as shown in Fig. 1

Welcome

Fig. 1

Click the [Log in] button if you already have a ChatGPT account. To create a new account, click the [Sign up] button. The "Create your account" dialog displays, as shown in Fig. 2.

Create Your Account

Fig. 2

Enter your email address and click the [Continue] button. The "Password" textbox displays, as shown in Fig. 3.

Password prompt

Fig. 3

Enter a password at least eight characters long and click the [Continue] button.

ChatGPT will create an account, log you in with that account, and display a new chat, as shown in Fig. 4.

New Chat

Fig. 4

Type something in the "Send a message..." textbox to begin using ChatGPT.

Cost

By default, ChatGPT is free to use. However, OpenAI offers a paid version (currently $20 per month) that they brand as "ChatGPT Plus." ChatGPT Plus provides the following advantages:

  • Plus uses the more intelligent version 4 of ChatGPT. The free version uses version 3.
  • Plus delivers faster responses than the free version.
  • ChatGPT assigns a higher priority to Plus requests, so the system will work even when user load is high.

ChatGPT for Work

Here are a few ways to make ChatGPT work for you:

  • Understanding and generating code
  • Writing summaries, titles, articles, and emails
  • Writing job descriptions or professional bios
  • Explain complex topics

ChatGPT for Play

ChatGPT is not just for work. You can have fun with it. Here are a few fun things to do.

  • Engaging in casual conversations
  • Playing games with ChatGPT
  • Getting creative with ChatGPT
  • Asking ChatGPT for jokes or funny stories

Maximizing your ChatGPT Experience

  • Be open-minded
  • Ask open-ended questions
  • Try different conversation starters
  • Experiment

Conclusion

The power of ChatGPT depends on the imagination of those using it. As evidence of its effectiveness, I generated the opening sentence of this article by asking ChatGPT: "Describe ChatGPT in one sentence."


Episode 744

Kevin Grossnicklaus on Low Code No Code Solutions

Kevin Grossnicklaus discusses the business value of using Power Platform and other Low Code / No Code offerings.


An unreliable narrator is not an uncommon device in storytelling. But what about an unreliable narrator relating the stories of his unreliable narrator father? Daniel Wallace gives us that in his 1998 novel "Big Fish."

William Bloom tells the story of his father, Edward. Or rather, he tells Edward's life story as Edward told it to William. Edward was an adventurer who could never stand to stay in one place for long. He traveled the world and met many people, and when he came home, he told stories to William. The stories were often fantastical, and Edward was almost always the hero of these stories. William refers to his father as a "mythical creature."

On Edward's deathbed, William tries unsuccessfully to begin a serious conversation with the man who always spoke in jokes, anecdotes, and tall tales. Edward's stories are always entertaining, but William wonders how much truth they contain. Worse, Edward spent much of his son's childhood away from home. As a result, William wonders how well he knows his father. Memory and embellishment can change a story over time. To underscore this point, William relates the story of his father's last days multiple times - each telling slightly different than the one before.

Wallace simultaneously entertains and moves the reader. The stories he weaves are often implausible and whimsical, and the book contains plenty of humor. But beneath it is the sadness of a father and son who never connect on a personal level. The reader is left to wonder whether an inaccurate story can still be a true story. Edward always wanted to be a big fish in a big pond. But he had another goal, which spoke while he was dying:

"If a man can be said to be loved by his son, then that man can be considered great."

Although Edward was nothing like my father, I thought of him while reading this book. And I smiled.


Emmaline and DavidNot every artist takes the same path to stardom.

Emma Campbell was a classically-trained violinist who decided to follow her passion and shift her educational focus to jazz while at university. It paid off, and she began to perform under the name "Emmaline." The singer caught the world's attention a few years ago when she and guitarist Ryan Mondak recorded and released videos which they shared on YouTube and TikTok. Attention grew, and she soon recorded and released three EPs. The small label on which she released these records emphasizes the grass-roots origins of her career.

Sunday evening, Emmaline and her band delivered an excellent concert in front of a sold-out audience at Evanston's SPACE.

EmmalineEmmaline is a beautiful young woman with an amazing voice, an engaging smile, and a top-notch group of musicians behind her. She treated us to a mix of torch songs, sambas, pop songs, and blues melodies - each delivered with the emotion of a classic jazz singer. Between songs, Emmaline related stories of her life and her music, explaining the origins of many of her original songs. She came across as if she was speaking directly to each of us in the audience.

She concluded the evening with a swinging blues song - "Down Home Blues," which she sings in the upcoming movie "Sweetwater."

She is on a path, and I predict that path will lead to stardom.


Tiago Forte reveals no world-shattering advice in his book "Building a Second Brain." Instead, he provides a common sense approach to organizing your thoughts. He tells us to save and record our ideas, refine them, and organize them. It makes sense, but few people are doing this effectively.

Forte recommends storing things digitally - folders on discs or in a knowledge management application - to make your data easy to search.

CODE

For organization, he advocates the "CODE" principle, which stands for Capture, Organize, Distill, Express, as explained below

Capture

As you consume information, store it in an easily accessible place. This could be an application, a file cabinet, or a folder on your hard drive.

Organize

Organize that information in a consistent way. Forte recommends the following broad categories, which he abbreviates as "PARA."

  • Projects: Short-term activities
  • Areas: Long-term responsibilities. May be moved to a project in the future.
  • Resources: Topics of interest to you. May be moved to an area or project in the future.
  • Archives: Inactive stuff. May be moved to an area or project in the future.

Distill

Summarize the information to make it easier to consume later. Highlight an article, select the most important highlight, then write a summary of the article's main points.

Express

Use the distilled information you captured to create something or to execute a goal - writing a novel, planning an event, learning a new language.

Divergence / Convergence

Capturing and Organizing allow us to practice Divergence - Save information without processing and filtering it. Distilling and Expressing are examples of Convergence, filtering out unneeded information to focus on what is most valuable.

The system does not have to be perfect, Forte tells us. We just need a system that works for us.

Takeaways

I was already practicing something similar to what Forte advocates - storing and organizing my ideas in OneNote and in a set of DropBox folders.

After reading the book, the most significant change I made was to schedule time each month to evaluate my "To Do" list and decide if I needed to move anything from medium-term goals to short-term projects and action items.


A Lap Around DevSecOps

Comments [0]

Overview

DevSecOps is a principle of Application Lifecycle Management (ALM) that strives to incorporate security into every aspect of the lifecycle. It is built on top of DevOps (hence the name) and encourages every party to consider security issues in every phase of the application's design, build, test, and release.

The DevSecOps Manifesto

A few years ago, a group of software security professionals collaborated to produce the DevSecOps Manifesto. They were inspired by the wide adoption of the Agile Manifesto, which concisely laid out priorities for Agile software development. Like the Agile Manifesto, the DevSecOps Manifesto declared high-priority factors without dismissing lower-priority factors.

The nine prin of the DevSecOps Manifesto are:

  • Leaning in over Always Saying "No"
  • Data & Security Science over Fear, Uncertainty and Doubt
  • Open Contribution & Collaboration over Security-Only Requirements
  • Consumable Security Services with APIs over Mandated Security Controls & Paperwork
  • Business Driven Security Scores over Rubber Stamp Security
  • Red & Blue Team Exploit Testing over Relying on Scans & Theoretical Vulnerabilities
  • 24x7 Proactive Security Monitoring over Reacting after being Informed of an Incident
  • Shared Threat Intelligence over Keeping Info to Ourselves
  • Compliance Operations over Clipboards & Checklist

Principles

Leaning in over Always Saying "No"

At one time, I thought of security teams as adversaries. I would ask for things, and they would deny them. It seemed like their knee-jerk reaction was to refuse my request and cite security issues. This principle does not ask them to stop enforcing good security practices. Instead, it suggests they keep an open mind and try to think of ways to meet a request without adding additional security risks.

Data & Security Science over Fear, Uncertainty and Doubt

This should be true of every business or technical, but it often is not. Base your decisions on hard evidence rather than on emotion or gut feeling. The findings will be more defensible and will probably be more valid.

Open Contribution & Collaboration over Security-Only Requirements

This is the heart of DevSecOps. Security is everyone's responsibility and should involve collaboration among teams. In too many organizations, all security decisions are handled by a single group and are often not considered until other work is complete.

Consumable Security Services with APIs over Mandated Security Controls & Paperwork

Automating security via API calls can be easier to implement and, therefore, more likely to be built into an application. Manual security processes are valuable but can be time-consuming and error-prone.

Business Driven Security Scores over Rubber Stamp Security

What are the reasons for your security policies? Is it simply because you have always done it this way, or is there a valid business reason driving your policies? Think about this before implementing and enforcing rules.

Red & Blue Team Exploit Testing over Relying on Scans & Theoretical Vulnerabilities

Security attacks occur in the real world, so it makes sense to simulate the real world when preparing for them. A Red and Blue team does so, with the Red Team taking on the role of a hostile hacker and the Blue Team acting as the system's defenders. This brings human decision-making into the mix. Automated scans are helpful, but they are not sufficient.

24x7 Proactive Security Monitoring over Reacting after being Informed of an Incident

A proactive approach is almost always better than a reactive one, which often occurs after a security breach has already compromised your system.

Shared Threat Intelligence over Keeping Info to Ourselves

Many organizations jealously guard any information they discover because they believe it gives them a competitive advantage. But all organizations share a common enemy in malicious hackers. It makes sense to share this information to protect everyone.

Compliance Operations over Clipboards & Checklist

This principle emphasizes that security is a mindset within the organization rather than a set of procedures to which one can adhere and feel safe.

Focus of DevSecOps

At its heart, DevSecOps seeks to incorporate security into every aspect of life cycle management.

Fig. 1 shows the tasks that can be added to each phase.

DevSecOps

Fig. 1 (Source: https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/secure/devsecops-controls)

A corollary of this is that every person is responsible for thinking about security. DevSecOps sits on top of DevOps, so a company must have a solid implementation to implement DevSecOps effectively. But the tools you choose are less important than how your organization and employees embrace security awareness. The goal is to shift left the identification and resolution of security issues. This means we try to identify and resolve these issues as soon as possible because it is much cheaper and more effective than waiting until later.

Conclusion

DevSecOps is an evolutionary concept - not a revolutionary one. It builds on top of DevOps. It involves all people and all steps in identifying and resolving security issues.


The Agile Manifesto

Comments [0]

The Manifesto

The Manifesto for Agile Software Development, commonly known as the Agile Manifesto, is very concise. Here is the full text:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.

A group of well-known software architects wrote the Manifesto to describe their priorities when building software systems. Many were book authors and bloggers, and all had experience designing complex systems.

Its simplicity is its strength. One can memorize it and apply the principles to their current work, adapting their processes as needed.

It also benefits from its flexibility. The Manifesto doesn't proclaim dogma; instead, it states the relative importance of software development concepts.

The Principles

Individuals and interactions over processes and tools

Processes and tools are important. But do not lose sight of what you are trying to accomplish. Communication between individuals and teams is crucial to building anything of moderate complexity. Tools and processes are simply a way to facilitate that communication.

Working software over comprehensive documentation

This is the most obvious of the principles. I am a big fan of documentation. It helps users understand how to use software, and it helps onboard new developers. But let's face it. Given a choice between broken software with excellent documentation and excellent software with no documentation, the former is the better choice.

Customer collaboration over contract negotiation

This principle rejects the idea that software developers and their customers are adversaries. They have the same goal - creating quality software - and they should drive toward that goal together. The parties involved are less likely to point fingers and place blame if they view their relationship as a partnership.

Responding to change over following a plan

This is the most revolutionary part of the Manifesto. Before the development of Agile methodologies, Waterfall was a popular methodology for designing and building software. In a Waterfall system, all design is completed before writing any software, and all software is written before testing it. This approach was slow, expensive to fix, and did not consider changing requirements. This principle encourages teams to break work into short "sprints" and frequently evaluate what tasks belong in each sprint. This principle makes it much cheaper to adjust to changing requirements.

Conclusion

Many books describe methodologies with specific actions to take to become more "agile." But these are just applying the principles above. How you implement these principles is up to you. Daily standups, 2-week sprints, and pair programming can help make you more agile, but they are not required to adhere to the Agile Manifesto.


My Journey to Agile

Comments [0]

Years ago, I worked for a large consulting company that embraced a Waterfall methodology. In a Waterfall methodology, a team completes each project phase before beginning the next phase. For example, we would complete all design for a system before writing any code, and we would complete all the code before starting testing. 

In theory, it made sense. Why try coding something unless you are 100% sure what you want to build? Waterfall also seemed the logical choice when handing off requirements to junior developers or to an offshore team. The more explicit we were with what we wanted, the less ambiguity to the coding party and the less chance they would misunderstand our needs.

But there were significant drawbacks to this approach. Many issues did not arise until we had begun coding, while others became apparent only during the testing phase. In those cases, we had to return to our design phase and re-do work already completed - often months earlier. This process was inefficient and expensive.

I once led a team designing the interfaces between dozens of backend systems at a large electronics retailer and the e-commerce site they were building. We spent months exploring each system, how to access it, and how to expose it to the front end. By the time we finished, some of the backend systems had changed significantly. Others had been wholly replaced. In those cases, our only choice was to return to work on the updated systems. We eventually completed our task, but we were months behind schedule.

Later, I left the large company and joined a small consulting firm that introduced me to Agile methodologies. This company had developed a variation of the Scrum Agile methodology. Their approach focused on creating one small feature at a time - design it, build it, test it. If anything went wrong, we knew about it right away and had minimal rework to do.

By executing an agile methodology, my teammates and I immediately became more productive. The most significant advantage I saw was in the "fail fast" mindset. We anticipated that things could go wrong - sometimes by our actions and sometimes by factors outside our control. We wanted to know immediately when things went wrong so we could fix them immediately. So, we designed, built, and tested our features in smaller chunks. Testing caught issues while the code was still fresh in our minds and before we had added extra dependencies. 

In addition, we held a daily standup meeting. Every morning, each member took a minute or so to describe what they worked on yesterday, what they planned to work on today, and any issues that might block them. The meeting gave everyone insights into the activity of others on the team and allowed the opportunity for one of us to unblock another's issue. By standing up, we kept the meetings to a reasonable length. Who wants to stand up for a 1-hour meeting?

I have not looked back. I consider how I can use an agile methodology to improve the process of every project I work on. It is rare that it will not.

 


Episode 743

Guy Royse on Software Defined Radio

Software-Defined Radio allows you to use your computer to decode AM, FM, short wave, police scanner, and other radio signals, including both sound and data. Guy Royse describes Software-Defined Radio, how it works, and uses for it.


March 2023 Gratitudes

Comments [0]

3/6
Today I am grateful to see Scythian in concert last night.

3/7
Today I am grateful to talk with Jeff yesterday for the first time in a long time.

3/8
Today I am grateful I found the eyeglasses that I lost last week.

3/9
Today I am grateful to spend a day with my team in the office yesterday.

3/10
Today I am grateful to get my emission test out of the way yesterday.

3/11
Today I am grateful to see Bobby Broom last night on my first visit to the Jazz Showcase this year!

3/12
Today I am grateful I can attend Mass virtually on a cold, windy, snowy day.

3/13
Today I am grateful to knock off some items from my "To Do" list last week that had lingered far too long.

3/14
Today I am grateful my washing machine is working again.

3/15
Today I am grateful for a free Audible subscription.

3/16
Today I am grateful for a bike ride and a chance to work in a coffee shop yesterday afternoon.

3/17
Today I am grateful to upgrade my TV plan and install a new receiver.

3/18
Today I am grateful to see "The Comedy of Errors" at Chicago Shakespeare Theatre last night.

3/19
Today I am grateful to go to an exciting Chicago Fire - FC Cincinnati soccer game last night with my sons.

3/20
Today I am grateful to see "Big Fish: The Musical" in Lincolnshire yesterday.

3/21
Today I am grateful I could make it to the gym every day for the last 2 weeks.

3/22
Today I am grateful for a conversation with Randy for the first time in a long time

3/23
Today I am grateful to my personal trainer, who always works with me for a few minutes longer than she is contractually obligated.

3/24
Today I am grateful for dinner with John and Kim.

3/25
Today I am grateful:

  • to help host local high school students at the Microsoft Technology Center yesterday
  • to see an excellent Chuchito Valdes concert last night

3/26
Today I am grateful to see The Verve Pipe in concert last night.

3/27
Today I am grateful for March Madness

3/28
Today I am grateful for naps.

3/29
Today I am grateful to receive an unexpected "Thank You" gift yesterday.

3/30
Today I am grateful:

  • for a book club meeting that included a 90-minute conversation with the author
  • to attend a panel on Professional Women hosted by the Family Institute yesterday

3/31
Today I am grateful for:

  • coffee with my son and daughter-in-law
  • a chance to teach cloud computing to a Telecommunications class at Michigan State University
  • dinner with my friends Nick and Betsy

4/1
Today I am grateful that I will never post on social media again

4/2
Today I am grateful for:

  • breakfast with my goddaughter Amanda Friday
  • visiting my sister Debbie this weekend as she recovers
  • the hospitality of Diane and Pat
  • a visit with Dennis yesterday

The Verve Pipe The Verve Pipe was formed in 1992 in East Lansing, MI - eight years after I moved away from East Lansing. In 1993, they released their most famous album, "Villains," which contained the hit songs "The Freshmen" and "Photograph." In 2001, Mark Wahlberg lip-synced to the Verve Pipe song "Colorful" in the movie "Rock Star."

I finally saw Verve Pipe in concert on Saturday evening as they performed for a sold-out audience at Chicago's City Winery.

Founding members Brian Vander Ark (guitar, lead vocals) and his brother Brad (bass guitar) remain from the original lineup. These days, they are joined by drummer Zach Dubay, Randy Sly on keyboards, backing vocalist Channing Lee, and Lou Musa, who played a wide variety of styles with equal ease on lead guitar. Brian is the leader, but the entire ensemble contributed and played well together. Brian VA retains the vocal range of his youth, and the band members harmonize well with him - particularly Lee, who has a lot of chemistry with the lead singer.

The evening's sets mainly consisted of original songs, but they covered the music of others in the final stretch, including David Bowie's "Life on Mars" and Fleetwood Mac's haunting "The Chain." They closed their second set with a crowd-pleasing rendition of "What Happiness Is" that included Lee breaking into a few lines of Alanis Morissette's "You Oughta Know."

The energy increased as the evening went on. By the end of the two-hour show, the audience was satisfied. I should not have waited so long to see this band.

 


GCast 145:

Azure Active Directory Bulk User Operations

It can take a long time to manually create, invite, and delete many users in Azure Active Directory. Fortunately, AAD provides bulk operations to facilitate these activities.


Episode 742

Matt Groves on Fluent Migrator

Matt Groves describes how to use the Fluent Migrator open source tool to manage changes to the structure and data of your relational database. In addition, he talks about his NoSqlMigrator project, which brings this functionality to NoSQL databases.

Links:

http://fluentmigrator.github.io/
https://crosscuttingconcerns.com/How-I-use-Fluent-Migrator
https://crosscuttingconcerns.com/Lessons-learned-about-Fluent-Migrator
https://crosscuttingconcerns.com/NoSQL-Migrations-Couchbase
https://github.com/mgroves/NoSqlMigrator

 


The cast of The Comedy of Errors Tim Burton's 2003 film "Big Fish" was far from his most commercially successful movie. But it was a delightful story that combined fantasy, love, and adventure. In 2013, a musical adaptation of the tale premiered in Chicago. In 2023, the play returned to Chicagoland at the Marriott Theatre in Lincolnshire.

I attended the final performance Sunday evening and found it nearly as delightful as Burton's movie.

The musical's plot is similar to Burton's movie, with minor deviations. Edward Bloom is dying. His son Will feels he does not know his father because Edward has spent his life telling elaborate stories of his life. Through Edward's stories and through song, we get a look into the father's adventures as he befriends the giant Karl and courts his wife Sandra and joins a circus and rescues his hometown. But we are never sure which parts are authentic, which are invented, and which are exaggerated. We hear every story filtered through Edward's oratory and wit.

The songs are trite and formulaic but catchy. What elevated this show was the performance of Alexander Gemignani, who played Edward Bloom. He made the character larger than life. His transition from energetic young Edward to frustrated and feisty old Edward was outstanding.

After the show ended and the actors took their bows, Gemignani called to the stage the entire crew for a final thank you as the run ended. It was a fitting tribute and an ideal end to a delightful evening.


The cast of The Comedy of Errors The Chicago Shakespeare Theatre knows how to create a new twist on an old idea. They did so Friday night in their production of William Shakespeare's "The Comedy of Errors."

"Errors" is one of Shakespeare's simplest and shortest plays. Two pairs of twins begin life together. Two are well-born lords named Antipholus, while two named Dromio act as servants to the Antipholuses. At a young age, a shipwreck separates them. One Antipholus and Dromio settle in Ephesus, while the other pair settle in Syracuse. As adults, the four find themselves in the same city and cross paths repeatedly, which results in repeated mistaken identities and much slapstick humor. The script features variations on the same joke.

Rather than present the Bard's play directly, CST depicted a Hollywood studio filming an adaptation of "The Comedy of Errors" in London during the World War II German bombing of the city. We see multiple subplots within the moviemaking - the egotistical stage actor who feels the role of Dromio is beneath him; the director's wife, who is having an affair with the lead actor; parts that are filled by a standup comic and a pop singer to boost ratings. In between, we see the story of Antipholus and Dromio unfold.

This play within a movie within a story within a play makes Shakespeare's simple story more complex and more fun. A host of eccentric 20th-century actors portray eccentric 16th-century characters.

The play provides many laugh-out-loud moments as the outer story leaks into the inner story. The leading man's halitosis spoils a love scene. Debris from an air raid injures an actor, who must deliver his lines from a wheelchair.

CST founder and Artistic Director Barbara Gaines directed this adaptation, ending her longtime association with the Theatre. Ms. Gaines is stepping down this year.

 

She goes out on a high note.


Scott Rutz on Dapr

Comments [0]

Episode 741

Scott Rutz on Dapr

Scott Rutz describes how to use Distributed Application Runtime (Dapr) building blocks to simplify your microservices applications.

https://dapr.io/ 


For the first time in a long time, I am excited to continue Robert Jordan's "Wheel of Time" series. For eleven books, Rand Al'Thor and his companions have been preparing to battle the forces of evil at the Last battle. The series began with great promise but dragged over the past few novels as Jordan failed to advance the story or resolve plot lines at an acceptable pace. 

This changed with the death of Robert Jordan.

Novelist Brandon Sanderson picked up the mantle and vowed to conclude the series. Jordan made extensive notes and expected his successor could resolve all subplots in a single book. But Sanderson and his publisher recognized the complexity woven by Jordan would take more than one book to resolve, so they split the conclusion into three volumes. "The Gathering Storm" is the first of those three - Number 12 in the series.

In this book, Rand prepares his armies for the last battle. We see his battle to retain his sanity as his power increases. We see his rejection of sentiment and emotion as he becomes focused on the fight with the Dark One to decide the world's fate. Close friends become pawns in his chess game, and bystanders are often expendable if Rand achieves his primary objectives. 

Other subplots brought to a conclusion: 

- The Aes Sedai have imprisoned Egwene for the crime of laying claim to the group's leadership. Egwene attempts to unite the White Tower and the Aes Sedai sisters despite her captivity.

- Rand attempts to make a truce with the Seanchan. Their invasion complicates Rand's war, so he approaches Tuon with a deal.

Sanderson tells the story much better than Jordan did. One chapter describes a town whose citizens are cursed to go on a murderous rampage each evening at sunset only to forget their crimes at daybreak. Sanderson builds tension where Jordan would have dragged out the narrative to the point of tedium. When  Egwene al'Vere visits Tel'aran'rhiod, Sanderson focuses on the essential details, giving the reader a sense of the shifting nature of the dream world. Jordan would have described in detail every article of clothing and background scenery without regard to its impact on the scene or story.

This will sound mean. Robert Jordan's "Wheel of Time" series benefited from the death of Robert Jordan. "The Gathering Storm" combines the imagination of Robert Jordan and the world he created with the storytelling of Brandon Sanderson. It is a winning combination.

 


Scythian in concertScythian is a product of multiple cultures, and they combine those cultures in their music.

Brothers Alexander and Danylo Fedoryka, who lead the band, are the children of Ukrainian immigrants. The brothers grew up in the hills of Virginia, and the band still resides in northern Virginia. So they incorporate the music of their parents' homeland with the traditional folk music of the American Southeast. All this is unusual because they are primarily a Celtic band. The brothers explained the relationship between Ukrainians and Irishmen: "We are basically cousins," they explained, because both peoples have suffered oppression, both enjoy music and a good time and both eat lots of potatoes.

And just to confuse us, they began their Sunday evening concert at Chicago's Athenaeum Center with a whaling song. The sea shanty "Wellerman" went viral two years ago, thanks to a Tik Tok video, and Scythian performed the harmony vocals exquisitely.

Danylo plays guitar and accordion, while Alexander plays fiddle, mandolin, and guitar. They are supported by Ethan Dean on bass and Johnny Rees on drums. Each member is excellent at his instrument, but they particularly shine on their vocals, which they often sing in harmony with one another. Although the Fedorykas sang lead on most tunes, Rees stepped to the front for a beautiful rendition of "Danny Boy."

All four dressed in traditional Ukrainian costumes for the event. They mixed in a few Ukranian tunes, along with some Americana music, such as "Song of Sacrifice" and the traditional "Crawdad Hole," which they offered as a tribute to Doc Watson.

The night's performance included more than just music. During some Celtic songs, a local group of young dancers joined them on stage to perform traditional Irish dances. Most of these songs were traditional or traditional-sounding, but they showed off their arrangement of U2's "I Still Haven't Found What I'm Looking For." Late in the set, the band's roadie came onstage to dance with a broom while the band accompanied him with an Irish reel.

I did not know what to expect when I arrived at The Athenaeum Sunday evening. I received everything.

 


GCast 144:

Managing Azure Active Directory Groups

This video walks you through the process of creating and managing security and M365 groups in Azure Active Directory.


Episode 740

Mike Shelton on Data Lakehouses

A Data Lakehouse combines the advantages of a Data Warehouse and a Data Lake. Mike Shelton discusses this technology and how to use it.


Elle King in concertElle King does not look or act like other famous singers. And she does not care.

She sings about drinking and smoking. And she carries a few more pounds than other singers boasting similar success. And she swears. She swears a lot. But she does not care. "You don't see women who look like me and sing about these things," she boasted to the crowd Saturday night at Chicago's Salt Shed amphitheater.

King opened with "Tusla," a recent rocking country song about a woman throwing all her man's possessions out on the grass after he leaves town with another woman: "Well, that good-for-nothin' mothertruckin' son of a gun; I don't need to know her name 'cause I can tell you which one," she wailed to an appreciative audience.

King has plenty of country and western songs, and she sang many on this night. Her band dressed in cowboy hats and The Great Whiskey Project from Mobile, AL delighted the crowd with their country-blues numbers before Elle took the stage.

King also has plenty of pop material from which to draw, and she mixed in some of these songs. Early in her set, she performed "Ex's and Oh's," her biggest hit, and the band impressed with a rendition of Dr. Hook's "The Cover of Rolling Stone."

But the evening mainly belonged to country music which Elle delivered in abundance. She sang a few slow songs ("Jersey Giant"), but most of the set was rough and rowdy.

King got a bit rough herself. I could not tell if she was joking when she told the keyboard player to "Shut the f*** up!" He seemed to take it in stride.

She closed the show with "Drunk (And I Don't Wanna Go Home)," a single she recorded with Amanda Lambert.

This was my first visit to the Salt Shed. The venue opened last year, and the indoor concert area opened earlier this year. Most patrons stand at the Shed, but the indoor space provides some grandstand seating.

 

It was a good night and a good show to experience this theater.


A New Era for "1776"

Comments [0]

The cast of 1776 To prepare myself for  "1776: The Musical," I listened to the 1969 original Broadway Cast recording. Then, I watched the 1972 movie adaptation starring William Daniels as John Adams.

I was not prepared.

"1776" tells the story of America's founding fathers as they debated declaring independence from Great Britain during the Revolutionary War. The story takes in Philadelphia during a sweltering June and July of 1776. Delegates represent all thirteen colonies, but the story focuses on John Adams, Benjamin Franklin, and Thomas Jefferson. 

The original production was good enough to win the 1969 Tony Award for Best Musical (it beat out "Hair" for the award) but lacked the staying power of other award winners. The performances on the soundtrack and in the film version were good but never great. However, the subject matter remains a fascinating topic. Numerous historians have analyzed how America became the first set of colonies to break away from its parent nation. The struggles of the young nation to find an identity is worth investigating.

Directors Jeffrey L. Page and Diane Paulus took the play to another level. They reimagined the founding fathers as women - often women of color. Only two minor characters in the play are female. Abigail Adams and Martha Jefferson were wives of statesmen, and their parts in the script were minor. But the actors portraying the men on stage were either female, trans, or non-binary. This casting brought a renewed energy to the performance. The ladies consistently referred to one another as "sir" and "he" and "him," despite the fact they were addressing actresses. 

The current production of "1776" breathed new life into a play that had begun to show its age.

 


Overview

Microsoft Azure Spring Apps (ASA) offers a simple, reliable, and scalable way to host your Java Spring applications. ASA frees you from managing the hardware, networking, infrastructure, and containers on which your application is running. All of those things are handled by the platform. ASA also provides simple deployment mechanisms for your code.

In this article, I will show you how to deploy a local Spring application to an Azure Spring App.

Prerequisites

Azure Prerequisites

This article assumes that you already have an Azure Spring Apps Service and an Azure Spring App running under that service. Refer to the following articles for information on how to create these:

When I wrote this article, I created a service named "dgtestasasvc" and an app named "dtestapp", as shown in Fig. 1.

Apps listing

Fig. 1

Local Prerequisites

In order to proceed, you will need to have Java, Maven, and git installed locally. Many IDEs will assist you in installing these. If you are running on a Windows operating system, you should also install [Windows Subsystem for Linux[(https://learn.microsoft.com/en-us/windows/wsl/install).

Sample Code

You are welcome to use your own Spring application. However, if you do not have one available, you can this sample Spring Boot application. It contains a single page that displays the message: "Greetings from Spring Boot!"

Retrieve and build the sample application with the following commands:

git clone -b boot-2.7 https://github.com/spring-guides/gs-spring-boot.git
cd gs-spring-boot/complete
mvn clean package -DskipTests

Deployment

The Azure CLI contains a command to deploy a Spring App to an existing Azure Spring App. The syntax is:

az spring app deploy \
    --resource-group  \
    --service  \
    --name hellospring \
    --artifact-path target/spring-boot-complete-0.0.1-SNAPSHOT.jar

Here is the syntax for my service and app:

az spring app deploy \
    --resource-group dgtestasarg \
    --service dgtestasasvc \
    --name dgtestapp \
    --artifact-path target/spring-boot-complete-0.0.1-SNAPSHOT.jar

This deployment may take a couple minutes.

Test the Deployed App

If your application deploys without error, you can view it by opening a web browser and navigating to:

https://ASA Service Name-App-Name.azuremicroservices.io

where:

Here is the URL for my deployment:

https://dgtestasasvc-dgtestapp.azuremicroservices.io

The output is shown in Fig. 2.

Test Output

Fig. 2

Conclusion

In this article, you learned how to deploy a local Spring application to an Azure Spring App.


Episode 739

Jimmy Bogard on Vertical Slice Architecture and MediatR

A few years ago, Jimmy Bogard become frustrated with building and maintaining applications that partition components horizontally. He found that separating application code along vertical lines reduced the complexity and rigidity of his applications. He discusses this pattern and MediatR - the open-source tool he created to facilitate Vertical Slice Architecture.

 

Links:

https://jimmybogard.com/

https://jimmybogard.com/vertical-slice-architecture/

 


February 2023 Gratitudes

Comments [0]

2/6
Today I am grateful for all I learned about Kubernetes over the past 2 weeks.

2/7
Today I am grateful for a new countertop combination toaster oven / air fryer / convection oven.

2/8
Today I am grateful to be a guest on the Visual Studio Toolbox show last night.

2/9
Today I am grateful to pass 700 subscribers to my shows "Technology and Friends" and "GCast."

2/10
Today I am grateful to talk with Matt yesterday for the first time in years.

2/11
Today I am grateful to see a musical production of "Wuthering Heights" last night at the Chicago Shakespeare Theatre.

2/12
Today I am grateful to see the Tannahill Weavers in concert last night.

2/13
Today I am grateful to have friends over to watch the Super Bowl yesterday.

2/14
Today I am grateful for dinner with my son last night

2/15
Today I am grateful for the outpouring of support for those affected by the shooting at Michigan State University.

2/16
Today I am grateful to see Ana Popovic in concert last night.

2/17
Today I am grateful for:

  • a successful surgery for Marlene
  • a conversation with Betsy yesterday

2/18
Today I am grateful to go to Andy's Jazz Club with John and Kim last night

2/19
Today I am grateful for a birthday conversation with my brother across the International Date Line

2/20
Today I am grateful

-to attend a memorial service for Ed yesterday -to see Denny Laine in concert last night

2/21
Today I am grateful to see Dave Mason in concert last night.

2/22


Today I am grateful to be a guest on the Visual Studio Toolbox show. 2/23
Today I am grateful for lunch with my sons yesterday

2/24
Today I am grateful to pass the AZ-204 exam

2/25
Today I am grateful to replace the batteries in my smoke detector.

2/26
Today I am grateful to visit Marline in the hospital yesterday.

2/27
Today I am grateful to edit a bunch of videos last week.

2/28
Today I am grateful for a fresh haircut.

3/1
Today I am grateful to work with a partner on-site this week.

3/2
Today I am grateful

  • to all who sent me kind birthday wishes yesterday
  • for dinner with Mike and Travis
  • to see Drunk Shakespeare last night at the Lion Theater

3/3
Today I am grateful to celebrate my birthday last night with some of my favourite people by seeing 1776: The Musical.

3/4
Today I am grateful that the predicted severe storm mostly missed us yesterday.

3/5
Today I am grateful to see Elle King in concert last night.


Drunk Shakespeare performing MacbethI have walked past the Lion Theater on Wabash Street hundreds of town without noticing the entrance, the sign above it, or the play inside.

Finally, I made my way inside to see "Drunk Shakespeare."

The premise: A group of actors perform a play by William Shakespeare. They switch between a faithful adaptation of the bard's script and off-color humor. The twist is that one of the performers publicly downs four shots of whisky before the play begins. He drinks a few more during the night, becoming progressively more drunk and sloppy. "You cannot spell 'bard' without 'bar'," announces the Master of Ceremonies.

Tonight's performance more or less followed WS's script for "Macbeth"; but the cast interjected plenty of jokes into the mix.

Drunk Shakespeare performing MacbethThe performers often break the figurative fourth wall, interacting with the audience, sometimes flirting or telling raunchy jokes. This was easy to do as the audience sat on benches along the long narrow stage, making it difficult to separate the performers from the observers.

The show was funny enough without adding the gimmick of one drunk actor. It was one more joke, and while amusing, it was far from the funniest part of the evening. I am not convinced that he was consuming alcohol. The shots he downed could have been anything. But a schtick is a schtick, and this one did not detract from the show.

"Drunk Shakespeare" is part scripted, part improv, and all fun.

I enjoyed this show more than I expected I would.


Overview

Microsoft Azure Spring Apps (ASA) offers a simple, reliable, and scalable way to host your Java Spring applications. ASA frees you from managing the hardware, networking, infrastructure, and containers on which your application is running. All of those things are handled by the platform. ASA also provides simple deployment mechanisms for your code.

In a previous article, I showed how to create an Azure Spring App Service. A service can host many Apps.

Creating an Azure Spring App

To add an Azure Spring App to an Azure Spring App Service, log into the Azure portal and navigate to your Azure Spring App Service "Overview" tab, as shown in Fig. 1.

Overview Blade

Fig. 1

Click the [Apps] button (Fig. 2) to open the "Apps" blade, as shown in Fig. 3.

Apps Button

Fig. 2

Apps Blade

Fig. 3

Click the [Create App] button (Fig. 4) to open the "Create App" dialog, as shown in Fig. 5.

Create App Button

Fig. 4

Create App Dialog

Fig. 5

A new empty row displays.

At the "App name" field, enter a name for your Azure Spring App. The name must be unique within this Azure Spring App Service.

At the "Deployment Type" dropdown, select "Artifacts" if you plan to deploy a JAR file; or select "Custom Container" if you plan to deploy from a container image.

At the "Runtime platform" dropdown, select the version of Java on which your app runs.

At the "vCPU" dropdown, select the fraction of virtual CPU to allocate to this app: 1 or 0.5.

At the "Memory" dropdown, select the amount of memory to allocate to this app.

At the "Instance count" field, enter the number of instances of the app you want to deploy.

Click the [Create] button to begin creating a new Azure Spring App with sample application code deployed.

After the App is created, it should be listed in the "Apps" blade, as shown in Fig. 6.

Apps Blade With App

Fig. 6

Click the [Refresh] button if you do not see the App listed.

Click the App name to view details about the Azure Spring App. The App's "Overview" blade displays, as shown in Fig. 7.

App Overview Blade

Fig. 7

Click the [Assign Endpoint] button (Fig. 8) to create a direct endpoint URL for this app.

Assign Endpoint Button

Fig. 8

You can view the sample application deployed by clicking either the "URL" link or the "Test endpoint" link (Fig. 9) to display the sample web page shown in Fig. 10.

URL Links

Fig. 9

Test App

Fig. 10

Conclusion

In this article, I showed you how to add an Azure Spring App to an Azure Spring App Service. In the next article, I will show you how to deploy your own Spring App to this Azure Spring App.


GCast 143:

Invite External Users to Azure Active Directory

You can allow users outside your organization to access your Azure Active Directory resources without the need to manage their accounts. This video shows you how to invite external users.


Overview

Microsoft Azure Spring Apps (ASA) offers a simple, reliable, and scalable way to host your Java Spring applications. ASA frees you from managing the hardware, networking, infrastructure, and containers on which your application is running. All of those things are handled by the platform. ASA also provides simple deployment mechanisms for your code.

Creating an Azure Spring App Service

When working with ASA, you first need to create an Azure Spring App Service. A service can host many Apps.

To create a service, log into the Azure portal and click the [Create a resource] button (Fig. 1) and search for "Azure Spring Apps", as shown in Fig. 2.

Create Resource Button

Fig. 1

Search For Azure Spring Apps

Fig. 2

If the "Azure Spring Apps" tile (Fig. 3) displays, click the [Create] button to display the "Azure Spring Apps" information screen, as shown in Fig. 4.

Azure Spring Apps Tile

Fig. 3

Azure Spring Apps Info

Fig. 4

The "Azure Spring Apps" creation dialog displays with the "Basics" tab selected, as shown in Fig. 5.

Basic Tab

Fig. 5

At the "Subscription" dropdown, select the Azure subscription in which you want to create the Azure Spring Apps service. Most of you will have only one subscription.

At the "Resource group" field, enter the name of the Resource Group in which you want to store this service or click the "Create new" link to create a new Resource Group.

At the "Name" field, enter a unique name for the Azure Spring Apps Service.

At the "Region" dropdown, select the Azure region in which to create the Azure Spring Apps Service. To minimize latency, consider the location of your users and any other services or data with which your apps will interact.

By default, the "Pricing" field selects the Basic tier pricing. Click the "Change" link to select a different pricing tier.

Click the [Review and create] buton to advance to the "Review and create" tab, as shown in Fig. 6.

Review Create Tab

Fig. 6

If you made any errors, they will display here. You will need to return to the tab with the error and correct it before you can proceed. If everything looks good, click the [Create] button to begin creating the Azure Spring Apps Service. This will take a few minutes.

After the Azure Spring Apps Service is created, the "Your deployment is complete" confirmation displays, as shown in Fig. 7.

Deployment Complete message

Fig. 7

Click the [Go to resource] button to navigate to the "Overview" blade for your Azure Spring Apps Service, as shown in Fig. 8.

Overview Blade

Fig. 8

Creating an Azure Spring App

Deploying a Spring App to Azure Spring Apps

Conclusion

In this article, I showed you how to create a new Azure Spring App Service. In the next article, I will show how to create a new Azure Spring App within this service.


Episode 738

Rob Richardson on Containerization

Rob Richardson talks about the advantages of running your applications in containers and using tools like Kubernetes to manage them.

Links:
https://github.com/robrich/kubernetes-hands-on-workshop 

 


Dave Mason BandI love when an artist opens a concert with one of my favourite songs. Dave Mason did just that Monday evening at the City Winery when he began his set with "Only You Know and I Know" - an early 1970s song that caught the ear of preteen David as I listened to my parent's AM radio.

Mason came to prominence in the late 1960s as a founding member of Traffic, a band known for its psychedelic blues numbers. Mason's band performed songs from this era, including "Rock And Roll Stew," "Low Spark of High Heeled Boys," and "Dear Mr. Fantasy." He followed up this set with a rendition of "Can't Find My Way Home," a song made famous by Blind Faith, the supergroup made up of Traffic alumni and others.

Mason sang lead on some songs and let his bandmates take the lead on others. And what a band it was! Martin Fera (drums), Johnne Sambataro (guitar), Ray Cardwell (bass), and Tony Patler (keyboards) were all top-notch.

David Giard and Dave MasonDave Mason has been around long enough to change his musical persona multiple times, and he drew on all these styles at his performance Monday evening at the City Winery.

His solo work from the 1970s appealed to me because that is when I first discovered him. He played selections from his "Alone Together" album, which he recently re-recorded because the original master tapes were destroyed in a Universal Studios fire. He broke out a 12-string guitar solely for his megahit "We Just Disagree." He sang the love song "Every Woman" to prove, in his words, "I'm a sensitive son of a bitch!" And he closed with "Feelin' Alright?" - a song written by Mason but made famous by Joe Cocker.

This finale brought the audience to its feet for a climactic conclusion.


Denny LaineDenny Laine has had a hand in more popular music than you probably realize.

He was a founding member and lead singer of The Moody Blues before Justin Hayward replaced him and the band took a different direction. In 1971, Paul and Linda McCartney recruited him to join their new band, Wings. That collaboration lasted ten years.

In between, Laine has recorded solo albums and worked with many of the biggest names in rock & roll. He spent much of his performance Sunday night at the City Winery dropping those names. He told stories of his interactions with McCartney, Jimi Hendrix, Sonny Boy Williamson, Paul Simon, and many others with whom he worked and befriended over the years. It was an evening of music and storytelling, and Laine drew on his over six decades in the business to provide both.

He told a story of the beautiful French girls who failed to show up for a Paris date with him and Mike Pender. While waiting for the girls, Laine wrote "Boulevard De La Madeleine" - a song that peaked at #2 in France.

He told of touring with Sonny Boy Williamson, who inspired him to write "Bye Bye Bird" - an early Moody Blues hit.

He talked of writing "Deliver Your Children" for Wings and of McCartney's suggestion to add a Spanish guitar to the arrangement.

He told of showing two partial songs to McCartney, who suggested combining them. When Laine admitted he had no words yet for the tune, Paul told him to call it "No Words." Denny later wrote words around this title.

Denny Laine and David GiardHe related the tale of co-writing and recording the classic "Band on the Run" album in Nigeria. Robbers stole the rehearsal master tapes from McCartney at knifepoint as he walked to his room. Laine closed by playing "Band on the Run," inspiring the audience to sing along.

Although most of Mr. Laine's career involved collaboration with a band, he performed solo on this night, accompanying himself on guitar. The 78-year-old no longer has the vocal range he boasted in his youth, but no one can question his guitar playing.

Nearly all of the evening's music was written or co-written by Laine. But he did insert his interpretation of Paul Simon's "Richard Coury" - a song that Wings would sometimes play in concert.

Laine endeared himself to the sold-out audience by his playing and his personality. After nearly two hours performing, he remained on stage to chat, sign autographs, and pose for photographs with fans.


Overview

Running an active YouTube channel can be hard work. You may want to offload some of that work to others. You likely do not want to share your password, so YouTube provides a way to grant access to other users, allowing them to perform actions on your account.

The user to whom you delegate much have a Gmail address and should have a YouTube channel (If they don't have one already, they will be prompted to create one when they accept your invitation.)

Granting Permission

The following section pertains the person granting permissions.

To begin, log into your YouTube account, click your account icon in the top right corner, and select [YouTube Studio] from the dropdown menu, as shown in Fig. 1.

Menu

Fig. 1

The "YouTube Studio" page displays. Select [Settings] from the left menu, as shown in Fig. 2.

Dashboard

Fig. 2

The "Settings" dialog displays, as shown in Fig. 3.

Settings

Fig. 3

Select [Permissions] to display the "Permissions" dialog, as shown in Fig. 4

Permissions

Fig. 4

Click the [INVITE] button (Fig. 5) to display the Invitation dialog, as shown in Fig. 6.

INVITE Button

Fig. 5

Invitation Dialogue

Fig. 6

At the "Email" field, enter the email address of the person to whom you wish to delegate permissions. This must be a valid Gmail address.

At the "Access" dropdown (Fig. 7), select the type of access you wish to grant to this user. A description appears below each access level. Only grant the amount of permission the user needs to perform the operations you wish to perform.

Access Dropdown

Fig. 7

After you select an Access permission, you return to the Invitation dialog, as shown in Fig. 8.

Invitation Dialogue

Fig. 8

Click the [DONE] button to close this dialog and return to the "Permissions" dialog, as shown in Fig. 9.

Permissions

Fig. 9

Click the [DONE] button to grant permissions.

Accepting Permissions

The following instructions apply to the user to whom permission is granted.

You will receive an email similar to the one shown in Fig. 10.

Invitation Email

Fig. 10

Click the [ACCEPT INVITATION] button.

If you do not yet have a YouTube channel, you will be prompted to create one, as shown in Fig. 11.

How You'll Appear

Fig. 11

A confirmation message similar to the one shown in Fig. 12 displays, indicating what permissions you have on the channel.

Confirmation

Fig. 12

Click the [CLOSE] button to close this dialog and display your YouTube channel.

In order to act on the other channel to which you were granted permissions, click your account icon in the top right corner, and select [Switch account] from the dropdown menu, as shown in Fig. 13.

Menu

Fig. 13

Select the other channel, as shown in Fig. 14.

Switch Account

Fig. 14

You will now be able to perform any actions on that channel to which you were granted permission.

Conclusion

In this article, you learned how to grant permission to another user to manage your YouTube channel.

NOTE: Thank you to Peter Laudati for helping me work through and better understand this process.


Episode 737

Kira Soderstrom on Power Platform

Kira Soderstrom describes how to build low-code solutions using Microsoft's Power Platform.

Links:

Power Platform Training Material:

https://powerusers.microsoft.com/t5/Power-Apps-Community-Blog/Power-Platform-Training-Materials/ba-p/342088

 

Power Platform Learning Resources and Customer Success Stories: 

https://powerapps.microsoft.com/en-us/blog/microsoft-powerapps-learning-resources/

 

PowerUp Online and Interactive Training Resources for Canvas Apps: 

https://learn.microsoft.com/en-us/training/paths/create-powerapps/

 

Power Platform Admin Documentation: 

https://learn.microsoft.com/en-us/power-platform/admin/

 

Power Platform Center of Excellence Overview: 

https://learn.microsoft.com/en-us/power-platform/guidance/coe/overview

 


The Tannahill Weavers The Tannahill Weavers have been performing for 55 years. Dozens of musicians have come and gone over the years, but the two consistent members have been Roy Gullane on guitar and lead vocals; and Phil Smillie on various woodwind instruments. Saturday night at the Old Town School of Folk Music, they were joined by Malcolm Bushby on fiddle and Iain MacGillivray, who rotated between woodwind, fiddle, and bagpipes.

The Weavers have recorded some modern music over the years, but this concert consisted primarily of traditional Celtic songs - mostly from their native Scotland. Some of the music was written in the past century, but it still had a classic feel to it. They played jigs and ballads and reels, alternating between instrumentals and vocal compositions - many of which showed off the band's tight harmonies.

Roy Gullane took center stage, singing lead on most songs and chatting with the audience. He joked about the pleasantness of bagpipes and his younger romantic self. But it was MacGillivray who stole the shoe with his impressive bagpipe playing. This was the first time I had seen a bagpiper up close, and his melodies and rapid finger impressed me.

The show felt more intimate than most shows at the Old Town. The band performed in Szold Hall, which is much smaller than Maurer Hall, where most visiting artists perform.

 

Other bands have worked to keep Celtic music alive, but few have done so as long or as well as The Weavers.


Wuthering Heights cast I was unprepared when my friend took me to The Chicago Shakespeare Theatre Friday evening to see "Wuthering Heights."

I knew the Emile Bronte novel from reading it years ago. I remember very little of the 1939 William Wyler movie I saw decades ago. But I knew the story. Adopted Heathcliff, abused by his family and neighbors and haunted by the loss of his love, descends into madness and mistreats his own family in his quest for revenge. It is a dark tragedy that takes place on the depressing moors of northern England.

I was not expecting a musical.

This production by the UK's Wise Children Theatre Company is filled with song and dance. But, while the music entertains, the story retains the darkness of the source material.

Although this night's show elevated several understudies, I witnessed excellent performances! Ricardo Castro was brilliant as Heathcliff. We believe he was consumed by his anger and haunted by his lost love.

Among the regular cast, Georgia Bruce stands out in her portrayal of Heathcliff's abused wife Isabella, their sickly son Linton, and one of a group who portray the 18th-century Yorkshire moors.

In this adaptation, playwright and director Emma Rice omitted the character of Nelly, who served as a housekeeper and narrator of much of the story in the novel. Instead, she opted to bring to life the moors, casting multiple actors to speak, listen, sing, and dance as they advance the narrative. This technique works. The anthropomorphic moors frequently break the fourth wall to make sense of a plethora of characters, subplots, and deaths.

 

The entire performance exceeded my expectations.


GCast 142:

Security Defaults in Azure Active Directory

Security Defaults are a quick and easy way to set some basic security on an Active Directory tenant until you have time to define the policies appropriate to your organization.


Episode 736

Brian Korzynski on Machine Learning Challenges for a C# Developer

Brian Korzynski describes how write Machine Learning solutions in C# and the challenges creating, deploying, and consuming ML models.


Mavis Staples Mavis Staples is growing old. She turned 83 last year and has neither the energy nor the vocal range that made her famous in her youth.

But she pours into her performance all the energy that she has. She did so Saturday night at a sold-out Symphony Center. The Chicago Symphony Orchestra usually performs at this venue. However, Staples took the stage this night, accompanied only by a drummer, bass, guitarist, and two backing singers.

The Inglewood native repeatedly told the delighted audience, "It's good to be home."

Although fans in the crowd cried out for "The Weight" and "I'll Take You There," Mavis skipped those songs. Still, the sold-out crowd loved her musical selection, as she mixed blues, soul, gospel, and R&B. My favourites were "Respect Yourself" and her version of The Talking Heads' "Slippery People."

Between each song, Mavis relaxed, sipped her tea, and gathered her strength before throwing herself into the following number.

There was no encore, but it was an entertaining evening. Even the warmup band (blues singer/guitarist Celisse) was excellent. Mavis Staples is a national treasure, and I am happy I finally had the chance to see her live.

 

 


Spafford Spafford has taken a non-traditional approach to building an audience. They self-produce their albums and release them on their own label, tour frequently, and live-stream their concerts. Much like the Grateful Dead and Phish (bands that clearly influenced Spafford), they expand their audience via word of mouth rather than radio airplay.

It works. Spafford has developed a large international following and sells out shows worldwide. Fans packed the Park West concert hall Friday night to see Spafford perform live.

The band's music did not disappoint. They filled two sets and an encore with funky jazz-influenced rock melodies. The musicians are first-rate and extended each song with impressive improvisational solos. Much of the music was hypnotic, intensified by the laser light show behind them. They played only eleven songs, each lasting 10-20 minutes, so the show continued well past midnight. Puzzlingly, their announced "short break" stretched to over a half hour.

Friday night's set consisted almost entirely of originals. The lone exception was a bluesy rendition of the Eagles' "Those Shoes," which bled into an extended instrumental break.

Each band member is a proficient musician. Jordan Fairless on bass, Cory Schechtman on keyboards, and Nick Tkachyk on drums all impress; but Brian Moss's guitar licks stood out. His fingers burned across the stream on solos and provided great rhythm when others took the spotlight.

If you missed this show, do not despair. There is a good chance they will play at a venue close to your home. And if you miss that, you can catch live streams and recordings of their concerts.


Episode 735

Jeffrey Miller on Building a Second Brain

Tiago Forte's book "Building a Second Brain" describes how to manage the flood of information we consume each day. Jeffrey Miller discusses the principles and practical applications of Forte's framework.

https://www.buildingasecondbrain.com/ https://www.skeeterbooks.com/


January 2023 Gratitudes

Comments [0]

1/2
Today I am grateful for some time off over the holidays and a chance to work on some non-work things.

1/3
Today I am grateful for a new power supply in my computer

1/4
Today I am grateful my chiropractor was able to see and treat me on short notice

1/5
Today I am grateful to attend an exciting Bulls - Nets game with my son last night.

1/6
Today I am grateful to replace the battery in my car key fob

1/7
Today I am grateful my replacement CPAP machine arrived

1/8
Today I am grateful to see "Improvised Jane Austen" at iO Theater last night.

1/9
Today I am grateful my back pain is finally subsiding after two weeks

1/10
Today I am grateful to arrive safely in Sandusky, OH.

1/11
Today I am grateful to Chris for a place to stay this week.

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

1/13
Today I am grateful for those who say nice things about me in public.

1/14
Today I am grateful to the organizers of #Codemash, their willingness to adapt, and their transparency toward the attendees.

1/15
Today I am grateful for my new electric kettle.

1/16
Today I am grateful to see "The Ripple, The Wave That Carried Me Home" at the Goodman Theatre last night.

1/17
Today I am grateful to see the Sheryl Youngblood band perform at SPACE last night.

1/18
Today I am grateful for a long conversation with an old friend last night

1/19
Today I am grateful:

-for lunch with my team to welcome the new guy

-to Jason for answering my questions about book publishing

1/20
Today I am grateful for lunch with Michael yesterday

1/21
Today I am grateful that I am still employed.

1/22
Today I am grateful to see John Ondrasik, a.k.a. Five for Fighting in concert last night.

1/24
Today I am grateful to schedule a bunch of interviews with smart people for my show over the next few weeks

1/25
Today I am grateful for a new wireless mouse and keyboard.

1/26
Today I am grateful to stay at home when the weather is bad.

1/27
Today I am grateful to see Patty Griffin in concert last night.

1/28
Today I am grateful for a bunch of minor repairs on my car.

1/29
Today I am grateful that the gym in my building is open again after being closed for 3 years.

1/30
Today I am grateful to see "Chicago - The Musical" from the front row of the CIBC Theatre yesterday.

1/31
Today I am grateful to deliver a virtual presentation at the SpartaHacks hackathon at Michigan State University.

2/1
Today I am grateful for exactly 5 years in my current home.

2/2
Today I am grateful for drinks with Dan and a group of MVPs last night.

2/3
Today I am grateful to see a live recording of "Wait Wait Don't Tell Me" last night at the Studebaker Theatre.

2/4
Today I am grateful to see Spafford in concert last night.

 

2/5
Today I am grateful to see Mavis Staples in concert last night.


Chicago in Chicago

Comments [0]

Roxy and Velma "Chicago - the Musical" was excellent! Great music! Great dancing! Great performance! Great seats!

I have seen the 2002 movie adaptation multiple times but had never experienced the live musical until Sunday afternoon at Chicago's CIBC Theatre.

For those few who don't know, "Chicago" is the story of Velma and Roxie - a sexy cabaret singer and a sexy wanna-be cabaret singer, each of whom is arrested for murder. Sleazy lawyer Billy Flynn takes on their cases and manipulates the media to move public opinion in favor of the ladies.

The play contains almost no good people, no lessons learned, and no tale of moral redemption. The only one who shows kindness is Roxie's husband, Amos, who is so mistreated and ignored that he musically refers to himself as "Mr. Cellophane." ("Mr. Cellophane shoulda been my name, 'cause you can look right through me; walk right by me; and never know I'm there!")

The cast of ChicagoBut the story is funny, and the songs are fantastic. And the production by this year's touring company featured great choreography and excellent singing from all the cast members. Logan Floyd and Katie Frieden are perfect as the amoral femme fatales Velma and Kelly Roxie, while Jeff Brooks shines as the sleazy Jeff Brooks. Other standouts included Brian Kainowski as the dimwitted Amos and Christina Wells portraying prison matron "Mama" Morton.

The music recalls the jazz of the 1920s and serves as a backdrop for the wild lives of the characters.

My seats in row 1 were labeled "Obstructed View" because we could not see the performers' feet. But this proximity to the stage made one feel a part of the show. On multiple occasions, the actors directed their lyrics right at us.

"Chicago" was a bucket list show for me. This was one of the most enjoyable performances I have attended.


GCast 141:

Conditional Access Policies in Azure Active Directory

Learn about Azure Active Directory conditional access policies and how to use them to apply policies for users, devices, or applications.


<< Older Posts | Newer Posts >>