Henry's complete public text

# Henry's public text

Content revision 4e771eaf0390cc87b6c7c6fd8469f3508f6ceeec7119472e6c1ccf17e2e1e5d2

## Places I've Studied

Education
Source ID education:overview
Original https://www.henryw.me/#/education

These places have shaped a lot of who I am today.

## The University of Hong Kong

Education
Source ID education:the-university-of-hong-kong
Original https://www.henryw.me/#/education#the-university-of-hong-kong

September 2022 - Present The University of Hong Kong Bachelor of Arts and Sciences in Applied Artificial Intelligence I'm a fourth-year student at the University of Hong Kong , majoring in Applied Artificial Intelligence . My coursework spans machine learning, deep learning, data science, algorithms, software engineering, probability, statistics, linear algebra, and multivariable calculus. I was named to the Dean's Honours List for outstanding academic performance. Outside coursework, I served as a Student Representative on the CAES Staff-Student Consultative Committee and as a Student Peer Advisor, supporting newer students with study and career planning.

## The University of Melbourne

Education
Source ID education:the-university-of-melbourne
Original https://www.henryw.me/#/education#the-university-of-melbourne

February 2025 - June 2025 The University of Melbourne Semester Exchange I spent one semester at The University of Melbourne through the HKU Worldwide Student Exchange Programme. Relevant coursework: Optimisation, Machine Learning, and Principles of Finance.

## Shanghai High School International Division

Education
Source ID education:shanghai-high-school-international-division
Original https://www.henryw.me/#/education#shanghai-high-school-international-division

September 2017 - June 2022 Shanghai High School International Division International Baccalaureate I completed junior high and high school at Shanghai High School International Division , followed by the International Baccalaureate Diploma Programme. For the IB Diploma, I studied computer science, mathematics, economics, physics, English, and Chinese. In addition to my coursework, I co-founded SHSID Musix Board, a school-wide popular music opinion-sharing platform, and led the Coding Club.

## Havelock North High School

Education
Source ID education:havelock-north-high-school
Original https://www.henryw.me/#/education#havelock-north-high-school

July 2019 - August 2019 Havelock North High School Visiting Student I spent two months as a visiting student at Havelock North High School in Hawke's Bay, New Zealand. Attending regular classes with local students gave me a direct experience of everyday school life in New Zealand. I studied English, calculus, statistics, chemistry, and physics.

## Roles I've Had

Experience
Source ID experience:overview
Original https://www.henryw.me/#/experience

My work has ranged from open-ended research to delivery-focused industry projects.

## Cloud, Data & AI Consulting Intern

Experience
Source ID experience:pwc
Original https://www.henryw.me/#/experience#work-pwc

At PwC, I work on AI and data systems for financial-services and public-sector clients, combining solution architecture with hands-on development. I translate business needs into technical requirements and evaluate how existing tools can work together within the client’s constraints. Through rapid prototyping, I build and run end-to-end proofs of concept to test the proposed solution against real workflows and refine the design.

I designed a system that uses AI to identify gaps in an IT assistant’s knowledge, research the missing information and keep its knowledge base up to date. I also built a browser agent that interprets service tickets and carries out tasks in the applications the team already uses.

For an AI assistant answering public enquiries using client documents, I evaluated and integrated tools into a RAG ingestion pipeline that prepares those documents for retrieval. It preserves page-spanning content, complex tables, references and flowcharts through chunking, which divides documents into searchable passages. I also developed a DeepEval framework to evaluate classification, retrieval and response quality.

To support a data migration, I built an LLM-assisted pipeline that reverse-engineers legacy ETL code, the logic that extracts, transforms and loads data. It recovers data lineage showing where data comes from and how it changes, together with the business rules and test scenarios needed for the migration.

I evaluated enterprise document-processing systems and built workflows to recover information lost during preprocessing and support rule-based document review.

I reviewed Ethereum and stablecoin infrastructure risks for a banking engagement.

## Part-time Student Research Assistant

Experience
Source ID experience:slr
Original https://www.henryw.me/#/experience#work-slr

I work with Dr. Stephen Lee on computational models of human learning and cognition, studying how people form knowledge through experience and how learned representations support behaviour across tasks and situations.

I develop computational models to examine possible cognitive processes behind experimental results. My work has included generalisation, transfer, and explicit and implicit learning.

I analyse behavioural data and connect patterns in learning and performance to the representations and processes proposed by the models.

## Digital Transformation Intern

Experience
Source ID experience:hsbc
Original https://www.henryw.me/#/experience#work-hsbc

At HSBC, I worked on how insurance products are configured in a banking app across markets. I connected each product’s business requirements to the screens and fields it needed, then automated the configuration process. Shared mapping rules gave the team a way to carry changes in requirements through to the app.

I consolidated product and distribution information across markets and built an Excel/VBA configuration engine. Decision tables identify which business scenarios apply to a product and which screens and fields those scenarios require. Linked libraries hold the shared definitions, letting the team maintain the mapping rules and regenerate configurations as requirements change.

I evaluated AI use cases in banking, considering data readiness, controls and where human review needed to remain in the workflow.

## Web Developer, Digital Content Support

Experience
Source ID experience:kiwiview
Original https://www.henryw.me/#/experience#work-kiwiview

At Kiwiview, I developed the company’s website and digital content, bringing its study-tour and travel programmes into a coherent online presence.

I designed, developed, deployed and maintained the company website.

I created website copy, branding materials and promotional content for its study-tour and travel programmes.

## Research I've Been Part Of

Research
Source ID research:overview
Original https://www.henryw.me/#/research

I study how people and AI systems learn from experience, represent knowledge and use it to think and act. As AI becomes part of everyday thinking, I investigate how it shapes the understanding, judgement and abilities people develop. I study how people learn from experience and use what they know. Through experiments and computational models, I examine how internal representations develop and change, and how they support memory, concepts, generalisation, reasoning and action. I build models to develop explanations of these processes and derive predictions for behavioural experiments. I pursue part of this work with Dr. Lee at the University of Hong Kong's Speech, Language, and Reading Lab . For AI systems, I study what they learn during training and how it shapes their behaviour.

I use behavioural tests and causal interventions to examine their internal representations, how they use information during a task, and how their computations produce the capabilities we observe. In human-AI interaction, I study how AI's involvement in everyday life shapes people's cognition and behaviour. This includes how people learn, direct their attention, remember and make decisions, and how their abilities develop through interaction. I am also interested in how people adapt AI to their own purposes, and how those purposes change as they use it. I’m interested in how research on human cognition can inspire new approaches to AI, and how building and studying AI can deepen our understanding of the mind. I hope to draw on both to design new ways for people to think, create and act with AI.

## The Resolving Power of Transfer Experiments: When Can Designs Distinguish Accounts of Generalization?

Research
Source ID research:transfer
Original https://www.henryw.me/#/research#transfer

We developed a framework that links models of human generalisation to the design of experiments. I construct models by varying both how a learner represents information and how the learner uses it to respond. The same representation can support rule application, comparison with a category prototype or retrieval of remembered examples. Varying these mechanisms independently lets me build matched accounts and simulate how each would respond in the same task. I use these predictions to shape an experiment before collecting participant data. Candidate separation measures where the models predict different responses, and candidate recovery estimates how reliably the planned observations can distinguish them. Together, they guide whether to change the test items or response measure, or collect more evidence where a useful contrast already exists.

Applications to categorisation and artificial orthography show how these choices change what we can learn about the underlying mechanisms. I developed this framework into the open-source TIDE (Transfer-design Identifiability and Diagnosticity Evaluation) toolkit and an interactive app, so researchers can construct model comparisons, inspect their predictions and explore revisions to a design.

## BRIGHT: A Realistic and Challenging Benchmark for Reasoning-Intensive Retrieval

Research
Source ID research:bright
Original https://www.henryw.me/#/research#bright

Finding a useful document can depend on first understanding what a problem requires. We developed BRIGHT to evaluate this reasoning-intensive retrieval, using 1,384 real queries across domains including economics, psychology, mathematics and coding. I contributed biology and psychology data and reproduced programming examples to work through the questions and the material needed to answer them. Models that performed well on conventional retrieval benchmarks struggled on BRIGHT. Explicit reasoning about a query improved retrieval, and supplying relevant documents improved question answering. The benchmark makes it possible to study retrieval as part of solving a problem, including how reasoning helps a system recognise the information it needs.

## Early Epistemic Settlement in AI-Assisted Writing

Research
Source ID research:fittedAssistance
Original https://www.henryw.me/#/research#structure-settles-thought

In trying to finish a passage, a writer may connect her material in ways that change both the argument she can make and the demands it needs to meet. I examined what happens when AI supplies a passage that resolves the immediate difficulty while this work is still unfolding. The writer can understand the answer, judge it adequate, and move on before discovering what her own attempt could have made possible. I call this early epistemic settlement. Having a satisfactory passage removes an immediate reason to keep working. The value of continuing is harder to assess, since the writer has yet to form the connections that would reveal it. I show how writing develops both an argument and the grounds for deciding what is worth pursuing. Over successive exchanges, accepted passages help shape what the writer asks next and what a subsequent AI response needs to address.

Useful answers can therefore sustain inquiry along a path while cutting short work that could have opened another. This makes the formation of new arguments and questions part of what is at stake in a response that successfully resolves the present task.

## Functional Encoding and Representational Binding in Componential Transfer

Research
Source ID research:encoding
Original https://www.henryw.me/#/research#encoding

Why can a learner demonstrate a rule during training yet fail to use it on a new item? We built a computational account in which transfer depends on how useful components are encoded and bound together. Functional encoding determines which components enter the representation used to generate a response. Representational binding determines whether those components remain available as reusable parts or become fused with the whole stimulus. Varying these properties lets us generate patterns of learning and transfer within one model. Across artificial orthography, Chinese character learning and artificial grammar, tests that preserve a trained component primarily reveal its encoding, while recombination tests reveal how the components are bound.

A continuous binding parameter accounts for patterns previously attributed to two separate systems, connecting those patterns to how knowledge is organised.

## Humans Disengage, Reasoning Models Persist: Separating Difficulty Registration from Deliberation Allocation

Research
Source ID research:humansDisengage
Original https://www.henryw.me/#/research#humansDisengage

I studied how people and large reasoning models allocate effort once a problem becomes difficult. Across visual abstraction, intuitive physics and relational reasoning, I analysed human response times alongside the length and content of reasoning traces, the text models generate before answering. Comparing attempts on the same problems let me separate sensitivity to difficulty from the allocation of further effort. On visual grid puzzles, successful human attempts lasted longer than failed ones, while the model analysis showed longer traces on failed attempts. Grid actions and reasoning traces helped characterise what happened during that extra work. I developed a resource-rational account in which continued reasoning depends on its expected progress, the value of that progress and the cost of pursuing it.

This makes the decision to continue a question about the return on further computation, and gives a basis for understanding how people and models can recognise the same difficulty yet pursue different courses of action.

## Persistent Priors, Preserved Targets: A Stroop-Style Paradigm for Lexical Override

Research
Source ID research:priorsPersist
Original https://www.henryw.me/#/research#priorsPersist

I investigated how language models follow a new instruction while established knowledge continues to influence their responses. I designed a Stroop-style task that puts a familiar association in conflict with a temporary definition. A prompt might define doctor as forest , while the usual association with hospital competes with that instruction. Across 11 open-weight models, these familiar associations continued to influence the answer. I used activation patching, replacing internal activations between matched prompts, to trace how a model maintains the instructed meaning. The causal interventions linked successful override to information about the defined word, its assigned meaning and the later query. Preserving the newly assigned meaning was crucial to recovering the intended response.

The analysis explains how a model can apply a contextual instruction while established associations remain active.

## Things I've Built

Builds
Source ID projects:overview
Original https://www.henryw.me/#/projects?to=overview

I like working through a problem and figuring out how the pieces could fit together. I enjoy trying different ideas and gradually building up a structure of my own.

## AI × Self

Builds
Source ID projects:searchstory
Original https://www.henryw.me/#/projects?to=searchstory

AI × Self lets visitors bring their own questions to my work, ideas and experiences. Each question can become a View, a narrative that connects original material into a particular perspective. The Gallery gathers these perspectives into exhibitions people can explore and share. As the archive grows, it records both what I have made and the ways others come to understand it.

## SlidePoise

Builds
Source ID projects:slidepoise
Original https://www.henryw.me/#/projects?to=slidepoise

SlidePoise combines the visual freedom of image generation with an editable PowerPoint workflow. AI helps develop the content and explore compositions using your references and assets. The Agent interprets the chosen design, OpenCV measures its geometry, and local tools reconstruct the slides as editable objects. Reviewing the rendered deck connects the original design to the finished presentation, with shared styles and original assets maintaining consistency across slides.

## AI for IT Operations

Builds
Source ID projects:pwcItOps
Original https://www.henryw.me/#/projects?to=pwcItOps

Knowledge Management serves the platform’s RAG question-answering assistant. Acquisition begins with unanswered user questions and model-predicted knowledge gaps. Related questions are clustered into coverage objectives. Seed discovery and focused crawling find authoritative evidence, using the original questions as minimum coverage and the objective to guide broader acquisition.

Approved content passes through an ingestion pipeline for extraction, normalisation, deduplication, and chunking. A Source Registry keeps accepted snapshots, monitoring state, and provenance mappings to the Knowledge Base. Source changes trigger assessment for follow-up retrieval, replacement, deletion, or no action, with human approval before changes are committed.

Browser Control interprets natural-language tickets and opens a dedicated application tab. I chose a browser extension after comparing cloud browsers and local Playwright services because one add-on could both control the tab and show interaction cards beside the work. It runs in the operator’s existing Chrome or Edge environment, keeping sign-in, internal access, MFA, and manual intervention in the same browser. Reasoning and task state stay in a central FastAPI and LangGraph service, with Playwright actions reaching the extension through a Chrome DevTools Protocol relay.

Manual sign-in, multi-factor authentication, and approval are part of the task flow. The operator can pause, resume, take over, or stop the agent. After human input, the agent continues from the current page, verifies the result, and records the actions and outcome with the ticket.

## Insurance Product Configuration Engine

Builds
Source ID projects:insurance
Original https://www.henryw.me/#/projects?to=insurance

One banking app supported many insurance products, each with different screens, fields, and conditional follow-ups. Business requirements described what a product needed to collect, design libraries described reusable screens and UI components, and engineering needed an executable configuration. The key dependency was the mapping between those representations across products and markets.

The core mapping was product specification to business scenarios to UI-component requirements. I reorganised the source information into linked libraries and decision tables so each layer could be maintained while the configuration rules connected them.

The production tool ran in Excel with a VBA engine. It supported conditional follow-up fields, wildcard matching, right-side rule overrides, and a dynamic form for non-technical users. I developed four versions and added an embedded tutorial so the tool could be maintained after my internship.

## Interactive Scrollytelling Deck

Builds
Source ID projects:scrollytelling
Original https://www.henryw.me/#/projects?to=scrollytelling

For a course presentation about the electricity and water demands of AI infrastructure, I built a web narrative whose charts develop as the reader scrolls. Figures stay in view while the explanation introduces new relationships. A shared scene schema and reusable D3 renderers separate the presentation’s content from the code that draws it. The resulting engine can support other stories using the same chart builders, layout, and animation settings.

## A Structure-Preserving RAG Ingestion Pipeline

Builds
Source ID projects:pwcRag
Original https://www.henryw.me/#/projects?to=pwcRag

The architectural risk appeared before retrieval began. If ingestion separated a passage from the note it refers to or reduced a flowchart to disconnected text, no later ranking or generation step could reliably restore the missing relationship.

MinerU rejoined paragraphs and tables across page breaks. Its OCR-based path recovered merged cells but missed nested tables in the tests. The built-in visual-language model recovered both as HTML. I then found that subsequent processing in the tested RAGFlow path discarded those tags, while LlamaIndex preserved the structure through indexing, retrieval and answer generation.

Cross-page footnotes and remarks needed explicit linking. I wrote a Python linker that used reference labels and document context to attach each note to its citing text before chunking. For flowchart images, I chose Mermaid to represent nodes and branches as searchable text that could be rendered back for inspection. Later research showed that MinerU’s built-in VLM already supported this conversion, bringing tables and flowcharts into the same parser and model.

A controlled five-page document let me repeat the checks across the full pipeline. The linker resolved all 13 cross-page references, and the reconstructed flowchart preserved every node, edge and label and supported correct answers to both test questions. I used this evidence alongside deployment and operating-cost analysis to develop the client recommendation, including its preference to operate fewer AI models.

## Stride Support

Builds
Source ID projects:stride
Original https://www.henryw.me/#/projects?to=stride

Stride Support combines retrieval-augmented generation (RAG), recommendations and tool use in a customer-support conversation. Hybrid retrieval blends BM25 word matching with BGE embeddings to find relevant products and policy passages. Recommendations combine product similarity with purchase patterns, while a fine-tuned multilingual BERT (mBERT) classifier supplies a sentiment cue for the response. A FastAPI orchestration layer gives the language model access to five Model Context Protocol (MCP) servers covering policies, products, recommendations, customers and complaints. The model can retrieve information, query an order and file or update a complaint across successive tool calls. The React interface keeps the selected purchase available throughout the conversation. Separate evaluations examine retrieval relevance, tool routing, complete responses and sentiment classification.

## Dealtracker

Builds
Source ID projects:dealtracker
Original https://www.henryw.me/#/projects?to=dealtracker

During my exchange in Melbourne, outdoor brands I liked were often cheaper than in Hong Kong, but finding the right offer meant repeatedly checking long sale pages. I built Dealtracker to scan two retailers on a schedule and match their listings against my brand, size, gender, and discount preferences. Store-specific request handling and data normalisation account for differences between the sites. A saved history tracks which products have already appeared in an alert. The next email groups new matches by brand, with photographs, prices, discounts and product links.

## Lexaday

Builds
Source ID projects:lexaday
Original https://www.henryw.me/#/projects?to=lexaday

Lexaday began with an interest in images as memory cues for vocabulary. Giving every word its own image would create a large collection of separate associations. I built the lessons around shared roots, pairing each root with an AI-generated image and related words so the same visual association could support later learning. Personalised spaced repetition brings earlier roots back alongside new material. GitHub Actions runs the language and image models, assembles the daily email and saves each learner’s updated review history.

## How I Started Building with Code

Builds
Source ID projects:early
Original https://www.henryw.me/#/projects?to=early

Seeing a teacher automate folder creation with a batch script made me curious about what else I could make a computer do. During junior high and high school, I taught myself Java and Python and treated code like building blocks, trying combinations and exploring the possibilities. I built desktop applications, a Scientific American podcast downloader, Chrome extensions, a music downloader, Kiwiview’s first website and automation scripts. Some experiments also answered a specific need, such as Econographer, a Word add-in for the economics diagrams we used in class. The projects follow that period in chronological order.

## Where I've Wandered

Travels
Source ID travels:overview
Original https://www.henryw.me/#/travels

Some of the places I've been, with a photo from each. Drag to spin · pinch to zoom · tap a point

## Insurance Product Configuration Engine

Insurance Product Configuration Engine
Source ID playbook:overview
Original https://www.henryw.me/#/playbook

Mapping insurance requirements to the app’s screens and fields At HSBC , I built an Excel/VBA tool that determines which screens and fields a banking app needs for each insurance product. The team can enter a product’s specifications, generate its configuration and update the shared rules as products and requirements change.

## Configuring the app for different insurance products

Insurance Product Configuration Engine
Source ID playbook:first-the-problem
Original https://www.henryw.me/#/playbook#first-the-problem

Across dozens of insurance products in multiple markets, the app needed different screens and questions. Travel insurance might need trip dates, motor insurance might need vehicle details, and an earlier answer could determine which follow-up question appeared. The team needed a way to express those differences and generate the corresponding configuration. Product specifications described the business requirements, while design libraries defined the screens and fields available to implement them. Engineering needed a configuration identifying which components each product required. I worked on making the relationship between these descriptions explicit, so a change in requirements could be carried through to the app configuration.

## Making the configuration rules reusable

Insurance Product Configuration Engine
Source ID playbook:the-idea
Original https://www.henryw.me/#/playbook#the-idea

The required interface depended on combinations of product choices and conditions. I represented each relevant combination as a business scenario, with rules specifying the components it needed. This gave the engine a sequence it could evaluate, first establishing which scenarios applied, then selecting their screens and fields. Many products reuse the same definitions, conditions and components. Maintaining separate rules for each product would mean revising the same logic in several places whenever a shared requirement changed. I organised these into linked libraries, where each shared definition could be maintained once. Decision tables record which product values satisfy a scenario and which UI components it requires. Product specification The questions, allowed values and conditional inputs used to describe a product's requirements.

UI components The reusable screens, fields, and interface components available in the app. Decision tables The conditions that map specification values to the UI-component requirements for each business scenario. The engine follows product specification → business scenarios → UI-component requirements . The team can follow the same path backwards to see which scenario selected a screen or field and which product values made that scenario apply. The mapping gives them a way to inspect the generated configuration and the rules behind it. A new product can reuse the existing definitions with a different set of values. When a shared condition changes, the team can revise its decision table and regenerate the affected configurations. Keeping these rules outside the VBA code also makes that part of the engine accessible to the people maintaining the requirements.

## Try the rules on a trip

Insurance Product Configuration Engine
Source ID playbook:try-it
Original https://www.henryw.me/#/playbook#try-it

Try changing the trip type, destination or length below and follow the effect through the highlighted rules to the packing list. Notice how a choice can reveal a follow-up question, and how separate decision tables each contribute to the final output.

## Automating product configuration

Insurance Product Configuration Engine
Source ID playbook:from-the-packing-demo-to-the-production-tool
Original https://www.henryw.me/#/playbook#from-the-packing-demo-to-the-production-tool

In the production Excel/VBA tool, users entered product specifications through a dynamic form, and the engine automatically applied the decision tables to generate the required UI-component configuration. Follow-up fields appeared according to conditions expressed in a small notation. The roughly 32 KB VBA engine evaluated these definitions alongside the mapping rules. Broad defaults and specific exceptions could coexist in a decision table, using wildcard matching and right-side overrides to give specific cases precedence over general rules. I developed four versions of the tool and included an embedded tutorial for colleagues maintaining the libraries and decision tables. The team could generate configurations through the form and update the shared logic through the libraries after my internship.

## Lexaday

Lexaday
Source ID lexaday:overview
Original https://www.henryw.me/#/lexaday

Related words, memorable images, and reviews by email Lexaday explores whether an image attached to a word root can help learners develop a feel for its meaning across a family of words. Each lesson combines a generated image with a family of related words, and a personalised review schedule brings those connections back over time.

## Remembering roots through images

Lexaday
Source ID lexaday:a-small-lesson-generated-fresh-each-morning
Original https://www.henryw.me/#/lexaday#a-small-lesson-generated-fresh-each-morning

A vivid image seemed a promising way to make a word’s meaning easier to recall. Giving every word its own picture, though, would create a new association to learn each time. I was interested in whether the same memory could help with several words, including ones I had not encountered yet. Roots offered a more compact starting point. Many words share an underlying idea such as speaking, hearing or sending. I used this shared meaning as the basis for a visual mnemonic, giving related words a common image to return to. Each lesson develops one root through those connections. For dict , associated with speaking, examples such as dictate , contradict and prediction show how the meaning takes different forms. A language model writes the explanations and examples, and an image model creates a visual mnemonic around the root’s meaning. The images here come from those lessons.

## Scheduling new roots and reviews

Lexaday
Source ID lexaday:the-learning-loop
Original https://www.henryw.me/#/lexaday#the-learning-loop

I built spaced repetition into the daily emails so earlier roots would return alongside new material. The intervals increase through one, two, four, eight, and progressively more runs. Each learner needs a separate schedule because the roots they have seen and their last review dates differ. A saved progress record lets the job select one unseen root alongside any reviews due that day, before generating the lesson.

## Due today

Lexaday
Source ID lexaday:pick
Original https://www.henryw.me/#/lexaday#pick

The learner's record determines which root is new and which earlier roots need another look.

## Words in context

Lexaday
Source ID lexaday:write
Original https://www.henryw.me/#/lexaday#write

A language model writes the introduction and example sentences for the root's related words.

## A visual cue

Lexaday
Source ID lexaday:imagine
Original https://www.henryw.me/#/lexaday#imagine

The root's meaning guides an image prompt, which an image model uses to create the mnemonic.

## The daily email

Lexaday
Source ID lexaday:send
Original https://www.henryw.me/#/lexaday#send

The lesson and images are assembled into an HTML email, and the progress record is saved for the next run.

## The daily lesson

Lexaday
Source ID lexaday:what-the-reader-receives
Original https://www.henryw.me/#/lexaday#what-the-reader-receives

I packaged the new root and due reviews into a daily email. The complete example here shows how the image, related words and example sentences form a lesson, followed by earlier roots returning for another review. I used GitHub Actions for the scheduled runs and a JSON file for each learner’s progress. The file stores the run count, introduction date, last review, and current interval for every root encountered. Saving it after a lesson gives the next run the history it needs to choose what comes next. The schedule determines which roots the learner receives, and the language and image models develop the material for those roots. The lesson can vary in its examples and illustrations while following a consistent review schedule. One day's lesson, including the new root and earlier material due for review.

## Stride Support

Stride Support
Source ID stride:overview
Original https://www.henryw.me/#/stride

Customer support with retrieval, recommendations and tool use A customer asking about a return needs an answer that connects the policy to their purchase and helps them take the next step. For this course project, we built an assistant that retrieves relevant information, works with order records and carries out support actions through conversation. Retrieval-augmented generation (RAG) supplies the model with product and policy material, while recommendation and sentiment models help it choose useful suggestions and respond to the customer’s tone.

## Keeping the order in context

Stride Support
Source ID stride:keeping-the-order-in-context
Original https://www.henryw.me/#/stride#keeping-the-order-in-context

” depends on which order the customer means. The interface lists ongoing and past orders and lets the customer select one. It sends that order’s status, items and delivery context with each message. Switching the selection changes the context supplied for the next turn. The backend supplies the active customer’s identity to the relevant tools. The same purchase therefore anchors the interface, the model’s interpretation and the database queries behind its response. A conversation can continue across an order check, a policy question and a complaint while keeping that reference consistent.

## Connecting retrieval to support actions

Stride Support
Source ID stride:giving-the-model-access-to-the-application
Original https://www.henryw.me/#/stride#giving-the-model-access-to-the-application

Some requests need a passage from a policy. Others need a current order record or a change to a complaint. We exposed these operations through five Model Context Protocol (MCP) servers, which describe the tools and the inputs they accept. Policy search retrieves documents, customer and complaint tools work with SQLite records, and catalogue and recommendation tools find suitable products. A FastAPI orchestration layer gives the language model these tool descriptions alongside the conversation and selected order. The model chooses a tool, the service executes it, and the result becomes context for the next decision. This loop lets a request develop across several steps, such as checking a purchase, finding the relevant policy and filing a complaint. Retrieval becomes part of resolving the customer’s request, with its results available to both the answer and subsequent actions.

03 Retrieval and language

## Interpreting the customer’s request

Stride Support
Source ID stride:matching-language-to-the-support-domain
Original https://www.henryw.me/#/stride#matching-language-to-the-support-domain

Product names and policy terms can be useful exact matches, while a customer’s description of what they need may use quite different words. We combined BM25, which ranks word matches, with BGE embeddings, numerical representations that capture related meaning. Product and policy search normalise and blend the two scores, making the balance between wording and meaning adjustable. Recommendations add another kind of evidence. Similarity between product descriptions helps find alternatives, while co-purchases and customer activity reveal which items tend to be useful together. Combining these signals supports both a request for something similar and a recommendation based on purchase history. The wording also carries information about how to respond.

We fine-tuned multilingual BERT (mBERT) for sentiment classification and compared it with a bidirectional LSTM and a Transformer encoder trained from scratch on the SST-2 sentiment dataset. The chosen classifier supplies a per-message cue that the response model uses to adjust empathy and concision. A separate embedding-based check recognises the support domain and guides unrelated questions towards available capabilities. We evaluated policy retrieval, tool routing and complete chatbot responses separately, alongside the sentiment-model comparisons. Each addresses a different question. Did retrieval find the relevant passage, did the model select the appropriate operation, and did those results lead to a useful response? This made it possible to examine how each model and retrieval method contributed to the conversation as a whole.

## Dealtracker

Dealtracker
Source ID dealtracker:overview
Original https://www.henryw.me/#/dealtracker

Outdoor clothing sale alerts matched to my preferences During my exchange in Melbourne, I noticed that outdoor brands I liked, including Arc’teryx and Patagonia, were often cheaper than in Hong Kong and frequently discounted. Finding the right item still meant checking long sale pages before an offer ended. Dealtracker automates those checks and emails me when it finds a new match for my saved preferences.

## A shortlist in my inbox

Dealtracker
Source ID dealtracker:from-noisy-sale-pages-to-a-short-inbox-digest
Original https://www.henryw.me/#/dealtracker#from-noisy-sale-pages-to-a-short-inbox-digest

I set filters for brands, sizes, gender, and minimum discounts. A scheduled job checks selected stores against those filters, turning their sale listings into a shortlist. The configuration shown here covers two Australian retailers and seven brands. 2 Australian stores 7 brands I track 29-39% minimum discount 02 The digest

## Enough information to decide

Dealtracker
Source ID dealtracker:the-email-output
Original https://www.henryw.me/#/dealtracker#the-email-output

A useful alert lets me assess the offer before opening the store’s page. I designed the digest to group items by brand and sort them by discount, showing a photograph and the original and sale prices beside each product link. The examples below show how that information comes together in the email. Arc'teryx and The North Face digest Patagonia and Icebreaker digest 03 Collection

## Reading the stores' product data

Dealtracker
Source ID dealtracker:what-happens-behind-the-email
Original https://www.henryw.me/#/dealtracker#what-happens-behind-the-email

WildEarth and Find Your Feet express similar products and filters differently. Applying my preferences consistently meant first accounting for each store’s URL format, page loading, and product labels. I kept the store-specific handling at the point of collection, then normalised the listings so the same filtering and email logic could work across both retailers. The stages below follow a listing into the digest. Store filters Saved brand, size, gender, and discount preferences are encoded in the URL format each store expects. Page loading A headless browser runs the page’s scripts so it can read product grids loaded after the initial response. Product data Arc'teryx and Arcteryx count as the same brand. When a store's gender labels are inconsistent, the product title is used to infer the category.

New matches Each qualifying product is checked against the saved history before it can enter the digest. Delivery An HTML email is sent when at least one new product passes all filters.

## Remembering what I have already seen

Dealtracker
Source ID dealtracker:the-control-layer
Original https://www.henryw.me/#/dealtracker#the-control-layer

A product can stay on sale across many scheduled checks. Without a record of earlier results, a successful search would keep filling my inbox with the same items. I added a history file so the job could distinguish a new match from one it had already reported. A run with nothing new finishes quietly. Sometimes I want to see the current selection again, including items I previously passed over. The job also checks its inbox for a reset command that clears the saved history. I can restart the shortlist through the same email workflow in which I receive the deals.

## Scrollytelling Engine

Scrollytelling Engine
Source ID scrollytelling:overview
Original https://www.henryw.me/#/scrollytelling

A web presentation whose charts unfold as you scroll For a course presentation about the electricity and water demands of AI infrastructure, I needed to explain relationships through maps, distributions, and flows. Showing a complete chart on a slide asked the audience to absorb its structure while following the argument. I built a scrolling web presentation so a figure could stay in view as the explanation introduced one relationship at a time. Readers could move through the argument at their own pace, watching the relevant data appear. As I developed the presentation, I began separating the content of each scene from the code that drew and animated it. Several scenes could use the same kind of chart, and changing their text or data should require only changes to that content. Reusable renderers built with D3, a JavaScript library for data visualisation, made this possible.

The resulting engine could support other presentations using the same chart builders.

## The presentation in motion

Scrollytelling Engine
Source ID scrollytelling:see-it-as-a-story
Original https://www.henryw.me/#/scrollytelling#see-it-as-a-story

The embedded deck shows the engine in use. A line chart develops the comparison between electricity demand and grid capacity, while a map places water scarcity in its geographic context. Scroll inside the frame to follow the complete presentation.

## Defining scenes with reusable D3 renderers

Scrollytelling Engine
Source ID scrollytelling:describe-a-scene-once-then-let-the-engine-build-it
Original https://www.henryw.me/#/scrollytelling#describe-a-scene-once-then-let-the-engine-build-it

Each scene describes its text, figure type, and rendering settings in a data object with a shared schema. A renderer registry connects that figure type to the appropriate D3 builder, which draws and animates the visual using the supplied data. Adding a new line-chart scene, for example, means supplying another set of content and settings to the existing line-chart builder. The explorer below uses the same builders as the full deck. Choose a figure to compare its scene definition with the rendered result, including the settings that control its data and appearance.

## Keeping the scenes consistent

Scrollytelling Engine
Source ID scrollytelling:under-the-hood
Original https://www.henryw.me/#/scrollytelling#under-the-hood

Shared settings control layout, typography, and reveal timing across a deck. Individual scenes supply their own background, navigation label, and rendering properties. This keeps the presentation consistent while allowing each chart to express the relationships its part of the story needs. The builder library covers text, line charts, ridge plots, scatter plots, heatmaps, geographic maps, Sankey diagrams, and chord diagrams. A background manager handles the looping video layers behind them. The engine runs as plain ES modules, with D3, d3-sankey, and TopoJSON loaded from CDNs, so a finished presentation can be published on a static host.

## See Henry through your own lens

Views
Source ID views:overview
Original https://www.henryw.me/#/views

See Henry through your own lens A note from Henry Start with what you’d like to explore about Henry. The site’s AI will create a View around your question or perspective. You can follow the links to explore the original work in more detail, and share your View here if you’d like others to read it too. Compose your own View

Views ✦ See how other visitors have looked across Henry’s work, experiences, and ideas.

## How I started building with code

How I Started Building with Code
Source ID early:overview
Original https://www.henryw.me/#/early

Downloaders, browser extensions, and an economics graph generator

During junior high and high school, programming felt like playing with building blocks. I could combine a few pieces, change something and see what the computer would do. Curiosity led me to try desktop apps, browser extensions, websites and automation. Along the way, some experiments became tools I used, including a podcast downloader and Econographer for drawing economics diagrams in Word.

## My first desktop programs

How I Started Building with Code
Source ID early:how-it-started
Original https://www.henryw.me/#/early#how-it-started

My interest began at thirteen, when a teacher demonstrated a batch script that created folders automatically. Seeing a few lines make the computer do something made me curious about what else I could get it to do. I started teaching myself Java and Python, trying small desktop applications, including a contact notebook and a number-guessing game with user accounts and a history stored in text files.

These screenshots show the contact notebook, one of the first applications I completed.

## Taking Scientific American podcasts with me

How I Started Building with Code
Source ID early:batch-downloading-scientific-american-episodes
Original https://www.henryw.me/#/early#batch-downloading-scientific-american-episodes

In my first year of junior high school, I started using Scientific American podcasts to practise English. I listened on an MP3 player that could also display images and text, so I built a desktop application that downloaded episode audio, transcripts, and images in batches. A simple account system recorded which episodes each user had downloaded and allowed the application to continue from the previous stopping point.

## Chrome extension experiments

How I Started Building with Code
Source ID early:chrome-extension-experiments
Original https://www.henryw.me/#/early#chrome-extension-experiments

In my second year of junior high school, I began exploring Chrome extensions. Tools that could change a page’s behaviour, such as dimming the screen around a YouTube video, made me want to understand how they worked. I learned to develop and publish extensions, then made several of my own.

Easy QR Code generated a QR code for the current page or for custom text and links.

Page Muter muted audio or video in the current tab.

Image Fetcher downloaded a page's images in a batch.

SA Fetcher brought a simplified version of the Scientific American downloader into the browser.

WeChat Spamming automated repeated messages in WeChat as a prank tool.

These screenshots show the developer dashboard and several of the extensions.

## Music streaming hacks

How I Started Building with Code
Source ID early:music-streaming-hacks
Original https://www.henryw.me/#/early#music-streaming-hacks

In my first year of high school, I spent several months developing a music downloader for Chinese streaming services. Users could paste a song-page link into one interface to download music across several services.

The technical work involved web scraping and reverse engineering how the services exposed media URLs. The interface accepted song-page links from QQ Music, NetEase Cloud Music, KuGou, and KuWo, with options for audio quality and batch downloads from an artist’s catalogue. I also built an account system with different levels of access, including restricted lossless downloads.

The service ran for about six months and reached 413 registered users. It could also retrieve paid tracks without authorisation, an implication I had not understood when I began. I closed it once I recognised the problem.

These screenshots show the Simplified Chinese interface used by the original audience.

## Building Kiwiview's website

How I Started Building with Code
Source ID early:building-kiwiviews-website
Original https://www.henryw.me/#/early#building-kiwiviews-website

In my second year of high school, I began building a website for Kiwiview International Limited, a New Zealand company co-owned by my parents and a local business partner. The company was new, and they gave me the opportunity to design and develop its first website.

I taught myself HTML, CSS, JavaScript, and SQL as I built the site. Deploying it to an IIS server on Tencent Cloud took months of work and meant learning how the server, database, domain, and hosting environment fitted together.

## A script that played arithmetic games

How I Started Building with Code
Source ID early:simple-automation
Original https://www.henryw.me/#/early#simple-automation

In my third year of high school, our school ran online mental-arithmetic and 24-point games. I built a script that recognised the questions on screen, solved them algorithmically, and entered the answers automatically. Each answer brought up another question, and the script kept going until the game timer ended.

The recordings below show the complete automation loop, with screen recognition, a solver, and simulated input working together.

## Drawing economics diagrams in Word

How I Started Building with Code
Source ID early:econographer-an-economics-graphs-generator
Original https://www.henryw.me/#/early#econographer-an-economics-graphs-generator

Econographer, a Microsoft Word add-in

In my third year of high school, I wondered whether the economics diagrams we used in AP and IB coursework could be generated and adjusted in the document where we needed them. I could not find a suitable tool, so I made Econographer as a Microsoft Word add-in. Users choose a graph type, adjust its labels, curves, and equilibrium points, then insert the diagram into their document.

The video follows a graph being created, adjusted, and inserted into Word.

## AI × Self

AI × Self
Source ID aipersonalarchive:overview
Original https://www.henryw.me/#/aipersonalarchive

An AI-driven personal archive The work, ideas and experiences collected here reflect different parts of my life. AI × Self lets visitors connect them through their own questions. A question about the places that shaped me, for example, brings travel records and personal writing into a View, a composed reading with its original sources. The Gallery gathers these readings as exhibitions, giving visitors a shared space to explore other perspectives and contribute their own.

## An archive open to different perspectives

AI × Self
Source ID aipersonalarchive:one-archive-three-ways-to-explore
Original https://www.henryw.me/#/aipersonalarchive#one-archive-three-ways-to-explore

A personal site usually reflects how its author has organised their life. Work goes under projects, an experience under a date, a thought into a piece of writing. A visitor’s curiosity can cross all of those boundaries. Questions about how I think, what I build or where I have lived can bring together material I published years apart and for different reasons. I built Search to find original passages and Ask to connect them in an answer. View develops a question into a composed reading with original sources and working demos woven into its narrative. The Gallery gives that reading a spatial form. Each perspective becomes an exhibition, with rooms to enter, original works to encounter and a story to follow. These readings become part of the archive too. Visitors can save and share their own Views, while new work gives later questions more material to draw on.

The site holds both what I have made and the different ways people come to understand it.

## Find a passage in its original context

AI × Self
Source ID aipersonalarchive:find-a-passage-in-its-original-context
Original https://www.henryw.me/#/aipersonalarchive#find-a-passage-in-its-original-context

Opening a long project page still leaves a visitor looking for the passage that answers their question. I made each Search result show the matching text and open its precise location. A visitor may remember a project’s name, or only the idea that made it interesting. Search accommodates both. A question about translating business requirements into software can lead back to my work at HSBC, even without the company name in the query. The result keeps enough of the passage visible to help the visitor decide where to go next. How Search finds related material Names such as HSBC are useful word matches, while a question about translating business requirements into software may describe the same work in different language. I combined lexical retrieval, which matches words, with semantic retrieval, which looks for related meaning.

When I build the site, a sentence-embedding model converts each passage into an embedding, a vector of numbers that represents its meaning. Related meanings tend to have similar vectors. At search time, the browser uses the same model to embed the query and compares it with those stored vectors. This lets each search run locally. Word matches still matter, especially for names and technical terms. I merge the two rankings with weighted reciprocal-rank fusion, giving precise word matches priority while retaining relevant semantic matches. The comparison shows what each method contributes. I use all-MiniLM-L6-v2, which produces 384-dimensional embeddings. I store their values as 8-bit integers with a per-vector scale to reduce the download. At query time, cosine similarity compares the vectors. Lexical ranking uses a TF-IDF-like score, giving informative words more weight.

Reciprocal-rank fusion combines list positions because the two scoring systems use different scales. A ranking always has a first result, even for an unrelated query. I tested realistic searches alongside deliberately unrelated ones. In that set, unrelated examples scored at or below about 0. 22, most useful matches were above 0. 45, and a few relevant ones fell near 0. I set the semantic floor at 0. 24 to retain those weaker matches while excluding clearly unrelated results. Adjust the threshold in the comparison to see how many passages remain. Its scores occupied a narrower range, making an absolute threshold less useful, and recall did not improve enough to justify switching. MiniLM gave me a clearer separation between relevant and unrelated material in these tests.

## The archive as a space

AI × Self
Source ID aipersonalarchive:seeing-the-archive-as-a-space
Original https://www.henryw.me/#/aipersonalarchive#seeing-the-archive-as-a-space

Once the passages had embeddings, numerical representations of their meaning, I could compare them with one another as well as with a query. That suggested another way to explore the collection. Material filed under research, work, or personal writing could sit together because of what it discussed. I used those relationships to make a map of the archive, giving visitors a way to look around neighbouring ideas even before choosing a particular question. UMAP, a dimensionality-reduction method, arranges these embeddings in two or three dimensions. Every dot represents a passage, and nearby dots carry related meaning. A visitor can add a question to see where it falls within the material already here. A question about how I use AI can draw on several projects. Search locates the relevant passages. Understanding their connections involves reading across those pages.

I developed Ask to bring that material into an answer.

## Ask brings related passages into one answer

AI × Self
Source ID aipersonalarchive:ask-brings-related-passages-into-one-answer
Original https://www.henryw.me/#/aipersonalarchive#ask-brings-related-passages-into-one-answer

Each answer includes citations that lead into the relevant projects and writing. Suggested follow-up questions help a visitor develop an overview into a closer look at a decision, experience or connection. Visitors can also listen to the answer in an AI voice trained on recordings of my own voice. The browser prepares context from the public site and sends it with the question to a Cloudflare Worker, a server-side function that requests the model’s answer. Supplying source material to support an answer is retrieval-augmented generation, or RAG. The current version supplies the main site material and the published personal writing, using retrieval to bring relevant passages forward. Keeping that broader context available helps with questions that connect several parts of the archive. An answer can also leave a visitor curious about the work behind it.

View develops that curiosity into a reading where people can explore the original material as the interpretation unfolds.

## View reorganises the site around a question

AI × Self
Source ID aipersonalarchive:view-reorganises-the-site-around-a-question
Original https://www.henryw.me/#/aipersonalarchive#view-reorganises-the-site-around-a-question

Trying a project’s demo reveals how it behaves. Photographs bring places and experiences into view, while a piece of writing preserves how I understood an idea at the time. In a View, these original pieces become part of the explanation, appearing where they help develop its meaning. Each response becomes a composed reading. A question, theme, or perspective guides the selection of material, and the narrative explains what the visitor should notice in it. A project’s working demo can sit beside a research entry or a piece of personal writing, giving the explanation concrete material to work with. Compose a View I registered projects, research entries, personal writing, image groups and interactions as reusable components. The model selects the components that answer the question, writes the narrative that connects them and gives each section its place in the reading.

Each component carries its own content and behaviour, so the model can compose a new reading using an existing demo, photo gallery or written passage. A question about learning might bring together work on human cognition, an education project, and a reflection written in another context. A question about how I build tools might draw on some of those same pieces for different reasons. The question changes which relationships the composition develops. A generated illustration gives the page a visual interpretation of its question and perspective. An audio summary introduces the reading before visitors explore the full narrative. A saved View brings together its question, narrative, sources, illustrations and audio. Its permanent link lets the creator return to that version or share it with someone else. Creators can also publish a View in the shared collection.

Other visitors can explore these readings and see the archive through someone else’s perspective. The same narrative can also be experienced through space. Giving works scale and distance lets people approach them, pause and make connections as they move. I designed the Gallery so each View could be visited as an exhibition.

## Every View becomes an exhibition

AI × Self
Source ID aipersonalarchive:every-view-becomes-an-exhibition
Original https://www.henryw.me/#/aipersonalarchive#every-view-becomes-an-exhibition

The question behind a View sets the exhibition’s theme. Its sections form a sequence of rooms, and the original material becomes the work on display. The Gallery opens in a shared entrance hall where visitors can browse exhibitions created by other people or compose a View around their own question. I gave these activities a place in the room. A collection display lets visitors choose an exhibition, whose title and illustration then appear at the entrance. An open book provides a place to enter a new question.

## Inside an exhibition

AI × Self
Source ID aipersonalarchive:article-and-exhibition-keep-the-same-place
Original https://www.henryw.me/#/aipersonalarchive#article-and-exhibition-keep-the-same-place

An exhibition lets visitors encounter the material as they follow a View. A photograph can fill a wall, a piece of writing can occupy a reading stand, and a record of places can become a globe. The narrative stays beside the work, explaining what connects it to the question. Visitors can also read the View as an article. Switching between the article and exhibition takes them to the corresponding passage or exhibit, so visitors can continue in the form that suits them.

## Designing an immersive visit

AI × Self
Source ID aipersonalarchive:the-exhibition-is-designed-as-one-experience
Original https://www.henryw.me/#/aipersonalarchive#the-exhibition-is-designed-as-one-experience

I designed the building, displays and guidance together. The open layout helps people find their way, display forms suit the original material, and light and sound shape how they attend to the works.

## System architecture

AI × Self
Source ID aipersonalarchive:system-architecture
Original https://www.henryw.me/#/aipersonalarchive#system-architecture

Search, Ask, View and Gallery share the site’s published material. Each site build prepares passages with links to their original locations, embeddings that represent their meaning, and a catalogue of the material available for composition. The catalogue includes descriptions of interactive components, so the system can select a working example alongside a written passage. Each experience uses that material differently. Search ranks passages in the browser. Ask receives broad context from across the site and writes an answer with citations. View first selects sources from the complete catalogue, then receives those sources in full to compose the narrative. This gives selection a view of the whole archive and composition the detail it needs. A Cloudflare Worker handles the model calls for Ask and View.

The generated View follows a JSON schema that connects chapters, narrative passages and original sources. That structure feeds both the Vue article renderer and the Three. The exhibition’s layout algorithm turns chapters into rooms and chooses display forms and viewing positions for their contents. Both presentations refer to the same entries, so switching between them leads to the corresponding passage or exhibit. The Gallery brings these individual readings together. Its Hall connects the public collection, a place to compose new Views and the archive map. Selecting a View opens its exhibition, with the Gallery providing a shared setting for readings created by different visitors. Saving a View preserves the narrative together with snapshots of its sources. Cloudflare D1 stores these records, and R2 stores their archived media.

Later revisions to the site can inform new readings, and an earlier View retains the material on which it was based.

## Returning to my own archive

AI × Self
Source ID aipersonalarchive:what-the-case-gives-back
Original https://www.henryw.me/#/aipersonalarchive#what-the-case-gives-back

Keeping this site gives me a record of what I could articulate at different moments. Reading across it raises other questions. A fragment can take on a different meaning beside a project I made later. An experience can help me understand why an earlier idea mattered. A View gives one of these readings a form I can revisit. Its question determines which parts of my life come together and which relationships receive attention. Asking about home might connect a family meal with a city I lived in. Asking about change might place that same memory beside something I wrote years later. Each arrangement brings a different part of the experience into focus. The Gallery gives these readings a spatial form. Walking through an exhibition of my own experiences means encountering them one at a time, with room to look and listen.

A photograph or passage can hold my attention long enough for details to complicate the account I usually give of that period. I am also reading it with the experiences I have had since. Both the arrangement and my own changing perspective can lead to a new understanding. Other visitors bring questions I might never ask. Entering their exhibitions lets me revisit familiar material through what interested someone else. Their question may connect parts of my life I had understood separately. Exploring that connection can change what I notice when I next look back on the experience. Over time, the collection can hold exhibitions of different stages of my life, shaped by different people’s questions. Saving them preserves a history of how that life has been understood alongside the record of what happened. An earlier reading gives me something specific to reconsider as I change.

Self-reflection becomes a continuing exchange between my memories, the records I made and the perspectives others bring.

## A Structure-Preserving RAG Ingestion Pipeline

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:overview
Original https://www.henryw.me/#/ragflow-pipeline

Preserving document structure when preparing PDFs for an AI assistant At PwC, I evaluated and combined document-processing tools for an AI assistant that answers public enquiries using a client’s documents. I built an ingestion pipeline that prepares those documents for retrieval while preserving the relationships an answer may depend on, including table structure, cross-page references and the branches of a flowchart. End-to-end tests and deployment analysis informed the solution I recommended to the client.

## Understanding what the client needed

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:understanding-the-client-requirements
Original https://www.henryw.me/#/ragflow-pipeline#understanding-the-client-requirements

The assistant would find relevant passages in the client’s documents and give them to a language model to help answer a question, an approach known as retrieval-augmented generation (RAG). My task was to prepare the documents for that process. The requirements covered paragraphs and tables continuing across pages, complex table structures, references to distant notes and remarks, and flowcharts stored as images. An answer could depend on a relationship within any of these, so those relationships needed to survive document processing. These functional requirements left the technical choices open. I needed to establish which existing tools could meet them, what additional processing was necessary, and how the combined solution would fit the client’s infrastructure and operating budget.

I brought the cases together in a controlled five-page document, so comparisons used the same input and could follow the evidence through to an answer.

## Keeping a paragraph or table together across pages

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:why-one-pdf-needed-several-ways-of-reading
Original https://www.henryw.me/#/ragflow-pipeline#why-one-pdf-needed-several-ways-of-reading

A page boundary can fall halfway through a paragraph or table. If extraction treats the next page as a fresh start, the resulting fragments may separate a passage from its continuation. I first tested how much an existing parser could recover. MinerU, a tool for converting PDFs into structured content, rejoined the interrupted paragraphs and tables in the test document. This requirement could be met within the parsing stage. The next check was whether that continuity would survive chunking, which divides the parsed content into searchable passages. A parser could reconstruct a table successfully, only for a later split to detach its rows from their context. I included this downstream behaviour in the selection criteria, checking both the reconstructed document and the passages produced from it.

## Preserving the structure inside a table

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:complex-tables
Original https://www.henryw.me/#/ragflow-pipeline#complex-tables

A merged cell can make one heading apply to several rows or columns. A nested table introduces a smaller set of relationships inside a single cell, such as the booking rules in this example. Flattening either into a sequence of words makes it harder to determine which condition governs which value. I tested both structures separately because success on merged cells would say little about a parser’s ability to recognise a table inside a table. MinerU’s OCR-based path, which recognises text and reconstructs layout, recovered the merged cells as HTML but missed the nested tables in the tests. Its built-in vision-language model (VLM), which interprets images as well as text, recovered both. HTML could express the resulting hierarchy explicitly through cells spanning rows or columns and tables contained within other cells. That result needed to survive the rest of the pipeline.

In the RAGFlow path I tested, subsequent processing discarded the HTML tags. The parser’s output contained the relationships, but the material supplied for an answer had lost them. With LlamaIndex, a framework for organising content for retrieval, the structure remained available through indexing, retrieval and answer generation. I therefore selected MinerU’s built-in VLM with LlamaIndex, checking the evidence returned to the model as well as the parser’s output.

## Retrieving a passage with the note it refers to

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:notes
Original https://www.henryw.me/#/ragflow-pipeline#notes

A sentence could cite Note (4) several pages before the note appeared. Extracting both passages accurately still left retrieval with two separate pieces. A question might match the citing passage closely while giving the search little reason to return the note it refers to. I needed to make their explicit reference part of the material being indexed. I considered linking the resulting chunks through metadata and attaching the note to its citing text immediately after parsing. The second approach was simpler to carry through retrieval. MinerU preserved the reference metadata, and the document’s surrounding context was still available at that point. A custom Python linker could resolve the relationship before chunk boundaries were set. Repeated note numbers meant that matching a label alone was insufficient.

The linker used the relevant section, position and surrounding context, repaired fragmented notes, and normalised inconsistent labels. It then placed the note beside its citation and removed the duplicate standalone copy. Chunking could keep the passage and its linked note in one unit of evidence. The example connects a sentence on page 3 with its note on page 5. Across the controlled document, the linker resolved all 13 cross-page references. In the retrieval check, the combined passage and note became the top result for the question they answered. Other approaches I tested Baidu Unlimited OCR offered a multi-page mode. In tests on difficult public government documents, it preserved much of the layout, while the relationship between a passage and a later note still needed explicit linking. Reading several pages together did not by itself establish which passages belonged together.

I also examined image-based and multimodal retrieval. Keeping each page as an image retained its visual layout while leaving cross-page relationships separate. The RAGFlow path I evaluated converted images to text before embedding them. Linking the references in that text let me determine which pieces would be retrieved together.

## Making a flowchart’s decision logic searchable

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:mermaid
Original https://www.henryw.me/#/ragflow-pipeline#mermaid

Many client documents used flowchart images to explain a procedure. An answer might depend on following a “Yes” branch through several conditions. OCR could recover the words in each box while losing the arrows that made them a decision. I also tested free-form VLM descriptions, which conveyed the overall process with varying levels of detail. I chose Mermaid, a text-based diagram language that makes each branch explicit through nodes, connecting edges and labels. This let me inspect the individual decision paths. A VLM could convert the image into this representation, making its logic searchable alongside the document’s prose. Rendering the text back into a diagram also gave me a way to compare the reconstructed decisions with the original. In the controlled test, the reconstruction retained every node, edge and label and supported correct answers to both flowchart questions.

Later in the research, I found that MinerU’s built-in VLM already supported converting flowcharts to Mermaid. It could select an appropriate representation for an image, including HTML for tables and Mermaid for flowcharts. This brought the two visual requirements into the same parser and model, fitting the client’s preference to keep the number of models they operated small.

## Bringing the four requirements into one pipeline

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:what-i-tested-before-recommending-it
Original https://www.henryw.me/#/ragflow-pipeline#what-i-tested-before-recommending-it

The recommended architecture combined MinerU with its built-in VLM, a post-parsing reference linker, and LlamaIndex. Parsing recovered document continuity and represented tables and diagrams in structured text. The linker attached referenced notes and remarks before LlamaIndex formed chunks for retrieval. An embedding model represented those chunks and the question as numerical vectors, allowing passages with related meanings to be found even when their wording differed. The answer model then received the retrieved evidence with its relationships intact. I integrated these components in a proof of concept and followed the controlled document through the full path, checking what reached the answer model after each processing choice. This exposed losses that a successful parsing preview had concealed and gave the client an end-to-end basis for choosing the tools.

The recommendation also connected this design to operation. I separated GPU-backed parsing and visual interpretation from CPU orchestration, reference linking and indexing, then compared on-premises and private-cloud deployment. On-demand processing could release resources between ingestion jobs, with model start-up time affecting how quickly a new job began. Keeping the service running traded that delay for ongoing cost. These choices let the client assess the pipeline against its infrastructure, ingestion frequency and maintenance capacity.

## Judging the whole solution

A Structure-Preserving RAG Ingestion Pipeline
Source ID ragflow-pipeline:judging-the-whole-solution
Original https://www.henryw.me/#/ragflow-pipeline#judging-the-whole-solution

Part of my role was deciding what would count as meeting a requirement. “Support complex tables” leaves several possibilities open. A tool might reproduce a table’s appearance, recover its hierarchy, or make that hierarchy available to the model answering a question. The client’s purpose determines which of these matters. I had to translate that purpose into checks detailed enough to guide a technical choice, while leaving room to discover how existing tools could satisfy it. Specifying a particular implementation too early would have narrowed the options before I understood them. I also needed to judge the combination of tools as a solution in its own right. A capability demonstrated by one component can disappear at its interface with the next, as the table structure did during downstream processing. That makes integration part of the evaluation itself.

It affects where to intervene, too. Existing parsing capabilities covered several requirements, while reference linking called for a small piece of custom logic. The distinction depended on the relationship each requirement needed to preserve. It gave me a reason for every part I added and a way to test whether that addition worked. Operating constraints belong in the same reasoning. Ingestion frequency changes whether model start-up time or idle GPU cost is the more significant concern. A preference for fewer models affects the value of finding table and flowchart support within one parser. These dependencies mean a recommendation has to explain the conditions under which its choices make sense. I want the client to be able to see which decisions can remain in place as usage grows, and which should be revisited if its documents, workload or infrastructure change.

That understanding is part of what the consulting work needs to deliver.

## AI for IT Operations

AI for IT Operations
Source ID ai-it-operations:overview
Original https://www.henryw.me/#/ai-it-operations

Maintaining technical knowledge and carrying out service requests At PwC, I designed a system that uses AI to identify gaps in an IT assistant’s knowledge, research the missing information and keep its knowledge base up to date. I also built a browser agent that interprets service tickets and carries out tasks in the applications the team already uses.

## Where AI can help in IT operations

AI for IT Operations
Source ID ai-it-operations:ai-in-it-operations
Original https://www.henryw.me/#/ai-it-operations#ai-in-it-operations

Keeping an organisation’s technology running involves maintaining systems, investigating faults and supporting the people who use them. An IT team works across many products and has to keep up as their software and documentation change. At PwC, I researched how AI could help with this work, including making technical knowledge easier to consult and automating tasks in existing applications. My work focused on two areas. One was the knowledge behind an assistant that answers IT questions. I designed a process for expanding and maintaining its knowledge base, using AI to research missing material and assess changes in the original documentation. The other was carrying out service requests. I built a browser agent that interprets a ticket and works through the relevant application, reading the page as it acts and involving the operator when the task needs their input.

## Keeping the assistant’s knowledge useful

AI for IT Operations
Source ID ai-it-operations:knowledge-management
Original https://www.henryw.me/#/ai-it-operations#knowledge-management

The platform includes an assistant that answers questions about using and maintaining IT systems. It searches a collection of technical documents and uses relevant passages to help compose each answer, an approach known as retrieval-augmented generation (RAG). That collection, its knowledge base, needs continuing attention. Useful information may be missing, and documents already collected can become outdated. I designed the platform’s Knowledge Management around these two needs, acquiring material that expands what the assistant can answer and maintaining it as the sources change.

## Where does the assistant need more knowledge?

AI for IT Operations
Source ID ai-it-operations:where-does-the-assistant-need-more-knowledge
Original https://www.henryw.me/#/ai-it-operations#where-does-the-assistant-need-more-knowledge

Before collecting more documents, I needed to identify what information was missing. Having material on a topic does not tell us which questions it can answer. Documentation on certificates might explain how to renew one while leaving out how to get an application to use its replacement. Checking those two questions separately makes the missing information explicit and gives the next search something specific to find. Questions the assistant had been unable to answer provided one way to discover gaps. I also used AI to propose useful questions beyond those people had already asked, so the collection could develop ahead of demand. A proposed question still needed to be checked against the existing material. A new question does not necessarily require new knowledge. For example, documentation collected on hosting a Python web app may already explain how to host a REST API.

Whether a question has been asked and whether the collection can answer it are therefore separate considerations. The matrix below crosses them to show four cases. The two missing cases supply questions for further research. Try predicting a question, then follow the search for the information it needs.

## Researching gaps in technical guidance

AI for IT Operations
Source ID ai-it-operations:researching-gaps-in-technical-guidance
Original https://www.henryw.me/#/ai-it-operations#researching-gaps-in-technical-guidance

Several knowledge gaps can concern the same problem. Certificate expiry, renewal and a replacement that fails to take effect all concern the certificate lifecycle. I grouped related gaps into a shared research objective, giving the agent a reason to explore their connections. The individual questions stayed attached to the objective as concrete checks on what the research needed to cover. That objective guided where to look. I used AI to find relevant starting pages, then directed a crawler to follow links and collect documentation that could answer the questions. Starting near the relevant material mattered on large vendor sites, where following links from the homepage could consume the search budget before reaching the guidance needed. As it collected material, the agent assessed which questions now had supporting evidence and what each additional page contributed.

An unresolved question could lead it to look for another starting page. Once the questions were covered and further crawling added little useful information, it could send the proposed sources for review. Combining question coverage with information gain gave the research a stopping condition, alongside page and time limits.

## What happens when the guidance changes?

AI for IT Operations
Source ID ai-it-operations:what-happens-when-the-guidance-changes
Original https://www.henryw.me/#/ai-it-operations#what-happens-when-the-guidance-changes

Adding a document to the knowledge base creates an ongoing maintenance task. The vendor may revise its instructions while the assistant still draws on the earlier copy. To check for those changes, the system needs to know where each document came from. I retained the original source URL when collecting the material so it could be revisited later. The ingestion pipeline prepares documents for the knowledge base by extracting their text and splitting it into searchable passages, or chunks. After this processing, a source update needs to be connected to the passages it affects. I stored the accepted version of each source alongside links to its derived knowledge. These records formed the Source Registry , giving the system both a version to compare against and a way to locate the knowledge that might need updating.

Monitoring could then revisit the original URL and compare its main content with the accepted snapshot. Normalising the content before comparison filters out differences in formatting. If the content has changed, AI reads the difference alongside the linked knowledge and assesses its significance. A changed page may contain an updated procedure, or the change may have no bearing on the guidance already held. Detecting the difference and judging its implications require different kinds of work. Because the affected knowledge is traceable, the agent can propose replacing or removing specific passages, or request further research if the changed source leaves a question unresolved. Proposed updates go through human review before the ingestion pipeline updates the knowledge and its source records together.

The next check then compares against the newly accepted version, preserving the connection between what the assistant knows and the evidence supporting it. Inside Knowledge Management Research, ingestion, and source records +

## Processing and maintaining source material

AI for IT Operations
Source ID ai-it-operations:from-a-source-to-maintained-knowledge
Original https://www.henryw.me/#/ai-it-operations#from-a-source-to-maintained-knowledge

The crawler research covered Crawl4AI Adaptive, SiteOne, Mdream/crawl, Browsertrix, and Firecrawl OSS across Azure, SAP, ServiceNow, and Oracle documentation. The results informed the separation between deciding what knowledge to acquire and the mechanics of fetching and processing pages. For each candidate page, the acquisition agent assesses relevance to the objective, source authority, overlap with material already collected, and likely information gain. Seed discovery supplies new starting URLs when the existing crawl cannot cover a question. The agent retains the original questions alongside the broader objective, allowing coverage to be checked as the search proceeds. Approved material passes through a shared ingestion and update pipeline for extraction, normalisation, deduplication, chunking, and indexing. Provenance records connect the searchable chunks to their source.

The pipeline updates the Knowledge Base and Source Registry together for additions, replacements, and removals. The accepted snapshot is the baseline for monitoring. It advances when a reviewed update is applied to the knowledge base, so later comparisons remain tied to the guidance the assistant is using. Source fetching, normalisation, comparison, and record updates use conventional system logic. AI assesses what a detected change means for the linked knowledge. Knowledge Base Source Registry Searchable knowledge stays linked to its accepted source material 02 Browser agent

## Carrying out a service ticket in the browser

AI for IT Operations
Source ID ai-it-operations:browser-control
Original https://www.henryw.me/#/ai-it-operations#browser-control

The second area concerned service requests that an IT operator carries out in a browser. A ticket such as “Please give Alex Chen editor access to the Analytics workspace” describes an outcome. The operator still has to find the right account, workspace and permission in the application. I built the platform’s Browser Control agent to interpret the ticket and carry out that work, reading the current page to decide what to do next. I brought the agent into the operator’s existing browser through an extension. It works in a dedicated tab, with interaction cards beside the application for decisions and inputs that need a person. The task continues from the current page after either the agent or the operator acts. Try the example ticket below to follow the exchange between the agent and operator. After it is resolved, open the ticket record to review the actions, approvals, and outcome.

## Turning the request into actions

AI for IT Operations
Source ID ai-it-operations:turning-the-request-into-actions
Original https://www.henryw.me/#/ai-it-operations#turning-the-request-into-actions

Even a familiar task can unfold differently when an application shows a validation message or an operator edits a form. The agent needs to see the effect of each action before choosing the next one. I used an observation loop that reads the current page, chooses an action in relation to the ticket, and reads the result. The ticket supplies the intended outcome while the page supplies the information needed to work towards it. When a person intervenes, the resulting page becomes the starting point for the next decision. I kept the observations, actions, and human decisions with the paused task so the agent could continue after sign-in or a correction without losing the context of earlier work.

## Why a browser extension?

AI for IT Operations
Source ID ai-it-operations:why-a-browser-extension
Original https://www.henryw.me/#/ai-it-operations#why-a-browser-extension

The agent needed access to internal applications and a place for the operator to work alongside it. A remote browser would need its own access to internal systems and a way for the operator to intervene. A local automation service could use the operator’s environment, with extra installation and maintenance. I compared those options with an extension that could combine control and interaction inside Chrome or Edge. The extension combined browser automation and the operator interface in one installation. It prepared changes and displayed interaction cards beside the application. Sign-in and multi-factor authentication stayed in the browser the operator already used. This made taking over part of the normal task flow. I placed reasoning and task state in a central service, so updates to the agent’s planning logic could reach everyone through one deployment.

The extension handled access to the local browser and interaction with the operator.

## Checking the result and keeping a task record

AI for IT Operations
Source ID ai-it-operations:a-place-to-start-intervene-and-look-back
Original https://www.henryw.me/#/ai-it-operations#a-place-to-start-intervene-and-look-back

After executing a request, the agent checks the application’s confirmation and records the outcome alongside the actions and human decisions that led to it. The operator can return to the ticket on the dashboard to review the completed work. Inside Browser Control Planning, browser actions, and task history +

## The browser agent’s execution loop

AI for IT Operations
Source ID ai-it-operations:from-planning-to-a-browser-action
Original https://www.henryw.me/#/ai-it-operations#from-planning-to-a-browser-action

A FastAPI service manages browser tasks. LangGraph retains the request, page observations, action history, and human decisions as the planner moves between steps. Pausing for approval or manual input preserves the same task so it can resume afterwards. Playwright sends structured actions through a relay to the browser extension. The extension uses the Chrome DevTools Protocol to read and control the dedicated tab, then returns the resulting page state to the cloud agent. The operator’s machine needs the extension, with the automation service and reasoning hosted centrally. Request + current page Agent decision Browser action Read the resulting page, then decide what to do next 03 Reflections

## What to automate, and how

AI for IT Operations
Source ID ai-it-operations:where-judgement-changes-hands
Original https://www.henryw.me/#/ai-it-operations#where-judgement-changes-hands

Across both parts of the platform, I approached automation at the level of individual decisions within a task. Researching a question, proposing an update, accepting the guidance and applying the change each require different information and judgement. In knowledge maintenance, I assigned investigation and preparation to AI, gave the reviewer a concrete proposal with its evidence, and used the ingestion pipeline to apply the accepted change. Deciding to delegate a step to AI also means deciding how much of its method to specify. A prompt can give a model an objective, evidence and criteria for judging its next step. A more structured workflow can prescribe stages and available tools while leaving particular decisions to the model. Where the inputs and procedure are already well defined, a script can execute the same logic each time.

One workflow can use all of these, with different amounts of freedom in different decisions. In knowledge acquisition, I specified what the search should achieve before knowing which pages it would need. The original questions define the coverage required, and the broader research objective gives the agent room to follow related evidence. Relevance, source authority and information gain guide its choices. This structure keeps the research connected to the missing knowledge while allowing the route through the documentation to emerge as the agent reads. I used prompts to give the model criteria for weighing evidence, and system logic to enforce fixed conditions. Tool schemas define the actions the system can accept, and page and time limits bound execution. Predictable operations such as comparing normalised snapshots and updating source records belong in system logic.

In source monitoring, that comparison determines whether there is a change for AI to assess at all. The model then reasons about its implications for the linked knowledge. This concentrates reasoning on the decision that needs interpretation. Human-in-the-loop design adds a choice about responsibility and context. A person can authorise a well-understood change, supply information the agent lacks, or correct its interpretation. Each requires the relevant evidence and a way to continue from the person's decision. I kept source changes connected to their affected passages, and retained task history and current page state when an operator intervened. Those records make review and correction part of the workflow, so handing work back to AI preserves what the person has just contributed. How much structure to provide can also change as the work becomes better understood.

Repeated cases may reveal a rule that can be written into guidance. If applying it still requires interpreting the situation, it can guide the model's judgement. If its conditions and exceptions can be stated precisely, it becomes a candidate for a decision table or script. I see this as part of developing the automation over time, making established knowledge reusable while keeping reasoning available where the next decision still depends on context.

## Fragments

Fragments
Source ID fragments:overview
Original https://www.henryw.me/#/fragments

I write down thoughts and memories before they fade, so I can return to what I was thinking and how life felt at the time. You’re welcome to look through them and get to know me a little beyond my work.

## The Projection of Thought

Fragments
Source ID fragments:the-projection-of-thought
Original https://www.henryw.me/#/fragments#the-projection-of-thought

I used to think of expression mainly as compression. A thought is larger than a sentence, so putting it into words means choosing an order, making some relations explicit, and leaving other things out. That still feels true, but compression alone makes the thought sound too fixed, as if it were a complete object that language merely made smaller. Often the deeper change is that expression projects a moving state onto a surface.

Before expression, a thought may contain pressure, direction, hesitation, memory, bodily feeling, and several possible paths at once. These parts do not always stand separately. They pull on one another and change meaning through their relation. A word can feel wrong not because it is false, but because saying it would make the thought turn too early. A vague feeling can hold several directions before any one of them is ready to become a claim.

Language makes that movement proceed in a line. One sentence must come before another. A relation becomes a phrase, a pressure becomes a claim, a hesitation becomes a qualification, and an unfinished direction may become a title. What was simultaneous becomes sequential. What was layered is divided into parts. What was still moving becomes easier to treat as a stable object. Expression therefore changes not only how much of the thought remains, but also how its parts relate.

This projection is necessary. A thought that remains only as pressure may disappear, whereas a sentence gives me something I can return to, revise, compare, and share. The surface genuinely carries the thought, even though it does not contain the whole state from which it came. The problem begins when the surface starts to feel identical to the thought itself.

Once something has been written, later thinking tends to continue from the written version. I add distinctions, examples, and structure to the sentence I can see, and the result may become clearer while moving away from relations that were active before the sentence existed. This is why a summary can feel wrong even when every visible claim is accurate. It may capture what I managed to say while losing the pressure, ambiguity, or unfinished direction that made the thought matter.

Old notes can feel strange for the same reason. A note may preserve one surface of a thought without preserving the movement around it. Still, it can provide a route back. A phrase, title, or badly written paragraph may reactivate more than it explicitly records if I read it as a trace rather than a definition. The note does not need to contain the whole thought. It needs to help me meet the thought again.

AI is especially powerful on these projected surfaces. It can organise notes, name distinctions, build an outline, and make one possible direction look coherent. That can reveal relationships I had not seen. It can also make a temporary surface look like the final structure, turning hesitation into a neat qualification and several live possibilities into one persuasive frame. The danger is not simply that AI may be wrong. It is that one partial projection may become convincing enough that I stop returning to the wider movement that produced it.

So the task is not to reject expression or AI organisation, but to keep moving between the surface and what remains unresolved beneath it. When a structure comes back to me, I need to ask whether it helps the thought continue or makes it look finished too early. This is also why I want fragments to remain open. A fragment records a moment when a thought became visible enough to hold, not the final account of what it was. I can return to it, connect it elsewhere, revise it, or discover that it was pointing in another direction. The surface should help the movement continue, not decide in advance where it must go.

## Rebuilding Another State Inside Me

Fragments
Source ID fragments:rebuilding-another-state-inside-me
Original https://www.henryw.me/#/fragments#rebuilding-another-state-inside-me

I cannot enter another person's internal state directly. Their body, memory, history, habits, fear, shame, desire, and the way a particular event touches all of these remain inside them. What reaches me is what comes out: words, facial expression, tone, silence, movement, posture, the story they tell, what they avoid saying, and the situation around them. These are traces from a system I cannot open from the inside.

Empathy therefore seems less like direct access and more like reconstruction. I receive another person's signals and use my own body, memory, experience, imagination, and learned sense of people to generate a corresponding state inside me. That state is not an exact copy of what they feel, but it is not simply my ordinary state either. It is produced by my system while being pulled into shape by theirs.

This makes empathy more than correctly naming an emotion. I may recognise that someone is sad, anxious, embarrassed, or excluded while remaining largely unchanged myself. Deeper empathy seems to involve some movement in my own attention, body, feeling, or tendency to act. My voice may soften, I may become more careful, or I may feel an urge to stop explaining, stay quiet, comfort, protect, or move closer. The other person's state has become active enough inside me to rearrange me for a moment.

The reconstruction is never neutral because it is built from my own materials. I may understand another person's sadness through a sadness I have known, or their fear through the way fear feels in me. This is necessary. Without using myself, I have no route toward them. It is also a source of distortion. Their silence may not mean what my silence would mean, and a strong feeling of recognition may reflect the model I built more than the state they actually occupy. Empathy can be deep and still be wrong.

Self-empathy may be a special case of the same process. A past version of me is not fully available to the present one, and neither are the parts of myself that I did not understand or allowed myself to feel at the time. They leave traces: a memory, an avoidance, a bodily discomfort, an unexplained preference, a sudden resistance, or a sense that an old moment still matters after I have explained it many times. The present me has to reconstruct something from those traces.

That reconstruction is not the same as explaining myself. I can describe where a reaction came from and still remain far above the state itself, as if I were analysing another person from outside. I know the story, but I have not met the feeling. Self-empathy seems to require allowing an older or hidden version of me to become active enough that I can feel why the experience mattered from somewhere closer than explanation, without pretending that I can return to the original state exactly.

This is where drawing and images begin to make sense to me. Language often moves quickly toward reasons, categories, stories, and conclusions. A drawing can let something appear before it has been organised into a sentence. A state may show itself as crowded or empty, sharp or soft, repeated or broken, centred or unbalanced. The image is still a proxy, but it does not explain the state as quickly as language does.

Once the image is outside me, I can look at it, notice what draws my attention, and feel how I respond before deciding what it means. It may give a difficult internal state a surface on which I can encounter it again. Empathy, self-empathy, language, and drawing may all be ways of approaching states that are not directly accessible. None provides perfect access. The question is whether something previously outside my immediate reach becomes active enough inside me to change how I feel, understand, or act. I am not simply receiving the state. I am rebuilding it with the only system I have.

## The Visible Part of the Mind

Fragments
Source ID fragments:visible-part-of-the-mind
Original https://www.henryw.me/#/fragments#visible-part-of-the-mind

Sometimes what I consciously think feels much smaller than what is moving inside my mind. A thought appears clearly enough for me to hold, say, or write down, and because it is the part I can reach, I may take it for the whole thought. Yet memory, mood, bodily state, recent experience, old associations, unfinished ideas, and the current situation may already be shaping what appears without becoming visible themselves. I receive a sentence, a feeling, a preference, or a sense that something is wrong, but not the full process that produced it.

Maybe consciousness is not where a thought begins, but where something becomes reachable. A memory can affect my reaction without appearing as a memory. A mood can alter how I read a situation without announcing itself. A past experience can make one idea feel natural and another feel wrong even when I cannot trace the path. When something becomes conscious, it may not be created at that moment. It may have become available to the part of me that can notice, name, report, and continue working on it.

What becomes available is still a projection through a current way of reading. The same underlying material can appear as nostalgia, regret, evidence, a story, or a small image. A place can feel like home, distance, pressure, freedom, or nothing special. The material has not necessarily changed completely, but attention, language, mood, bodily state, recent events, and what I am trying to do determine which part becomes visible and what form it takes.

This makes the conscious thought both real and partial. It is real because it came from somewhere in the larger system and carries information from it. A sudden feeling that a sentence is wrong, a memory matters, or an idea is not ready is not meaningless. It is partial because another state or another moment might have made the same underlying material appear differently. Returning to an old idea may feel like continuing the same thought when I am actually reading it through a new lens.

Language may therefore not be the first compression. A larger hidden state becomes a conscious surface. That surface becomes a sentence. The sentence becomes a written note. The note later becomes the starting point for another thought. Something is preserved and something is lost at each step. I still need the visible part because I cannot work directly with the entire hidden structure. Consciousness gives me a handle: a sentence, feeling, image, or small point of access. But the handle is not the whole mind. What I can report is not nothing, and it is not everything. It is the part of the mind made reachable through the lens of the current moment.

## Before Defining Understanding

Fragments
Source ID fragments:understanding-before-definition
Original https://www.henryw.me/#/fragments#understanding-before-definition

I do not want to define understanding too early. The word clearly points to something important, but it gathers many questions before they have been separated. Sometimes understanding means giving the right answer. Elsewhere it means explaining, transferring, generalising, correcting, compressing, using, grounding, experiencing, or being conscious of something. These may be related, but they are not identical. A quick definition can select one layer and make it look as though the entire problem has been solved.

This matters for both people and machines. A student may solve a problem correctly without knowing why. A person may explain something fluently while missing the structure that would support transfer. A model may produce a strong answer while failing to adapt when the surface form changes. Instead of first asking whether a system understands, I would rather ask what capacity is at issue: Can it answer? Can it explain? Can it use the idea in a new situation? Can it recognise the same structure under a different surface? Can it notice failure and revise itself? Is there experience behind the behaviour?

The usual contrast between correlation and causation has a similar problem. People often say that machines learn correlations while humans understand causes. There is something useful in the distinction, but it is too clean. Humans also begin with regularities. We notice that events occur together and form expectations. A regularity may then become an assumption, guide action, meet resistance from the world, and be corrected, refined, or abandoned. That movement from pattern to use, failure, and revision may be more informative than treating understanding as one final property.

Similar outward behaviour is therefore not enough. Two systems may answer the same question correctly while depending on different processes. One may transfer while another breaks. One may revise after an error, while another repeats a familiar pattern in a new surface form. Calling both cases understanding too quickly removes the difference I want to study. I would rather keep the word open until the capacities beneath it have been separated. Only then can the larger question become less circular.

## Expression, Recording, and the Compressed Version of Thought

Fragments
Source ID fragments:expression-recording
Original https://www.henryw.me/#/fragments#expression-recording

When a thought is still in my head, it is usually not a complete sentence. It is closer to a mixture of feeling, direction, memory, and relations that I cannot yet explain. To express it, I have to choose words, divide what was mixed together, and put the parts in an order. This makes the thought available to other people and to my later self. Without expression, many thoughts would remain too vague to examine and too fragile to preserve.

Expression therefore gives thought a usable form, but it is not a neutral transfer. Language turns a continuous or layered state into a more discrete version. Mixed feelings become separate descriptions. Simultaneous relations are spoken one after another. Boundaries appear where the original state may not have contained clear divisions. The expressed version can be clearer and easier to work with while no longer being identical to what existed before the words.

Recording adds another change. A spoken thought can still disappear, but a written note persists as an object: a title, paragraph, file, or page that can be opened, quoted, revised, classified, and connected to other material. This is enormously useful. Writing means I do not have to reconstruct the thought from nothing each time, and it gives scattered ideas a chance to accumulate.

The difficulty is that the recorded version becomes the next starting point. When I return, I often continue from the sentence on the page rather than from the larger state that produced it. I explain the sentence, defend it, add distinctions to it, and let its wording suggest the next move. The thought may become more coherent while growing according to the shape of its record. The record preserves a path, but by making that path easy to re-enter, it can also make other paths less visible.

Different languages may cut the same material differently. This is not the simple claim that one language makes people more rational or emotional. It is that each language offers different distinctions, rhythms, and default ways of organising experience. Saying something in another language can therefore feel unlike merely translating a finished sentence. The original material has been divided and arranged again, and the later thought may continue from a different set of cuts.

AI mostly receives thought after these transformations have already happened. It can organise notes, identify repetitions, propose categories, and connect fragments, but it works on the material that reached language and recording. This can be genuinely useful, especially when I have accumulated more text than I can hold at once. I only need to remember that a clean organisation of the record is not the same as access to everything that produced it.

I therefore want to treat notes as handles rather than definitions. A handle lets me recover, move, and work with something that would otherwise scatter. It becomes a boundary when I assume the recorded version exhausts what the thought can be. Titles and categories are useful for retrieval, but they should not prevent a note about language from later connecting to memory, consciousness, identity, or something I have not yet named. I imagine the collection less as a set of finished boxes than as a graph that keeps acquiring and losing connections. I need the records because thought disappears without them, and I need to keep moving beyond the records because thought is larger than the version that survived.

## Rich Traces and Open Paths

Fragments
Source ID fragments:rich-traces-and-open-paths
Original https://www.henryw.me/#/fragments#rich-traces-and-open-paths

I often use voice input when I talk to AI. The obvious reason is speed. I can keep speaking before a thought disappears. But voice also preserves more of the process by which the thought is forming. A typed prompt is often already cleaned up. Before typing, I tend to choose a direction, remove hesitation, and turn the thought into something that resembles a well-defined request. That can be efficient, but it gives the model a thinner record of what was actually happening.

Voice is messier. I repeat myself, change direction, reject a phrase as soon as I say it, remember another example, and leave some relations unfinished. The transcript is not direct access to the original thought. Expression has already changed the state, and transcription changes it again. Still, it can preserve more false starts, emphasis, resistance, and uncertainty than a polished prompt. I think of it as a richer external trace, not as an unfiltered copy of the mind.

That richer trace gives AI more evidence about the path that produced the request. It can see which examples mattered, which formulations failed, and where I remained unsure. The structure it returns is therefore more likely to feel recognisable and easier for me to test against what I was trying to hold. This is not only a matter of answer quality. It also affects uptake. I can work with a reconstruction more easily when I can see how it connects to my own unfinished movement.

Not every uncertainty has the same source. Sometimes the task is already settled, as when I am polishing a message or expressing a claim whose role is fixed. More context simply helps the model produce the expected form. Sometimes the task only appears open because I supplied too little. A vague sentence invites a conventional frame, and the remedy is to add examples, rejected versions, background, and constraints. In both cases, richer input can make the answer converge.

The more interesting case is when the trace is already rich and the path is still not determined. The examples, failed formulations, doubts, and preferred directions may rule out many weak continuations without selecting one right continuation. This kind of uncertainty is not merely missing information. It may mean the inquiry still requires an organising judgment about which frame should hold it, which distinction should name it, which literature it belongs near, or which tension should remain unresolved. Research and creation often begin in this space.

AI can still help, but its role should change. Instead of closing the question immediately, it can make the remaining uncertainty more visible. It can show several paths, clarify how they differ, identify what each one preserves or loses, and bring in concepts I could not have produced alone. A useful interaction does not always remove uncertainty. Sometimes it increases resolution while leaving the decision open, so my judgment still has somewhere to enter.

The point is not simply to give AI more information. Richer traces help when the model is missing material that matters. But sometimes I can give it a detailed record and still not know which direction is right. In those cases, the uncertainty is not something I want the model to erase. It is part of what I still need to think through.

## Labels, Goals, and Rules as Ways of Shaping People

Fragments
Source ID fragments:labels-goals-rules
Original https://www.henryw.me/#/fragments#labels-goals-rules

If language can compress thought, labels can compress people. A person contains experiences, habits, desires, fears, abilities, contradictions, and tendencies that do not naturally arrive in neat categories. We are not born already divided into personality type, occupation, research direction, hobbies, values, and life stages. Those divisions are made later because a whole person is too complex to communicate each time.

The compression is useful. A label gives other people a rough entry point and gives me a way to gather scattered parts of myself. Saying that someone is a researcher, an introvert, a musician, or a certain kind of friend does not capture the person, but it makes some pattern easier to remember and discuss. A label works as a handle. The problem begins when the handle is treated as the whole person and the loss created by compression is forgotten.

A label does not remain a passive summary. Once repeated, it starts to affect what happens next. I may feel that because I am this kind of person, I should continue behaving in the expected way, protect the identity, or ignore parts of myself that do not fit it. Other people also respond to the label by changing their expectations, opportunities, feedback, and limits. Being seen as suited to something can bring more chances to practise it. Being seen as unsuited can remove those chances before the ability has had room to develop.

A feedback loop forms. Internal tendencies produce behaviour. The outside world compresses that behaviour into a label. The label changes the environment, and the altered environment shapes later behaviour and internal structure. This can help someone grow into a possibility that others recognised early. It can also trap someone inside an inaccurate version that receives enough reinforcement to become partly true. A label is therefore not only a description. It can become part of a person's training environment.

Goals have a related structure, but they are usually directed toward the future. I compress a possible future into a discrete statement such as “I want to become this” or “I want to achieve that.” The goal is not my whole life, yet it begins pulling present behaviour toward its shape. I change habits, practise abilities, choose opportunities, and interpret progress through it. A goal can organise action that would otherwise scatter, but it can also make me narrow myself around one stated future while overlooking directions that have not yet become visible.

Rules work differently. A label describes what someone is taken to be, and a goal describes what someone wants to become. A rule specifies what output is required or forbidden even when the person's existing impulses, habits, or judgment would produce something else. Laws, moral norms, politeness, institutional requirements, and family expectations often operate this way. Society cannot wait for every person's internal structure to align naturally, so it constrains behaviour first.

The same compliant behaviour can therefore come from different internal paths. One person may not have the prohibited impulse at all. Another may have it and override it through a rule. The final output looks the same, but the underlying systems are not. This does not make behaviour unimportant. Behaviour protects or harms people, and external constraints are often necessary. It only means that behaviour alone may not reveal what had to be controlled on the way to it.

Repeated override can also become training. A rule that first appears after an impulse may gradually enter earlier into attention and decision. It may become easier to apply, turn into habit, and eventually change which responses arise at all. But internalisation is not guaranteed or uniformly good. Some rules remain surface compliance, some reshape habit, and some alter judgment more deeply. Rules can protect people and create coordination, but they can also force people into unreasonable forms. Their effects depend on what they demand and how they are reinforced.

AI can participate in this process as another source of structure and feedback. It does not only organise my content. It repeatedly demonstrates a way of moving thought forward. Something vague becomes a list, the list becomes a framework, the framework produces next steps, and the result looks complete. This rhythm is useful, but it is also easy to internalise. If I work through it constantly, I may begin to feel that every thought should be classified quickly, named cleanly, and moved toward an output. AI is not forcing me, yet it can still shape what I experience as clear, logical, and finished.

This may be why being summarised can feel uncomfortable even when the summary is not obviously false. A summary creates a portable version of a person that other people can circulate and respond to. When the version is clear and coherent, it may become easier to look at the summary than to keep looking at the person. Being misunderstood is painful, but being understood through a convincing compression can be stranger. Something remains that resembles me while organising the important parts differently.

Labels, goals, and rules all simplify something more complicated so it can guide what happens next. That can be useful, but the simplification does not stay outside the person. It changes expectations, opportunities, habits, and sometimes the way the person understands themselves. I am interested in that return path, where a description or rule becomes part of the system it was meant to describe or guide.

## Memory Compresses Time, but the Self Is Changed by Passing Through It

Fragments
Source ID fragments:memory-time-self
Original https://www.henryw.me/#/fragments#memory-time-self

Life does not arrive already divided into chapters. While I am living it, one day follows another and many changes have no visible border. Only later do I describe one period as high school, another as university, one year as a turning point, or one city as the place where I changed. Memory helps create those divisions because it cannot preserve continuous life at the same resolution forever.

The compression seems to have a temporal gradient. Recent experience still carries temperature, tone, small details, and unresolved feeling. As time recedes, a year becomes a few scenes, a place becomes an atmosphere, and a relationship becomes a story I know how to tell. Distant life was not originally made of those keywords. Memory has folded many ordinary days into a smaller number of stages that are easier to hold.

This is useful. If every past moment remained equally vivid, moving through the present might become impossible. But compression also narrows. A year remembered as painful still contained ordinary afternoons and moments of humour. A city remembered as important also contained boredom, repetition, and tired days. Old photographs, messages, and notes can feel strange because they reopen details that no longer fit the cleaner version I later formed. They reveal that the period was messier and more alive than the chapter title suggests.

This makes me think of the self less as a fixed point and more as a trajectory. The version of me at each moment is not identical to the next, but the versions do not appear independently. Experience, memory, language, relationships, and bodily states update the system gradually. The future me is not a stranger who suddenly replaces the present one. He is what this current system becomes after passing through many small changes.

The path between two versions may matter more than their similarity. The person I was ten years ago and the person I am now may look quite different, yet each change grew out of what came before. Another person could know many of my memories without becoming me because they did not move through that sequence from the inside. Continuity may not mean preserving an unchanging core. It may be the particular way one state becomes another.

An old thought experiment makes this harder. Imagine a person in pain after a breakup. A pill could move him directly to the point at which the pain has passed. It would not erase the event or create a gap in his memory. Afterward, he would remember the entire period, believe that he had lived through it, and retain the same lessons and final state. Only the actual subjective passage through the pain would be absent.

My first instinct is to take the pill. If the result, memory, and sense of continuity are the same, why endure pain merely to say that it happened? Yet something still seems missing. Memory is a result available at the end, while experience is a process that changes a person moment by moment. Waking each morning, feeling the loss return, believing it has passed and then falling back again may alter attention, expectation, and feeling in ways that cannot be reduced to a final record.

I do not think pain is valuable simply because it is pain. The question is narrower. If the self is partly the path by which one state becomes another, can a perfect memory of that path replace having moved through it? The person after the jump knows the road and feels that he walked it, but he was not gradually changed by each step.

That is why I remain uncertain about the pill. I might still choose to avoid the pain. What bothers me is that the person who remembers the whole period may still not be quite the same as the person who actually passed through it. I am not sure whether memory can preserve that difference.

## Satisfaction Is Not a Fixed Reward

Fragments
Source ID fragments:satisfaction-signal
Original https://www.henryw.me/#/fragments#satisfaction-signal

I sometimes wonder whether happiness can be understood partly through satisfaction. This is not meant as a complete definition. Happiness may also involve meaning, relationships, value, security, and many other things. But satisfaction becomes more useful to think with once it is not reduced to immediate pleasure. It can come from eating something good, finishing a difficult task, delaying a reward, controlling an impulse, helping someone, finding a bargain, or feeling that I made a sound decision.

Delayed gratification is therefore not simply the rejection of satisfaction. A person may value the later reward, but may also gain something from waiting, planning, self-control, or becoming the kind of person who can keep a commitment. Immediate and delayed gratification can be different satisfaction curves rather than moral opposites. What appears more rational may itself feel satisfying because it produces a stronger, steadier, or longer-lasting return in that person's system.

I find it useful to think of satisfaction as an internal feedback signal, without claiming that it is one specific biological quantity. Activities can produce signals with different intensities, delays, durations, and meanings. The same activity can feel rewarding to one person and empty to another, or change for the same person across stages of life. The external behaviour alone does not reveal the return generated inside the person.

Buying discounted products is a small example. One person may see the search as wasted time because the money saved does not justify the attention spent. Another person may enjoy comparing options, waiting, finding the right moment, and feeling that resources were used well. The discount is then not only a financial outcome. The process itself produces a small sense of skill, control, and victory. For the first person, an hour of searching is mainly a cost. For the second, part of that hour is also the return.

This changes how I think about opportunity cost. Money and time matter, but the relevant alternative is also the satisfaction that another use of the time might have produced. A behaviour becomes rational or irrational partly through how it interacts with a person's goals, habits, attention, and interpretation. Calling discount hunting a game, a life skill, a burden, or a sign of scarcity does not change every objective fact, but it helps shape the psychological event the person is actually having.

Some forms of satisfaction may be trainable. Attention, progress, order, connection, or mastery can become part of what an activity gives back. Housework may produce a feeling of restored control. Exercise may become tied to rhythm and progress. Volunteering may create connection and value. The activity has not become effortless, but its internal return has changed.

Some conditions are simply damaging, and reinterpretation does not make poverty, illness, oppression, or chronic stress harmless. Strong stimulation can also change the system that receives it. When rewards arrive quickly and intensely, the old high point can become a new baseline, making ordinary experience feel flat and increasing the amount required for the same effect.

I increasingly think of satisfaction less as a fixed reward attached to an activity and more as something that changes with behaviour, timing, interpretation, and history. The same activity can return something very different to different people, or to the same person at different times. That makes me curious about how much of everyday satisfaction is something we can gradually learn to notice, shape, or build.

## Oysters and Black Truffle Toast at Queen Victoria Market

Fragments
Source ID fragments:queen-victoria-market-toast-oysters
Original https://www.henryw.me/#/fragments#queen-victoria-market-toast-oysters

Queen Victoria Market in Melbourne gave me one of those food memories I still think about after leaving the city. The oysters were fresh, cold, and clean, and a squeeze of lemon made the taste even sharper and clearer. The black truffle toast was unexpectedly good too. It was warm, rich, fragrant, and straightforward.

What fixes it in my memory is that I went with my sister on my last day of the Melbourne exchange. It was as much about the timing as the food, a final market morning and a final meal before leaving, something simple that ended up tied to the whole exchange. It is one of the things I still miss about Melbourne.

## Chaoshan Beef Hot Pot in Guangzhou

Fragments
Source ID fragments:guangzhou-chaoshan-beef-hot-pot
Original https://www.henryw.me/#/fragments#guangzhou-chaoshan-beef-hot-pot

When I travelled to Guangzhou with my father, we went for Chaoshan beef hot pot. The meal stayed with me partly because the food was good and partly because it became one of the moments attached to that trip with him.

I especially liked the beef balls and diaolong, a tender sliced cut commonly served in Chaoshan hot pot. The beef balls were springy and strongly beefy, while the diaolong was softer and cleaner in flavour. I usually ate both without dipping sauce because I preferred tasting the beef and broth directly rather than covering them with something stronger.

## AI-Generated Kitten Videos and Manufactured Cuteness

Fragments
Source ID fragments:ai-generated-kitten-videos
Original https://www.henryw.me/#/fragments#ai-generated-kitten-videos

I have seen a lot of AI-generated videos on social media where kittens interact with people, along with more surreal ones, like a plush watermelon being opened to reveal little kittens inside. I find them very cute, and clearly plenty of other people do too.

What interests me is not just that they are cute, but that they show generative content triggering real emotion. The kittens are not real in the usual sense, yet the videos still reach human perception through softness, smallness, eye contact, movement, care, and surprise, and those signals are enough to move people.

That is part of what interests me about this kind of content. The objects are synthetic, but the response they produce is not. The same mechanism can also be used more deliberately to steer attention or emotion, which makes the boundary between harmless manufactured cuteness and manipulation worth thinking about.

## A Conversation About Identity

Fragments
Source ID fragments:identity-interview-reflection
Original https://www.henryw.me/#/fragments#identity-interview-reflection

I once took part in an interview about identity and about growing up with a Taiwanese family background while living mostly in Shanghai. I had not planned to write about it publicly, but the conversation helped me organize a lot of scattered feelings that had sat in the background for a long time.

What I took from the conversation was not a dramatic conclusion but a quieter one. Identity does not have to be a single answer. It can be made of several layers at once, where I grew up, where my family comes from, the languages and habits that shaped me, the places that feel familiar, and the way I introduce myself in different rooms.

The interview helped me see that this is not really confusion so much as a layered structure, where different parts become more visible in different situations. Sometimes Shanghai is the most natural answer. Sometimes my Taiwanese family roots matter more, and neither cancels the other. The conversation gave me a calmer way to look back at my background without forcing it into one simple label.

## Napier Seaside with My Mother

Fragments
Source ID fragments:napier-seaside-with-my-mother
Original https://www.henryw.me/#/fragments#napier-seaside-with-my-mother

Napier seaside is one of the places I connect with my mother. She lives around Hastings and Havelock North, and when I went back to New Zealand she would sometimes drive me to Napier. It was not a big trip, just a short drive to the water.

I still remember it quite clearly: the car ride, the road, arriving near the sea, walking for a while, maybe not even talking much. It was ordinary, but it was one of the few things we did together there again and again.

My family's connection with New Zealand is a little scattered. My sister studied there, my mother stayed for her, and later that area became part of my mother's own life too. For me the country was never only a travel destination. It was also where part of my family was living without me. So when she drove me to Napier, it felt like I was briefly stepping into that part of her life.

I don't remember Napier as just a beautiful seaside so much as somewhere my mother brought me, and maybe that is enough.

## My Mother’s Cooking Across Places

Fragments
Source ID fragments:mothers-cooking-across-places
Original https://www.henryw.me/#/fragments#mothers-cooking-across-places

My mother has always been good at making food that is both healthy and genuinely good. When we were still living together in Shanghai, this felt completely normal. She cooked at home and I ate what she made, and at the time I did not think of it as anything worth remembering. It was just part of home.

Later, after life became more scattered and she spent more time in New Zealand, her cooking started to feel different. Visiting her there, a meal she had made was no longer just a normal meal; it became a small return to something familiar. The food itself matters, of course, usually clean, warm, and carefully made, but what I remember more is the continuity. The same person who cooked for us in Shanghai was now cooking in another country, at another stage of life, and the taste still carried something from before.

That is what makes it feel like home. Home is not fixed in one city or one apartment or one period of life; sometimes it shows up through a repeated act, someone still cooking for you and still caring whether you have eaten well. I do not get to eat my mother's cooking often now, and maybe that is why I notice it more when I do.

## Trying Golf with My Mother in New Zealand

Fragments
Source ID fragments:golf-with-my-mother-in-new-zealand
Original https://www.henryw.me/#/fragments#golf-with-my-mother-in-new-zealand

When I visited my mother in New Zealand, she sometimes brought me along to play golf. It is one of her hobbies, and I could tell she enjoyed the whole rhythm of it: the open grass, the slow walking, choosing a club, taking her time before a shot. It suited her.

I tried a few times, but I never felt I had much talent for it. I could hit the ball, just not the way good players do, where it lifts cleanly and draws a nice curve through the air; mine was usually more practical than pretty, and sometimes not even practical. Still, I liked going with her, not because I had suddenly taken to golf, but because it was something she had made part of her life there, and for a few afternoons I got to be inside it too.

## Racket Games with the SLR Lab

Fragments
Source ID fragments:slr-lab-racket-games
Original https://www.henryw.me/#/fragments#slr-lab-racket-games

One time the PI of our SLR Lab took me and another RA out to play badminton and table tennis. It was not a serious sports day. We played, missed shots, picked up balls, laughed a bit, and drifted between the two games in the slightly messy way small group outings usually go.

I liked it because it made the lab feel like more than papers, meetings, and tasks. Those things matter, but a lab also has a feeling to it, and you can tell whether people are just working in the same place or whether there is some actual warmth around the work. That afternoon tipped it towards the second, nothing dramatic, just a good lab atmosphere showing up on an ordinary day.

## The Sea in My Early Hong Kong Years

Fragments
Source ID fragments:kennedy-town-seaside-hku-years
Original https://www.henryw.me/#/fragments#kennedy-town-seaside-hku-years

I have not been to Kennedy Town's waterfront much lately, which feels strange because it was much more present during my first years at HKU. I lived closer to that side of the city then, and the sea was somewhere I could reach without turning the visit into a plan.

I do not remember every walk clearly now. Much of the routine has probably settled into a general feeling. Hong Kong can be dense, fast, and pressed together, and walking toward the water changed the scale of the city. The buildings ended, the space opened, and the movement of the sea gave my attention somewhere else to go. Part of the familiarity may also have come from New Zealand, where time by the coast was already tied to my mother and family.

What I remember is not one dramatic view, but the irregular waves, the space beyond the buildings, and the relief of reaching something wide at the edge of a crowded city. I do not live the same student rhythm now, and I visit less often, but when I think of my early years in Hong Kong, the sea remains somewhere in the background.

## Ferry Rides Across Sydney Harbour

Fragments
Source ID fragments:sydney-harbour-ferry-rides
Original https://www.henryw.me/#/fragments#sydney-harbour-ferry-rides

One of my strongest memories of Sydney is not standing at a landmark but moving through the harbour by ferry. The public ferries were inexpensive, so we used them repeatedly to travel between different stops. Seeing the city from the water made it feel less like a fixed map and more like a sequence of changing views.

Some routes passed the Opera House and Harbour Bridge, where the city looked as beautiful as its photographs suggest. Other stretches were quieter, with residential neighbourhoods and houses close to the water. On one evening ferry, commuters in work clothes left the boat in an orderly line and walked home along the harbour. For a moment I felt as though I were watching someone else's ordinary routine from outside. Work in the city, a ferry across the water, and home at the end of the route.

Sunset brought the bridge, Opera House, water, and light into the same moving scene. What I remember most is that movement rather than one perfect viewpoint. The ferry let the city change gradually around me, one shore and one crossing at a time.

## Gold Coast, Water, and the City Line

Fragments
Source ID fragments:gold-coast-water-and-city-line
Original https://www.henryw.me/#/fragments#gold-coast-water-and-city-line

Gold Coast is one of the places where I remember the sea as something I entered rather than only looked at. We went kayaking, jet skiing, snorkelling, and parasailing. What I remember most is the physical side of it, especially the speed, wind, noise, and the feeling that the water had moved from the background into the activity itself.

I also remember going up to an observation deck and seeing the coast from above. The city looked like a long line pressed against the beach, with towers, sand, water, and sunlight arranged beside one another. In many cities the waterfront feels like one district among others. On the Gold Coast, the whole urban shape seemed organised around the edge of the sea.

I liked the combination of density and holiday atmosphere. It was possible to stand inside a high-rise city while still feeling that the beach determined its rhythm. When I think of the Gold Coast now, I remember both being carried across the water and later looking down at the same coastline from high above.

## A Road Trip Along the Great Ocean Road

Fragments
Source ID fragments:great-ocean-road-melbourne-friends
Original https://www.henryw.me/#/fragments#great-ocean-road-melbourne-friends

The easiest thing to say about the Great Ocean Road is that it was beautiful, but the road matters to me because of the people who took me there. During my Melbourne exchange, friends rented a car and brought us along. Without them, it might have remained a place I knew I should visit. Because of them, it became part of my life during that semester.

The day included long hours in the car, stops whenever someone noticed a view, photographs, conversation, tiredness, and the repeated decision to continue to the next place. A few months earlier, I had not known the people beside me. Exchange friendships can form quickly because everyone is living inside a temporary period and knows that the same arrangement will not last. Ordinary days together can therefore carry more weight than they seem to at the time.

The coastline kept changing through cliffs, open water, small stops, and famous viewpoints, but I do not remember the trip as one clean image. I remember the movement of the road, the car, the people, and the feeling that Melbourne had become more than a university term. When I think about the exchange, that day is part of why Melbourne feels like more than a university term.

## A Birthday Somewhere Along Taiwan’s East Coast

Fragments
Source ID fragments:taiwan-east-coast-family-road-trip
Original https://www.henryw.me/#/fragments#taiwan-east-coast-family-road-trip

One of my happiest recent family memories is a road trip along Taiwan's east coast. It was the four of us, my father, my mother, my sister, and me. My father drove, and we made our way down the eastern side of the island, stopping in different places along the way. I do not remember every exact turn now, and maybe that is fine. What I remember most is the feeling of the four of us being together in one car.

That kind of full family time has become rare. Everyone is in different places now, with different lives and schedules, so when we are all together for a trip, even ordinary things start to feel memorable. The east coast had a lot of sea. We would drive, catch the water, stop somewhere, and sometimes find one of those small cafés near the coast, each with its own style, and sit down with a coffee, look out at the sea, and then keep going.

There was nothing dramatic about those stops, and that is exactly why I liked them. They were not arranged to become important memories. They became important because they were simple, repeated, and shared. My birthday fell somewhere inside the trip too, which made the whole thing feel warmer, not a formal celebration but a birthday folded into a moving family journey, somewhere between the sea, the road, and coffee by the coast. When I think back to it, I do not picture a single landmark first. I remember my father driving, the four of us together, and Taiwan's east coast passing by outside the window.

## The Tomatoes of August 29

Fragments
Source ID fragments:tomatoes-of-august-29
Original https://www.henryw.me/#/fragments#tomatoes-of-august-29

On August 29, I opened the fridge before leaving home and saw the tomatoes my father had given me two weeks earlier. We had met in Shenzhen while he was there for work. I had hesitated when he first offered them because I rarely eat fruit and always find washing it inconvenient. He listened, washed a box himself, and gave it to me ready to carry back to Hong Kong. Half of them were already gone. As I ate a few more, I suddenly realised that once I finished them, this small physical trace of the weekend would disappear. I took a photograph before eating the rest.

I first thought I was recording one ordinary detail. When I began speaking about it, the tomatoes opened the whole weekend again. On the first afternoon, my father had spent some time near Nantou Ancient City and was waiting for me at a Starbucks. I had meant to join him after lunch with a friend, but reaching the café required another stop or two on the metro, so we met at the station instead. It felt insignificant at the time. Later, I imagined that if I had gone, the café might have become somewhere I could return to on a difficult day. I could sit alone where we had once sat together, and the place would feel slightly less anonymous. Because I never went, it never became ours. Still, its absence remained. Sometimes what did not happen leaves its own location in memory.

The clearest image came from the end of the trip. We were taking trains in opposite directions. My father entered his carriage and waved to me through the glass. I watched him, but I did not wave back clearly. I had become conscious of the people around me and let that small self-consciousness interrupt something simple. Soon afterward, an unwelcome thought appeared. What if this were the last time we saw each other? I had no reason to believe it, yet the question gave the scene a frightening finality. For a while, I reduced the memory to one accusation. He waved, and I did not. When I let the whole scene return, I could also see that I had stayed there watching him until the train left. I had still been present for the goodbye.

Another detail returned later. On an earlier trip, I had told my father that his snoring made it difficult for me to sleep and that we should book twin beds. By the time we met in Shenzhen, he had remembered. When the hotel offered us a different room, the first thing he checked was whether it still had two beds. The sentence was small and practical. It moved me because I had never needed to remind him. The tomatoes carried the same kind of care. I had named a small difficulty, and he quietly removed it for me. I was trying so hard to preserve details about my father that I almost missed the evidence that he had been preserving details about me too.

When I tried to write the weekend down, the memories would not settle into a single feeling. Affection sat beside embarrassment. Gratitude kept turning into regret. The tomatoes led me back to the café I never entered, then to the station, then to the hotel room, then to the quiet realisation that my father had remembered something about me without being asked. I write to stay with all of these feelings, and the memory keeps changing each time I return to it.

The photograph still shows a few tomatoes in a box. It cannot contain the weekend or explain my relationship with my father. It gives me a way back into both. Someday another room, another train, or a small act of care may change what I notice in this story. On August 29, the tomatoes brought me back once. For now, that is where I am leaving them.

## Athens, Ruins, and a Rare Family Trip

Fragments
Source ID fragments:athens-ruins-and-family-trip
Original https://www.henryw.me/#/fragments#athens-ruins-and-family-trip

Our family trip to Greece stayed with me partly because the four of us rarely have two uninterrupted weeks together now. We spent most of the time around Athens, walking through the city, visiting historical sites, and eating together. The place felt different from cities I knew because the past was not contained in a museum. It remained visible in the stone, streets, and landscape around ordinary life.

The ruins were the clearest expression of that feeling. At the Acropolis, I was not only looking at an old building but standing beside something connected to a much longer line of human history. The columns, exposed stone, open air, heat, and scale made the site feel almost unreal. My mother especially liked the carved female figures used in place of columns. I did not retain the name at the time, but I remember their shapes standing against the sky.

The food kept the trip from feeling only grand or historical. I remember Greek salad, fried calamari, halloumi, and other simple meals after hours of walking. I mostly remember the combination of ancient places during the day, satisfying food afterward, and my family together throughout it. Greece made the world feel older and wider than the life I usually moved through.

## Swimming in the Mediterranean

Fragments
Source ID fragments:swimming-in-the-mediterranean
Original https://www.henryw.me/#/fragments#swimming-in-the-mediterranean

One of my clearest memories from Greece is swimming in the Mediterranean. We went out by boat, with the sun above us, open water around us, and my family nearby. The day did not have much of a plot, but it stayed with me more clearly than many carefully planned sights.

Before that trip, the Mediterranean had mostly been a name from maps, history, and photographs of Greece. Then I was in the water rather than looking at it from the shore. I think it was the only time I swam there, which may be why the memory feels so fixed. The place became physical rather than only visual. It had temperature, movement, distance, and contact with my body.

We spent time on the boat, rested in the sun, swam, and let the day pass without needing to make it mean anything. When I think of Greece, I remember the ruins and streets, but I also remember entering a sea that I had previously known only as a name.

## Rainy Days as Permission to Stay In

Fragments
Source ID fragments:rainy-days-permission-to-stay-in
Original https://www.henryw.me/#/fragments#rainy-days-permission-to-stay-in

I do not actually like rainy days that much. Rain is inconvenient. The ground gets wet, the sky turns grey, and going anywhere becomes a little more annoying. But there is one thing I do like about it, which is that it gives me a reason not to go out.

On a sunny day, staying inside can feel like wasting the day. Even if nobody says anything, there is a small pressure to do something, meet someone, walk somewhere, make proper use of the weather. Rain takes that pressure away. It makes staying in feel less like a personal choice and more like the natural thing to do, and the room becomes enough, not because I suddenly love being cooped up but because the outside has stopped demanding anything. So maybe it is not the rain I like, but the excuse it gives me.

## The Mental Map of a Small Room

Fragments
Source ID fragments:mental-map-of-small-room
Original https://www.henryw.me/#/fragments#mental-map-of-small-room

My mother sometimes says my room is messy, and she is probably not entirely wrong. From the outside it can look like things are scattered everywhere. But to me the room is not simply messy, because I usually know where everything is. There is a map of it in my head.

That map is not visible to anyone else. A book on one side, a cable somewhere else, a camera lens near the window, some small thing on the desk. It may not look organized in the usual sense, but I know the routes, and I know where my hand should go when I need something. That is why small rooms can feel intimate to me. In a small space every object is close enough to become part of the mental map. The room may be crowded, but it is navigable, with a kind of personal order that only fully makes sense from inside my own habits.

A larger space is more comfortable in an obvious way, but it can also feel less close, the things more spread out and the relationship between me and the objects around me less clear. So when I say my room is not really messy, I do not mean it is objectively tidy. I mean it has a structure I can feel, a little private, a little inefficient, maybe not very presentable, but still mine.

## My First Camera and Another Way of Seeing

Fragments
Source ID fragments:first-camera-another-way-of-seeing
Original https://www.henryw.me/#/fragments#first-camera-another-way-of-seeing

My Nikon Zfc was my first real camera. At the start I did not even need to go far. I would stand in the apartment and shoot through the small window, trying different angles and looking for things outside that I would not normally notice. After I got a longer lens it became even more interesting, since the lens could pull distant things closer and turn a random view out the window into something worth looking at.

That was probably when photography began to change my relationship with going out. The camera gave me a reason to walk more, to look around more, and later to travel with a slightly different kind of attention, not only going somewhere but also looking for frames. My mother has said that people should use their eyes to see the world instead of always taking photos, and I think she is right. There are things the eyes take in directly that a photo cannot replace, the scale of a place, the air, the movement, the feeling of being there.

But I think the camera offers another kind of seeing rather than a copy of the eyes. It cuts the world differently, notices details I might have passed over, and lets me return to a moment later and see it again from a distance. Sometimes a photo is valuable not because it is beautiful but because it proves I once looked at the world from that exact angle. That is what the camera gave me, not a replacement for experience but another layer of it.

## Music That Became More Spacious

Fragments
Source ID fragments:music-that-became-more-spacious
Original https://www.henryw.me/#/fragments#music-that-became-more-spacious

My music taste has changed quite a bit. In high school I was more drawn to music with strong rhythm, EDM and rap and beats that moved quickly and gave a direct kind of energy. I still understand why I liked it. That kind of music pushes you forward, and it is useful when you want intensity or speed or just a clear hit of momentum.

These days I find myself drawn to music that feels more spacious. Not music without rhythm, since rhythm still matters, but something slower, wider, and more atmospheric. Sometimes it is purely instrumental, and sometimes it still has lyrics, like Lana Del Rey's Young and Beautiful, where what I like is not only the words but the whole feeling behind them, the slow movement, the large background, the sense that the song opens up a space rather than just driving a beat.

I do not think this means my old taste was wrong. Different stages of life just seem to call for different sound structures. EDM still works for exercise, because the body wants energy and repetition, but when I am not exercising I usually want music that leaves me more room to think or feel. Maybe that is the change. I used to want music to move me forward, and now I also want it to give me space.

## Profile

CV
Source ID cv:profile
Original https://www.henryw.me/#/cv#profile

Fourth-year Applied Artificial Intelligence student at the University of Hong Kong. I’m interested in how people form and use knowledge, how representations and internal processes support behaviour in AI systems, and how learning and thinking change when people work with AI. At HKU’s SLR Lab, I build computational models of how people form learned representations and use them to transfer knowledge across related tasks. I am also a Cloud, Data & AI consulting intern at PwC, where I work on solution architecture and development of AI and data systems for financial-services and public-sector clients.

## Education

CV
Source ID cv:education
Original https://www.henryw.me/#/cv#education

University of Hong Kong Sep 2022 – Present BASc in Applied Artificial Intelligence Coursework across machine learning, deep learning, data science, algorithms, and the mathematics behind them. Dean’s Honours List, Student Peer Advisor, and Staff–Student Consultative Committee representative. University of Melbourne Feb 2025 – Jun 2025 Semester exchange, HKU Worldwide Student Exchange Optimisation, Machine Learning, Principles of Finance. Shanghai High School International Division Sep 2017 – Jun 2022 International Baccalaureate Diploma Computer science, mathematics, economics, physics. Led the Coding Club and co-founded the SHSID Musix Board.

## Experience

CV
Source ID cv:experience
Original https://www.henryw.me/#/cv#experience

Cloud, Data & AI Consulting Intern Jul 2026 – Dec 2026 PwC, Hong Kong Designed an AI-assisted Knowledge Management architecture that identifies gaps, acquires missing material and keeps technical guidance up to date. Built a structure-preserving RAG ingestion pipeline for complex documents and an LLM-assisted pipeline that recovers legacy ETL logic for data migration. Student Research Assistant May 2024 – Present Speech, Language & Reading Lab, HKU Built computational models of human learning and cognition, using behavioural data to study how learned representations support generalisation and transfer.

Digital Transformation Intern Jul 2024 – Dec 2024 HSBC, Hong Kong Consolidated multi-market product and distribution information, then built an Excel/VBA configuration engine that mapped insurance product specifications through business scenarios and decision tables to UI-component requirements. Web Developer, Digital Content Support Jun 2023 – Dec 2023 Kiwiview International Limited, New Zealand Designed, developed, deployed, and maintained the company website, and produced branding and content for travel programmes.

## Publications & Preprints

CV
Source ID cv:publications-preprints
Original https://www.henryw.me/#/cv#publications-preprints

Human-AI interaction and collaboration Humans Disengage, Reasoning Models Persist: Separating Difficulty Registration from Deliberation Allocation H. Wang Under review; arXiv:2606. 26502 Language models, behavior, and interpretability BRIGHT: A Realistic and Challenging Benchmark for Reasoning-Intensive Retrieval H. Yu ICLR 2025 Spotlight; arXiv:2407. 12883 Han-yu Wang (Henry) Last updated September 2026

## About Me

About
Source ID about:root:about-me
Original https://www.henryw.me/#/about

I'm Han-yu Wang, and you can call me Henry. I was born in Taiwan , grew up in Shanghai , and now study in Hong Kong .

I'm a fourth-year student majoring in Applied Artificial Intelligence at the University of Hong Kong. Alongside my studies, I'm currently working in AI consulting at PwC.

Across my studies and work, I'm drawn to things that are still taking shape. I like gradually finding and building structure as I understand them better.

In my Research , I work across human learning, AI models, and human-AI interaction. I study how people and machines learn from experience, how what they learn is represented and used, and how it shapes what they can do later. I also study what changes when AI becomes part of learning and thinking, including what a person notices, practises, understands, remembers, and decides, and how systems can be designed to support those processes.

I also spend a lot of time building things. I enjoy the open-endedness of it, especially when I can combine ideas, tools, and different parts of a system and see how the structure changes as I work. Some projects are small and personal, like a tool that watches outdoor sale pages and emails me when something I want appears. Others grow through work or research. At PwC, I have used AI to help people work with complex information, understand existing systems, and make better decisions.

The Builds page brings together projects from my work and coursework, along with things I have built on my own and a few projects from secondary school. This website is one of them too. I have been using it to explore how AI can reorganise the same underlying material around what a visitor wants to understand, and how that same process can help me understand and record myself from different angles.

I like the open space by the sea. In Hawke's Bay , my mother would drive me to the coast near Napier . In Hong Kong , I spent time at Kennedy Town Praya during my early university years. When I travel, I also like taking ferries and walking along the waterfront.

I like travelling, and I often keep a photograph or a few notes from a trip. Looking back at them helps me remember the people I was with, how the place felt and what my life was like then.

As AI becomes part of how we write and remember, our own thoughts and the memories tied to people, places, and feelings seem especially worth keeping. I keep Fragments so that I can return to thoughts and memories that would otherwise fade.

## How I Research and Build

About
Source ID about:section:how-i-research-and-build
Original https://www.henryw.me/#/about#how-i-research-and-build

How we learn and think In my Research , I work across human learning, AI models, and human-AI interaction. I study how people and machines learn from experience, how what they learn is represented and used, and how it shapes what they can do later. I also study what changes when AI becomes part of learning and thinking, including what a person notices, practises, understands, remembers, and decides, and how systems can be designed to support those processes. Things I build I also spend a lot of time building things. I enjoy the open-endedness of it, especially when I can combine ideas, tools, and different parts of a system and see how the structure changes as I work. Some projects are small and personal, like a tool that watches outdoor sale pages and emails me when something I want appears. Others grow through work or research.

At PwC, I have used AI to help people work with complex information, understand existing systems, and make better decisions. The Builds page brings together projects from my work and coursework, along with things I have built on my own and a few projects from secondary school. This website is one of them too. I have been using it to explore how AI can reorganise the same underlying material around what a visitor wants to understand, and how that same process can help me understand and record myself from different angles.

## Outside work

About
Source ID about:section:outside-work
Original https://www.henryw.me/#/about#outside-work

I like the open space by the sea. In Hawke's Bay , my mother would drive me to the coast near Napier . In Hong Kong , I spent time at Kennedy Town Praya during my early university years. When I travel, I also like taking ferries and walking along the waterfront. I like travelling, and I often keep a photograph or a few notes from a trip. Looking back at them helps me remember the people I was with, how the place felt and what my life was like then. Travels Follow the places I've lived in, travelled through, and remembered As AI becomes part of how we write and remember, our own thoughts and the memories tied to people, places, and feelings seem especially worth keeping. I keep Fragments so that I can return to thoughts and memories that would otherwise fade.

## Say Hello

About
Source ID about:contact
Original https://www.henryw.me/#/about#say-hello

If you want to get in touch, I'd be glad to hear from you.

For personal messages, write to me at whenry6688@gmail.com (mailto:whenry6688@gmail.com).

For academic matters, reach me at henry.why@connect.hku.hk (mailto:henry.why@connect.hku.hk).

## Why SlidePoise

SlidePoise
Source ID slidepoise:purpose
Original https://www.henryw.me/slidepoise/#why-slidepoise

Agentic slide generation needs both freedom of layout and control over the final deck.

Fixed templates keep layouts consistent, but restrict how content can be presented. Image generation allows freer design, yet leaves the work of maintaining consistency and turning those designs into accurate, editable slides.

SlidePoise gives that creative process a structured workflow, supported by tools for visual measurement and PowerPoint construction. A shared content plan, style and asset library guide the Agent as it develops designs, builds editable slides and reviews the resulting deck.

## How SlidePoise works

SlidePoise
Source ID slidepoise:philosophy
Original https://www.henryw.me/slidepoise/#philosophy

The Agent plans what the presentation should communicate and how the slides fit together. An image model explores layouts using that content, your style references and selected assets. To turn a chosen design into PowerPoint, the Agent identifies its objects and their relationships while local tools measure their geometry. The Agent reviews the rendered slides against the plan and corrects problems in content and appearance.

The Agent plans each slide’s message and supporting content, then sends that plan to the image model with style guidance and reference images. The model can explore how to arrange the content without following a fixed layout. Open the sample plan to see the content and instructions used to generate the design.

Once a design is chosen, its contents need to become PowerPoint objects. The Agent identifies what each element represents and which elements belong together. In this example, the bars, labels and values form one chart. OpenCV, a computer-vision library, measures its geometry so the renderer can rebuild it as an editable chart linked to its data.

During reconstruction, the Agent also corrects problems in the generated image, such as arrows that connect the wrong objects or overlapping text. It checks the rebuilt slides against the brief and reviews alignment, typography and colour across the deck.

Asset libraries give the Agent a consistent set of icons, logos and PowerPoint components to draw on. It selects relevant files for each slide and includes them as references for image generation. During reconstruction, it places the original files in PowerPoint. Choose an example to see the selected icons, then inspect an icon to find it on the slide.

The Agent searches for relevant icons and chooses outline or filled versions to suit the slide.

The Agent finds images and logos, checks that they match the requested subject and reviews their usage terms.

Create a Library Set with your Agent to make your own logos, images and PowerPoint components available for future presentations.

Small illustrations can lose detail when generated as part of a full slide. The Agent can regenerate an illustration at higher resolution with a transparent background, then check it against the original design before placing it in PowerPoint. Drag the divider to compare the initial illustration with the regenerated version.

Tell your Agent who the presentation is for, what it should communicate and which material to use. You can review the plan and designs together or ask it to work independently. Expand a stage below to inspect the plans, designs and review records from the selected sample.

## Places and moments

About
Source ID about:gallery
Original https://www.henryw.me/#/about#showcaseimages

A gallery of places and moments from Henry's travels and everyday life.

## What Henry is currently doing

Home
Source ID home:currently
Original https://www.henryw.me/#/home#story-now

Henry is developing SlidePoise, an open-source agentic slide generation framework for planning presentations, exploring slide designs and reconstructing them as editable PowerPoint. Henry is developing AI × Self, a personal archive that lets visitors connect his work, ideas and experiences through their own questions. Each View composes a perspective with original sources. The Gallery brings these readings together as exhibitions to explore and share. Henry is currently a Cloud, Data & AI consulting intern at PwC in Hong Kong, where he designs and evaluates AI systems for financial services and public sector work. Henry is currently based in Hong Kong.

Henry is currently developing Early Epistemic Settlement in AI-Assisted Writing, a research project about how an AI-supplied structure can meet a passage’s current demands while the writer’s own work towards a resolution remains unfinished, and how this changes what they can defend or develop later. Henry recently wrote The Projection of Thought, a fragment exploring how expression projects layered and moving thought onto the flatter surface of language, which then guides later thinking.