Articles

Posts, tutorials, documentation, and everything else.

Productivity2
SaaS2
VS Code1
Compliance1
Technology3
Troubleshooting4
User Interface Design1
Debugging3
Testing1
Git Tips1

2026

Using AgentCore Identity Without a Shared Client Secret

Charters and Plumbing: Why AI Coding Guidelines Always Sound Generic

WAF Comes to AgentCore Gateway: Perimeter Security for the MCP Front Door

Where Do You Run Agent-Generated Code? Lambda MicroVMs and the Isolation Tradeoff

When Google Standardizes the Thing You Built Anyway

Owning the Learning Loop

OpenSearch Serverless NextGen: Does Scale-to-Zero Actually Change RAG Costs (And What It Doesn't)

Interactive Shells in Bedrock AgentCore Runtime — The Debugging Blind Spot Just Closed

Step Functions × AgentCore: When Your Async Pipeline Already Runs Agents

ElastiCache Just Got Durable — What That Means for RAG and Agent Orchestration

Why MCP Clients on AgentCore Gateway Need OAuth Auth Code Flow (Not M2M)

Per-Request Cost Attribution on Amazon Bedrock — InvokeModel Metadata, Inference Profiles, and What to Use When

Docker Build SSL Failures Behind a Corporate MITM Proxy: Two Patterns

Bruno + AWS SigV4 with an SSO Profile (No More Pasting Access Keys)

Adding llms.txt to a Hugo Blog with Output Formats

Deploy Your Own AI Agent to AWS — Hermes on ECS Fargate with Slack Integration

Personal AWS Cost Guardrails: Budget Alerts, Auto-Stop, and Anomaly Detection on a Hobby Account

AWS Strands vs LangGraph on Bedrock AgentCore: Lessons from Building an Agentic Platform

Why You Should Switch to uv for Python Projects

Why Do Python Experts Use the @property Decorator?

Python __init__.py Explained: Mastering Package Structure and Imports

2025

2024

Updated guide

Debug AWS Amplify and Cognito Sign-In Flows

A Safe Terraform Init, Plan, and Apply Workflow

DNS and Email Authentication Without the Misleading Shortcuts

Working with VS Code Multi-root Workspaces

Understanding Git Ignore Patterns - .gitignore vs .git/info/exclude

Git Branches, Remotes, and HEAD

Git Diff for Pull Request Analysis

Useful VS Code Shortcuts for Everyday Editing

Updated guide

Package and Install a Python Command-Line Application

Python Package Updates - A Guide to Updating and Verifying Your Packages

How to Ignore Files Locally in Git Without Modifying .gitignore

Updated guide

Evidence-Driven AI-Assisted Software Development

Efficiently Read a Git Repository from AWS Lambda

Resolving 'No Default Dev Hub' Error When Creating Salesforce Scratch Orgs

Why `forEach` Cannot Handle Async - A Real-Life Example and Solutions

Updated guide

Salesforce CI/CD with AWS CodePipeline and CodeBuild

Updated guide

Use Salesforce Record Types Without Hard-Coded IDs

Updated guide

Choose the Right Salesforce API

Leveraging NPX and NVM for Efficient Backend Development

Updated guide

Debug Flow-Invoked Queueable Apex with Correlated Logs

How to Fork a Repository, Make Changes, and Update a Submodule in Your Main Project

Understanding the Git Remote Named 'origin'

Setting Up a Shortcut for GitHub Copilot in VS Code

Node.js Guide to package.json and package-lock.json

Testing Dependencies in Node.js Projects - A Focus on Package.json

Understanding Metadata API vs Tooling API in Salesforce Development

Mastering SF CLI - In-Depth Guide to sf project convert source and mdapi Commands

How to Fix Divergent Branch Problems in Git - A Step-by-Step Guide.

Updated guide

Choosing a Python Project and Dependency Workflow

Update Notifications in Node.js with TypeScript

Structured CLI Tasks with Listr2

Mastering Salesforce CLI with Grep - A Guide to Finding Commands Efficiently

Testing TypeScript with Jest

Updated guide

Choose a Salesforce Package Model: 1GP, Managed 2GP, or Unlocked

Git Diff for Working Trees, Commits, and Branches

How to Check if Google Analytics is Working

Understanding Git Revert vs. Manual Reversion - Best Practices for Code Rollbacks

Resolve CloudFront CNAMEAlreadyExists Without an Avoidable Outage

Updated guide

Safe Container Updates on a Personal Docker Host

Understanding and Managing Narcissistic Behaviors in Everyday Life

Environment Variables in Shell Scripts with set -a

Run Java Applications on macOS without a System-Wide JDK

Mastering the Art of Effective Writing in the Information Era

Freeing Up Ports 80 and 443 on Synology NAS for Reverse Proxy Usage

Unboxing Leadership - Insights from "Leadership & Self-Deception"

Managing Multiple Versions with Pyenv and Virtual Environments

2023

How to Uninstall Salesforce CLI from a Specific Node.js Version on macOS

Domain-Driven Design Practices and Pitfalls

Deep Dive into Domain-Driven Design - Simplifying Complex Projects

Solving SSH Connection Issues on macOS - A Guide to Fixing 'Unprotected Private Key File' Error

How to Rename a Git Branch Using the CLI

How to Clean Up Inaccessible Scratch Org Authorizations

Updated guide

Safely Update Python Project Dependencies

Updated guide

Salesforce Source Format, Conversion, and Deployment

Initializing a Python Project in Visual Studio Code

Passing Command-Line Arguments to a TypeScript Script using NPM

Using Git Stash to Save and Restore Work in Progress

Checking Object Type in TypeScript

Creating Zip Files from JSON Configuration with Node.js and TypeScript

Query S3 Buckets Safely with the AWS CLI and JMESPath

Fish Shell for Interactive Development

Understanding Origin and Branches in GitHub

Git Vs GitHub

Updated guide

Install and Update Salesforce CLI Safely

Updated guide

Choose the Right Salesforce Configuration Tool

Retreive GitHub Pull Requests Code

Updated guide

Safely Remove Unwanted Files from a Pull Request

How to Add Tags in GitHub

Best Practices for Defining Paths for RESTful APIs

Path Parameters in Amazon API Gateway

Updated guide

Use AWS Temporary Credentials Without Reading Cache Files

The Art of Decision-Making - Why Engineers Should Stop Being Imposters

Updated guide

Sign API Gateway Requests with SigV4 and AWS SDK for JavaScript v3

Designing Reliable Work Queues with Amazon SQS

Secure Direct Uploads with Amazon S3 Presigned URLs

Choosing When to Use Amazon API Gateway

Getting to Yes - Negotiating Agreement Without Giving In by Roger Fisher

Updated guide

Export IAM Identity Center Credentials Only When a Tool Requires Them

A Summary of Influence - The Psychology of Persuasion

When to Use a Sequence Diagram - A Real Life Example

Updated guide

Deploy a Serverless API Safely with AWS CDK v2

Story or Die - How to Use Brain Science to Engage, Persuade, and Change Minds in Business and in Life Summary

Creating an Empty Commit in GitHub

Updated guide

Create Salesforce Scratch Org Users with sf CLI

Tier vs Layer - Understanding the Organization of Software Architecture

Understanding the Differences Between IaaS, FaaS, and PaaS in Cloud Computing

Guiding Interns in Your Team

The Pragmatic Programmer; Bend or Break

The Pragmatic Programmer; A Pragmatic Approach

The Pragmatic Programmer; A Pragmatic Philosophy

A Summary of Surrounded by Idiots by Thomas Erikson

The Rules of Work by Richard Templar

Walking the Directory and Creating a TreeNode

Updated guide

Use IAM Identity Center Profiles Safely from TypeScript

Updated guide

AWS Access in 2026: Federation and Temporary Credentials First

The Observer Pattern

The Decorator Pattern

Strategy Pattern in Dependency Injection

--save-dev in npm

The Strategy Pattern

Updated guide

Upsert Salesforce Data from CSV with sf CLI

git diff with Two Tags using simple-git TypeScript

DTO vs Schema

Virtual Class and Abstract Class in Apex

Spread Operator in TypeScript

Retrieve Flow Metadata from a Salesforce Scratch Org

Log Out (Unlink) the Scratch Org from the Project in Salesforce using SFDX

Updated guide

Inspect Salesforce Orgs Without Exposing Secrets

Understanding Class Diagrams and UML arrows

Updated guide

Run Anonymous Apex Safely with sf CLI

Partially Applied Types with Type Currying TypeScript

Manage environment variables in TypeScript

What is a Record with Self-Referencing in Salesforce and Why Do We Need It?

Updated guide

Apex Nested Enums and Name Shadowing

Shell vs Bash vs Zsh vs Terminal

Updated guide

Salesforce CLI Authentication Without Token Leaks

How to Switch Scratch Orgs for a VS Code Project Using CLI

Better Validations with includes and Selector Function in TypeScript

How to Fix This Schedulable Class Has Jobs Pending or In Progress Error

Level Up Your JavaScript Skills with Lodash

Resolve a Conflict with Other Devs at Work

Updated guide

Check Salesforce Object Availability with sf CLI

Streamline Your TypeScript Projects with Advanced Path Mapping Techniques

The Imposter, Not Imposter Syndrome in Software Developers

Named vs. Default Imports in TypeScript

Promises in TypeScript

Updated guide

Salesforce CLI Deployment and Source Tracking

Updated guide

TypeScript Decorators After TypeScript 5.0

Recognizing a Premature Abstraction

Updated guide

A Practical Python Environment Workflow in 2026

Iterator vs Iterable in TypeScript

Mocking Modules and Functions with Jest

An Introduction to Jest Mock Functionality

Manage Node.js Versions Explained

Use console.time in TypeScript to troubleshoot performance issues

TypeScript's `Pick` and `Omit`

Updated guide

Apex List Syntax and Nested Collections

Understanding TypeScript's Record Type

TypeScript - What is the difference between type and interface?

Credibility - The Secret Sauce for Success at Work

Optional Chaining in TypeScript

Using TypeScript's Partial Utility Type

Partial Application of Generic Types in TypeScript

Modeling States with TypeScript Discriminated Unions

Using Conditional Types in TypeScript

Top Techniques for Efficient Array Shuffling

Using Mapped Types in TypeScript

Understanding Taxonomy - Definition, Importance, and Applications

TypeScript Unions - Exploring Discriminated Unions and Best Practices

Efficient Dependency Injection for Testable Code

Understanding Inversion of Control (IoC) in Software Development - Definition and Benefits

Injecting Properties Using Dependency Injection

Exploring Loose Coupling

Understanding Method Injection in Dependency Injection - A Guide to Avoid Common Pitfalls

Understanding Constructor Injection in Dependency Injection - A Comprehensive Guide

Applying the Open/Closed Principle

Synology Script - How to Efficiently Move Items from Subfolders to Parent Folder

Understanding and Applying the Liskov Substitution Principle in Object-Oriented Programming

Understanding the YAGNI Principle in Software Development - Less is More