Newsletter #2 – Creativity, Times of Day, and Email Productivity Hack

If you saw my post yesterday “Starting a New Tiny Newsletter“, I’m starting up a new way to share out my smaller, more “informal” thoughts, articles, and other topics.  It’s called “Frog Pond Thoughts” and I’m publishing the 2nd one below.  I haven’t decided if I want to cross-post on my blog long term or keep them separate in / Twitter.  If you have any feedback or suggestions please do share in the comments, email, or on Twitter @BrianTJackett as I’m listening.  For now though enjoy this 2nd one as I expect it will be after the USA holiday of Thanksgiving before then next is published.

#2 – Creativity, Times of Day, and Email Productivity Hack


How do I become more creative?

    1. Do creative things.
    2. Share with others.


  • Repeat #1 and #2 on a regular / scheduled basis.


Yes at first these sounds silly or simplistic but I’ve found them to be true (for me personally at least).  What does “do creative things” mean though?  It might be drawing in a notebook, writing a blog post, creating a new presentation, building blocks with my kids (see pictures below), playing a musical instrument, learning a new language (computer or spoken), etc.  Just as exercising your muscles during a workout needs variety, so do you need variety in the creative things you do.  Additionally doing something creative on a regular basis (once a week, once a month, or whatever works for you) ensures that it isn’t a “once and done” type of activity.

“Thanks Brian but what does sharing with others have to do with creativity?”  Glad you / I asked.  Have you ever had a friend, coworker, or family member who told you about a new TV show / game / restaurant / etc. and your first reaction is “that’s cool, have you heard about…?”  By sharing more not only do you become someone that people rely on finding out new things from but they may reciprocate by sharing their own things to you.

Times of Day

Semi-related to creativity, I find that I am more productive with specific categories of tasks at different times of the day.  Every day is different with   I don’t have anything written down or a routine (perhaps I should) but the following is a rough order for my day:

  • 7am
    • Plan out day, create tasks or to-do list, review day’s meetings, send out meeting agendas if needed
  • 8am
    • Write up documentation, blog post, or other creative writing
  • 9am
    • Deep focus on code, prototyping, etc.
  • noon
    • Read up on blogs / Twitter / LinkedIn from the previous day
  • 1pm
    • Deep focus on code, prototyping, etc.
  • 3pm
    • Emails and other communication

Schedules will always be changing depending on meetings, customer questions, etc. but knowing what types of activities I will be most productive at during different times helps me plan out when I should schedule those tasks.  If you open your email first thing in the morning, blink, and then it is suddenly 3 hours later then that is a good indication that you should either time box how long you spend on email and / or schedule it for a different time of day.

Email Productivity Hack

Speaking of email, I don’t like to send email after 5pm local time.  It’s my own personal guideline.  After 5pm is family / me time and if I’m sending emails to peers, customers, etc. it sets the expectation that they should also be reading and responding to emails “after hours”.

Instead of sending emails in the evening, if I have open time after my kids and wife go to bed I’ll draft up a number of emails that I need to write or respond to and then use the “delay delivery” feature of Outlook
(desktop version).  I then specify not to deliver those emails until at least 7am the following morning.  This way when I open my laptop in the morning, usually around 7:15-7:45am, all of those emails will be sent then.  This helps reinforce my personal rule that email is only for during business hours and also clears those emails off my plate to focus on other tasks that I’m more productive at (see above section).

Do you have any productivity hacks that you use?

-Frog Out

Starting a New Tiny Newsletter

If you’re reading this post (thanks to the handful of you out there), I wanted to let you know I’m starting something new.  I’ve been publishing my blog for over 10 years now but there are times I’d like to post something more informal.  It deserves more than a tweet but a full blog post is too much.  I found out about a service called TinyLetter from my friend Jeff Blankenburg.  I plan to write a tiny letter 2-3 times a month.  In it I’ll share interesting articles I’ve read, thoughts on various topics, or projects I’m following.  Think of it as a way to find out what is ticking in my brain that week.  Feel free to subscribe to Frog Pond Thoughts and share with others.  I’m posting the first letter to my blog for now as well.  Enjoy!

#1: Is this mic on? Starting something new…and why frogs?

Why write a tiny newsletter?

When someone does something new I like to think about “why did they do that?”.  I’ll share my own answer for why I’m starting up this tiny newsletter.  Over the past 6+ months I’ve been tossing around the idea of having some way to share out the various articles, topics, and thoughts I explore on a weekly basis.  During my 1:1 meetings with my mentor (you should have at least 1 mentor, topic for another day) I send him half a dozen or more links, stories, projects, etc. that I store in a OneNote (see example below).

While it is great discussing these items with my mentor I’d love to share them out to a broader audience.  I looked into a number of platforms.  I could extend my existing blog or share posts on LinkedIn but each of those didn’t feel like the right platform.  After seeing my friend and fellow Stir Trek Conference board planner Jeff Blankenburg starting up his Tiny Letter again (Blankenthoughts) I thought this would be a great experiment to see how easy it was for composing, distributing, and engaging with others.  Look for a new newsletter at least 2 times a month.

Why frogs?

If you’ve ever read my blog (“The Frog Pond of Technology”) you may be asking “Brian what’s the deal with frogs?”.  Glad you asked.

For all of my life I’ve always liked the color green.  I also like to do new things on a regular basis which also means.  I liken this to frogs who are amphibious and able to live in many environments.  In the water, on land, in trees, and more.  Frogs are traditionally green and the change of scenery for frogs’ environments led to me have a natural liking of frogs.  That’s the short and simple answer.


I’m keeping this first newsletter short so that is all for now.  Please subscribe and share with your friends, coworkers, or anyone else who might be interested.

-Frog Out

Query Office 365 and Azure AD Logs with Azure Sentinel / Log Analytics and KQL

A few months ago I shared a tweet with a few quick links for learning about Kusto Query Language (KQL) and Azure Log Analytics.  Since that time Azure Sentinel (which sits of top of Azure Log Analytics) has been released to general availability (GA).  In this post I’ll build on that tweet and share a number of resources for starting out with Azure Sentinel / Azure Log Analytics and KQL.

Before you continue with this post I highly recommend reading MVP Tobias Zimmergren’s post on Monitoring Office 365 tenants with Azure Sentinel.

Monitoring Office 365 tenants with Azure Sentinel


Most Microsoft cloud services emit logs for audit, operational, etc. purposes.  These logs are useful for gaining insights into who is using the service and how they are using it but sometimes it is not always easy to query these services.  You might be restricted to only a few thousands records at a time, a limited set of filters, or other constraints.  Azure Log Analytics and KQL make it possible to query a large number of records (in my experience millions to hundreds of millions) in a short time period (seconds in most cases instead of minutes or hours).

Kusto Query Language (KQL)

Over the years I’ve used T-SQL to query SQL Server when needed, but I am by no means an expert in the T-SQL language or concepts.  Having a basic understanding of T-SQL did make it easier for me to understand the entry level concepts of KQL such as filtering, ordering, grouping, and more.  Intermediate to advanced concepts like time based aggregations or self referential queries took a little more time to understand but my Data & AI PFE peer Ken Kilty provided a lot of good advice in this space.

Kusto Query Language overview

SQL to Kusto query translation

Limiting Costs

Azure Sentinel (and by proxy Azure Log Analytics) is charged in 2 ways:

  • Ingestion of data
    • Reserved capacity
    • -or-
    • Per GB
  • Retention of data

Azure Sentinel pricing

For all Office 365 data the ingestion of data is free.  Azure AD audit logs and sign-in logs will be charged according to the reserved capacity or pay-as-you-go per GB model.

Retention of data in an Azure Sentinel enabled workspace is free for the first 90 days.  Beyond the first 90 days pricing is per GB per month.

Ex. Storing Office 365 logs for 9 months, a customer would only be charged for (9 months – 3 free months) = 6 paid months.

Azure Monitor pricing

If you are looking to test out the service “for free” it is possible to configure an Azure Sentinel enabled workspace to ingest Office 365 data and limit the retention of data to < 90 days.  Once you get comfortable with the data schema and writing queries you can increase the retention period.

Sample Queries

In the course of working with customers on monitoring their Office 365 environments I and my teammates have developed a number of KQL queries to find “interesting” data points.  I’ve shared these queries in the following GitHub repo.  Note that these sample queries are provided as-is with no warranty.  If you have any queries of your own that you would like to contribute feel free to submit a pull request (or open an issue) to the repo for review.

Office 365 and Azure AD sample KQL Queries


Last year I had never heard of Log Analytics, Azure Sentinel, or KQL.  This year I am seeing it pop up in so many places inside and outside of Microsoft.  I am very eager to see where these technologies go and spread the word about them.  I truly see interesting problems that can be solved with enough data and the right query.  Hopefully this post will give you a nudge in the right direction to start (or continue) looking at these technologies.

-Frog Out

Migrating from PowerShell ISE to Visual Studio Code

In this blog post I’ll share a number of resources for how to move from the PowerShell ISE to Visual Studio Code for writing and executing PowerShell scripts.

See the source image


Much of the content from this post is sourced from two other excellent resources:

In my working with various customers many times we are working on PowerShell scripts together.  I’ve noticed that many are still using the PowerShell ISE as their primary host for developing and executing PowerShell snippets or scripts.  Back in May 2017 the PowerShell team announced the shift of focus from PowerShell ISE to Visual Studio Code with the Announcing PowerShell for Visual Studio Code 1.0! blog post.  Combining the move to PowerShell Core (v6) (based on .Net Core which is cross-platform) with the limitation that the PowerShell ISE is Windows-only meant a change in direction was needed.

In the following sections I’ll overview a number of steps for getting up and running with PowerShell in Visual Studio Code.

Visual Studio Code

The first step is to install Visual Studio Code.  If you’ve feared it because it has the words “Visual Studio” in the name don’t worry.  Visual Studio Code is really a text editor (think Notepad) with really powerful extensions that you can add.  I recommend the “user install” vs. “system install” as the former doesn’t require Administrator rights.

PowerShell extension

The next step is to install the PowerShell extension for Visual Studio Code.  This extension provides syntax highlighting, intellisense, running scripts with F8, and more.

One important change to the Visual Studio Code setting that I found especially helpful is keeping the focus on the editor window (not the console) when executing scripts.  Update the following setting to configure this.

"powershell.integratedConsole.focusConsoleOnExecute": false

Shell Launcher extension

If you have a need to regularly switch between multiple shells (PowerShell v5 / v6 / v7-preview, Git Bash, Windows Subsystem for Linux (WSL) Bash, CMD, etc.) like I do the Shell launcher extension is helpful.  Be sure to follow the instructions for setting a keybinding for switching shells (suggested “Ctrl+Shift+T” on Windows).  In my case this keybinding was already used by another extension but I was okay with overwriting that.

Keybinding for Shell Launcher to launch a shell

The following are the settings I use for the multiple shells:

"": [
            "shell""C:\\Program Files\\PowerShell\\6\\pwsh.exe",
            "label""Pwsh Core"
            "shell""C:\\Program Files\\PowerShell\\7-preview\\pwsh.exe",
            "label""PSv7 (preview)"
        },        {
            "label""WSL zsh"
            "label""PowerShell (v5)"
            "shell""C:\\Program Files\\Git\\bin\\bash.exe",
            "label""Git bash"
            "label""WSL Bash"


Bonus – ZSH and auto-suggest

I’ll be the first to admit that I don’t use Windows Subsystem for Linux (WSL) often.  That said there are times I find it helpful to run the Azure CLI on a WSL shell though.  An example is when I’m doing demos or presentations and I want to showcase the auto-suggest feature in Zsh (short for “Z shell”).  Not only does the auto-suggest help me remember what commands to type but it lets the audience follow along more easily.  See the following links for installing and configuring.


Example Zsh auto-suggest with Azure CLI


In this article I walked through a number of useful extensions or configurations to help migrate from the Windows-only PowerShell ISE to the cross-platform Visual Studio Code.  If you have additional suggestions or tips please share them in the comments.

-Frog Out

Presenting at Collab365 SharePoint Summit 2019

I have the privilege of presenting “Getting Started with Microsoft Graph Development” at the upcoming Collab365 SharePoint Summit taking place Sept 10-12, 2019.  This is a free online conference with MVPs and experts from around the world presenting on developer, IT Pro, and adoption topics.

Title: Getting Started with Microsoft Graph Development

Abstract: “I hear that I need to use Microsoft Graph for developing against Office 365 but I have no clue where to start.” “I want to grant access to company data without throwing in the entire kitchen sink.” Fear not fellow developers and admins.

This session we will ramp you up to a 200 level knowledge on the pertinent parts of Microsoft Graph including endpoints available, syntax, authentication flows, and more. We will also cover useful examples of what can be accomplished using these APIs. Prior experience with Microsoft Graph is not required but can be helpful.

You can also purchase an all-access pass which includes lifetime access to the videos, additional e-books, and more.  Looking forward to participating in this great event.

How To Print QR Code Stickers


As Registration Chairperson for Stir Trek Conference, this year I was in charge with coming up with a way to print QR code stickers for 2,100+ attendees.  The QR codes would contain name and email address for a registered attendee so that sponsors could have a quicker / easier way to capture contact information for giveaway prizes or sending follow up communications.  Since we care about attendee privacy we also planned for “opt-out” stickers that could cover over the QR code stickers if attendees chose.  In this post I’ll walk through the highlights of how we designed, created, and printed the QR codes stickers.


Designing QR Codes

Before starting this project I was familiar with QR codes, but I never knew the amount of data (or what type) could be encoded in a QR code.  Even more interesting (at least to me) is the science behind how to size the QR code relative to the distance at which the QR code will be scanned.  The following article is from 2011 but gives some insight into scaling the number of characters encoded with the scanning distance.

QR Code minimum size

QR Code Minimum Size
Modules Characters Scan Distance
150mm (6″) 300mm (12″) 450mm (18″)
25 26 15mm (0.6″) 30mm (1.2″) 46mm (1.8″)
30 49 18mm (0.7″) 36mm (1.4″) 55mm (2.1″)
35 72 21mm (0.8″) 42mm (1.7″) 64mm (2.5″)
40 98 24mm (0.9″) 48mm (1.9″) 73mm (2.9″)
45 125 27mm (1.1″) 54mm (2.1″) 82mm (3.2″)
50 163 30mm (1.2″) 60mm (2.4″) 91mm (3.6″)
55 203 33mm (1.3″) 66mm (2.6″) 100mm (3.9″)
60 249 36mm (1.4″) 72mm (2.8″) 109mm (4.3″)
65 298 39mm (1.5″) 78mm (3.1″) 118mm (4.7″)
70 351 42mm (1.7″) 84mm (3.3″) 127mm (5.0″)
75 407 45mm (1.8″) 90mm (3.5″) 137mm (5.4″)
80 468 48mm (1.9″) 96mm (3.8″) 146mm (5.7″)
85 534 51mm (2.0″) 102mm (4.0″) 155mm (6.1″)
90 601 54mm (2.1″) 108mm (4.3″) 164mm (6.4″)
95 669 57mm (2.2″) 114mm (4.5″) 173mm (6.8″)
100 739 60mm (2.4″) 120mm (4.7″) 182mm (7.2″)

We needed to encode attendee first name, last name, and email address.  After analyzing our registration data the longest combination of those fields was under 125 characters so we could safely scan a 1″ x 1″ sticker from 6″ away.  Since the QR code stickers are put on the attendee badge, the smaller the sticker size the better so that we didn’t take up too much space (or cover the great artwork from Nate Lovett and badge design from Carey Payette).

Label Stickers

Since the stickers needed to be 1″ x 1″ I purchased 100 sheets (80 per sheet / 8,000 total) of the following label stickers for less than $20 USD.  This allowed for many sample prints to ensure images and other information was lined up on the stickers for the final product.

OL5425 – 1″ x 1″ One Inch Square Labels

Label template

The stickers came with free downloadable Microsoft Word template for the exact dimensions and layout needed.  One wrinkle to the plan was that our shipping vendor (great folks at Markt custom apparel) would be applying the stickers to the badges as they packed attendee boxes.  As such we needed to print not only the QR code but also a “verification” sticker with attendee name and registration ID number to ensure the right QR code went to the right box.  More on that later using Word’s mail merge to accomplish that challenge.

Generating QR Codes

My primary laptop runs Windows 10 and I was able to find an app in the Microsoft Store called “QR-Code Generator Pro”.  There is a QR code bulk creation functionality in the paid “pro” version.  I exported our registration data (name + email address) from Eventbrite to a suitable CSV format that this app could then encode.

QR-Code Generator Pro

Importing QR Codes

For many years I’ve “known” about mail merge but I had honestly never used it for more than 5 mins at a time.  Working with 2,100+ attendees made mail merge a necessity for the scale and complexity of what I needed.  I found the following online article that walks through creating the placeholders in the mail merge template and then linking fields from attendee registration spreadsheet to those placeholders.

2 Ways to Batch Insert Multiple Pictures into Your Word Document via Mail Merge

This took much longer than expected due to the sometimes one-way changes that were applied which required starting over from scratch.  I settled on a template that I can now re-use in future years by simply importing the newest attendee data spreadsheet and applying the mail merge.  As mentioned previously needing to print not only the QR code but also attendee verification data meant that the “next record” tag had to appear on every other label in the template.

Printing QR Codes

Printing the QR codes on the label stickers took a number of sample runs before I got them working properly.  At first the QR codes printed slightly off center.  Attempting to adjust the margins on the QR code images proved unsuccessful.  In the future I may look at increasing the (pixel) size of the generated QR codes to compensate for the printing issue.


Overall I’m very happy with the final results and the fact that this is a fairly automated and reusable process.  As always we’ll continue to tweak and refine the process to continue delivering the best we can for our attendees.  If this overview helped save you time, effort, etc. please let me know in the comments or share back improvements.


-Frog Out