<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonathan Wong</title>
    <description>The latest articles on DEV Community by Jonathan Wong (@jonathan78wong).</description>
    <link>https://dev.to/jonathan78wong</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3871202%2F343e4457-180b-4eab-af90-04c5935b3567.jpg</url>
      <title>DEV Community: Jonathan Wong</title>
      <link>https://dev.to/jonathan78wong</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathan78wong"/>
    <language>en</language>
    <item>
      <title>Private, Sovereign Agents in Your Pocket: The Rise of USB-Deployed Local LLMs with AWS Strands</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Wed, 20 May 2026 01:30:23 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/private-sovereign-agents-in-your-pocket-the-rise-of-usb-deployed-local-llms-with-aws-strands-ofe</link>
      <guid>https://dev.to/jonathan78wong/private-sovereign-agents-in-your-pocket-the-rise-of-usb-deployed-local-llms-with-aws-strands-ofe</guid>
      <description>&lt;p&gt;Artificial intelligence is undergoing a massive architectural shift. While cloud-hosted API models dominated the initial wave of enterprise AI adoption, a combination of rising cloud costs, shifting privacy regulations, and advancements in open-weight models has catalyzed an alternative movement: fully localized, portable AI agents.&lt;/p&gt;

&lt;p&gt;Deploying an autonomous AI agent locally, or even storing it completely on a bootable or portable USB drive, is no longer a tech enthusiast’s hobby. It is a highly practical architecture for modern data analysts and security-conscious enterprises.  &lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;The Strong Case for Local LLMs&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;For a long time, the convenience of API endpoints overshadowed local execution. However, major shifts in economics, security, and model capability have flipped the script.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SaaS Price Plan Volatility&lt;/strong&gt;: Major cloud AI providers continuously adjust their commercial enterprise tiers. Many organizations have faced unexpected price plan changes, making high-volume document processing and continuous data ingestion prohibitively expensive on a per-token model. Local deployment offers predictable infrastructure costs where you pay for the hardware once, and your marginal token cost is zero.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Privacy and Supply Chain Attacks&lt;/strong&gt;: Sending sensitive data like financial records, internal roadmaps, or intellectual property to a third-party cloud endpoint exposes corporations to data leaks and severe downstream supply chain vulnerabilities. Operating completely locally guarantees that data never leaves your infrastructure boundaries.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Bypassing Regional Blocks and Geo-Restrictions&lt;/strong&gt;: Cloud AI APIs are often restricted, gated, or altogether blocked in specific countries or corporate network zones due to geopolitical compliance and local regulations. Running a model locally bypasses all geographic restrictions entirely, ensuring your AI tools remain completely accessible anywhere in the world regardless of regional IP filtering.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Modular Freedom and Custom Mixing&lt;/strong&gt;: Cloud APIs lock you into a single provider’s walled garden and specific model versions. Local execution allows you to swap out your underlying model file instantly, test fine-tuned variants, or even mix entirely different model architectures (like using a coding model for data synthesis and a conversational model for summaries) tailored exactly to different use cases.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;The Capabilities of Open-Weight Models&lt;/strong&gt;: Models like Alibaba’s Qwen family have evolved dramatically. Middle-tier open models ranging from 7B to 14B parameters can execute highly complex tasks, follow structured JSON formats perfectly, and write accurate analytics code out of the box.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;True Offline Autonomy&lt;/strong&gt;: Local models function completely disconnected from the open web. For remote field research, high-security air-gapped networks, or maritime operations, local LLMs provide uninterrupted operational continuity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;&lt;strong&gt;Why Portable USB Deployment?&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Portability bridges the gap between local power and accessibility. Storing your local LLM engine, tools, and orchestration dependencies on a fast, external USB drive unlocks distinct advantages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Environment Agility&lt;/strong&gt;: A portable USB allows an analyst or developer to plug their entire AI environment into a secure workstation, a home desktop, or a field laptop without tedious, repetitive software installation loops.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Zero-Footprint Auditing&lt;/strong&gt;: When combined with secure or sandboxed container environments, a USB setup can run operations purely in temporary memory space. Once unplugged, no trace of the underlying processed data is left behind on the host operating system.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;&lt;strong&gt;How a USB‑Based LLM Uses the Host GPU&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;A common point of confusion is how a software stack running off an external drive handles heavy computational matrix math. A USB-based LLM does not rely on the USB drive itself to crunch numbers. Instead, it utilizes standard local inferencing engines to negotiate access with the host machine’s hardware.&lt;/p&gt;

&lt;ol start="1"&gt;
&lt;li&gt;
&lt;strong&gt;Driver Interfacing&lt;/strong&gt;: When plugged in, the local inference engine queries the host machine’s operating system via standard APIs such as NVIDIA CUDA for GeForce/RTX cards, Apple Metal for Mac Silicon, or ROCm for AMD.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;VRAM Allocation&lt;/strong&gt;: The engine reads the quantized model file straight from the USB drive and directly loads those weights into the host machine’s high-speed Graphics Video RAM.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Execution&lt;/strong&gt;: Once loaded into the host GPU’s memory, the intense mathematical operations happen locally at massive parallel speeds. The USB drive is only used for initial loading and logging output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Setting Up the Local LLM Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To enable the portable USB environment to utilize the host computer’s computing power, both the host hardware and your USB software engine must align correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Host Computer Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPU Drivers&lt;/strong&gt;: The host machine must have appropriate graphics drivers installed. This means NVIDIA CUDA for Windows/Linux workstations, AMD ROCm or Vulkan for AMD setups, Intel OneAPI or Vulkan for Intel discrete graphics, and Apple Metal (built-in natively) for macOS devices.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;GPU Acceleration Runtime&lt;/strong&gt;: The local backend software must explicitly support hardware offloading. In this architecture, we use a portable build of llama.cpp.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;VRAM Capacity&lt;/strong&gt;: The chosen LLM must fit within the host machine’s available Video RAM. Heavy weights must be quantized (compressed) to prevent memory overflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What Happens in Practice&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High-End Workstation (e.g., RTX 4090)&lt;/strong&gt;: Plugging your USB into a dedicated workstation loads the model entirely into ultra-fast VRAM, yielding extreme inference speeds ranging from 50 to 120 tokens per second.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Standard Work Laptop (No Discrete GPU)&lt;/strong&gt;: If plugged into a machine lacking a dedicated graphics card, the llama framework automatically falls back to CPU execution. The agent still works completely offline, though at a noticeably slower computational speed.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Apple Silicon MacBook (M-Series)&lt;/strong&gt;: Plugging the drive into a Mac leverages Apple’s unified memory architecture via Metal, resulting in fast, efficient acceleration without needing a massive desktop GPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Llama Portable Server Example Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make the entire system completely self-contained on your USB drive, follow this structural organization:&lt;/p&gt;

&lt;ul start="1"&gt;
&lt;li&gt;
&lt;strong&gt;Download the Server Binary&lt;/strong&gt;: Visit the official ggerganov/llama.cpp releases page on GitHub. Download the pre-compiled portable zip file matching your host operating system (such as the split zip containing llama-server.exe with CUDA or AVX support for Windows). Extract these files directly onto a folder on your USB drive.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Download the Model File&lt;/strong&gt;: Navigate to Hugging Face and search for the Qwen repository containing GGUF formats. Download a balanced, quantized model file such as qwen2.5-7b-instruct-q3_k_m.gguf. This specific format offers low memory usage while maintaining high reasoning accuracy.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Establish the Portable Folder Structure&lt;/strong&gt;: Organize your files on the USB drive exactly like this to keep paths clean:  &lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;[USB Drive Root]
└── llama_portable/
    ├── bin/
    │   ├── llama-server.exe
    │   └── (other runtime dll/binary files)
    └── models/
        └── qwen2.5-7b-instruct-q3_k_m.gguf  &lt;/code&gt;&lt;/pre&gt;

&lt;ul start="1"&gt;
&lt;li&gt;
&lt;strong&gt;Launch the Engine&lt;/strong&gt;: Open your terminal, navigate into your bin folder, and execute the following unified initialization command:&lt;/li&gt;



&lt;li&gt;llama-server.exe –model ..\models\qwen2.5-7b-instruct-q3_k_m.gguf –ctx-size 8192 –gpu-layers 22 –threads 8 –temp 0.7 –port 8080 –log-disable  
&lt;ul&gt;
&lt;li&gt;–model: Tells the server exactly where to find your stored Qwen GGUF file.&lt;/li&gt;



&lt;li&gt;–ctx-size 8192: Expands the memory window to 8,192 tokens, allowing the agent to read larger Excel spreadsheets.&lt;/li&gt;



&lt;li&gt;–gpu-layers 22: Offloads 22 layers of the neural network directly into the host machine’s GPU VRAM. Adjust this number up or down depending on how much memory the host GPU possesses.&lt;/li&gt;



&lt;li&gt;–threads 8: Allocates 8 CPU cores to handle processing tasks if VRAM spills over.&lt;/li&gt;



&lt;li&gt;–temp 0.7: Stabilizes the model’s creativity for consistent data analysis formatting.&lt;/li&gt;



&lt;li&gt;–port 8080: Locks the local endpoint port to 8080, matching the target address used by our AI framework.&lt;/li&gt;



&lt;li&gt;–log-disable: Disables messy debugging text in the terminal window to keep the screen clean.&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;


&lt;/ul&gt;




&lt;h2&gt;&lt;strong&gt;How AWS’s AI Strands Framework Can Run Natively Locally&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Amazon Web Services developed Strands, an elegant, open-source, code-first AI agent framework designed to simplify complex tool orchestration. While built by AWS, Strands is completely model-agnostic and runs beautifully in 100% offline environments.&lt;/p&gt;

&lt;p&gt;Instead of routing traffic to the cloud-hosted Amazon Bedrock API, Strands allows developers to instantiate a model class and intentionally override its endpoint URL. By pointing this parameter to your local port where your local Llama.cpp or Ollama server is running, Strands treats your local Qwen model exactly like a cloud endpoint. It automatically reads function schemas, handles single-query tool selection, and executes python actions locally without a single byte ever reaching the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Practical Excel‑Analysis Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider a scenario where a financial auditor needs to process an asset ledger. Rather than sending this sensitive data up to a cloud model, they plug in their USB drive.&lt;/p&gt;

&lt;p&gt;The user asks: “What is the mean average of our Revenue column?”&lt;/p&gt;

&lt;p&gt;Using Strands, the system maps this flow internally using exactly one query turn.&lt;/p&gt;

&lt;ol start="1"&gt;
&lt;li&gt;The user asks the question.&lt;/li&gt;



&lt;li&gt;Strands passes the available tool descriptions to the local Qwen model.&lt;/li&gt;



&lt;li&gt;Qwen recognizes it needs to compute numerical fields, auto-selects the math tool, and extracts the target column parameter alongside the metric tool configuration.&lt;/li&gt;



&lt;li&gt;The local Python backend triggers a native pandas function against the local Excel file and returns the direct numeric calculation back to the screen instantly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A High‑Level Implementation Guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building this system on your portable drive requires organizing your project code structurally into separate tool definitions and agent initialization routines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File 1: The Analytical Tools (ExcelAnalyzer.py)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This file houses the native Python code that will run locally on the host machine. We register these functions to the framework using Strands’ native tool decorator.  &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ExcelAnalyzer.py  

import pandas as pd
from strands import tool

@tool
def get_excel_metadata(file_path: str) -&amp;gt; str:
    """
    Use this tool to extract layout structural layout details about an Excel file.
    Returns available column headers, sheet shapes, and total row count.
    """
    # your logic  

@tool
def calculate_column_math(file_path: str, column_name: str, metric: str) -&amp;gt; str:
    """
    Use this tool to calculate analytical metrics on a single target numerical column.
    Supported metrics: 'mean' (average), 'sum' (total), 'max' (highest), 'min' (lowest).
    """
    # your logic 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;File 2: The Main Agent Execution Engine (agent.py)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This script loads the tools from your custom analyzer module, configures the local Llama framework bypass, and executes inquiries.   &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# agent.py  

import os
from strands import Agent
from strands.models import BedrockModel

# Bind the standalone functions from your local file
from ExcelAnalyzer import get_excel_metadata, calculate_column_math

# Redirect the AWS SDK interface down to your local port 8080 Llama server
# Dummy keys are passed simply to pass AWS SDK internal initialization checks
local_qwen_model = BedrockModel(
    modelId="qwen",
    endpoint_url="http://localhost:8080/v1",
    region_name="us-east-1",
    aws_access_key_id="mock_key",
    aws_secret_access_key="mock_secret"
)

# Instantiate the Agent with direct object reference mapping
agent = Agent(
    model=local_qwen_model,
    tools=[get_excel_metadata, calculate_column_math],
    system_prompt="""You are a sovereign Local Data Analyst Agent.
    You have direct access to automated python tools to analyze spreadsheet files.
    Auto-select the most specific tool available to satisfy user requests.
    If the question is standard conversational knowledge, reply without tools."""
)

if __name__ == "__main__":
    target_sheet = "sales_data.xlsx"
    
    # your logic  
&lt;/code&gt;&lt;/pre&gt;




&lt;h2&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty is Non-Negotiable&lt;/strong&gt;: Moving your AI logic locally eliminates vulnerability to downstream data supply chain leaks and isolates operational data inside private boundaries.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;AWS Strands is Not Locked to the Cloud&lt;/strong&gt;: The framework provides an exceptionally lightweight syntax for localized python workflows simply by mapping standard endpoint parameters to localhost servers.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;USB Provisioning Delivers High Mobility&lt;/strong&gt;: Bundling open models like Qwen alongside an execution environment on plug-and-play storage allows technical professionals to instantly adapt to varying compute resources while leveraging the host computer’s heavy GPU power safely.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;What’s Next&lt;/h2&gt;

&lt;p&gt;Decoupling your enterprise artificial intelligence architecture from third-party cloud data pipes is the ultimate strategy for achieving true data security, cost predictability, and zero geopolitical restriction friction. By containerizing a lightweight local inference engine like llama.cpp and pairing it with a professional, tool-agnostic framework like AWS Strands on an external drive, you create an entire sovereign data laboratory that functions completely air-gapped on any host workstation you target.&lt;/p&gt;

&lt;p&gt;This architectural overview outlines the theoretical foundational pillars, resource allocations, and file structures required to launch your localized asset parser. In the &lt;strong&gt;next article&lt;/strong&gt;, we will dive deep into a complete, end-to-end AI agent implementation guide. We will walk through the granular production code line-by-line, implement custom multi-sheet data cross-referencing capabilities, and detail a complete code-level description to finalize your private AI workspace.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth. &lt;br&gt;&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;  &lt;/p&gt;





&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/private-sovereign-agents-in-your-pocket-the-rise-of-usb-deployed-local-llms-with-aws-strands/" rel="noopener noreferrer"&gt;Private, Sovereign Agents in Your Pocket: The Rise of USB-Deployed Local LLMs with AWS Strands&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Security Meets Reality: The Great Firewall</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Mon, 18 May 2026 01:00:29 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/security-meets-reality-the-great-firewall-1aol</link>
      <guid>https://dev.to/jonathan78wong/security-meets-reality-the-great-firewall-1aol</guid>
      <description>&lt;p&gt;The Great Wall protected the country for hundreds of years, and it remains one of the few human creations visible from space with the naked eye. In the digital world, its virtual counterpart continues that same idea of protection, shaping how information flows and what can pass through.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.jonanata.com/the-modernization-journey-how-to-take-a-legacy-system-from-zero-trust-to-ai-ready-without-rewrites-or-downtime-and-big-costs/" rel="noopener noreferrer"&gt;Our client&lt;/a&gt; expanded their business into mainland China, where their applications need to load images and documents stored in Amazon S3. However, the default S3 endpoint quickly became a bottleneck, with unstable connectivity and unpredictable latency inside the region. Latency spikes, packet loss, or outright blocking can break the user experience. Yet the company domain is already approved through internal compliance procedures, meaning traffic routed through that domain is stable and trusted.&lt;/p&gt;

&lt;p&gt;This creates a simple but important requirement:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Serve S3 files through the company domain without changing the app and without exposing the S3 bucket publicly.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;The API server must support mobile and web clients operating inside mainland China. Direct access to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://&amp;lt;bucket&amp;gt;.s3.ap-east-1.amazonaws.com/... 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is unreliable. Even when it works, the latency is unpredictable.&lt;/p&gt;

&lt;p&gt;However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The company domain is already approved&lt;/li&gt;
&lt;li&gt;Traffic to this domain is stable&lt;/li&gt;
&lt;li&gt;The API layer can enforce authentication and security checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of exposing S3 directly, the API domain becomes the gateway.&lt;/p&gt;




&lt;h1&gt;
  
  
  Solution Options Considered
&lt;/h1&gt;

&lt;p&gt;To solve the problem of unstable S3 access from mainland China while keeping the company domain approved and trusted, three architectural options were evaluated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CloudFront&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NGINX Reverse Proxy&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each option solves part of the problem, but only one satisfies all requirements with minimal change and cost.&lt;/p&gt;




&lt;h1&gt;
  
  
  Option One: Cloudflare
&lt;/h1&gt;

&lt;p&gt;Cloudflare already sits in front of the API domain, providing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TLS termination&lt;/li&gt;
&lt;li&gt;Global routing&lt;/li&gt;
&lt;li&gt;Edge caching&lt;/li&gt;
&lt;li&gt;DDoS protection&lt;/li&gt;
&lt;li&gt;China friendly stability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare can proxy requests to S3, but it &lt;strong&gt;cannot&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access private S3 using IAM roles&lt;/li&gt;
&lt;li&gt;Perform backend business logic checks&lt;/li&gt;
&lt;li&gt;Enforce per request authorization&lt;/li&gt;
&lt;li&gt;Keep traffic inside AWS backbone&lt;/li&gt;
&lt;li&gt;Read private S3 objects without presigned URLs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare Workers can add logic, but they introduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New code&lt;/li&gt;
&lt;li&gt;New runtime&lt;/li&gt;
&lt;li&gt;No IAM role support&lt;/li&gt;
&lt;li&gt;No VPC endpoint support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloudflare is excellent for public static files, but insufficient for private S3 access with custom security checks.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Option Two: CloudFront
&lt;/h1&gt;

&lt;p&gt;CloudFront is AWS’s CDN and can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Map your company domain&lt;/li&gt;
&lt;li&gt;Cache S3 content&lt;/li&gt;
&lt;li&gt;Use Origin Access Control to secure S3&lt;/li&gt;
&lt;li&gt;Improve global routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, CloudFront cannot natively perform cookie based authorization.&lt;br&gt;&lt;br&gt;
To check cookies, CloudFront requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CloudFront Functions (very limited)&lt;/li&gt;
&lt;li&gt;Lambda@Edge (powerful but complex)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CloudFront also cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use IAM roles to read private S3&lt;/li&gt;
&lt;li&gt;Access VPC endpoints&lt;/li&gt;
&lt;li&gt;Run your existing backend logic&lt;/li&gt;
&lt;li&gt;Guarantee optimal China performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This makes CloudFront significantly complex, and doesn’t support IAM roles for least privilege.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Why CloudFront Cannot Assume an AWS IAM Role
&lt;/h2&gt;

&lt;p&gt;CloudFront cannot assume an AWS IAM role because it is &lt;strong&gt;not a compute service&lt;/strong&gt;. Only compute services such as EC2, Lambda, ECS, and EKS can call STS to assume roles and obtain temporary credentials. CloudFront has no execution environment, no credential provider, and no ability to sign AWS API requests using IAM role credentials.&lt;/p&gt;

&lt;p&gt;Instead, CloudFront uses &lt;strong&gt;Origin Access Control (OAC)&lt;/strong&gt;, which is a fixed CloudFront service identity, not an IAM role. OAC can only sign requests to S3 and cannot access other AWS services, cannot run business logic, and cannot integrate with VPC endpoints.&lt;/p&gt;

&lt;p&gt;Because CloudFront cannot assume IAM roles, it cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use IAM role permissions to read private S3&lt;/li&gt;
&lt;li&gt;Access S3 through your VPC endpoint&lt;/li&gt;
&lt;li&gt;Perform authenticated backend logic&lt;/li&gt;
&lt;li&gt;Enforce per user authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This limitation is one of the key reasons CloudFront cannot replace an EC2 based NGINX proxy.&lt;/strong&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Option Three: NGINX Reverse Proxy
&lt;/h1&gt;

&lt;p&gt;NGINX running on EC2 inside AWS provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full control of request logic&lt;/li&gt;
&lt;li&gt;Cookie based authentication&lt;/li&gt;
&lt;li&gt;Business rule checks&lt;/li&gt;
&lt;li&gt;IAM role access to private S3&lt;/li&gt;
&lt;li&gt;VPC endpoint routing&lt;/li&gt;
&lt;li&gt;Zero client side changes&lt;/li&gt;
&lt;li&gt;Zero new AWS services&lt;/li&gt;
&lt;li&gt;Minimal cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NGINX can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serve public files directly&lt;/li&gt;
&lt;li&gt;Serve private files only after validating cookies&lt;/li&gt;
&lt;li&gt;Access S3 privately through AWS backbone&lt;/li&gt;
&lt;li&gt;Enforce least privilege IAM policies&lt;/li&gt;
&lt;li&gt;Keep all traffic internal to AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This satisfies all requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;minimal change&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;minimal cost&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;least complexity&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NGINX becomes the most cost effective and least disruptive solution.&lt;/strong&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  How the NGINX Proxy Works
&lt;/h1&gt;
&lt;h3&gt;
  
  
  1. Path Locations for Public and Private Buckets
&lt;/h3&gt;

&lt;p&gt;NGINX exposes two categories of paths:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/app/upload/public/...  
/app/upload/private/...  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Public files proxy directly.&lt;br&gt;&lt;br&gt;
Private files require cookie checks or business logic before proxying.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Proxy Mapping to S3
&lt;/h3&gt;

&lt;p&gt;NGINX rewrites the incoming path and forwards it to the correct S3 bucket endpoint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/app/upload/public/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_pass&lt;/span&gt; &lt;span class="s"&gt;https://your-public-bucket.s3.ap-east-1.amazonaws.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Host&lt;/span&gt; &lt;span class="s"&gt;your-public-bucket.s3.ap-east-1.amazonaws.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;  

&lt;span class="k"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/app/upload/private/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  

    &lt;span class="kn"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(your-checking)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Remove /app from the path&lt;/span&gt;
    &lt;span class="kn"&gt;rewrite&lt;/span&gt; &lt;span class="s"&gt;^/app/(.*)&lt;/span&gt;$ &lt;span class="n"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="s"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;# S3 bucket&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_pass&lt;/span&gt; &lt;span class="s"&gt;https://your-private-bucket.s3.ap-east-1.amazonaws.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;# Required for S3&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Host&lt;/span&gt; &lt;span class="s"&gt;your-private-bucket.s3.ap-east-1.amazonaws.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. IAM Role for the NGINX Host
&lt;/h3&gt;

&lt;p&gt;The EC2 instance running NGINX is granted an IAM role with only the required S3 read permissions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AllowObjectReadWritePublic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"s3:PutObject"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::your-private-bucket/*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"StringEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"aws:RequestedRegion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ap-east-1"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. VPC Endpoint for S3
&lt;/h3&gt;

&lt;p&gt;A Gateway VPC Endpoint ensures all S3 traffic stays inside AWS backbone, improving stability and security:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure you are in the &lt;strong&gt;correct AWS Region&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open VPC Console&lt;/strong&gt; : Navigate to the &lt;strong&gt;VPC Dashboard&lt;/strong&gt; in your AWS Management Console.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create Endpoint&lt;/strong&gt; : Click &lt;strong&gt;Endpoints&lt;/strong&gt; in the left sidebar, then click &lt;strong&gt;Create endpoint&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Category&lt;/strong&gt; : Select &lt;strong&gt;AWS services&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Name&lt;/strong&gt; : Search for &lt;code&gt;s3&lt;/code&gt; and select the &lt;strong&gt;Gateway&lt;/strong&gt; type (e.g., &lt;code&gt;com.amazonaws.ap-east-1.s3&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC Selection&lt;/strong&gt; : Choose the specific &lt;strong&gt;VPC&lt;/strong&gt; where your private resources live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route Tables&lt;/strong&gt; : Select the &lt;strong&gt;Route Tables&lt;/strong&gt; associated with your private subnets to automatically inject the S3 route.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy&lt;/strong&gt; : Leave it as &lt;strong&gt;Full Access&lt;/strong&gt; for standard setups, or attach a custom IAM policy to restrict bucket access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finish&lt;/strong&gt; : Click &lt;strong&gt;Create endpoint&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The vpc policy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nginx2S3ReadOnly"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Principal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  
            &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"s3:ListBucket"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::your-private-bucket"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::your-private-bucket/*"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"ArnEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"aws:PrincipalArn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:iam::your-aws-id:role/ec2-production"&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Results
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. All S3 Files Accessible Through the Company Domain
&lt;/h3&gt;

&lt;p&gt;The app continues using the same URL pattern with no changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Private Bucket Security Without Presigned URLs
&lt;/h3&gt;

&lt;p&gt;NGINX performs the authentication and authorization checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. All File Transfers Stay Inside AWS Backbone
&lt;/h3&gt;

&lt;p&gt;The VPC endpoint ensures no public internet routing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Comparison Table
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Strengths&lt;/th&gt;
&lt;th&gt;Limitations&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stable global routing, China friendly, SSL handled, caching, DDoS protection&lt;/td&gt;
&lt;td&gt;Cannot access private S3 via IAM, cannot run backend logic, cannot keep traffic inside AWS backbone&lt;/td&gt;
&lt;td&gt;Public static files, global CDN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CloudFront&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS native CDN, OAC for S3, caching, custom domain&lt;/td&gt;
&lt;td&gt;Cannot assume IAM roles, cookie checks require Lambda@Edge, no VPC endpoint routing, more cost and complexity&lt;/td&gt;
&lt;td&gt;Public S3 distribution with CDN caching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NGINX Reverse Proxy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM role access, VPC endpoint routing, custom security checks, simple logic, no client changes&lt;/td&gt;
&lt;td&gt;No global CDN, relies on Cloudflare for edge routing&lt;/td&gt;
&lt;td&gt;Mixed public and private S3 access with business logic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Key Takeaways
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NGINX is the only option that supports IAM role access&lt;/strong&gt; , which is essential for secure private S3 reads without presigned URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudFront cannot assume IAM roles&lt;/strong&gt; , making it unsuitable for private S3 access with backend logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare provides global routing and SSL&lt;/strong&gt; , but cannot enforce your business logic or access S3 privately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC endpoints keep all S3 traffic inside AWS&lt;/strong&gt; , improving stability for mainland China and eliminating public internet exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This architecture requires minimal changes to the application&lt;/strong&gt; , making it ideal for production systems that cannot afford disruption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NGINX plus Cloudflare&lt;/strong&gt; gives you the best of both worlds: global routing at the edge and secure, controlled access inside AWS.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/security-meets-reality-the-great-firewall/" rel="noopener noreferrer"&gt;Security Meets Reality: The Great Firewall&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Not Every Magic Wand Works for Every Company: Cloudflare, AI Restructuring, and the Elder Wand Problem</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Sat, 16 May 2026 04:27:35 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/not-every-magic-wand-works-for-every-company-cloudflare-ai-restructuring-and-the-elder-wand-39lp</link>
      <guid>https://dev.to/jonathan78wong/not-every-magic-wand-works-for-every-company-cloudflare-ai-restructuring-and-the-elder-wand-39lp</guid>
      <description>&lt;p&gt;When Cloudflare announced strong quarterly results, few expected what came next:&lt;br&gt;&lt;br&gt;
a &lt;strong&gt;25 percent stock drop in a single day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Revenue was up.&lt;br&gt;&lt;br&gt;
Margins were up.&lt;br&gt;&lt;br&gt;
Customer count was up.&lt;/p&gt;

&lt;p&gt;And yet the market reacted as if something had gone terribly wrong.&lt;/p&gt;

&lt;p&gt;The reason wasn’t the numbers.&lt;br&gt;&lt;br&gt;
It was the &lt;strong&gt;story&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cloudflare positioned its restructuring as an &lt;strong&gt;AI‑first transformation&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1,100 roles removed&lt;/li&gt;
&lt;li&gt;internal AI usage up 600 percent&lt;/li&gt;
&lt;li&gt;AI agents deployed across engineering, finance, HR, and GTM&lt;/li&gt;
&lt;li&gt;a new “agentic operating model”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intention was clear:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI would make Cloudflare faster, leaner, and more scalable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But the market didn’t buy it.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Elder Wand Problem&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In &lt;em&gt;Harry Potter&lt;/em&gt;, the Elder Wand is described as the most powerful wand ever created. It is a gift from Death.&lt;br&gt;&lt;br&gt;
But the wizard who believes it is a universal solution is usually the one who dies first.&lt;/p&gt;

&lt;p&gt;Why?&lt;br&gt;&lt;br&gt;
Because the wand is powerful, but &lt;strong&gt;context‑dependent&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
It obeys rules the wizard doesn’t fully understand.&lt;br&gt;&lt;br&gt;
It backfires when used blindly.&lt;br&gt;&lt;br&gt;
And it punishes those who mistake power for inevitability.&lt;/p&gt;

&lt;p&gt;Cloudflare’s AI restructuring followed the same pattern.&lt;/p&gt;

&lt;p&gt;AI is powerful.&lt;br&gt;&lt;br&gt;
AI is transformative.&lt;br&gt;&lt;br&gt;
AI can reshape workflows.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;AI is not a universal wand&lt;/strong&gt; , and treating it like one can be dangerous, especially for a mid‑cap tech company with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;slowing enterprise sales&lt;/li&gt;
&lt;li&gt;high valuation&lt;/li&gt;
&lt;li&gt;execution risk&lt;/li&gt;
&lt;li&gt;no AI‑product revenue engine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare tried to wield AI like the Elder Wand.&lt;br&gt;&lt;br&gt;
The market reacted like the wand had backfired.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What the ISACA Vancouver Speakers Revealed and Why It Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At the &lt;a href="https://blog.jonanata.com/iec-bc-x-isaca-vancouver-cybersecurity-networking-event/" rel="noopener noreferrer"&gt;ISACA Vancouver event&lt;/a&gt;, speakers from both multinational corporations and local SMEs said the same thing:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;“We are adopting AI in our work, but we are not restructuring our companies because of it. That is too risky restructuring teams too quickly around AI can create instability and unclear ownership” *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They were clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI is a tool, not a new org chart&lt;/li&gt;
&lt;li&gt;AI improves workflows, not reporting lines&lt;/li&gt;
&lt;li&gt;AI accelerates teams, but doesn’t replace them&lt;/li&gt;
&lt;li&gt;AI adoption should be incremental, not structural&lt;/li&gt;
&lt;li&gt;AI should reduce friction, not create uncertainty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly the opposite of Cloudflare’s approach.&lt;/p&gt;

&lt;p&gt;Cloudflare didn’t just adopt AI.&lt;br&gt;&lt;br&gt;
It &lt;strong&gt;reorganized the company around AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For MNCs and SMEs, this is the line they refuse to cross.&lt;/p&gt;

&lt;p&gt;Because they know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI is still evolving&lt;/li&gt;
&lt;li&gt;AI reliability varies by domain&lt;/li&gt;
&lt;li&gt;AI governance is immature&lt;/li&gt;
&lt;li&gt;AI introduces new risks&lt;/li&gt;
&lt;li&gt;AI requires human oversight&lt;/li&gt;
&lt;li&gt;AI is not a stable foundation for org design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI is powerful, but not stable enough to restructure your company around it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ISACA speakers understood this.&lt;br&gt;&lt;br&gt;
Investors understood this.&lt;br&gt;&lt;br&gt;
Cloudflare underestimated this.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Why the Market Punished Cloudflare&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Cloudflare’s stock didn’t fall because of AI.&lt;br&gt;&lt;br&gt;
It fell because of &lt;strong&gt;misalignment&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI efficiency ≠ AI revenue&lt;/li&gt;
&lt;li&gt;AI restructuring ≠ AI growth&lt;/li&gt;
&lt;li&gt;AI agents ≠ enterprise sales&lt;/li&gt;
&lt;li&gt;AI adoption ≠ investor confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here is the part you wanted added — the core investor logic:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investors want AI to generate new revenue, not justify cost‑cutting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wall Street rewards companies that use AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create new products&lt;/li&gt;
&lt;li&gt;open new markets&lt;/li&gt;
&lt;li&gt;expand customer value&lt;/li&gt;
&lt;li&gt;increase consumption&lt;/li&gt;
&lt;li&gt;grow top‑line revenue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Microsoft, Google, Meta, and even AWS get rewarded because their AI stories are &lt;strong&gt;revenue stories&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cloudflare’s AI story was an &lt;strong&gt;efficiency story&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Investors don’t pay a premium for efficiency.&lt;br&gt;&lt;br&gt;
They pay a premium for &lt;strong&gt;growth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cloudflare tried to tell a story of acceleration.&lt;br&gt;&lt;br&gt;
Investors heard a story of instability.&lt;/p&gt;

&lt;p&gt;Cloudflare tried to show strength.&lt;br&gt;&lt;br&gt;
Investors saw execution risk.&lt;/p&gt;

&lt;p&gt;Cloudflare tried to use AI as a magic wand.&lt;br&gt;&lt;br&gt;
Investors saw the Elder Wand.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What Actually Matters for Your Business&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The lesson is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI is not a universal solution.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI is not an org chart.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI is a tool. Powerful, but context‑dependent.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What matters is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Revenue clarity&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customer value&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational stability&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team alignment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sustainable execution&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incremental adoption&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear governance&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI that grows revenue, not just cuts cost&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI should &lt;strong&gt;enhance&lt;/strong&gt; your business, not &lt;strong&gt;redefine&lt;/strong&gt; it overnight.&lt;/p&gt;

&lt;p&gt;The companies at ISACA Vancouver event understood this.&lt;br&gt;&lt;br&gt;
The market understood this.&lt;br&gt;&lt;br&gt;
Cloudflare learned it the hard way.&lt;/p&gt;

&lt;p&gt;Because in business, as in the Deathly Hallows, &lt;strong&gt;the most powerful wand can be the most dangerous when misunderstood.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/not-every-magic-wand-works-for-every-company-cloudflare-ai-restructuring-and-the-elder-wand-problem/" rel="noopener noreferrer"&gt;Not Every Magic Wand Works for Every Company: Cloudflare, AI Restructuring, and the Elder Wand Problem&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>leadership</category>
      <category>management</category>
    </item>
    <item>
      <title>When Invisible Tasks Break Projects: A story of chaos, security, and the power of a shared language</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Thu, 14 May 2026 00:52:45 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/when-invisible-tasks-break-projects-a-story-of-chaos-security-and-the-power-of-a-shared-language-3dl8</link>
      <guid>https://dev.to/jonathan78wong/when-invisible-tasks-break-projects-a-story-of-chaos-security-and-the-power-of-a-shared-language-3dl8</guid>
      <description>&lt;p&gt;&lt;a href="https://blog.jonanata.com/project-management-story-leading-a-cross-regional-cloud-migration/" rel="noopener noreferrer"&gt;It was the project where I turned an original six‑month engineering estimate into a ten‑week delivery.&lt;/a&gt;&lt;br&gt;&lt;br&gt;
The project did not collapse in one dramatic moment. It unravelled quietly, through a thousand tiny misunderstandings.&lt;/p&gt;

&lt;p&gt;Every day the workflow felt more chaotic. Product features were told verbally to individual engineers. Requirements lived in scattered chats, calls, and assumptions. No one had the full picture. Everyone was busy, yet progress felt strangely unpredictable.&lt;/p&gt;

&lt;p&gt;More meetings were added to fix the communication problem.&lt;br&gt;&lt;br&gt;
But more meetings only made things worse.&lt;/p&gt;

&lt;p&gt;The real issue was not the number of meetings.&lt;br&gt;&lt;br&gt;
The real issue was that the teams did not share a common language.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Invisible Task That Triggered Everything&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Security was the perfect example of this invisible problem.&lt;/p&gt;

&lt;p&gt;The product team knew security mattered, but they were not sure whether the timeline was worth it.&lt;br&gt;&lt;br&gt;
The engineering team followed best practices, but they could not explain the business reasons behind the work.&lt;/p&gt;

&lt;p&gt;Security tasks were invisible.&lt;br&gt;&lt;br&gt;
You could not see progress.&lt;br&gt;&lt;br&gt;
You could not demo them.&lt;br&gt;&lt;br&gt;
You could not screenshot them.&lt;/p&gt;

&lt;p&gt;And because they were invisible, they created more inquiries, more conflicts, and less teamwork.&lt;br&gt;&lt;br&gt;
Information broke apart. Communication channels fractured.&lt;br&gt;&lt;br&gt;
Everyone was working, but no one was aligned.&lt;/p&gt;

&lt;p&gt;The workflow became a textbook communication breakdown: ineffective communication channels, uncontrolled scope change, and requirements shifting informally from one conversation to the next.&lt;/p&gt;

&lt;p&gt;The result was predictable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fragmented workflow&lt;/li&gt;
&lt;li&gt;No shared understanding&lt;/li&gt;
&lt;li&gt;Unexpected output&lt;/li&gt;
&lt;li&gt;Not the product the business expected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When communication is fragmented and requirements are unclear, teams fall into a &lt;strong&gt;repeating cycle of rework&lt;/strong&gt;. A well‑known failure pattern in project delivery.&lt;br&gt;&lt;br&gt;
The team fell into a classic rework loop.  &lt;/p&gt;

&lt;p&gt;A classic communication failure&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Turning Point&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Introducing a common language&lt;/p&gt;

&lt;p&gt;The breakthrough came when I stopped trying to fix communication with more meetings and instead aligned on a shared language. Security became the anchor.&lt;/p&gt;

&lt;p&gt;I introduced the classic CIA triad as the foundation for understanding why security tasks exist.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confidentiality&lt;/li&gt;
&lt;li&gt;Integrity&lt;/li&gt;
&lt;li&gt;Availability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suddenly, security was no longer a mysterious engineering ritual.&lt;br&gt;&lt;br&gt;
It became a business concept with clear meaning and impact.&lt;/p&gt;

&lt;p&gt;But the real clarity came when I explained where security tasks actually come from.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Four Layers Behind Every Security Task&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Why these tasks exist long before a developer writes a single line of code&lt;/p&gt;

&lt;p&gt;Security work does not appear randomly.&lt;br&gt;&lt;br&gt;
It flows through a predictable chain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Law → Standard → Company Policy → Procedure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the business team understood this chain, the invisible became visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Law&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The highest level of obligation&lt;br&gt;&lt;br&gt;
Laws define what must be protected. In the United States, examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HIPAA for healthcare&lt;/li&gt;
&lt;li&gt;GLBA for financial institutions&lt;/li&gt;
&lt;li&gt;SOX for public companies&lt;/li&gt;
&lt;li&gt;State privacy laws like CCPA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Laws do not tell engineers how to build systems.&lt;br&gt;&lt;br&gt;
They simply say: “You must protect this data.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standard&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Industry expectations that translate law into practice&lt;br&gt;&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ISO 27001&lt;/li&gt;
&lt;li&gt;SOC 2&lt;/li&gt;
&lt;li&gt;PCI DSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Standards define what “good security” looks like.&lt;br&gt;&lt;br&gt;
They turn legal obligations into &lt;strong&gt;auditable expectations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Company Policy&lt;/strong&gt; :&lt;br&gt;&lt;br&gt;
Leadership’s commitment to the rules&lt;br&gt;&lt;br&gt;
Policies translate standards into internal rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All production systems must use multi factor authentication&lt;/li&gt;
&lt;li&gt;All customer data must be encrypted&lt;/li&gt;
&lt;li&gt;All access must follow least privilege&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Policies define what the company promises to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procedure&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Where engineers turn policy into tasks&lt;br&gt;&lt;br&gt;
Procedures are the step‑by‑step instructions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to configure MFA&lt;/li&gt;
&lt;li&gt;How to implement micro segmentation&lt;/li&gt;
&lt;li&gt;How to set up audit logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where invisible tasks live.&lt;br&gt;&lt;br&gt;
These were non‑functional requirements, essential, but invisible to stakeholders, and therefore constantly underestimated.&lt;/p&gt;

&lt;p&gt;A developer sees “Implement MFA” or “Break price query into server → proxy → database,” but behind each task is the full chain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procedure ← Policy ← Standard ← Law&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the business team saw this, the task was no longer invisible.&lt;br&gt;&lt;br&gt;
It became logical, necessary, and aligned with business value.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Case 1: More rights and more impact require more audit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I explained it through real life.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One factor authentication: password for your personal email&lt;/li&gt;
&lt;li&gt;Two factor authentication: staff password and one-time device token for company restricted documents &lt;/li&gt;
&lt;li&gt;Three factor authentication: passport, token, and face photo at the airport &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The business team initially felt this was bad user experience and extra development time.&lt;br&gt;&lt;br&gt;
But once they understood the principle: more rights and more impact require more audit. The conversation changed.&lt;/p&gt;

&lt;p&gt;Security was no longer a blocker.&lt;br&gt;&lt;br&gt;
It became a business safeguard.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Case 2: Micro segmentation and least privilege&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I explained why a simple price query required three components: server, proxy, and database.&lt;/p&gt;

&lt;p&gt;The business team asked why we could not just query directly to save time and improve speed.&lt;/p&gt;

&lt;p&gt;Because micro segmentation protects the system.&lt;br&gt;&lt;br&gt;
Because least privilege prevents lateral movement.&lt;br&gt;&lt;br&gt;
Because shortcuts today become vulnerabilities tomorrow.&lt;/p&gt;

&lt;p&gt;Once the business team understood this, they saw the business value behind the architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Result&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Alignment, clarity, and teamwork&lt;/p&gt;

&lt;p&gt;With a shared language, everything changed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer inquiries&lt;/li&gt;
&lt;li&gt;Fewer conflicts&lt;/li&gt;
&lt;li&gt;More teamwork&lt;/li&gt;
&lt;li&gt;Less fragmentation&lt;/li&gt;
&lt;li&gt;More predictable delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security tasks were no longer invisible.&lt;br&gt;&lt;br&gt;
They were understood, valued, and properly planned.&lt;/p&gt;

&lt;p&gt;We documented everything in a &lt;strong&gt;Confluence space&lt;/strong&gt;. This became our knowledge management system, the structured way to reduce fragmentation and prevent repeated misunderstandings.&lt;br&gt;&lt;br&gt;
Teams added comments, shared insights, and reduced knowledge conflicts.&lt;br&gt;&lt;br&gt;
Security tasks were linked to business concepts, not just technical checklists.&lt;/p&gt;

&lt;p&gt;Only after this alignment did meetings become productive.&lt;br&gt;&lt;br&gt;
Because now everyone spoke the same language.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Key Takeaways&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Invisible tasks do not break projects. Misunderstood tasks do.&lt;/li&gt;
&lt;li&gt;When teams lack a shared mental model, even simple work becomes chaotic. &lt;/li&gt;
&lt;li&gt;When teams align on concepts, even complex work becomes manageable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security was just the example.&lt;br&gt;&lt;br&gt;
The real solution was alignment.&lt;/p&gt;

&lt;p&gt;And once we aligned, the project finally moved forward with clarity and confidence.&lt;/p&gt;




&lt;h1&gt;
  
  
  What’s Next
&lt;/h1&gt;

&lt;p&gt;This article showed how invisible tasks, especially security work, can quietly break a project when communication is fragmented and teams do not share a common language. Once we aligned on a shared mental model, the chaos settled, the rework loop stopped, and the workflow finally became predictable again.&lt;/p&gt;

&lt;p&gt;In the next part of this series, I will continue the story by walking through this real project from my past experience. I will explain how standup meetings, a well designed Confluence space, and a disciplined Jira workflow worked together to solve the same communication problems described here. It will be a practical continuation of this journey, showing how alignment, documentation, and predictable processes turned a fragmented project into a high performing delivery engine.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/when-invisible-tasks-break-projects-a-story-of-chaos-security-and-the-power-of-a-shared-language/" rel="noopener noreferrer"&gt;When Invisible Tasks Break Projects: A story of chaos, security, and the power of a shared language&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>management</category>
    </item>
    <item>
      <title>From Machine Learning to Production: A Practical Walkthrough Using My Vancouver Traffic Accident Risk Predictor</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Mon, 11 May 2026 22:21:41 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/from-machine-learning-to-production-a-practical-walkthrough-using-my-vancouver-traffic-accident-50nj</link>
      <guid>https://dev.to/jonathan78wong/from-machine-learning-to-production-a-practical-walkthrough-using-my-vancouver-traffic-accident-50nj</guid>
      <description>&lt;p&gt;Artificial intelligence has many branches, but in real projects the most important question is simple: &lt;strong&gt;what tool solves the problem with the least complexity and the highest reliability&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
This article walks through that question using my &lt;a href="https://github.com/jonanata/vancouver-traffic-risk-predictor-mlops" rel="noopener noreferrer"&gt;GitHub project, &lt;em&gt;Vancouver Traffic Accident Risk Predictor&lt;/em&gt;,&lt;/a&gt; as a real example. Along the way, it explains when to use machine learning (ML) instead of large language models, how an ML pipeline works, what MLOps means, and how a model becomes a production ready service.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Modern Habit of Using LLMs for Everything
&lt;/h2&gt;

&lt;p&gt;There is a new pattern in the industry. Whenever a team faces a data problem, someone eventually says, “Why not just use an LLM for this?”&lt;br&gt;&lt;br&gt;
It sounds modern. It sounds powerful. It feels like a universal solution.&lt;/p&gt;

&lt;p&gt;But this instinct hides a deeper issue.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;LLMs are not designed for structured data prediction.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They can reason across messy text, generate explanations, and handle unstructured inputs. They are excellent at language. But when the task is numerical, statistical, or based on clean tabular data, an LLM behaves like a very smart person guessing instead of a model trained precisely for the job.&lt;/p&gt;

&lt;p&gt;This is where the Vancouver project becomes a perfect example.&lt;br&gt;&lt;br&gt;
The goal is to predict accident risk based on weather and traffic conditions.&lt;br&gt;&lt;br&gt;
This is not a language problem.&lt;br&gt;&lt;br&gt;
This is a structured prediction problem.&lt;br&gt;&lt;br&gt;
This is exactly where classical ML shines.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Business Users Often Think LLMs Can Solve Everything
&lt;/h1&gt;

&lt;p&gt;This misconception is extremely common, and it is not the fault of business users.&lt;br&gt;&lt;br&gt;
It comes from the experience of interacting with LLMs, not from their underlying capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  LLMs feel magical
&lt;/h3&gt;

&lt;p&gt;A business user types a question.&lt;br&gt;&lt;br&gt;
Claude answers instantly.&lt;br&gt;&lt;br&gt;
It sounds smart.&lt;br&gt;&lt;br&gt;
It sounds confident.&lt;br&gt;&lt;br&gt;
It sounds like it understands the business context.&lt;/p&gt;

&lt;p&gt;From their perspective, this feels like general intelligence.&lt;br&gt;&lt;br&gt;
So the natural conclusion becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“If it can talk about anything, it can probably do anything.”&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Industry messaging reinforces the illusion
&lt;/h3&gt;

&lt;p&gt;Marketing language often says things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Analyze your data with AI”&lt;/li&gt;
&lt;li&gt;“AI that understands your business”&lt;/li&gt;
&lt;li&gt;“AI that learns from your documents”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Business users interpret this literally.&lt;br&gt;&lt;br&gt;
They imagine the LLM &lt;em&gt;training&lt;/em&gt; on their data.&lt;br&gt;&lt;br&gt;
In reality, the LLM is only &lt;em&gt;summarizing&lt;/em&gt; or &lt;em&gt;sampling&lt;/em&gt; it.&lt;/p&gt;

&lt;h3&gt;
  
  
  LLMs hide complexity
&lt;/h3&gt;

&lt;p&gt;A classical ML pipeline exposes its steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data cleaning&lt;/li&gt;
&lt;li&gt;Feature engineering&lt;/li&gt;
&lt;li&gt;Model training&lt;/li&gt;
&lt;li&gt;Evaluation&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LLMs hide all of this behind a single prompt.&lt;br&gt;&lt;br&gt;
So business users assume the complexity is gone.&lt;br&gt;&lt;br&gt;
But the complexity is still there — just invisible.&lt;/p&gt;

&lt;h3&gt;
  
  
  The professional explanation
&lt;/h3&gt;

&lt;p&gt;The most effective way to explain this to business stakeholders is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Claude is excellent at understanding and generating language.&lt;br&gt;&lt;br&gt;
But price prediction, risk scoring, and forecasting are mathematical problems, not language problems.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This keeps the conversation respectful, clear, and aligned with business outcomes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reality Check: Is “LLM Everything” Acceptable in Terms of Results and Costs
&lt;/h2&gt;

&lt;p&gt;The short answer is no.&lt;br&gt;&lt;br&gt;
But the reasons matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  The results problem
&lt;/h3&gt;

&lt;p&gt;LLMs can approximate patterns in structured data, but they cannot match the precision of a model trained directly on the dataset.&lt;br&gt;&lt;br&gt;
Classical ML consistently delivers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher accuracy&lt;/li&gt;
&lt;li&gt;Better calibration&lt;/li&gt;
&lt;li&gt;More stable predictions&lt;/li&gt;
&lt;li&gt;Clearer evaluation metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LLMs, by contrast, introduce variability and guesswork.&lt;/p&gt;

&lt;h3&gt;
  
  
  The cost problem
&lt;/h3&gt;

&lt;p&gt;Even small LLMs are expensive compared to classical ML.&lt;br&gt;&lt;br&gt;
They require more compute, more memory, and often GPU acceleration.&lt;br&gt;&lt;br&gt;
A simple logistic regression or random forest runs on a tiny CPU with millisecond latency and almost zero cost.&lt;br&gt;&lt;br&gt;
An LLM introduces unnecessary overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  The engineering problem
&lt;/h3&gt;

&lt;p&gt;LLMs are harder to test, harder to monitor, and harder to guarantee deterministic behavior.&lt;br&gt;&lt;br&gt;
For structured prediction, this is unnecessary complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  So is “LLM everything” acceptable?
&lt;/h3&gt;

&lt;p&gt;Only if you do not care about accuracy, cost, latency, interpretability, or operational simplicity.&lt;br&gt;&lt;br&gt;
Real projects always care about these things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison of ML vs LLM for Structured Prediction
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Classical Machine Learning&lt;/th&gt;
&lt;th&gt;Large Language Models&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Accuracy on structured data&lt;/td&gt;
&lt;td&gt;High accuracy with stable, well calibrated predictions&lt;/td&gt;
&lt;td&gt;Lower accuracy, pattern guessing rather than statistical learning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Milliseconds on CPU&lt;/td&gt;
&lt;td&gt;Tens to hundreds of milliseconds, often requires GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per prediction&lt;/td&gt;
&lt;td&gt;Extremely low&lt;/td&gt;
&lt;td&gt;Significantly higher, especially at scale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalability&lt;/td&gt;
&lt;td&gt;Scales cheaply on commodity hardware&lt;/td&gt;
&lt;td&gt;Scaling requires more compute and higher operational cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interpretability&lt;/td&gt;
&lt;td&gt;Clear metrics, feature importance, reproducible behavior&lt;/td&gt;
&lt;td&gt;Hard to interpret, non deterministic, difficult to validate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operational complexity&lt;/td&gt;
&lt;td&gt;Simple to test, monitor, and deploy&lt;/td&gt;
&lt;td&gt;Harder to test, monitor, and guarantee consistent outputs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best suited for&lt;/td&gt;
&lt;td&gt;Risk scoring, forecasting, classification, anomaly detection&lt;/td&gt;
&lt;td&gt;Text reasoning, summarization, multi modal understanding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overall fit for structured prediction&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Acceptable only with compromises in cost and accuracy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Real World Comparison
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Scikit Learn ML vs Claude 4.7 LLM for a 10 GB Price Prediction Dataset
&lt;/h2&gt;

&lt;p&gt;In real enterprise environments, teams often ask whether an LLM can replace a classical ML model for large scale prediction tasks.&lt;br&gt;&lt;br&gt;
So let us take a concrete scenario:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 10 GB Excel dataset for price prediction.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Which tool performs better?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A well defined scikit learn pipeline wins every time.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Claude 4.7 is slower, less accurate, and dramatically more expensive.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why ML Wins
&lt;/h1&gt;

&lt;p&gt;When the task is structured prediction on a large dataset, classical ML does not just win — it wins decisively. And the reasons become even clearer when you look at the actual tools used in real projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  ML can train on the full dataset
&lt;/h3&gt;

&lt;p&gt;A scikit learn pipeline can load and process the entire 10 GB dataset using the Python data stack that enterprises rely on every day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;pandas&lt;/strong&gt; for ingestion and cleaning

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pandas.read_csv&lt;/code&gt; to load large files in chunks&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DataFrame.merge&lt;/code&gt; to join datasets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DataFrame.fillna&lt;/code&gt; to handle missing values&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;numpy&lt;/strong&gt; for vectorized numerical operations&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;scikit learn&lt;/strong&gt; for modeling

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RandomForestRegressor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GradientBoostingRegressor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;train_test_split&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pipeline&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;StandardScaler&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;These libraries are built for structured data at scale.&lt;br&gt;&lt;br&gt;
They learn real statistical relationships instead of guessing patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  ML produces stable, reproducible predictions
&lt;/h3&gt;

&lt;p&gt;With scikit learn, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;random_state&lt;/code&gt; for deterministic behavior&lt;/li&gt;
&lt;li&gt;Evaluate models with &lt;code&gt;cross_val_score&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Inspect feature importance&lt;/li&gt;
&lt;li&gt;Tune hyperparameters with &lt;code&gt;GridSearchCV&lt;/code&gt; or &lt;code&gt;RandomizedSearchCV&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives you a model that behaves the same way every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  ML runs cheaply and efficiently
&lt;/h3&gt;

&lt;p&gt;A trained scikit learn model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs on CPU&lt;/li&gt;
&lt;li&gt;Responds in milliseconds&lt;/li&gt;
&lt;li&gt;Costs almost nothing per prediction&lt;/li&gt;
&lt;li&gt;Scales horizontally with minimal infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why ML is used in production systems where cost and latency matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  ML integrates cleanly into production
&lt;/h3&gt;

&lt;p&gt;With Python’s ecosystem, you can deploy the model using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; for serving predictions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; for packaging the environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives you a clean, maintainable architecture that fits naturally into modern DevOps and MLOps workflows.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Claude 4.7 Loses
&lt;/h1&gt;

&lt;p&gt;Claude 4.7 is powerful, but it is not built for this category of problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  It cannot train on 10 GB of structured data
&lt;/h3&gt;

&lt;p&gt;Claude can only &lt;em&gt;sample&lt;/em&gt; or &lt;em&gt;summarize&lt;/em&gt; chunks of the dataset.&lt;br&gt;&lt;br&gt;
It cannot compute gradients, optimize a loss function, or learn the full distribution.&lt;/p&gt;

&lt;h3&gt;
  
  
  It guesses patterns instead of learning them
&lt;/h3&gt;

&lt;p&gt;LLMs are language models, not regression engines.&lt;br&gt;&lt;br&gt;
They infer trends from text, not from numerical relationships.&lt;/p&gt;

&lt;h3&gt;
  
  
  It is slower and more expensive
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Higher latency&lt;/li&gt;
&lt;li&gt;Higher compute cost&lt;/li&gt;
&lt;li&gt;Requires chunking and repeated calls&lt;/li&gt;
&lt;li&gt;Cannot be cached effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  It introduces non deterministic behavior
&lt;/h3&gt;

&lt;p&gt;Even with the same prompt, outputs can vary.&lt;br&gt;&lt;br&gt;
This is unacceptable for financial, operational, or regulatory workloads.&lt;/p&gt;




&lt;h1&gt;
  
  
  When Claude 4.7 Is Still Useful
&lt;/h1&gt;

&lt;p&gt;LLMs are excellent assistants for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exploratory analysis&lt;/li&gt;
&lt;li&gt;Explaining trends&lt;/li&gt;
&lt;li&gt;Suggesting features&lt;/li&gt;
&lt;li&gt;Cleaning messy text columns&lt;/li&gt;
&lt;li&gt;Generating documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But &lt;strong&gt;not&lt;/strong&gt; for the core predictive model.&lt;/p&gt;

&lt;p&gt;For large structured datasets and numerical prediction tasks:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Use ML for the model.&lt;br&gt;&lt;br&gt;
Use LLMs for support.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the architecture that delivers accuracy, cost efficiency, and operational stability.&lt;/p&gt;




&lt;h2&gt;
  
  
  Machine Learning as Part of AI
&lt;/h2&gt;

&lt;p&gt;Machine learning is one of the foundational pillars of AI. It learns patterns from structured data and uses those patterns to make predictions.&lt;/p&gt;

&lt;h3&gt;
  
  
  When ML is the right tool
&lt;/h3&gt;

&lt;p&gt;Use ML when the problem involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Numerical prediction&lt;/li&gt;
&lt;li&gt;Classification on structured data&lt;/li&gt;
&lt;li&gt;Statistical relationships&lt;/li&gt;
&lt;li&gt;Low latency inference&lt;/li&gt;
&lt;li&gt;Clear evaluation metrics&lt;/li&gt;
&lt;li&gt;Reproducible behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When LLMs are the right tool
&lt;/h3&gt;

&lt;p&gt;Use LLMs when the problem involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding or generating text&lt;/li&gt;
&lt;li&gt;Summarizing documents&lt;/li&gt;
&lt;li&gt;Reasoning across unstructured information&lt;/li&gt;
&lt;li&gt;Conversational interfaces&lt;/li&gt;
&lt;li&gt;Multi modal inputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simple rule of thumb:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the question is &lt;strong&gt;“Given these numbers, what is the probability of X?”&lt;/strong&gt; , use ML.&lt;/li&gt;
&lt;li&gt;If the question is &lt;strong&gt;“Given this text, what does it mean?”&lt;/strong&gt; , use an LLM.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What an ML Pipeline Really Is
&lt;/h2&gt;

&lt;p&gt;An ML pipeline is the journey from raw data to a working model.&lt;br&gt;&lt;br&gt;
It is not a single script. It is a repeatable, structured process.&lt;/p&gt;

&lt;p&gt;A complete ML pipeline includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data ingestion&lt;/li&gt;
&lt;li&gt;Data cleaning and preparation&lt;/li&gt;
&lt;li&gt;Exploratory data analysis&lt;/li&gt;
&lt;li&gt;Feature engineering&lt;/li&gt;
&lt;li&gt;Model training and evaluation&lt;/li&gt;
&lt;li&gt;Model packaging&lt;/li&gt;
&lt;li&gt;Deployment and monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This pipeline ensures that the work is reproducible, traceable, and ready for automation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What MLOps Means
&lt;/h2&gt;

&lt;p&gt;MLOps is the operational discipline that keeps machine learning systems healthy in production.&lt;br&gt;&lt;br&gt;
It brings together DevOps, data engineering, and model lifecycle management.&lt;/p&gt;

&lt;p&gt;MLOps focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Versioning of data, code, and models&lt;/li&gt;
&lt;li&gt;Automated training and retraining&lt;/li&gt;
&lt;li&gt;Continuous integration and delivery&lt;/li&gt;
&lt;li&gt;Monitoring model drift and performance&lt;/li&gt;
&lt;li&gt;Scalable deployment patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If ML is the engine, MLOps is the system that keeps the engine running safely at scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: The Vancouver Traffic Accident Risk Predictor
&lt;/h2&gt;

&lt;p&gt;This project analyzes weather and traffic accident data in Vancouver and builds a predictive model to estimate accident risk under different conditions.&lt;br&gt;&lt;br&gt;
It follows a complete ML pipeline from exploration to deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to Weather and Traffic Accident Analysis in Vancouver
&lt;/h3&gt;

&lt;p&gt;The project begins with a simple question:&lt;br&gt;&lt;br&gt;
How does weather influence accident risk in the city?&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Sources and Analytical Tools
&lt;/h3&gt;

&lt;p&gt;The project uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Traffic accident records:&lt;/em&gt; Traffic accident data is sourced from the City of Vancouver’s Strategic Plan Dashboard for reliability and accuracy. The dashboard provides detailed and regularly updated records essential for comprehensive traffic analysis.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Historical weather data:&lt;/em&gt; Weatherstats.ca aggregates data from Environment and Climate Change Canada for accurate meteorological information. The data encompasses a wide range of weather variables ensuring thorough climate analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tools include Python, Pandas, Matplotlib, Boken, Scikit Learn, FastAPI, and Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Cleaning and Preparation
&lt;/h3&gt;

&lt;p&gt;This stage merges datasets, handles missing values, and prepares the final analytical table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5welmdvicg97a4hz60l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5welmdvicg97a4hz60l.png" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0xu0elr365nrmsfnu83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0xu0elr365nrmsfnu83.png" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploratory Data Analysis
&lt;/h3&gt;

&lt;p&gt;EDA reveals patterns such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher accident frequency during snow &lt;/li&gt;
&lt;li&gt;Seasonal variations&lt;/li&gt;
&lt;li&gt;Time of day risk levels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i750dejm0wj1p4fhtmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i750dejm0wj1p4fhtmv.png" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzr5d91mjgb48ltzxt1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzr5d91mjgb48ltzxt1u.png" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8psrv6q8cg3vemlkgii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8psrv6q8cg3vemlkgii.png" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualizing Key Trends
&lt;/h2&gt;

&lt;p&gt;Charts help identify correlations and guide feature selection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxa9bdsyzx66lzl6ll7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxa9bdsyzx66lzl6ll7o.png" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16z3xqz8w7xr682c05hx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16z3xqz8w7xr682c05hx.png" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0akkdtcpph7rf84x8bpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0akkdtcpph7rf84x8bpi.png" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy1ngszy89azqjxhsgt5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy1ngszy89azqjxhsgt5.png" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Predictive Modeling
&lt;/h3&gt;

&lt;p&gt;The dataset is split into training and testing sets.&lt;br&gt;&lt;br&gt;
Models such as random forest are trained to predict accident risk.&lt;br&gt;&lt;br&gt;
Evaluation metrics confirm generalization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv639pz8hclfesgdabbvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv639pz8hclfesgdabbvm.png" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml96vpbw7fjx0dkh9nca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml96vpbw7fjx0dkh9nca.png" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Accuracy Metric:&lt;/em&gt; Accuracy measures the overall correctness of the predictive model by comparing true results to total predictions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Precision Metric:&lt;/em&gt; Precision indicates how many of the positive predictions made by the model are actually correct.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Recall Metric:&lt;/em&gt; Recall assesses the model’s ability to identify all relevant positive cases in the dataset.&lt;/p&gt;

&lt;p&gt;To increase the accuracy of Our ML module, we can tune the hyperparameters:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh1srad0muuwwx2yyzp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh1srad0muuwwx2yyzp2.png" width="800" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Insights and Conclusions
&lt;/h3&gt;

&lt;p&gt;The analysis shows how weather patterns influence accident probability and demonstrates the value of structured ML for public safety insights.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Productionalization and Deployment
&lt;/h2&gt;

&lt;p&gt;A model becomes valuable only when it can be used by real applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  FastAPI Model Server
&lt;/h3&gt;

&lt;p&gt;The trained model is wrapped in a FastAPI application that exposes a prediction endpoint.&lt;br&gt;&lt;br&gt;
An in memory prediction cache provides low latency responses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eb1pmhphe5vykdtsla9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eb1pmhphe5vykdtsla9.png" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy7ae9ak9hlov02tjopul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy7ae9ak9hlov02tjopul.png" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dockerized Environment
&lt;/h3&gt;

&lt;p&gt;The entire environment is packaged in Docker, ensuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistent runtime&lt;/li&gt;
&lt;li&gt;Easy local testing&lt;/li&gt;
&lt;li&gt;Seamless deployment to any container platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This closes the loop from exploration to production.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why This Matters to Your Business
&lt;/h1&gt;

&lt;p&gt;Every organization today is under pressure to adopt AI, but the real advantage comes from choosing the right tool for the right problem.&lt;br&gt;&lt;br&gt;
This article highlights a simple but often overlooked truth:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not every AI problem needs an LLM. Many business problems are solved faster, cheaper, and more reliably with classical ML.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For business leaders, this means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lower operational cost&lt;/li&gt;
&lt;li&gt;Faster time to value&lt;/li&gt;
&lt;li&gt;More predictable performance&lt;/li&gt;
&lt;li&gt;Easier compliance and governance&lt;/li&gt;
&lt;li&gt;Clearer ROI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Vancouver project is not just a technical exercise. It is a demonstration of how disciplined ML engineering can deliver practical, measurable outcomes without unnecessary complexity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Machine learning is not a relic from the pre LLM era.&lt;br&gt;&lt;br&gt;
It is a precise, efficient, and reliable discipline that solves structured prediction problems better than anything else.&lt;br&gt;&lt;br&gt;
The Vancouver Traffic Accident Risk Predictor demonstrates how ML pipelines, MLOps practices, and lightweight deployment patterns come together in a real project.&lt;/p&gt;

&lt;p&gt;If your team is exploring AI adoption, modernizing analytics, or evaluating where ML and LLMs fit into your roadmap, I am always open to meaningful conversations.&lt;br&gt;&lt;br&gt;
Whether you are building your first predictive model or scaling AI across the organization, the right architecture and the right tool choice make all the difference. Feel free to connect.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/from-machine-learning-to-production-a-practical-walkthrough-using-my-vancouver-traffic-accident-risk-predictor/" rel="noopener noreferrer"&gt;From Machine Learning to Production: A Practical Walkthrough Using My Vancouver Traffic Accident Risk Predictor&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>When AI Agents Transact: How Interaction Surface Mobility Redefines the Future of Payments </title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Sat, 09 May 2026 03:46:22 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/when-ai-agents-transact-how-interaction-surface-mobility-redefines-the-future-of-payments-4gof</link>
      <guid>https://dev.to/jonathan78wong/when-ai-agents-transact-how-interaction-surface-mobility-redefines-the-future-of-payments-4gof</guid>
      <description>&lt;p&gt;The story of digital payments has always been a story about movement.&lt;br&gt;Not just the movement of money, but the movement of the place where intention begins, where authentication happens, and where the transaction is finally executed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/machine-learning/agents-that-transact-introducing-amazon-bedrock-agentcore-payments-built-with-coinbase-and-stripe/" rel="noopener noreferrer"&gt;Amazon’s introduction of Amazon Bedrock AgentCore Payments&lt;/a&gt; marks the beginning of a new chapter in that story. It is a chapter where AI agents no longer wait for users to initiate payments. Instead, they transact autonomously, safely, and with full governance. And to understand why this matters, we need to look at how the interaction surface has been moving for more than two decades.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;A New Foundation for Agent Payments&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;AgentCore Payments is a fully managed payment layer that allows AI agents to pay for APIs, data, MCP servers, and even other agents. It integrates Coinbase and Stripe to support microtransactions, stablecoin payments, identity bound wallets, spending guardrails, and full observability.&lt;/p&gt;

&lt;p&gt;In the past, building this kind of payment capability required months of engineering work. Wallet management. Compliance. Guardrails. Billing logic. Error handling. AgentCore Payments removes all of that complexity. Payments become part of the agent execution loop, not a separate system bolted on the side.&lt;/p&gt;

&lt;p&gt;This shift becomes clear when we look at how an agent handles a simple request such as analyzing Amazon stock.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Once the agent realizes it needs paid data, the rest of the process is handled entirely by AgentCore Payments. The system provides a complete payment foundation inside the agent execution loop. It connects wallets, executes microtransactions, enforces spending rules, and records every event for governance and audit.&lt;/p&gt;

&lt;p&gt;AgentCore Payments includes five core capabilities that work together as a single runtime layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payment orchestration&lt;/strong&gt;&lt;br&gt;The platform manages wallet connections, establishes secure sessions with providers such as Coinbase and Stripe, and executes payments on behalf of the agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payment guardrails&lt;/strong&gt;&lt;br&gt;Every transaction is checked against authorization rules and spending limits. This prevents runaway costs and ensures the agent stays within the boundaries defined by the user or the organization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unified identity for agents&lt;/strong&gt;&lt;br&gt;Each agent operates under a consistent identity that ties together permissions, wallet access, and spending policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability across all payment events&lt;/strong&gt;&lt;br&gt;Every payment attempt, success, failure, and retry is logged. This gives teams full visibility into how agents are spending and why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native integration with agent execution loops&lt;/strong&gt;&lt;br&gt;Payments are not an external system. They are part of the agent’s reasoning and tool calling cycle. This allows agents to autonomously discover, evaluate, and pay for resources as part of completing a task. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.jonanata.com%2Fwp-content%2Fuploads%2F2026%2F05%2Fimage-3-1024x665.png" class="article-body-image-wrapper"&gt;&lt;img width="800" height="520" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.jonanata.com%2Fwp-content%2Fuploads%2F2026%2F05%2Fimage-3-1024x665.png" alt=""&gt;&lt;/a&gt;Source: &lt;a href="https://aws.amazon.com/blogs/machine-learning/agents-that-transact-introducing-amazon-bedrock-agentcore-payments-built-with-coinbase-and-stripe/" rel="noopener noreferrer"&gt;Agents that transact: Introducing Amazon Bedrock AgentCore payments, built with Coinbase and Stripe | Artificial Intelligence&lt;/a&gt;  &lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Example: Analyze Amazon Stock Enquiry&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;A user asks the agent to analyze Amazon stock.&lt;br&gt;The agent determines that real time financial data is required, and that the data source is paid.&lt;br&gt;It reaches out to the provider.&lt;br&gt;At that moment, AgentCore Payments takes over.&lt;/p&gt;

&lt;p&gt;It authenticates the wallet.&lt;br&gt;It executes the microtransaction.&lt;br&gt;It checks spending guardrails.&lt;br&gt;It logs the entire event for observability.&lt;/p&gt;

&lt;p&gt;Once the payment clears, the agent receives the data.&lt;br&gt;It completes the analysis and returns the result to the user.&lt;/p&gt;

&lt;p&gt;This example demonstrates the core value of AgentCore Payments.&lt;br&gt;Agents can autonomously transact inside a single execution loop without any custom payment logic.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Interaction Surface Mobility&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;A Short Explanation&lt;/p&gt;

&lt;p&gt;To understand why this shift is so significant, we need a new lens.&lt;br&gt;Historically, people talked about device mobility. Desktop to laptop to mobile to wearables. But the real story is not about devices. It is about the interaction surface. The place where intention originates, where authentication happens, and where payments are triggered.&lt;/p&gt;

&lt;p&gt;Interaction Surface Mobility describes how this surface keeps moving closer to the user’s life.&lt;br&gt;From the desk.&lt;br&gt;To the pocket.&lt;br&gt;To the environment.&lt;br&gt;And now into the cloud, where AI agents act on our behalf.&lt;/p&gt;

&lt;p&gt;This mobility shapes how payments work, how businesses design services, and how value flows across digital ecosystems.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;The Four Eras of Interaction Surface Mobility&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Before we explore the eras, it helps to understand the underlying structure.&lt;br&gt;Payment flows follow a consistent pattern:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interaction surface → service starting point → intention → authentication → channel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This formula becomes the backbone for understanding how payments evolve as the interaction surface becomes more mobile and more embedded in daily life.&lt;/p&gt;

&lt;p&gt;But what is actually changing in this new era?&lt;br&gt;The primary shift is the movement of the interaction surface itself.&lt;br&gt;As the interaction surface moves, everything downstream changes with it.&lt;br&gt;The service starting point moves.&lt;br&gt;The intention model changes.&lt;br&gt;The authentication model changes.&lt;br&gt;The payment channel changes.&lt;br&gt;The interaction surface is the driver.&lt;br&gt;The rest of the flow is the consequence.&lt;/p&gt;

&lt;p&gt;With this causal structure in mind, the four eras become clear.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table: The Evolution of Interaction Surface Mobility&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Era&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction surface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Service starting point&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Intention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Auth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Channel&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Desktop Web&lt;/td&gt;
&lt;td&gt;Desktop&lt;/td&gt;
&lt;td&gt;Website&lt;/td&gt;
&lt;td&gt;User initiated&lt;/td&gt;
&lt;td&gt;Manual login&lt;/td&gt;
&lt;td&gt;Web payment page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile App&lt;/td&gt;
&lt;td&gt;Mobile phone&lt;/td&gt;
&lt;td&gt;App&lt;/td&gt;
&lt;td&gt;User initiated&lt;/td&gt;
&lt;td&gt;Biometric&lt;/td&gt;
&lt;td&gt;Mobile wallet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud AI Services&lt;/td&gt;
&lt;td&gt;Cloud agents&lt;/td&gt;
&lt;td&gt;Cloud workflows&lt;/td&gt;
&lt;td&gt;AI interpreted&lt;/td&gt;
&lt;td&gt;Pre authorized agent identity&lt;/td&gt;
&lt;td&gt;Agent to agent payment service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ambient AI&lt;/td&gt;
&lt;td&gt;Ambient compute&lt;/td&gt;
&lt;td&gt;Autonomous AI workflows&lt;/td&gt;
&lt;td&gt;AI reasoning&lt;/td&gt;
&lt;td&gt;Identity bound spending guardrails&lt;/td&gt;
&lt;td&gt;Autonomous payment protocols&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Era 1: The Desktop Web&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the beginning, the interaction surface was fixed.&lt;br&gt;People sat at a desk, opened a browser, and intentionally navigated to a payment page. Every action was explicit. Every step was manual. Payments were a destination, not a flow.&lt;/p&gt;

&lt;p&gt;This era shaped the first generation of online commerce. But it was limited by the immobility of the interaction surface. The user had to go to the computer. The computer never followed the user.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Era 2: The Mobile App&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Then the interaction surface moved into the pocket.&lt;br&gt;The phone became the center of digital life.&lt;br&gt;Apps replaced websites.&lt;br&gt;Biometrics replaced passwords.&lt;br&gt;Wallets replaced card forms.&lt;/p&gt;

&lt;p&gt;Payments became faster, more personal, and more contextual.&lt;br&gt;This era created ride hailing, food delivery, and mobile commerce.&lt;br&gt;It also marked the beginning of lifestyle mobility.&lt;br&gt;People no longer went to the payment interface.&lt;br&gt;The payment interface went with them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Era 3: Cloud Based AI Services&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The next shift was subtle but profound.&lt;br&gt;The interaction surface moved off the device entirely and into the cloud.&lt;br&gt;AI agents began performing tasks on behalf of users.&lt;br&gt;They interpreted intention.&lt;br&gt;They initiated workflows.&lt;br&gt;They accessed paid resources.&lt;/p&gt;

&lt;p&gt;But payments were still a problem.&lt;br&gt;Agents could not pay for anything without custom engineering.&lt;br&gt;Wallets were not agent native.&lt;br&gt;Guardrails were not standardized.&lt;br&gt;Governance was fragmented.&lt;/p&gt;

&lt;p&gt;AgentCore Payments solves this.&lt;br&gt;It gives agents a native way to transact, with identity, guardrails, and observability built in.&lt;br&gt;This is the first real payment system designed for autonomous agents.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Era 4: Ambient AI&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is the era we are entering now.&lt;br&gt;The interaction surface becomes the environment itself.&lt;br&gt;Homes, cars, offices, glasses, wearables, sensors, and cloud agents all become part of a continuous ambient layer.&lt;/p&gt;

&lt;p&gt;Intention is no longer expressed.&lt;br&gt;It is reasoned.&lt;br&gt;Sometimes even anticipated through context.&lt;/p&gt;

&lt;p&gt;Authentication becomes a set of identity bound spending rules.&lt;br&gt;Channels become autonomous payment protocols.&lt;br&gt;Transactions become micro events inside larger workflows.&lt;/p&gt;

&lt;p&gt;In this world, payments are not actions.&lt;br&gt;They are side effects of intelligent systems doing their work.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Why This Matters for Business&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Interaction Surface Mobility is not just a technical evolution.&lt;br&gt;It is a business transformation.&lt;/p&gt;

&lt;p&gt;Payments become invisible.&lt;br&gt;Intention becomes fluid.&lt;br&gt;Authentication becomes ambient.&lt;br&gt;Channels become agent native.&lt;br&gt;Business models shift from subscriptions to usage based to agent based.&lt;/p&gt;

&lt;p&gt;Agents will buy data.&lt;br&gt;Agents will buy compute.&lt;br&gt;Agents will buy services.&lt;br&gt;Agents will buy from other agents.&lt;/p&gt;

&lt;p&gt;The companies that understand this shift will design products for a world where the user is no longer the primary actor in the payment flow.&lt;br&gt;The agent is.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Closing Thought&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The movement of the interaction surface has always reshaped the payment landscape.&lt;br&gt;From the desk.&lt;br&gt;To the pocket.&lt;br&gt;To the environment.&lt;br&gt;And now into the cloud, where agents transact on our behalf.&lt;/p&gt;

&lt;p&gt;AgentCore Payments is not just a new feature.&lt;br&gt;It is the infrastructure for the next era of commerce.&lt;br&gt;An era defined by Interaction Surface Mobility, where payments become autonomous, contextual, and woven into the fabric of intelligent systems.  &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth. &lt;br&gt;&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;  &lt;/p&gt;



&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/when-ai-agents-transact-how-interaction-surface-mobility-redefines-the-future-of-payments/" rel="noopener noreferrer"&gt;When AI Agents Transact: How Interaction Surface Mobility Redefines the Future of Payments &lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aws</category>
    </item>
    <item>
      <title>A Pre‑AI Lesson for the AI Era: Scrum in a Cross‑Regional Cloud Migration Delivered in Ten Weeks</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Wed, 06 May 2026 23:23:33 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/a-pre-ai-lesson-for-the-ai-era-scrum-in-a-cross-regional-cloud-migration-delivered-in-ten-weeks-d2p</link>
      <guid>https://dev.to/jonathan78wong/a-pre-ai-lesson-for-the-ai-era-scrum-in-a-cross-regional-cloud-migration-delivered-in-ten-weeks-d2p</guid>
      <description>&lt;p&gt;A few years ago, I stepped into one of the most challenging and transformative projects of my career as a Cloud Architect. I was responsible for leading a cross‑regional team of more than twenty developers across Hong Kong and China. With Scrum, Atlassian JIRA, and Confluence as our backbone, we rebuilt an AWS‑based JEE Spring microservices platform using Kafka and PostgreSQL and migrated it fully to Azure. The original engineering estimate was six months. We delivered it in ten weeks.&lt;/p&gt;

&lt;p&gt;This is the story of how alignment, structure, and communication reshaped the entire organisation.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The project began with a strong team but a fragmented operating model. Everyone worked hard, but the lack of shared structure created delays and misunderstandings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Cross‑regional team of more than twenty developers across Hong Kong and China&lt;br&gt;• Many engineers were domain experts with strong CI and CD foundations&lt;br&gt;• Multiple teams involved including product, engineering, sales, and customer success&lt;br&gt;• Hardworking culture but no unified workflow&lt;br&gt;• Required to migrate a cloud product to Azure due to client request&lt;br&gt;• Engineering estimated six months, which the business could not accept&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The team had the talent and capability, but without alignment, the project was heading toward an unacceptable timeline.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;My Role in the Transformation&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;As the Cloud Architect leading this initiative, I became the bridge between product, engineering, sales, and customer success. My role was not only technical but also organisational. I facilitated communication, explained Scrum practices in simple and practical ways, and guided the teams to adopt a structured, transparent workflow. By aligning expectations, enforcing clarity, and coaching the teams through Agile execution, I helped transform the project from fragmented chaos into a predictable, collaborative delivery model.&lt;/p&gt;




&lt;h1&gt;
&lt;strong&gt;Problems and the Real Original&lt;/strong&gt; &lt;strong&gt;Situation&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The delays were not caused by technical difficulty. They were caused by fragmented communication, inconsistent requirement handling, and a workflow that depended heavily on verbal instructions and individual memory. The actual “before” situation was far more chaotic than a simple misalignment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Product team sometimes gave requirements verbally through phone calls, WhatsApp or WeChat  &lt;br&gt;• Product features were told directly to individual engineers or salespeople&lt;br&gt;• Different parts of the same requirement were distributed through different channels such as email, phone, and chat&lt;br&gt;• Customer success often contacted individual engineers or product members suddenly&lt;br&gt;• No one had a complete picture of the requirement&lt;br&gt;• Engineering teams lacked visibility into each other’s status and technical availability&lt;br&gt;• Developers were frequently switched between tasks, losing focus&lt;br&gt;• Management had no visibility into progress or bottlenecks&lt;br&gt;• CS handled customer issues without knowing what was released&lt;br&gt;• Feedback rarely reached product or engineering in a structured way&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The organisation operated on tribal knowledge. Misunderstandings were common, rework was frequent, and timelines were unpredictable. The six‑month estimate reflected organisational misalignment, not technical complexity.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;How I Solved It Using JIRA, Confluence, and Scrum&lt;/strong&gt;&lt;/h1&gt;

&lt;h2&gt;&lt;strong&gt;Inside the Engineering Teams&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The engineering team needed structure, clarity, and a predictable rhythm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• All development work documented on the tracker&lt;br&gt;• Engineers only worked on items listed in the tracker&lt;br&gt;• Requirements treated as negotiable conversations&lt;br&gt;• PM updated the tracker after every discussion&lt;br&gt;• Engineers picked the first available item&lt;br&gt;• Story status updated continuously&lt;br&gt;• One engineer worked on one item at a time&lt;br&gt;• Requirements broken into technical tasks&lt;br&gt;• Development discussions moved into JIRA&lt;br&gt;• Work delivered into testing story by story&lt;br&gt;• Tasks created for POC, technical debt, and research&lt;br&gt;• Tasks broken down with dependencies and blockers&lt;br&gt;• One task assigned to one engineer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;Engineering gained clarity, focus, and a stable delivery rhythm that accelerated progress.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Inside the Product Team&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The product team needed a consistent way to express requirements so engineering could execute without ambiguity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Features and bugs written with proper structure&lt;br&gt;• Requirements documented from the user perspective&lt;br&gt;• Simple English, point form, short sentences&lt;br&gt;• Stories tested and verified quickly&lt;br&gt;• Backlog groomed regularly and prioritized top to bottom&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The product team became a source of clarity instead of confusion, reducing rework and saving time.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;Knowledge and Task Management&lt;/strong&gt;&lt;/h1&gt;

&lt;h2&gt;&lt;strong&gt;Product, Knowledge, and Requirement Management&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;Information lived in too many places. Teams needed a single source of truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Confluence used as a centralized panel&lt;br&gt;• Structure followed Space to Pages to Contents&lt;br&gt;• Pages included product requirements, technical documents, and notes&lt;br&gt;• Product requirement pages included goals, milestones, and voting&lt;br&gt;• Technical documents included architecture, installation, and account details&lt;br&gt;• Notes captured meetings, research, and decisions&lt;br&gt;• Confluence pages linked directly to JIRA issues&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;Knowledge became shared, searchable, and consistent across all teams.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Issue Types and Their Purpose&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;Teams needed a common language to describe work, track progress, and estimate timelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Bug for previously working functions that broke&lt;br&gt;• Note for behaviours that became new requirements&lt;br&gt;• Story for the smallest unit of user value&lt;br&gt;• Task for feasibility studies, POC, and technical debt&lt;br&gt;• Epic for large initiatives&lt;br&gt;• Subtask for breaking down work&lt;br&gt;• Enabled velocity tracking and release estimation&lt;br&gt;• Tracked internal and external dependencies&lt;br&gt;• Smart Commits connected code changes to tasks&lt;br&gt;• JIRA release notes notified sales and CS automatically&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The organisation gained predictable delivery, accurate planning, and better cross‑team alignment.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;Team Meetings to Improve Communication&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;Tools alone were not enough. Teams needed real‑time alignment and shared understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Daily morning standups with engineering&lt;br&gt;• Weekly Monday meeting with all team heads&lt;br&gt;• Customer success joined standups when client feedback needed clarification&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;Communication became continuous, reducing misunderstandings and last‑minute surprises.&lt;/p&gt;




&lt;h1&gt;Example: From Product Design through Engineering to CS and Back &lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;To show the impact of the transformation, here is a real example of how a feature moved through the organisation before and after the new workflow.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;Before&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The original workflow was chaotic, fragmented, and heavily dependent on verbal communication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Product team sometimes gave requirements verbally through phone calls or WhatsApp&lt;br&gt;• Product features were told directly to individual engineers or salespeople&lt;br&gt;• Different parts of the same requirement were distributed through different channels&lt;br&gt;• Customer success often contacted individual engineers suddenly&lt;br&gt;• No one had a complete picture of the requirement&lt;br&gt;• Engineering built based on partial or outdated information&lt;br&gt;• Sales promised features based on verbal conversations&lt;br&gt;• CS handled customer issues without knowing what was released&lt;br&gt;• Feedback rarely reached product or engineering&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The organisation operated on tribal knowledge. Misunderstandings were common, rework was frequent, and timelines were unpredictable.&lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;After&lt;/strong&gt;&lt;/h2&gt;

&lt;h3&gt;&lt;strong&gt;Product Design&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;• Product team created a clear Confluence page with goal, user story, acceptance criteria, and diagrams&lt;br&gt;• Page linked directly to a JIRA story and tasks&lt;br&gt;• All teams saw the same requirement at the same time&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Engineering Development&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;• Engineers broke the story into tasks and subtasks&lt;br&gt;• Dependencies and blockers were defined&lt;br&gt;• Work delivered story by story into testing&lt;br&gt;• PM verified each story immediately&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Release to CS&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;• JIRA release function automatically pushed release notes to Microsoft Teams&lt;br&gt;• CS team received a clear list of new features, fixes, and version numbers&lt;br&gt;• Sales also received the same release notes&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;CS Feedback Loop&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;• CS tested the new feature with real customers&lt;br&gt;• Feedback added as comments on the Confluence page&lt;br&gt;• Product team reviewed and updated requirements&lt;br&gt;• Engineering received new tasks or improvements linked to the original story&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The entire lifecycle became a closed loop. Every team saw the same truth, reacted quickly, and aligned their actions.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;Before and After Comparison&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;The transformation changed the culture, speed, and clarity of the entire organisation. Presenting the contrast as a table makes the improvement immediately clear.  &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product Design&lt;/td&gt;
&lt;td&gt;Requirements delivered verbally through phone or WhatsApp&lt;/td&gt;
&lt;td&gt;Requirements documented clearly in Confluence&lt;/td&gt;
&lt;td&gt;Clear documentation replaced verbal memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product Design&lt;/td&gt;
&lt;td&gt;Different parts of the same requirement sent through different channels&lt;/td&gt;
&lt;td&gt;Single source of truth for all requirements&lt;/td&gt;
&lt;td&gt;One place for all information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product Design&lt;/td&gt;
&lt;td&gt;Product features communicated directly to individual engineers or sales&lt;/td&gt;
&lt;td&gt;Structured JIRA stories and tasks shared with all teams&lt;/td&gt;
&lt;td&gt;Everyone received the same message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge Management&lt;/td&gt;
&lt;td&gt;No documentation and no shared visibility&lt;/td&gt;
&lt;td&gt;Centralized product and technical knowledge&lt;/td&gt;
&lt;td&gt;Teams aligned on the same information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Engineering &lt;br&gt;Execution&lt;/td&gt;
&lt;td&gt;Frequent rework and misaligned expectations&lt;/td&gt;
&lt;td&gt;Predictable engineering workflow with clear dependencies&lt;/td&gt;
&lt;td&gt;Work became stable and predictable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release &lt;br&gt;Management&lt;/td&gt;
&lt;td&gt;No release notes for CS or sales&lt;/td&gt;
&lt;td&gt;Automated release notes through JIRA to Microsoft Teams&lt;/td&gt;
&lt;td&gt;All teams stayed informed on every release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer Success&lt;/td&gt;
&lt;td&gt;CS feedback delivered suddenly to individuals&lt;/td&gt;
&lt;td&gt;CS feedback captured in Confluence and linked to JIRA&lt;/td&gt;
&lt;td&gt;Feedback became structured and trackable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery Timeline&lt;/td&gt;
&lt;td&gt;Six month timeline estimate&lt;/td&gt;
&lt;td&gt;Ten week delivery&lt;/td&gt;
&lt;td&gt;Alignment accelerated delivery dramatically&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The organisation shifted from reactive chaos to proactive alignment, with every team operating from the same truth.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;What This Solved and the Result&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;&lt;br&gt;Once structure, communication, and knowledge alignment were in place, the entire organisation began to move faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;br&gt;• Centralized visibility improved planning and saved time&lt;br&gt;• Clear product goals reduced misunderstanding&lt;br&gt;• Early validation reduced downstream rework&lt;br&gt;• Engineering timelines became predictable&lt;br&gt;• Product page and task linkage aligned business and engineering&lt;br&gt;• JIRA auto‑release notes empowered sales and CS&lt;br&gt;• Engineering teams understood each other’s status and availability&lt;br&gt;• Defined blockers prevented last‑minute surprises&lt;br&gt;• Centralized documentation reduced search time and improved support&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;The six‑month estimate collapsed into ten weeks because every team finally moved in the same direction.&lt;/p&gt;




&lt;h1&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Product success is built on teamwork across all functions.&lt;/strong&gt; Improving the product development timeline required alignment from product design to feature validation, business requirement transformation, testing, release, customer success, post delivery support, and customer feedback. When every team shares the same truth, the entire organisation accelerates.&lt;/p&gt;

&lt;p&gt;This experience, even though it happened a few years ago, remains fully relevant in today’s &lt;strong&gt;AI driven business era.&lt;/strong&gt; It is a clear example of how &lt;strong&gt;Scrum and Agile principles&lt;/strong&gt; solve real operational problems. The story shows that &lt;strong&gt;delays rarely come from tools or technical expertise.&lt;/strong&gt; They come from the &lt;strong&gt;absence of a disciplined operational methodology.&lt;/strong&gt; When teams follow a repeatable Agile process supported by a single source of truth, technology becomes an accelerator rather than a bottleneck.  &lt;/p&gt;




&lt;h2&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;This article presents the high level view of how Scrum and operational alignment improved a cross regional cloud migration timeline. In the next article, I will walk through the detailed implementation across each phase, and explain the specific problems the team encountered, how those challenges were solved, and how the Scrum workflow kept the project moving with clarity from design to delivery.  &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth. &lt;br&gt;&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;  &lt;/p&gt;



&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/project-management-story-leading-a-cross-regional-cloud-migration/" rel="noopener noreferrer"&gt;A Pre‑AI Lesson for the AI Era: Scrum in a Cross‑Regional Cloud Migration Delivered in Ten Weeks&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>management</category>
      <category>agile</category>
    </item>
    <item>
      <title>Cloud Summit 2026</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Mon, 04 May 2026 19:56:54 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/cloud-summit-2026-1opf</link>
      <guid>https://dev.to/jonathan78wong/cloud-summit-2026-1opf</guid>
      <description>&lt;p&gt;I spent the day at &lt;a href="https://awsday.ca/?city=vancouver" rel="noopener noreferrer"&gt;Cloud Summit&lt;/a&gt; and it turned into one of the busiest days I have had in the Vancouver tech scene. The event pulled together a wide mix of local engineers and builders, and most of the sessions leaned heavily into AI. The conversation has clearly shifted from abstract excitement to real architectural patterns and operational challenges.&lt;/p&gt;

&lt;p&gt;One of the most interesting sessions was the deep dive into the Kubernetes &lt;a href="https://github.com/kubernetes-sigs/wg-ai-gateway" rel="noopener noreferrer"&gt;&lt;em&gt;AI Gateway&lt;/em&gt;&lt;/a&gt; work. The working group is shaping a consistent way to handle AI‑specific traffic at the gateway layer, including protocol awareness, egress controls, payload inspection, routing and guardrails. It is still early and mostly proposals and prototypes, but the direction is promising for teams trying to standardize how they expose and secure inference workloads.&lt;/p&gt;

&lt;p&gt;Another standout was the talk on cloud billing complexity, &lt;em&gt;&lt;a href="https://gist.github.com/nikosmeds/bdefa715d068e981a8fd402bf1388501" rel="noopener noreferrer"&gt;The Cloud Bill Nobody Could Explain&lt;/a&gt;&lt;/em&gt;. The speaker walked through a real incident investigation where even experienced teams struggled to explain unexpected cost behaviour. The supporting tools were practical, from VPC flow log analyzers that map traffic to namespaces, to exporters that surface per‑namespace cloud cost metrics, to utilities for finding orphaned disks across providers. It was a reminder that cost transparency is still one of the hardest engineering problems in cloud.&lt;/p&gt;

&lt;p&gt;The free snacks and pizza made the long day easier, and if you also joined the AWS Workshop on Introduction to Claude Code on AWS and stayed for the after party, you probably felt the same mix of learning, networking and exhaustion.&lt;/p&gt;

&lt;p&gt;Vancouver’s cloud and AI community is moving fast, and days like this make it clear how much is happening across the ecosystem.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/cloud-summit-2026/" rel="noopener noreferrer"&gt;Cloud Summit 2026&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
    </item>
    <item>
      <title>Autodata and the New Data Pipeline: Why Meta’s Agentic Data Scientist Matters More Than the Model</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Sun, 03 May 2026 01:52:55 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/autodata-and-the-new-data-pipeline-why-metas-agentic-data-scientist-matters-more-than-the-model-48i0</link>
      <guid>https://dev.to/jonathan78wong/autodata-and-the-new-data-pipeline-why-metas-agentic-data-scientist-matters-more-than-the-model-48i0</guid>
      <description>&lt;p&gt;The industry has spent years debating model size, architectures, and inference tricks. But Meta’s latest research makes something very clear: &lt;strong&gt;AI success is still determined by four elements: prompt, grounding, training, and fine tuning, and three of them are fundamentally data problems.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Which means the real bottleneck isn’t compute. It’s data quality, data structure, and data digestion.&lt;/p&gt;

&lt;p&gt;Meta’s new &lt;em&gt;Autodata&lt;/em&gt; framework reframes this bottleneck entirely. Instead of treating data as a static asset that humans must continuously curate, Autodata turns the model itself into an &lt;strong&gt;autonomous data scientist&lt;/strong&gt; , capable of generating, analyzing, and iterating on its own training data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2acg31m8e2j0h5qk5k34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2acg31m8e2j0h5qk5k34.png" width="800" height="391"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure: Autodata pipeline. The framework employs an autonomous agent that emulates the role of a data scientist, iteratively generating data, conducting qualitative inspection and quantitative performance evaluation, synthesizing insights, and updating the data-generation recipe. The agent itself can be trained to be better at the data scientist task using the same criteria used in the inner loop. This cyclical process aims to progressively enhance data quality; the diagram depicts the general workflow underlying possible instantiations. RAM @ Meta AI | A framework to study AI models in Reasoning, Alignment, and use of Memory (RAM)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is not “synthetic data 2.0.”&lt;br&gt;&lt;br&gt;
This is a shift in how data pipelines operate.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1. Why Data Quality Still Determines AI Success&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Prompting and grounding matter, but they sit on top of the real foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;training data&lt;/strong&gt; that shapes the model’s baseline&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;fine‑tuning data&lt;/strong&gt; that aligns it&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;evaluation data&lt;/strong&gt; that determines whether it’s improving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three of the four levers that determine AI performance are data‑centric.&lt;br&gt;&lt;br&gt;
And historically, all three required &lt;strong&gt;human data scientists&lt;/strong&gt; — expensive, slow, and difficult to scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;2. The Traditional Data Scientist Bottleneck&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Data scientists have always played the critical role of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;curating high‑quality examples&lt;/li&gt;
&lt;li&gt;grounding tasks in real documents&lt;/li&gt;
&lt;li&gt;designing evaluation rubrics&lt;/li&gt;
&lt;li&gt;iterating based on model failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This work is high‑cost because it requires &lt;strong&gt;human judgment&lt;/strong&gt; , domain knowledge, and careful harness engineering. Even synthetic data pipelines still depended on humans to design prompts, filters, and quality checks.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;3. Meta’s Autodata: A Model That Trains Itself With Data It Creates&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Autodata changes the loop.&lt;br&gt;&lt;br&gt;
Instead of single‑pass synthetic generation, the model now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data Creation.&lt;/strong&gt; The agent grounds on the provided documents and uses its existing skills and compute to create training or evaluation data. It can repeat this step after each analysis cycle to incorporate new learnings and improve the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Analysis.&lt;/strong&gt; The agent reviews the data it created to understand correctness, quality, difficulty, and diversity. These learnings feed directly back into the next creation cycle until the data reaches the required standard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Scientist Loop.&lt;/strong&gt; The agent cycles between creation and analysis until it is satisfied with the final dataset. Guardrails can be applied to prevent reward hacking, and later generations of agents can build on earlier learnings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta Optimization.&lt;/strong&gt; The agent itself can be improved through autoresearch or meta‑harness optimization so it becomes better at performing the data scientist role over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Meta’s implementation uses a multi agent setup with a Challenger, a Weak Solver, a Strong Solver, and a Verifier to ensure the generated data is neither trivial nor impossible. The result is &lt;strong&gt;higher quality training data than classical Self Instruct or CoT Self Instruct methods.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the first time we’ve seen a closed‑loop, feedback‑driven data creation system that mirrors how human data scientists work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwtgje6nljce2oqcot2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwtgje6nljce2oqcot2a.png" width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure: Example agent trajectory on a CS research paper, showing the final accepted round (round 6) after 5 failed attempts. The Main Agent reflects on prior failures and prompts the Challenger Agent to generate a new question. The example is evaluated by Weak (4B) and Strong (397B) solvers, scored by a Verifier/Judge across 12 rubric criteria. Round 6 achieves a 45% gap (weak 48% vs. strong 93%) and is accepted. Learnings from rounds 1–5 feed back into the Main Agent’s refinement strategy. RAM @ Meta AI | A framework to study AI models in Reasoning, Alignment, and use of Memory (RAM)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;4. Reducing the Cost of Human‑Grounded Data&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The cost of training data has always come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;human annotation&lt;/li&gt;
&lt;li&gt;human‑designed prompts&lt;/li&gt;
&lt;li&gt;human‑designed evaluation rubrics&lt;/li&gt;
&lt;li&gt;human‑driven iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Autodata reduces all four.&lt;/p&gt;

&lt;p&gt;Meta’s meta‑optimization layer even shows that &lt;strong&gt;the agent can improve its own instructions&lt;/strong&gt; , discovering better harness logic without human intervention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaw0i2pd9vtedw9gxt2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaw0i2pd9vtedw9gxt2h.png" width="800" height="591"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure: Meta-optimization of the data scientist agent. An outer optimization loop evaluates the agent’s harness on training papers, analyzes failure trajectories to identify systematic weaknesses (e.g., context leakage), implements harness modifications via a code-editing agent, and re-evaluates on held-out validation papers. Changes are accepted only if they improve the weak-strong separation rate. This process improved validation pass rate from 12.8% to 42.4% over 126 accepted iterations out of 233 total. RAM @ Meta AI | A framework to study AI models in Reasoning, Alignment, and use of Memory (RAM)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the part that matters:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The model is not just generating data, it is improving the rules for generating data.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;5. AI as the Data Scientist&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Meta’s results show that an AI data scientist can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;enforce paper‑specific insights&lt;/li&gt;
&lt;li&gt;prevent context leakage&lt;/li&gt;
&lt;li&gt;design structured rubrics&lt;/li&gt;
&lt;li&gt;tune difficulty levels&lt;/li&gt;
&lt;li&gt;widen capability gaps between weak and strong solvers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All without manual harness engineering.&lt;/p&gt;

&lt;p&gt;This is the beginning of &lt;strong&gt;agentic data operations&lt;/strong&gt; , where the model becomes an active participant in its own training pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;6. A Shift in the Data Operations Pipeline&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Autodata changes the relationship between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data creation&lt;/li&gt;
&lt;li&gt;data evaluation&lt;/li&gt;
&lt;li&gt;model training&lt;/li&gt;
&lt;li&gt;model alignment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of a linear pipeline, we now have a &lt;strong&gt;self‑improving loop&lt;/strong&gt; where the model continuously refines the data that refines the model.&lt;/p&gt;

&lt;p&gt;This transforms data operations from a human‑driven workflow into a &lt;strong&gt;compute‑driven optimization problem&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;7. Rethinking the Four Elements of AI Success&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If prompt, grounding, training, and fine‑tuning determine AI success, and three of them are data‑centric, then Autodata forces us to rethink how these elements interact.&lt;/p&gt;

&lt;p&gt;We now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;new external grounding&lt;/strong&gt; (the model grounds itself on documents)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;new internal grounding&lt;/strong&gt; (the model evaluates its own reasoning)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;new training loops&lt;/strong&gt; (data improves as compute increases)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;new fine‑tuning strategies&lt;/strong&gt; (agent‑generated datasets outperform human‑designed ones)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The implication is simple:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Data pipelines are becoming agentic systems, not manual processes.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Where This Leads&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Autodata is not just a research milestone.&lt;br&gt;&lt;br&gt;
It signals a future where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;models generate their own training curriculum&lt;/li&gt;
&lt;li&gt;data scientists supervise strategy, not samples&lt;/li&gt;
&lt;li&gt;data quality scales with compute, not headcount&lt;/li&gt;
&lt;li&gt;grounding becomes dynamic, not static&lt;/li&gt;
&lt;li&gt;fine‑tuning becomes continuous, not episodic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next wave of AI performance will come from &lt;strong&gt;agentic data pipelines&lt;/strong&gt; , not larger models.&lt;/p&gt;

&lt;p&gt;And Meta just opened the door.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; Meta Autodata research &lt;a href="https://facebookresearch.github.io/RAM/blogs/autodata/?utm_source=copilot.com" rel="noopener noreferrer"&gt;https://facebookresearch.github.io/RAM/blogs/autodata/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/autodata-and-the-new-data-pipeline-why-metas-agentic-data-scientist-matters-more-than-the-model/" rel="noopener noreferrer"&gt;Autodata and the New Data Pipeline: Why Meta’s Agentic Data Scientist Matters More Than the Model&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>facebook</category>
    </item>
    <item>
      <title>IEC BC x ISACA Vancouver Cybersecurity Networking Event</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Thu, 30 Apr 2026 23:04:57 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/iec-bc-x-isaca-vancouver-cybersecurity-networking-event-nml</link>
      <guid>https://dev.to/jonathan78wong/iec-bc-x-isaca-vancouver-cybersecurity-networking-event-nml</guid>
      <description>&lt;p&gt;At the IEC BC x ISACA Vancouver Cybersecurity Networking Event this week, newcomers, experienced professionals, and employers had the chance to connect meaningfully. Thank you to &lt;a href="https://www.linkedin.com/company/iecbc/" rel="noopener noreferrer"&gt;Immigrant Employment Council of BC&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/isaca-vancouver-chapter/" rel="noopener noreferrer"&gt;ISACA Vancouver Chapter&lt;/a&gt; and &lt;a href="https://www.linkedin.com/company/vancouver-community-college/" rel="noopener noreferrer"&gt;Vancouver Community College (VCC)&lt;/a&gt; for making this possible.  &lt;/p&gt;

&lt;p&gt;The speaker shared a clear breakdown of certification pathways in cybersecurity.  &lt;/p&gt;

&lt;p&gt;Foundational certifications include ISC2 Certified in Cybersecurity (CC).&lt;br&gt;&lt;br&gt;
Intermediate tracks include CISA, CCSP, and AWS Security.&lt;br&gt;&lt;br&gt;
Senior level designations include CISSP and CISM, which reflect broader responsibility across governance, architecture, and organizational risk.  &lt;/p&gt;

&lt;p&gt;The speaker also highlighted the challenges overseas trained professionals face in the Vancouver job market. Many arrive with strong technical backgrounds, yet still need to navigate local hiring expectations, credential recognition, and the persistent “Canadian experience” requirement. Hearing this acknowledged openly was valuable for many attendees.  &lt;/p&gt;

&lt;p&gt;Another insight from the talk focused on how companies are adopting AI inside their organizational structure. The risk is not only technical. For SMEs with fewer than 50 employees, restructuring teams too quickly around AI can create instability and unclear ownership.  &lt;/p&gt;

&lt;p&gt;One final note for anyone exploring cybersecurity.&lt;br&gt;&lt;br&gt;
The free ISC2 Certified in Cybersecurity (CC) enrollment ends on May 20, 2026.  &lt;/p&gt;

&lt;p&gt;If you are considering a first step into the field, this is a good opportunity before the window closes.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/iec-bc-x-isaca-vancouver-cybersecurity-networking-event/" rel="noopener noreferrer"&gt;IEC BC x ISACA Vancouver Cybersecurity Networking Event&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>networking</category>
    </item>
    <item>
      <title>My Journey to the Google Cloud Get Certified: From Fundamentals to Generative AI</title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Thu, 30 Apr 2026 22:19:03 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/my-journey-to-the-google-cloud-get-certified-from-fundamentals-to-generative-ai-31hc</link>
      <guid>https://dev.to/jonathan78wong/my-journey-to-the-google-cloud-get-certified-from-fundamentals-to-generative-ai-31hc</guid>
      <description>&lt;p&gt;Deciding to get Google Cloud certified is one thing; finding a structured path to get there is another. I recently hit a major milestone in my journey: completing &lt;strong&gt;Stage 2 of the Google Cloud Get Certified program&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By earning five specific skill badges, I’ve officially unlocked my free exam voucher. These weren’t just theoretical modules—they were intense, hands-on labs that forced me to build, secure, and automate real-world cloud environments. Here is how I structured my learning path to cross the finish line:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build a Secure Google Cloud Network&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I started with the foundation. This badge focused on the defensive side of cloud architecture. I configured VPC firewalls, set up private access, and ensured that the network followed the “least privilege” principle to protect data from the ground up.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set Up an App Dev Environment on Google Cloud&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once the network was secure, I moved to the application layer. This badge covered the essential tools for a developer’s workflow, including setting up development clusters and managing the full lifecycle of an app within the Google Cloud ecosystem.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Implement Load Balancing on Compute Engine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the environment ready, I had to ensure it could handle traffic. I practiced configuring various Google Cloud load balancers (HTTP(S) and TCP/UDP) to distribute traffic across Compute Engine instances, ensuring high availability and performance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build Infrastructure with Terraform on Google Cloud&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After mastering the manual setups, I moved to &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt;. This badge acted as the bridge, taking the networking and compute skills I’d learned and teaching me how to provision them automatically using Terraform configuration files for repeatable, version-controlled deployments.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Your First Gemini Enterprise Application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finally, I explored the future of the cloud: &lt;strong&gt;Generative AI&lt;/strong&gt;. This badge involved integrating Google’s Gemini large language models into enterprise-level applications, showing how AI can be layered on top of a robust infrastructure.&lt;/p&gt;

&lt;p&gt;The Road Ahead&lt;/p&gt;

&lt;p&gt;These labs provided the practical “muscle memory” needed for the real world. Now that the voucher is unlocked, the final step toward official certification can be taken!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you working on GCP networking or security right now? I’d love to compare notes or hear about your approach!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlhefnczokzvlawp63tm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlhefnczokzvlawp63tm.png" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Jonathan Wong&lt;/em&gt; is an IT and AI consultant with 20+ years of experience leading engineering teams across Vancouver and Hong Kong. He specializes in modernizing legacy platforms, cloud security, and building AI-ready systems for startups and large enterprises while advising leadership on using strategic technology to drive business growth.&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.linkedin.com/in/jonanata/" rel="noopener noreferrer"&gt;Connect with me on LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/google-cloud-get-certified-stage-2-1/" rel="noopener noreferrer"&gt;My Journey to the Google Cloud Voucher: From Fundamentals to Generative AI&lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>certification</category>
      <category>google</category>
    </item>
    <item>
      <title>Sakura Migration   </title>
      <dc:creator>Jonathan Wong</dc:creator>
      <pubDate>Sun, 26 Apr 2026 05:03:15 +0000</pubDate>
      <link>https://dev.to/jonathan78wong/sakura-migration-m</link>
      <guid>https://dev.to/jonathan78wong/sakura-migration-m</guid>
      <description>&lt;p&gt;Not long ago I visited UBC, where the Sakura blossoms were in full bloom again.&lt;/p&gt;

&lt;p&gt;It reminded me of the first time I saw them decades ago in Japan, when I was working inside a 200‑person IT department. That was the on‑prem era. Everything lived in racks and server rooms. Everything felt stable, predictable, and physical. I thought my career would stay that way.&lt;/p&gt;

&lt;p&gt;But life moves. Sometimes quietly. Sometimes without a plan.&lt;/p&gt;

&lt;p&gt;Later I met Notey, and that was the beginning of my startup journey. I moved from enterprise structure to startup speed. From on‑prem systems to the cloud. From a single role to wearing multiple hats. That was my first migration, not geographical but mental. A shift in how I saw technology, teams, and myself. &lt;/p&gt;

&lt;p&gt;I moved to Boxful next. Built an MVP that helped secure funding. Shifted from development to product. From proprietary stacks to open source. From execution to ownership. Another migration. Another environment. Another version of myself.&lt;/p&gt;

&lt;p&gt;After that chapter, I joined venture builders, Flatiron, helping capital create new startups. Moving from building one company to helping many. From operator to enabler. From solving problems to designing systems that solve problems. Another migration.&lt;/p&gt;

&lt;p&gt;Eventually, the Startup Visa program brought me to Vancouver. From East Asia to North America. From familiar ground to a new ecosystem. From the world I grew up into the world I chose. A migration across continents, but also across identity.&lt;/p&gt;

&lt;p&gt;Walking past the students on UBC’s campus takes me back to when I was an undergraduate, excited about my first Yahoo email. At the time, I believed I would be happy coding every day. But the world kept shifting. We moved from desktop to cloud, then to mobile, and now to AI, where skills can be downloaded and coding itself is being redefined. Another migration. Another environment. Another identity.&lt;/p&gt;

&lt;p&gt;Looking back, none of these migrations were planned. They happened one step at a time. Each one pulled me into a new environment and forced me to grow in ways I never anticipated.&lt;/p&gt;

&lt;p&gt;There were migrations in scale. Migrations in technology. Migrations in geography. Migrations in identity.&lt;/p&gt;

&lt;p&gt;Those who pause beneath the Sakura on UBC’s Memorial Road often say the trees were brought from Japan and replanted here. They blossom every year in a way you cannot find anywhere else. They did not choose the journey, yet they grew. And they became something unique because of the journey, not in spite of it.&lt;/p&gt;

&lt;p&gt;Are you someone shaped by migrations. &lt;/p&gt;

&lt;p&gt;What has been your latest migration.   &lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.jonanata.com/sakura-migration/" rel="noopener noreferrer"&gt;Sakura Migration   &lt;/a&gt; appeared first on &lt;a href="https://blog.jonanata.com" rel="noopener noreferrer"&gt;Behind the Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>lifestyle</category>
    </item>
  </channel>
</rss>
