Sunday, November 8, 2026

Building Agentic AI Systems

Recently, I attended a 4-day training course on Agentic AI. It was a profound realization that building an Agent actually requires developers to write code, and even necessitates writing the Tools themselves. Here is a high-level overview of my key takeaways.

1. What is Agentic AI?

Traditional AI chatbots are passive responders. Agentic AI represents a paradigm shift where the AI system is given a goal, the ability to use tools, and the autonomy to take actions to achieve that goal. Instead of just generating text, an Agentic system can perceive, think, act, and observe. It operates in a continuous loop: analyzing the user's intent, planning the steps, executing tools (like APIs or databases), evaluating the results, and deciding if it needs to iterate or provide a final answer.

2. Architecture: Logical vs. Physical

To build a robust Agentic system, we must separate the conceptual design from the actual implementation.

Logical Architecture (The "What")

This layer defines the functional components and their responsibilities, independent of specific vendors.

  • Agent Runtime: The core loop where the agent "thinks" and executes code.
  • Memory Service: Stores short-term conversation history and long-term user preferences.
  • LLM Router: Directs queries to the appropriate model based on cost, speed, or complexity.
  • Tool Gateway: The interface managing how the agent connects to external APIs and plugins.
  • Registry: A catalog where tools and agent prompts are versioned and discovered.
  • Observability: The capability to trace, log, and debug the agent's decision-making process.

Physical Architecture (The "How")

This layer defines the concrete technologies and infrastructure used to bring the logic to life.

  • Runtime: Docker & Kubernetes for container orchestration.
  • Storage: PostgreSQL (structured data), Redis (caching), Vector DB (semantic search).
  • Infrastructure: AWS / Azure / GCP, API Gateways, VPC, and IAM for security.
  • Operations: Scaling policies and Monitoring backends (e.g., Prometheus, Datadog).

3. Design Example: Online Travel Planner

Scenario: A user says, "Plan a 5-day trip to Beijing with a budget of 5000 RMB."

Logical Design (Multi-Agent Collaboration)

Instead of one massive prompt, we split the responsibilities into specialized agents orchestrated by a Supervisor:

  • Supervisor Agent (The Brain): Parses the intent, extracts parameters (Destination: Beijing, Days: 5, Budget: 5000), and delegates tasks.
  • Planner Agent (The Strategist): Uses Map APIs and Weather APIs to create a geographically logical daily itinerary.
  • Resource Agent (The Buyer): Uses Airline and Hotel APIs to fetch real-time pricing and availability.
  • Budget Agent (The Accountant): Calculates the total cost. If the total exceeds 5000 RMB, it triggers a loop, rejecting the plan and asking the Planner/Resource agents to find cheaper alternatives.

Physical Implementation & Workflow

We use LangGraph to build the state machine that allows the Budget Agent to send tasks backward in the loop. We use MCP (Model Context Protocol) to standardize the connection to various travel APIs (flights, hotels). The system runs in Docker containers managed by Kubernetes, with Redis caching live flight prices to reduce API costs.

StepActionAgent Involved
1. Intent ExtractionIdentifies destination, duration, and budget constraints.Supervisor
2. Data GatheringFetches flight prices, hotel rates, and weather forecasts.Resource & Planner
3. Draft ItineraryCreates a day-by-day plan with routing and pricing.Planner
4. Budget AuditChecks if total cost ≤ 5000 RMB. If not, loops back to Step 3.Budget
5. Final OutputPresents the detailed plan to the user for confirmation.Supervisor

Appendix: Day 1 Assignment - Prompt Engineering for Structured Output

Before an Agent can reliably call external tools (like the travel APIs mentioned above), it must first be capable of producing strictly formatted, machine-readable data. This foundational exercise demonstrates how to use JSON Schema to force an LLM to convert messy natural language food orders into a strict JSON structure that a program can execute.

import json
from openai import OpenAI

client = OpenAI()
MODEL = "gpt-4o-mini"

# 1. Define the schema for the model output result
order_schema = {
    "type": "object",
    "properties": {
        "items": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name":     {"type": "string"},
                    "quantity": {"type": "integer"},
                    "size":     {"type": ["string", "null"]},
                },
                "required": ["name", "quantity", "size"],
                "additionalProperties": False,
            },
        },
    },
    # to calculate the total items in one order
    "total_number": {"type": "integer"},
    "required": ["items"],
    "additionalProperties": False,
}

# 2. Sample natural language orders
text = [
    "2x Americano, 1 large fries and 3 hamburger",
    "I'll have a cappuccino and two croissants please",
    "order 1 big hamburger and 1 coco cola",
    "2x sandwitches and 2 middle sprite",
    "3x chicken wings",
]

# 3. Analyze the orders one by one using strict JSON schema
for t in text:
    response = client.chat.completions.create(
        model=MODEL,
        messages=[
            {"role": "system", "content": "Extract every line item from the order text."},
            {"role": "user", "content": t},
        ],
        response_format={
            "type": "json_schema",
            "json_schema": {"name": "Order", "schema": order_schema, "strict": True},
        },
    )
    
    msg = response.choices[0].message
    if msg.refusal:
        print("Refused:", msg.refusal)
        continue
        
    data = json.loads(msg.content)

    # 4. Calculate the count of items programmatically
    items = data["items"]
    total_number = sum(i["quantity"] for i in items)

    # 5. Output results
    print("✅", t)
    for item in data["items"]:
        print("   ", item)
    print(f"   total_number = {total_number}")

Execution Output:

✅ 2x Americano, 1 large fries and 3 hamburger
    {'name': 'Americano', 'quantity': 2, 'size': None}
    {'name': 'fries', 'quantity': 1, 'size': 'large'}
    {'name': 'hamburger', 'quantity': 3, 'size': None}
   total_number = 6
✅ I'll have a cappuccino and two croissants please
    {'name': 'cappuccino', 'quantity': 1, 'size': None}
    {'name': 'croissant', 'quantity': 2, 'size': None}
   total_number = 3
✅ order 1 big hamburger and 1 coco cola
    {'name': 'big hamburger', 'quantity': 1, 'size': None}
    {'name': 'coco cola', 'quantity': 1, 'size': None}
   total_number = 2
✅ 2x sandwitches and 2 middle sprite
    {'name': 'sandwitches', 'quantity': 2, 'size': None}
    {'name': 'sprite', 'quantity': 2, 'size': 'middle'}
   total_number = 4
✅ 3x chicken wings
    {'name': 'chicken wings', 'quantity': 3, 'size': None}
   total_number = 3

Why this matters for Agentic AI: You cannot build a reliable Agent on top of unstructured text. By enforcing a json_schema with strict: True, we guarantee that the LLM's output can be directly parsed by our Python code. This same mechanism is exactly how LLMs reliably pass parameters to external Tools (e.g., passing {"destination": "Beijing", "days": 5} to a flight search API).

Saturday, November 7, 2026

Becoming an Agentic AI Developer

Recently, I attended a 4-day training course on Agentic AI. I was surprised to discover that building an Agent actually still requires writing raw code. After four brain-burning days, as a veteran C/C++ programmer, I have a few reflections I'd like to jot down.

The Paradigm Shift

Traditional software development is built on determinism. If X happens, execute Y. Agentic AI development is built on probabilistic reasoning. The developer no longer writes the exact path; instead, they define the boundaries, provide the tools, and orchestrate the state. The LLM becomes the executor. This requires a fundamental shift in how we approach software engineering.

Core Requirements for an Agentic Developer

To build production-ready systems, a developer needs a T-shaped skill set:

1. Engineering Foundation (The Base)

  • Python Production-grade Python, specifically mastering asyncio for concurrent agent tool calls.
  • Backend FastAPI, RESTful API design, and database management (PostgreSQL, Redis, Vector DBs).
  • DevOps Docker and Kubernetes for containerization and scaling.

2. Agent Orchestration (The Brain Surgery)

  • LangGraph Deep understanding of state machines, conditional edges, and cyclical graphs (crucial for feedback loops like budget auditing).
  • Context Engineering System prompt design, dynamic context window management, and prompt versioning.

3. Tool Integration (The Hands & Senses)

  • MCP Experience building MCP Servers to expose external APIs to LLMs securely and standardly.
  • Schema Design Writing highly descriptive tool docstrings and strict JSON schemas to prevent LLM hallucinations.

4. Productionization (The Reality Check)

  • Evals Building automated evaluation harnesses (using LLM-as-a-judge) and regression test suites.
  • Observability Tracing tool calls, monitoring token costs, and preventing infinite loops that drain API budgets.

Traditional Developer vs. Agentic AI Developer

The most critical difference is the shift from controlling code execution to guiding intelligent behavior.

DimensionTraditional DeveloperAgentic AI Developer
System BehaviorDeterministic (0 or 1). Exact same output for the same input.Probabilistic. Accepts uncertainty; focuses on raising the success rate.
Core CodeWriting business logic (e.g., if/else statements, algorithms).Writing Context (Prompts), Tools (MCP), and Orchestration (State Graphs).
ArchitectureLinear, request-response microservices.Stateful, cyclical, autonomous multi-agent collaboration.
Error HandlingTry-Catch, Stack Traces, and breakpoints.Observability tracing, Evals, and Human-in-the-Loop (HITL) guardrails.
ToolingStrict API contracts and static typing.Semantic tool descriptions; relies on LLMs to interpret the schema correctly.
Cost FocusCPU, Memory, and Database I/O (Predictable).Token Economics (Variable and highly sensitive to infinite loops).

This article was enhanced by DeepSeek

Saturday, October 3, 2026

Choose Your First Job After Graduation — A 5W1H guide for fresh graduates holding internship offers

Introduction

In February 2022, before my elder daughter graduated from university, I created and published a series titled 5W1H of a Job. My intention was to offer her some guidance before she started looking for a job. 

Now, as my younger daughter is about to graduate, I revisited the series. I found that my views on choosing and approaching a job have not changed much. She has already received offers from some of the companies where she did her internships during university.

I exported the original series from my website and used DeepSeek to generate this article based on its concepts.

Here is the result.


Congratulations—you have moved from the learning phase into the career phase. If you are like many fresh graduates, you may already have offers from companies where you interned. That is a huge advantage: you know the office, the work, and some of the people. But it can also make the decision harder. Should you return to the familiar? Take the highest salary? Follow the boss you liked? Or try something new?

My series, 5W1H of a Job, offers a simple but powerful way to decide. A job has three attributes: activity (what you do), action (how you do it), and reward (what you get). Your first job begins a 40-year career phase. Choose it carefully—not because it must last forever, but because it will shape your skills, habits, network, and happiness.

1. Score each offer on activity, action, and reward

For every offer, write down:

· Activity: What will you actually do? Will you learn new skills, solve real problems, and build a portfolio? Or will you repeat routine tasks?

· Action: How will you work? Who is your direct boss? What is the team like? What are the hours, location, tools, and autonomy?

· Reward: What do you receive? Salary, benefits, training, brand name, satisfaction, and future opportunities all count.

Salary matters, but it is only one part of the reward. A lower-paying job with a great boss and steep learning curve can be worth more in the long run than a high-paying job that leaves you stagnant.

2. The direct boss is often the most important factor

The series says that if you are choosing a company for the short term—say, the next one to three years—your direct supervisor is the most important factor. During your internship, you already had a chance to observe this person. Ask yourself:

· Do they teach and give credit?

· Do they handle pressure and complaints well?

· Do they promote cooperation or play favourites?

· Would you be proud to learn from them?

If the answer is no, think twice. If the company is large, also look at your boss’s boss. A good supervisor can make a normal job enjoyable; a bad one can make a dream job miserable.

3. Check the company’s future and culture

Use your internship insider knowledge. Is the business growing? What is its market? What is its comparative advantage? What is the culture—does it motivate employees or exploit them? A company with a clear vision and kind management is more likely to give you a future. Remember, the employer needs a vision, and employees determine the strength of the company. Happiness breeds productivity.

4. Know your colleagues—and yourself

The series classifies colleagues into four types:

· A: Active and efficient

· B: Active but inefficient

· C: Passive but efficient

· D: Passive and inefficient

Which team did you see during your internship? Which type were you? If you were A or B, you probably enjoyed the work. If you were C or D, the role may not suit you. Choose an environment that brings out your best. Also remember that people can change, so do not judge too rigidly.

5. Use the 5W1H framework to compare

Ask the six questions for each offer:

· What is the job? Responsibilities, skills, and growth.

· Why do you need it? Money, learning, mission, or a stepping stone.

· When should you take it? Is the timing right, or should you wait?

· Who provides it? Employer, boss, team, and mentors.

· Where is it? City, office, remote work, travel.

· How will you enjoy it? Will the work keep you curious and motivated?

You can even give each offer a score out of 10 for each category. The highest total may not be perfect, but it will clarify your thinking.

6. Set goals and commit—for now

Once you choose, set a 6-month, 1-year, and maybe 5-year goal. During probation, confirm your decision. Understand your contract clauses. Then put your heart and soul into the job during the contracted period. Even if it is not your dream job, you will learn the most and leave a good impression. Your first job does not have to be forever. The series reminds us: “There’s more than one way to skin a cat.” You can change employers if the situation is wrong. But avoid haste and endless job-hopping. Learn first, then move.

7. Keep your dream alive

Your dream job sits at the intersection of your passions, your skills, and opportunities. Your first job may not be that dream job, but it should move you closer. If it builds your skills, expands your network, and teaches you about yourself, it is a good start. Do not let comfort kill your ambition, but do not let fear push you into a bad fit either.

8. What your second job will be in the age of AI/SI

The series was written before AI became a daily workplace tool. That changes the future. It is no longer enough to ask, “Which first job should I choose?” You should also ask, “What is my second job?”

AI is changing the job market in two directions.

Challenges:

· Routine cognitive tasks are being automated: basic coding, drafting, summarizing, data entry, first-line customer support, simple design.

· Some entry-level roles are shrinking or being redefined.

· Employers expect faster output and broader skill sets.

· Skills have a shorter shelf life. A tool you learn today may be obsolete in two years.

· Competition is more global, because AI lowers barriers to entry.

Opportunities:

· AI can amplify your abilities. One person can now do research, writing, design, coding, marketing, and administration with AI support.

· New roles are emerging: AI operations, prompt and workflow design, AI ethics, data curation, human-AI collaboration, automation consulting.

· The one-person company + AI model is becoming viable. You can build a micro-business with low overhead and serve customers worldwide.

· You can test ideas while still employed, using your first job as a safety net and learning lab.

For a fresh graduate holding internship offers, the practical rule is: choose the first job that best prepares you for your second job. Ask of each offer:

· Will I learn to work with AI, or will I be replaced by it?

· Will I build judgment, creativity, communication, and trust—human skills AI cannot easily fake?

· Will I understand a real business, real customers, and real problems?

· Will I meet people who can become future partners, clients, or mentors?

· Will I have time and energy to experiment with AI tools and side projects?

Your second job may be:

1. An upgraded version of your first job, redesigned around AI.

2. A new role in another company where you bring AI-augmented skills.

3. A one-person company + AI, where you are the founder and AI is your team.

The one-person company + AI does not mean you are alone. It means you can orchestrate AI tools to handle tasks that once required employees. You still provide vision, taste, ethics, accountability, and relationships. AI can draft, analyze, design, code, and market—but it cannot take responsibility, build trust, or understand what truly matters to a customer. That is your job.

So use your first job deliberately:

· Build a skill stack that AI complements, not replaces.

· Save money and build a buffer for experimentation.

· Grow a personal brand and network.

· Study one niche deeply enough to create unique value.

· Learn how AI changes your industry, and be the person who helps others adapt.

The 5W1H still applies to your second job: What value will you create? Why will anyone pay for it? When will you make the move? Who are your customers and partners? Where will you operate? How will you use AI responsibly and effectively?

Your first job is not your final identity. It is your training ground. Your second job is your future—whether that is a new role, a portfolio career, or a one-person company amplified by AI. Choose your first job with head and heart, but keep one eye on what comes next. Let AI be your tool, not your master. Then you can move from surviving the job market to shaping it.

Sunday, September 27, 2026

A Critical Review of the “5W1H of a Job” Series

 

Introduction

Four years ago, my elder daughter was about to graduate from university. I thought about jobs, registered this blog, and posted. Now my younger daughter is about to graduate and has already received some offers. I reviewed these articles — created and typed entirely by myself — and found no big difference from what I am thinking now. However, since 2023, when AI suddenly became popular and widely used everywhere, the job itself may have been evolving in a different direction that is still unknown to most of us. Nevertheless, I extracted all seven articles (should be eight articles) of the 5W1H of a Job, asked DeepSeek to analyse them, and here is the result.

By the way, another related article will be posted soon: Choose the First Job After Graduation. 

In February 2022, the blog Deep Simple Mind published a six-part series titled “5W1H of a Job.” The series set out to explore a deceptively simple question: What is the nature of a job? Drawing on decades of experience as both a short-term employer and a long-term employee, the author (Happypie) promised to “dive where no one else has explored” and examine whether employees can conduct their daily duties happily, and whether employers can achieve company goals without sacrificing employee welfare.

The series covers the classic 5W1H framework:

  • What is a job?
  • Why do you need a job?
  • When should you take up a job?
  • Who provides a job?
  • Where can you find a job?
  • How can you enjoy a job? (Note: This final chapter was not available in the materials reviewed.)
- "How" article was published in Jul 2022 after found it was not published together in Feb 2022. And this time I just explored articles in Feb 2022, so missed it again. Does it imply that actually I do not enjoy my job now :) 
 

This article offers a critical analysis of the series — its strengths, its weaknesses, and suggestions for both the author and readers.


Part 1: What the Series Gets Right

1. A Fresh Conceptual Framework

The author’s broadened definition of a “job” is genuinely thought-provoking. A job, he argues, has three attributes:

  • Activity — something to be done (a service or product)
  • Action — the time and effort you spend doing it
  • Reward — what you receive in return (usually money, but also satisfaction, health, etc.)

By this definition, almost everything in life can be a job: brushing your teeth, cooking a meal, daydreaming (if it leads to action and reward). This reframing invites readers to see their entire lives through the lens of purposeful activity — a valuable perspective that transcends the narrow confines of paid employment.

2. Practical, Experience-Based Insights

The author writes from lived experience. His advice on:

  • Evaluating your direct boss during the probation period (2–3 months) before confirming your stay
  • Networking as a precursor to job applications (companies often try to fill vacancies through existing staff first)
  • The power of inertia — how careers stagnate without deliberate effort to learn and adapt
  • Knowing your first employer — researching the business, its future, market, culture, and the boss’s intentions

...is grounded, actionable, and rings true for anyone who has navigated the job market.

3. A Holistic Life Perspective

The three-phase life model is a clear and useful scaffolding:

  • Learning Phase (0–25): Preparing skills and knowledge
  • Career Phase (25–65): Creating value, supporting a family, preparing for retirement
  • Retirement Phase (65+): Enjoying the fruits of your labor

The insight that the quality of your learning phase determines the quality of your retirement phase is one that many younger workers overlook.

4. Balanced Employer-Employee View

Unlike many career advice articles that adopt a purely employee-centric or employer-centric stance, this series attempts to speak to both sides. The section “What should an employer do” reminds bosses that happiness breeds productivity — a mature and pragmatic observation that benefits both parties.

5. Memorable Analogies and Cultural References

The ant colony metaphor for human cooperation, the river’s winding path as a metaphor for laziness, and the Chinese idioms (揠苗助长, 工欲善其事必先利其器) make abstract ideas accessible and memorable.


Part 2: Where the Series Falls Short

1. Overgeneralization and Lack of Nuance

The author frequently makes sweeping claims without acknowledging exceptions:

  • “Daydreaming is not a job” for common people, but it is for Bill Gates — this is presented as a binary when the reality is a spectrum.
  • “Take action, and an employment job will keep you busy and disease-free” — this conflates employment with physical activity and ignores sedentary office jobs, stress-related illness, and burnout.
  • The three-phase life model (0–25, 25–65, 65+) is presented as universal despite the author’s own acknowledgment that notable figures follow different timelines.

2. Idealization of Employment

The series carries an implicit assumption that formal employment is the default, desirable, and dignified path. It does not seriously explore:

  • Self-employment or entrepreneurship as a primary path
  • The reality of underemployment, precarious work, and the gig economy
  • Situations where employment is exploitative and leaving is the healthiest choice

3. Underdeveloped “How” Chapter

The “How can you enjoy a job” chapter is conspicuously absent from the materials reviewed. This is arguably the most important question for the series’ stated purpose — helping employees conduct daily duties happily. Without it, the series feels incomplete.

4. Limited Cultural and Economic Scope

The advice is heavily oriented toward a middle-class, white-collar, developed-country context. The examples (civil servant, real estate agent, home baker, programmer) and the assumption of a 25-year learning phase followed by a stable 40-year career do not reflect the reality of most workers globally.

5. Tension Between Fatalism and Agency

The series oscillates between “Man proposes, God disposes” (fatalism) and “Your future starts from your heart, starts from today” (agency). While philosophically interesting, this tension can leave readers confused about how much control they actually have over their career outcomes.

6. Structural and Editorial Issues

The PDFs contain extraneous content (Global Stocks ads, Year 2038 Problem references, blog archive listings) that suggest a lack of professional editing. The series would benefit from tighter organization and proofreading.


Part 3: Suggestions for the Author

1. Add the Missing “How” Chapter

The series promises “How can you enjoy a job” but does not deliver it. This chapter should explore:

  • Finding meaning in routine tasks
  • Managing relationships with difficult bosses and colleagues
  • Setting boundaries to prevent burnout
  • Negotiating for better conditions
  • Knowing when to leave

2. Acknowledge Diversity of Career Paths

Expand the three-phase model to include:

  • Non-linear careers (returns to education, mid-career pivots)
  • Freelancing, gig work, and entrepreneurship as legitimate alternatives
  • Cultural and economic variations

3. Balance Optimism with Realism

Address:

  • What to do when a job is genuinely bad and cannot be improved
  • The role of luck, discrimination, and systemic barriers
  • Mental health challenges in the workplace

4. Strengthen the Employer Section

Expand “What should an employer do” with:

  • Concrete examples of good and bad management
  • The business case for employee well-being
  • How to create a culture where employees can grow

5. Improve Structure and Presentation

  • Remove extraneous content from the PDFs
  • Use consistent formatting and headings
  • Add a proper introduction and conclusion to each chapter

6. Include More Diverse Examples

The current examples are heavily male, tech-oriented, and drawn from the author’s own experience. Include women, blue-collar workers, and different cultural contexts.

7. Develop the “5W1H of Something Else” Idea

The concluding suggestion to apply 5W1H to other life domains (marriage, running, programming) is a strong one. Turn this into a follow-up series or a workbook.


Part 4: Suggestions for Readers

1. Use the Framework, Not the Conclusions

The series’ greatest value is its 5W1H framework for examining any life activity. Apply it to your own situation rather than accepting the author’s specific conclusions.

2. Test the Three-Phase Model Against Your Reality

If you are on a non-linear path, don’t force yourself into the 0–25–65 template. The model is a useful heuristic, not a law.

3. Focus on the Probation Period

The advice to evaluate your direct boss during the first 2–3 months is practical and worth heeding. Use that time to ask the questions the author lists.

4. Balance Busyness with Rest

The author’s prescription to “keep yourself in a state of busyness” to avoid disease is oversimplified. Rest, recovery, and leisure are essential for sustainable productivity and health.

5. Don’t Ignore the Idea That Ignites You

The series’ closing message — that a single sentence can ignite a new idea — is its most valuable. Read critically, but also listen for the idea that resonates with your own experience.


Conclusion: An Invitation to Ask Better Questions

The “5W1H of a Job” series is an ambitious, thoughtful, and often insightful attempt to rethink the role of work in human life. Its conceptual framework is its strongest asset; its lack of nuance, incomplete execution, and limited perspective are its main weaknesses.

As a starting point for reflection, it succeeds. As a comprehensive guide, it falls short. The author’s suggestion to “make your version” of 5W1H is perhaps the most honest and useful takeaway — the series is best read not as a set of answers, but as an invitation to ask better questions.

If there is any sentence that ignites within you a new idea, don’t ignore it. Do your retrospective study. Make your version of 5W1H of something. You will live a more exciting life.


What do you think? Have you read the “5W1H of a Job” series? What resonated with you, and what would you add? Share your thoughts in the comments below.

Sunday, August 23, 2026

Global Stocks: A Clearer View of Your Portfolio

 Keeping track of investments across markets can become surprisingly difficult. Global Stocks brings the essentials into one practical view.

See the portfolio, not just the ticker

Global Stocks lets you build a personal watchlist and portfolio around the positions you actually own. Search for a stock by symbol or name, record your cost per share and number of shares, and optionally add an alias that makes a holding easier to recognize. Holdings are grouped by market so an international portfolio remains readable as it grows.

The main list can stay compact for a quick check or expand into a more detailed view with portfolio totals. A refresh action retrieves current quote information, while each holding can be opened for a closer look at its recent price history.

A small set of useful signals

The app is built for context rather than noise. For each holding, Global Stocks can show:

  • current market value and profit or loss against recorded cost;
  • a configurable moving average, including signals when price crosses above or below it;
  • open, high, low, and close values in the historical chart;
  • the relationship between price and a configurable N-day high;
  • a configurable moving-average band for additional price context.

Moving-average periods can be adjusted from 2 to 250 days. The band and N-day high settings can also be tuned to suit different ways of reviewing a portfolio. These indicators are reference points for analysis, not predictions or investment recommendations.


Click above screenshot to get the Android App of Global Stocks.

Who Global Stocks Is For

Global Stocks is designed for individual and retail investors who own stocks across different markets and want a straightforward way to monitor their portfolio. It is especially useful for people who want to track holdings, cost basis, share counts, and profit or loss; inspect current prices and historical charts; use simple technical reference points; review portfolio changes over time; or import and share portfolio data as CSV files.

The app is a lightweight portfolio tracking and analysis companion, not a brokerage, trading terminal, or financial advisory service. It is intended for investors who want a clear daily overview of their holdings without the complexity of a professional trading platform.

Review change over time

Portfolio value is more meaningful when it can be compared with an earlier point in time. Global Stocks provides period summaries for weekly, monthly, seasonal, half-year, and annual reviews. Summaries compare the current portfolio with saved snapshots and can identify holdings that were added or removed during the period.

The app also supports sharing the portfolio as a CSV file. That makes it straightforward to keep an external record, move data between tools, or preserve a snapshot for later comparison.

Bring existing data with you

Starting from scratch is not required. A CSV import flow previews the rows before they are added, reports rows that could not be parsed, and can export those skipped rows for correction. This gives an existing portfolio a clear path into the app without hiding malformed data or silently discarding it.

Built for a dependable daily check-in

Global Stocks uses a local Room database for saved holdings and a remote market-data service for quotes and historical prices. The interface is built with Jetpack Compose and follows a simple workflow: add or import positions, refresh prices, inspect the signals that matter to you, and review how the portfolio changes over time.

The result is intentionally compact. It is not trying to replace a broker, a trading terminal, or a financial adviser. It is a personal record and analysis view for investors who want their holdings, cost basis, market context, and portfolio history close at hand.

Global Stocks · Portfolio tracking and analysis companion
This article was enhanced by AI.

Saturday, June 20, 2026

When AI Pricing Changed Overnight: How Usage-Based Billing Disrupted Software Teams

Approaching 2026, software developers had become accustomed to a simple model for AI coding assistants: pay a fixed subscription fee and use the service as needed. Whether asking a few questions a day or relying heavily on AI to generate code, the monthly cost remained predictable.

That changed in June 2026 when Microsoft introduced usage-based billing for GitHub Copilot.

As AI models became more powerful, vendors began shifting from fixed subscriptions to usage-based billing. Instead of counting users or requests, AI services started charging based on actual consumption—tokens processed, model complexity, and agent activity. While the change made economic sense for AI providers, it introduced a new challenge for companies that had integrated AI deeply into their development workflows.

The End of Unlimited AI

Under the traditional model, a company could purchase 100 AI coding assistant seats and know exactly what the monthly bill would be.

The new model changed that assumption. AI usage became a metered resource, similar to cloud computing. Simple code completion consumes relatively little compute, while AI-powered code reviews, repository analysis, and autonomous agents can consume significantly more.

For the first time, organizations had to think not only about how much AI helped developers, but also how much AI each workflow actually cost.

The First Month Shock

The impact became apparent almost immediately. Within days of the policy change taking effect, some organizations had already exhausted the AI credits allocated for the entire month.

Teams that had integrated AI into their daily development workflow suddenly discovered that access was no longer guaranteed. Once the shared credit pool was depleted, developers could lose access to GitHub Copilot services until additional credits were purchased or the next billing cycle began.

What had previously been viewed as a software subscription was now behaving more like a finite operational resource.

A New Governance Challenge

The disruption was not purely financial.

Imagine a company that allocates a shared AI budget across all developers. If a small group of power users consumes most of the credits early in the month, everyone else may lose access to the tools they depend on.

This creates challenges familiar to anyone managing shared infrastructure: balancing productivity, fairness, and cost.

Many companies are now asking questions that did not exist a year ago:

  • Which teams consume the most AI resources?
  • Are expensive AI workflows delivering measurable value?
  • Should autonomous agents be available to everyone?
  • How should AI budgets be allocated across departments?
  • Is unlimited access sustainable?
  • As AI becomes more expensive and senior engineers become harder to replace, what is the right balance between AI assistance and human expertise?

These are no longer technical questions. They are organizational and strategic ones.

AI Is Following the Cloud Computing Playbook

The transition mirrors what happened when companies moved from purchasing physical servers to adopting cloud platforms.

Infrastructure was once treated as a fixed expense. Today, organizations monitor usage, establish budgets, and track costs continuously. AI is beginning to follow the same path.

Managers who once approved software licenses are now reviewing AI consumption reports. Developers who once viewed AI as an unlimited resource are learning to use it more deliberately.

The conversation is shifting from "Can we use AI?" to "How should we use AI most effectively?"

The Road Ahead

Despite criticism from some users, usage-based pricing is unlikely to disappear. The most advanced AI models require enormous computing resources, and autonomous agents can generate workloads far beyond what traditional subscription models were designed to support.

But the bigger question may not be cost.

As experienced engineers retire and a new generation of developers enters the workforce with AI as a constant companion, organizations will need to think carefully about how expertise is developed and transferred. AI can generate code, explain concepts, and accelerate learning, but it cannot replace decades of engineering judgment gained through real-world experience.

If AI costs continue to rise while experienced talent becomes scarcer, companies may be forced to reconsider where they invest. The goal will no longer be maximizing AI usage, but maximizing the combination of AI capability and human expertise.

The first wave of AI adoption focused on what AI could do. The next wave will focus on how organizations build sustainable engineering teams around it.

The long-term winners may not be the companies with the largest AI budgets. They may be the companies that use AI to accelerate learning while continuing to cultivate the human expertise needed to understand, challenge, and guide the technology itself.


This article was created with AI assistance.


Sunday, May 31, 2026

What a Visual Perception Course Taught Me About the Future of Developers

 Part I

Course Content Summary

On 28–29 May 2026, I attended this NUS course Engineering Visual Perception for Autonomous Systems (by Tian Jing), which covers from sensors to deployment. It explains how vision sensors (cameras, LiDAR, radar) capture data and how images are represented as pixel arrays with color channels.

The following is listed for reference — not that I fully understood every detail, but it captures the key topics covered.

Image Classification

The core classification task assigns a label to an entire image. Two architectures are taught:

  • ResNet-18 (CNN) — 18 layers with residual/skip connections, 11.7M parameters, 1.81G FLOPs
  • Vision Transformer (ViT) — patch embedding (16×16), class token, positional encoding, transformer encoder; 86.6M parameters, 17.56G FLOPs, higher accuracy

Key concepts: convolution operations, pooling, fully connected + SoftMax layers, transfer learning (freeze pretrained layers, fine-tune last K layers).

Object Detection

Detection outputs both a box label (classification) and box coordinates x, y, w, h (regression).

  • YOLOv11 architecture: backbone → neck → head; input 3×480×640 → output 84×6300 (80 COCO classes + 4 box coords, 6300 anchor locations)
  • YOLO annotation format: class_id, x_center, y_center, width, height (normalized)

Training & Evaluation

  • Training: data augmentation, optimizer (SGD/Adam), learning rate scheduling, cross-entropy loss
  • Classification metrics: accuracy, precision, recall, confusion matrix (TP/FP/TN/FN)
  • Detection metrics: IoU, AP@50, AP@50-95, mAP (mean average precision)

Emerging Trends

  • Static → Dynamic: video tracking, event recognition
  • Vision-only → Multimodal: sensor fusion, vision-language models
  • Closed-set → Open-world: VLMs with text prompts for zero-shot detection
  • Accuracy → Robustness: adversarial attacks and security
  • Perception → Reasoning: spatial reasoning, conversational queries over visual data

Hands-on Workshops

Workshops were run on Google Colab using provided Jupyter notebooks in Python: solar panel defect classification (ResNet/ViT) and candy detection (YOLOv11).


Part II

Reflections: AI, Developers & the Changing Landscape

The "Black Box Productivity" Paradox

The workshop experience perfectly illustrates the current shift: we ran ResNet and ViT notebooks on Colab, got correct results, without understanding the source code. This works — until it doesn't. When the model underperforms on your own data, debugging requires understanding the layers you skipped over.

The Freemium Trap & AI Investment Cycle

Massive capital is flowing into AI infrastructure (OpenAI, Google, Microsoft). The playbook is clear: offer free access to build dependency, then monetize. Google Colab already tiered its GPU access; GitHub Copilot is capping free usage; OpenAI raised API prices. These companies are subsidizing adoption with investor money, knowing that once teams build workflows around these tools, switching costs are high.

The risk for developers and organizations: building critical skills and pipelines on platforms whose pricing you don't control.

Developer Role Shift: From Creator to Verifier

AI can now generate boilerplate, debug simple errors, and scaffold entire projects. This shifts the developer's core job:

Old RoleNew Role
Write code from scratchVerify AI-generated code for correctness, security, edge cases
Memorize syntax/APIsEvaluate architectural trade-offs
Debug line-by-lineValidate system-level behavior
Individual contributorAI orchestrator + quality gate

The challenge: verification requires deeper understanding than writing. You can copy-paste a ResNet training loop from Copilot, but catching a subtle data leakage between train/validation splits requires real expertise. The skill floor rises, not falls.

Fresh vs. Experienced Developers — Corporate Perspective

FactorFresh DeveloperExperienced Staff
AI tool adoptionFast, native usersSlower adoption, but deeper judgment
Code verificationLimited — can't spot what they haven't seenStrong — pattern recognition from years of debugging
CostLower salaryHigher salary
Risk with AI-generated codeHigh — may accept flawed output ("it runs, ship it")Lower — skepticism from experience
Domain knowledgeMinimalDeep, hard to replace
AdaptabilityHighVaries

The honest answer: neither alone is optimal. And this mirrors what happens in the classroom too — in a class like the EVPAS workshop, younger students may grasp new concepts like "occlusion" or "mAP" faster, partly because they're closer to academic training and often operating in English natively. But speed of recall is not depth of understanding.

You may forget the word "occlusion" by the next day's exam, yet still arrive at the correct answer by reasoning through elimination — recognizing that partial visibility behind another object is the only option that fits. That's exactly the kind of structured problem-solving that experienced professionals bring.

AI-generated code works the same way — the person who can logically evaluate whether an output makes sense beats the person who memorized the syntax but can't reason about edge cases.

  • Fresh developers are productive fast with AI tools but dangerous without mentorship — they become the person in the workshop who "gets results but doesn't know the details." In production, that gap causes incidents.
  • Experienced developers bring the judgment to verify, debug, and architect — but if they resist AI tools, they lose the speed multiplier. Being a non-native English speaker or an older learner in a fast-moving field adds friction, but it also forces a habit of deliberate learning — double-checking, cross-referencing, reasoning by elimination — which is precisely the verification mindset the AI era demands.

The most effective corporate strategy: pair experienced staff (as verifiers/architects) with AI-augmented fresh developers (as accelerated producers). The experienced developer's role shifts from writing code to reviewing AI-assisted output and teaching juniors what to watch for.

The Real Challenge

The deeper issue is asymmetric skill decay: if junior developers never learn to build from scratch (because AI does it), they never develop the judgment needed to verify. You end up with a generation that can prompt but can't debug — exactly like running a Colab notebook successfully without understanding why it works. The moment the pre-built solution breaks, they're stuck.

The developers who will thrive are those who use AI to move faster while insisting on understanding what the code does — treating AI as a power tool, not a replacement for knowledge. And ironically, the "disadvantage" of being an older, non-native learner — having to slow down, reason carefully, and verify before committing — may be the exact discipline this new era rewards most.

Conclusion

In this fast-pacing AI era, learning is truly endless — new models, new frameworks, new paradigms emerge before you've finished digesting the last one. It can feel impossible to catch up, and the honest truth is: you probably can't catch everything. But that's not the point. As the Chinese saying goes, 姜是老的辣 — "older ginger is spicier" — meaning experience carries a sharpness that youth alone cannot replicate. The value of a seasoned professional is not in memorizing every new API or chasing every trending tool, but in knowing what matters: staying aware of ongoing trends, keeping a watchful eye on where the technology is heading, and — most critically — blending that awareness with the deep domain knowledge accumulated over more than 20 years of real-world practice. Frameworks will come and go, AI tools will rise and be replaced, but the understanding of how systems actually work in production, why certain designs fail under pressure, and what questions to ask when something looks too good to be true — that kind of wisdom is earned, not prompted. The path forward is not to outrun the young, but to out-think the noise: learn selectively, verify rigorously, and let experience be the compass that AI cannot replace.

A question for you, the reader: Every one of us is getting older — that clock doesn't pause for any technology wave. So have you thought about your own future in this AI era? With AI closing the gap between one person and an entire team, are you going to run a one-person company powered by AI — leveraging your domain expertise with AI as your tireless co-worker? Or will you continue seeking traditional employment, hoping the next round of layoffs passes you by? There's no wrong answer, but there is a wrong strategy: not thinking about it at all.
This article was written with the assistance of AI (GitHub Copilot), based on my course experience and personal reflections.

Building Agentic AI Systems

Recently, I attended a 4-day training course on Agentic AI. It was a profound realization that building an Agent actually requires developer...