Advent of Code 2023 -- A bootstrap article

Advent of Code is 25 days of coding problems, a kind of coding dojo with a daily exercise. You can use any language for any of the problems. The code isn't analyzed or shared.  Only the results count. I know people working in Python, Dart, Haskell, Rust, and C#.  There are two problems per day, solved in order. The second problem only becomes visible once the first problem is solved. Each problem is driven by an input data set customized to your login session. The solution is often a number or some other small piece of data.   You won't be able to copy someone else's answer. Any scoring or tracking is up to you. You can create your own team leader board or just do the problems without tracking against anyone else. The problem workflow is Go to the website to read today's problem. Request today's input data set using your session cookie Write some code to generate a result Post the result into to today's page Earn stars and accolades. Show me!  Don't make me

Programmers' Credo: "We do these things not because they are easy...

Yet another tool in our understimation arsenal. We do these things not because they are easy, but because we  thought  they were going to be easy. This applies to more than programming.  I'm looking at you, my most recent repair project. Credit goes to Jeff Atwood  around 2016 Revision History 2023 11

The Crucible - Heating up teams with an agile coding dojo.

An Agile coding dojo is a technique that can be used to create high-pressure software development situations at the team or project.  That pressure exposes weaknesses and forces change and adaptations in short iterations. The idea is to change the game and accelerate the lifecycle to force behavioral change. It is a crucible where you either learn to deal with transparency and change your model or you fail.  A coding dojo is a local optimization. The crucible operates at the team or set of teams level. It creates individual team cohesion and learning. It keeps the overall organization the same. It can only be the crucible for organizational change if more strategic and systemic re-forging is done above the effort. I was once involved in a 6-week Agile coding dojo where we compressed our standard 2-week iterations into 2.5-day iterations. All the work of a Scrum-style sprint in 2.5 days. Teams had to break down their work into smaller chunks and become fast at estimating, planning, and

The Crucible - Reforming an organization with heat

A  crucible  is where you melt down your existing metal and add new metals to create and cast a different alloy that fits the current need. This is often the only way to reshape an organization for the future. Major changes driven by external forces require dramatic adjustments outside the standard processes in order to drive change at a faster pace.  Corporations and groups are like an alloy comprised of the company's stated culture, its actual culture, and the attitudes and beliefs of the people who work for it.  The initial cast defines how a company operates and determines how it succeeds or fails. Big changes require attacking that historic casting. Mature organizations struggle with deep change because they have hardened around policies and behavior that are broadly executed but may not be well understood. There is strength in this as it can resist or overcome transient business, regulatory, or economic issues. That strength is a weakness that makes it difficult to adapt and

Home FIOS Network - Exploring the 4 boxes and their connections

We have Verizon FIOS with cable TV service.  I've never really paid attention to how the Verizon side is wired up until Verizon recently upgraded my FIOS router and tuner box. After breaking my TV tuner by disconnecting an " unneeded" connection, I created  yet another diagram of how the FIOS connections work. This is a basic wiring diagram of the house network missing a bunch of devices. Verizon ONT The Verizon optical network terminal converts the optical connection into TV and network standard connections.  The ONT is actually two boxes in my situation.  One outside connects to the optical and one inside converts something into an Ethernet WAN connection.  This results in me connecting a TV COAX and an Ethernet WAN. Verizon TV Tuner The Verizon TV tuner decodes and decrypts TV data that it receives over coax. The TV tuner must talk back to Verizon for any video control operations. It could talk back wireless, over an extra ethernet connection to back over the coax cab

Microsoft Authenticator Push Notification Variations

Have you ever noticed some behavior that made you think "That's different"?  I noticed this with push notifications a while back. Microsoft supports more than one Push Notification usage pattern in their Microsoft Authenticator application. Sometimes you will see more than one of them with the same account across different sites within the same organization. Push Notifications are more integrated with the authenticator application.  The server indirectly sends a message to registered Authenticator applications.  The user interacts with the Authenticator app and the app sends the response back to the server. MFA happens in the authenticator app from the human's point of view. Microsoft Authenticator also supports TOTP tokens as an alternative to Push Notifications. TOTP generates numeric sequences that can be used as part of MFA.  Numbers change on a regular cadence.  The user provides the current token value shown in the Authenticator app when a server asks for MFA da

Presentation and Communications Checklist

Make a checklist and review it before, during, and after creating a presentation. Here are 4 things that I have to remind myself whenever I create a presentation or information transfer content. What are the top 3 things you wish to communicate? Who is the Audience? What outcomes are you trying to achieve? How will the materials be used over time? Click to Enlarge The mindmap was created in Mural .  You may be able to see it  with this Mural link  if it hasn't yet expired. Video Partial transcript The following text is from the talk transcript and require clean up. This is really about how we're going to communicate? When we communicate with other people, we create a presentation or create some type of canned or interactive communication. What are the things we should think about? What are the kind of checklists we should have to make sure this communication is going to work the way we want? This really came out of reviewing a PowerPoint presentation. There were parts of it

Upgrade your laptop padding with an old mousepad.

I have a backpack that I love except for the bottom-of-the-bag laptop protection. The laptop slots in some backpacks end before the bottom of the bag. My laptop sits on the bottom of the bag and I just don't trust the padding. Old swag mouse pads make good extra padding. They are often a thick neoprene with material glued to one side. The thicker the neoprene the better the cushion. I just stuff my mouse pad down into the bottom of the backpack with the material side up. That puts the material side of the pad against my laptop when I slide it down into the fold. It doesn't have perfect corner coverage but it has saved me a few times.   Slide the laptop into the folded mousepad. It only protects the laptop if the laptop is wrapped by the mouse pad.   Use a mouse pad at the bottom of the laptop compartment. The laptop slides into the fold Get a better backpack? You can always get a backpack that holds the laptop off the bottom of the bag.  It provides more protection.  I t

Remove Windows executables from your WSL Linux path

Windows and WSL interoperability is fantastic but sometimes you end up with unintended side effects.  When coding I like to have specific tools and configurations for each environment.  Otherwise, I can get pathing or other problems.   Why is it complaining about a '\r' character when I'm running Linux?  It is because some Linux tools and Windows files collide with each other. With that in mind, you may wish to remove the Windows executables from your Linux $PATH.  There are two ways to configure the WSL to not import the Windows $PATH. You can disable or enable it on a per WSL instance basis.  You can globally configure WSL so that the PATHbehavior is the same for all WSL instances you have configured. Configuring individual WSL instances with wsl.conf Each individual WSL instance looks in its own configuration file   /etc/wsl.conf  that may not be created by default in your WSL instance. 1. Edit the existing /etc/wsl.conf .  Create a new wsl.conf  file in /etc if one does

Generate Model schemas from JSON and JSON Schemas in 20 languages using

Sometimes you just want to create Model objects around some type of JSON payload of schema definition.  It seems like you either end up building your own tool, doing the conversion manually, or hunting around to find some schema generator.  Sometimes there just isn't a tool that you want to use and sometimes there is. I'm working Dart where we want to create immutable objects from deserialized JSON schema for AdaptiveCards.  I ran across an open-source tool,, that can generate JSON serializable model classes for over 20 different languages. There are several different settings that let do some customization.  You can then consume those classes/functions as is  or tune them to your needs. It is a great learning aid even if you don't use it for your models.  I really like how it lets me compare how different languages handle models and JSON. Disclaimer:  I have no idea who created or how it is run.  Pull down their GitHub repo and scan it