Posts

DNS for Azure Point to Site (P2S) VPN - getting the internal IPs

Image
I wanted to access all my Azure resources without making any of them visible to the Internet.   The easiest give my local machine access to everything on my Azure Virtual Network (VNET) was to connect to it over VPN. It turns out creating Azure VPN gateways and connecting to Azure VPN endpoints is easy.  There are some subtleties in getting DNS name resolution to work that can confuse when first starting out. Setting the Stage There are a few ways to get to Azure endpoints and resources that are blocked from the internet.  We can  Create a Point-to-Site connection from our local machines to Azure Network Gateways Create a Site-to-Site network connection from our local networks to Azure Network Gateways. Use Bastion Hosts Use Cloud Shell Leave everything open to the internet. I chose a Point-to-Site (P2S) VPN connection that connects from my laptop to a VNet Gatewa...

Wayback - Middle school computer programming with paper tape and only one run per day

Image
My first programming was in middle school where we could create programs that would run at night when the school district mainframe was idle. We created Basic programs on paper tape and left the tapes in a basket on the floor. Someone would feed the paper tapes into the teletype reader overnight and put the tape and the printout result back in the basket. You got one program execution per day.  You always had to wait until the next data to find out if it worked. A single program error meant rekey, patch, and then waiting.  I think we could run our own programs on an occasional weekend but can't be sure. I am pretty sure that it punched the tape as you typed the program.  This meant you wrote down your exact program before you came in. You had to manually fix errors in a tape by generating a fix tape that you spliced the fix into the middle of the original tape. I believe we used scissors and put blank characters at regular intervals to have a place to cut for a patch. We ...

Are gifs still cool? - Working across generations

Image
I fought using memes and emoticons in work chats as work inappropriate.  Then I decided that might be a geezer opinion and went with it, on a limited scale. I used one the other day and then asked a question about whether they were still cool.  My team totally had my back on it. 👍 I heard GIFs were cool and then I heard they were for Millenials with a tone that said that Millenials are now considered old. Am I supposed to use GIF? or not? Are Millenials old?  If so compared to what? Do I have to use Generational GIFs like ASCII art👴? Someone put up a comment that we weren't ready for a new programing language because we had enough trouble with the one are already using. I put up GIF along with a comment about how the language we were using was changing so much that it was the same thing.

Why so many software swim lanes and environments

Image
Software moves through different phases on its way to production. It starts as raw software that becomes more refined as it is tested and then moved to production.  Partner teams often need to test their current code against your new code to make sure there were no breaking changes.  Software versions currently in production must be available to other teams so that they can test their changes against your code that will be in production when their new changes are actually deployed.  Some companies can get by with as few as 3 environments. Others can have over 7 or 8. Click to expand The Video Walkthrough The Development Track This is the normal promotion process from development through test and into production. There can be some orchestration through shared environments or through environments that are integrated with other teams.  The development and ...

Creating a No-Patch Security Cadence

Image
A zero-patch environment is one in which we redeploy our applications with updated dependencies as part of our normal Continuous Deployment process.  This is part of You Build It - You Own It We need to create a repeatable cadence for bringing in Operating systems, containers, application patches, and binary updates.  We can reduce some of our work by pushing as much of our workload as possible onto PaaS, serverless, and cloud services. Three Month Cycle Example This is a prototypical 3-month update cycle where an application is redeployed with security and bug fix updates at least every quarter. Click to enlarge The Image team identifies required operating and container image updates.  Application teams identify CVE library updates via automated scanners. The application teams start integrating library updates.  T...

Mandate zero patching. Drive automation in the cloud.

Image
In-place patching is an anti-pattern for cloud-native applications that originates from the data center with low levels of automation for infrastructure and application management. The shift-left movement pushes ownership to the development teams that are best served by applying all changes via their CI/CD pipelines. This goes for infrastructure, containers, serverless, code, et al. Video Slides used in video The talk did not cover zero-day emergency patching.  Sometimes a mass update must be applied to all like systems.  In that case, patching may be supported with a full redeployment as soon as possible after that. Created 2022 03

Quality is day 2 - the day that never comes

Image
Quality has to be baked into the decision-making process from the beginning of any effort. We often talk a good game about making sure we improve the quality of a product or process at "some time in the future" or "in the 2nd release". We hear this a lot in the crunch period at the end of a project. The date or some features trump repeatable process or quality efforts.  The next iteration is filled with "must-have features".  Day 2 turns out to always be the next release, next quarter, or never. Baking corner cutting into the process Some groups just own that they will produce junk and build stabilization sprints  and quality increments  into their process. They schedule specific periods for additional testing and QC.  I've seen this work and I've seen it become a major anti-pattern where teams get even sloppier because they know there is a quality improvement phase. Immediate payof...

Casually measuring disk throughput with antimalware enabled and disabled

Image
I wanted to test the relative performance of two drives on a Windows 10 machine and get a feel for how much overhead my anti-virus products cost me.  To that end, I created a program to copy in different combinations between the two drives.  I ran that test with different Anti-Malware versions and configurations  From the README.md on GitHub The Program 1. It takes the names of two directories 2. It creates the number of files that you specify of a size you specify in both of the directories passed in.     1. You want big numbers for both.  The default is 10,000 files of 200,000B each. 3. It copies the large number of files in the 4 possible source/destination pair combinations. 4. It writes the timings to the console and deletes the test files. In my case I ran a couple different variations to see what was happening 1. Drive A anti-malware enabled .  Drive B anti-malware enabled 2. Drive A anti-malware enabled .  Drive B anti-malware disab...

Looking for E-Mail recipients from all the wrong places.

Image
Sometimes we need to understand everyone who has been in our email chains across some period of time. We need to collect all the recipients in a group of emails into a form they can be analyzed. Our program reads a date range of emails from an IMAP mailbox and then Extracts the Sender, To, CC, BCC, From, Reply-To  Extracts the message-id and Subject line Creates a combined list of the unique email addresses from the 6 fields above. Filters the combined list to remove any trusted addresses or domains. Writes out a CSV with those 10 fields. The original purpose of this program was to see if unwanted parties had inserted themselves into any email threads over some period of time. Code This simple python program extracts recipient information from mailboxes and writes it to CSV files. The program can also ignore trusted addresses or domains.    https://github.com/freemansoft/email-address-analyzer-python Video A quick overview of the program  Creat...

What are we running and how do we know it?

Image
Modern software systems can be complicated with many moving parts.  Each of those parts can be updated, upgraded, or changed at any time.  We need the ability to understand which versions of each component or configuration are running in each environment at any time.   Smart designs, automation, and the appropriate metadata can set us up to understand the specific configurations and versions in each layer in every environment. We will attack this problem in the static / design phases and the dynamic run time phases. What versions do we have available? What versions are we running?