Posts

The Secret Life of AWS: The Hub and Spoke (AWS Transit Gateway)

Image
  The Secret Life of AWS: The Hub and Spoke (AWS Transit Gateway) How to scale your network without building a bowl of spaghetti. #AWS #TransitGateway #Networking #VPC Part 44 of The Secret Life of AWS Timothy was staring at a whiteboard covered in lines. His architecture had grown. He now had five Virtual Private Clouds (VPCs): Checkout, Inventory, Analytics, Shared Services, and Development. He was trying to map out the VPC Peering connections required so they could all communicate privately. "Checkout needs to talk to Inventory," Timothy muttered, drawing a line. "And Analytics needs to talk to Checkout. But Analytics also needs to talk to Inventory..." Margaret walked in and looked at the whiteboard. "You are building a  Full Mesh  network," she observed. "I have to," Timothy replied, frustrated. "AWS VPC Peering is  non-transitive . If Analytics is peered with Checkou...

The Secret Life of Azure: The Assembly Line

Image
  The Secret Life of Azure: The Assembly Line Automating deployments with CI/CD and GitHub Actions. #Azure #DevOps #CICD #GitHubActions Resilience & Release The library was quiet, but Timothy was hunched over his laptop, typing the same deployment commands for the fifth time that day. He looked like he was running a race he couldn't win. "Margaret," he sighed, "the Blueprints are amazing. London, Tokyo, and Texas all match perfectly. But I’m spent. Every time I find a typo in a configuration or update a search algorithm, I have to manually push the code to three different branches. If I forget one, the library is out of sync. I feel like I’m the bottleneck." Margaret walked over and drew a long, straight conveyor belt on the chalkboard. "Timothy, you've built the library and the blueprints, but you're still acting as the delivery truck. In the cloud, we don't move the books ourselves. We build an  Assembly Line , also known as a  CI/CD Pipel...

The Secret Life of JavaScript: The Clone

Image
  The Secret Life of JavaScript: The Clone How to use Web Workers to protect the Main Thread and prevent frozen UIs. #JavaScript #Coding #Programming #SoftwareDevelopment Timothy clicked the "Export Report" button. On the screen, a small loading spinner appeared. But it wasn't spinning. It was frozen solid. Timothy tried to click another tab on the page, but the entire browser window was unresponsive. Ten seconds later, the UI suddenly unfroze, and the file downloaded. "It works," Timothy said, "but the application completely dies while it's processing the data." Margaret pulled up a chair. "You have built a beautiful kitchen, Timothy. But you only have one chef. If you ask him to chop ten thousand onions, he cannot also greet the customers." The Single Thread Margaret opened the performance tab and pointed to a massive, solid yellow block taking up the timeline. "JavaScript is single-threaded," Margaret explained. "We call...

'ExpiredTokenException' During Rekognition Batch Processing with Temporary Credentials

Image
  'ExpiredTokenException' During Rekognition Batch Processing with Temporary Credentials # AWS # AmazonRekognition # IAM # CloudSecurity Why temporary credentials expire mid-batch and how to prevent Rekognition failures in long-running jobs Category: IAM & Permission Boundaries Problem Your application processes images in batches using  Amazon Rekognition . The first several requests succeed. Then the job fails mid-run with: ExpiredTokenException: The security token included in the request is expired Rekognition permissions are correct. IAM policies are valid. Nothing changed. Yet the process stops halfway through. Clarifying the Issue Your application is using  temporary credentials . These are issued by: sts:AssumeRole Federated login AWS SSO IAM Roles for EC2 or Lambda Temporary credentials include: Access key Secret key Session token Expiration timestamp Once the expiration time is reached, all API calls fail — even if permissions are correct. Rekognition is not d...

The Secret Life of Azure: The Blueprint for a Thousand Shelves

Image
  The Secret Life of Azure: The Blueprint for a Thousand Shelves # Azure # Bicep # InfrastructureAsCode # DevOps Automating infrastructure with Bicep and Infrastructure as Code. Resilience & Release The library was expanding, but Timothy was exhausted. He was surrounded by sticky notes, screenshots, and a long checklist of every setting he had to toggle to get the new London branch to match the original Texas building. "Margaret," he said, rubbing his eyes, "I’m terrified. I just spent four hours setting up the London branch, and I realized I forgot to enable Soft-Delete on the Key Vault. If I have to build ten more branches like this, I’m going to make a mistake that costs us everything. Is there a way to just... copy the whole building?" Margaret didn't pick up the chalk. Instead, she picked up a single sheet of paper with a few lines of clean, structured text on it. "Timothy, you're building the library like a carpenter, one board at a time. In t...

The Secret Life of JavaScript: The Rejection

Image
  The Secret Life of JavaScript: The Rejection # JavaScript # AsyncAwait # ErrorHandling # Webdev Why async errors bypass try/catch, and how to fix them. Timothy felt invincible. He had learned the mechanics of Stack Unwinding. He had placed a strategic  try/catch  boundary at the top of his application. He was a master of disaster recovery. Then, he wrote a new network request. function loadDashboard () { try { // Initiating a background network request fetch ( ' /api/corrupted-data ' ); console . log ( " Dashboard loading... " ); } catch ( error ) { console . error ( " Safe Landing: " , error . message ); } } loadDashboard (); Timothy ran the code. The console printed  Dashboard loading... . Two seconds later, a massive red error filled the screen:  UnhandledPromiseRejection: Failed to fetch . Timothy stared at the screen. The application had crashed. "But... I put it inside a  try/catch ,...