Posts

Showing posts from 2023

Coding challenge accepted - game board navigation using open and completed tasks FIFOs

Image
I was involved in a couple of minor coding challenges that involved exploring a square space or board. I don't know any navigation algorithms so I implemented breadth first and depth first searching of the board using an open task list and a completed tasks list. Legal moves are added to the open task list. Each legal move is then checked to determine the following legal moves. Those are posted to the open task list where they are then picked up later and further explored. Two of those challenges involved taking a specific number of steps. One asked how many squares could be touched in a specific number of steps. The other asked how many places you could end up in exactly a specific number of steps. Sample `Dart` code can be found in this GitHub repo https://github.com/freemansoft/AdventOfCode-2023-Dart/tree/features/2023/solutions on the 2023 branch. Video Content I've been calling these open and completed tasks but you can also think of it as a FIFO of...

Using emojii for Yesterday, Today and Blockers on Slack and other channels

Image
Slack and other messaging platforms are mainstream platforms in many companies.  They provide great asynchronous ways of detailing activity and issues so that people can stay up to date while preserving standups or other meetings for interactive troubleshooting and planning. The teams I've been on have used Slack or other platforms to share  Yesterday, Today, and , Blockers for the last 5 years.  I've given up my geezer opposition to emojis and fallen in with using them to signify the category for everything reported.  As an example: Yesterday, Today, and Blockers the emoticon way 👈Yesterday Yesterday's events that affect others or the backlog 👉Today's Activity The main things we want to get done today ✋Blockers Things in my way that others can help with or that are holding us up 👊Thank you Callout for someone's timely help or them taking an extra effort.  Example for Joe's weekend Joe for 2023/MM/DD 👈Worked on Advent of Code 2023 👈Created content for blog...

The Crucible - Melting the status quo with targeted strategic ignorance

Image
Executives have several tools that can re-forge an organization from the top.  They can reorganize changing the boundaries created by Conway's law.  New executives can push out embedded interests and bring people in from the outside. They can brutally question everything through targeted ignorance.  A main tactic is to hire senior people with no knowledge of internal complexities or implementations. They come in questioning everyone and everything with an assumption that the hard stuff exists because of complacency or because people are locked it was always done that way. New people propose or demand refutation of approaches in past lives or other industries or with previous engagements.  The legacy organization's natural reaction is that the new ideas won't work and defend the status quo.  New people apply additional heat declaring that the status quo won't stand often replacing people who stand in the way. This applies indirect heat to the rest of the organiza...

Ask - Propose - Ask Why Not - Repeat - When new to a role

Image
You've just joined an org as an employee or a contractor and you want to contribute now. You have to contribute now to validate being there. now. This can lead to the urge to start spewing solutions based on your previous experience or what you saw others do somewhere successful.  Famous billionaires can force their will to what they want. The rest of us are best served by asking questions, asking the right questions, learning the language of the domain, and building credibility inside the organization. Then you have to differentiate the real from the imagined and drive towards improvement wall iteratively asking questions, proposing solutions, and teasing out the real from the imagined in the responses. I'm not saying to wait until you know everything until you contribute. Instead, work on two paths.  The one where you can make contributions now and the one where you increase your credibility, create relationships, and become deep enough to have an impact. I...

Advent of Code 2023 -- A bootstrap article

Image
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...

Image
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.

Image
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, plan...

The Crucible - Reforming an organization with heat

Image
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 difficul...

Home FIOS Network - Exploring the 4 boxes and their connections

Image
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 th...

Microsoft Authenticator Push Notification Variations

Image
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 ...

Presentation and Communications Checklist

Image
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 ...

Upgrade your laptop padding with an old mousepad.

Image
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...

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 .  Creat...