Code, systems,
and ideas.
Writing about computer science, low-level systems, AI experiments, and things I've built.
AI and the changing structure of work
A conversation with Deepak Tripathi, who leads a Global Capability Center, challenged several of my assumptions about how organizations develop capability. Here is what the research says about where AI is actually putting the pressure.
BlogIf AI is replacing engineers, why are companies still hiring them?
The ATM was supposed to kill bank tellers. It didn't. Understanding why tells you more about AI and software engineering than most takes you'll read on LinkedIn.
BlogThe creative tools question
Anthropic joined the Blender Development Fund, the community pushed back, and BCON made it clear that AI in creative tools is no longer a hypothetical debate.
Introduction to AI Agents
What AI agents are, why they exist, and how to set up a local environment to start building them with LangChain and LangGraph.
Agents · Part 2LLM Clients and Chains
How to talk to LLMs from code — ChatOpenAI vs OpenAI, composing chains with LCEL, and the invoke, batch, and stream invocation patterns.
Agents · Part 3Chunking Strategies
How to break documents into retrieval-friendly chunks — fixed-size, structure-aware, language-aware splitting, and choosing the right chunk size.
Agents · Part 4Embeddings and Vector Databases
Turning document chunks into vectors, storing them in pgvector, and running similarity search to find relevant content at query time.
Type Qualifiers
The three C type qualifiers — const, volatile, and restrict — what they mean, and how to apply them to variables, pointers, and objects.
ArticleRFC
What an RFC is, how the RFC Editor works, the types of RFCs, the Internet standards track, and the tradition of joke RFCs.
ArticleProcessor Modes
Why grouping similar CPU instructions together improves performance by reducing mode-switching overhead, illustrated with the Pentium MMX example.
ArticleNull Pointer
Why NULL is reserved for pointer operations in C, how it is defined, and why mixing it with integer zero causes problems.
GDB step-by-step debugging
A practical walkthrough of debugging C programs with GDB — breakpoints, watchpoints, and reading stack frames.
TutorialWhat is GCC
The history of GCC — from Richard Stallman's original release to the EGCS merger, GPL licensing, and Windows support.
TutorialUsing GCC
How to compile single and multi-source C programs with GCC — object files, the -g flag, -c flag, -I flag, and PATH setup.
IBM 701 — The Speed Demon
IBM's first commercially available scientific computer, introduced in 1953 and born from the demands of the Korean War.
HistoryFortran (1957)
The world's first high-level programming language, created by John Backus at IBM to make programming accessible beyond assembly.
HistoryCOBOL (1959)
The business programming language born from a Pentagon-led collective effort, designed with "maximum use of Simple English" in mind.