Two rotated ellipses crossing at four numbered points, with the coordinates of each point listed beside them

Intersection of Two Rotated Ellipses

Move two rotated ellipses and see where they cross, then the exact solution: from the ellipse equation to a quartic, solved with Ferrari’s method.

The top of the forecast report: a day ahead, the temperature forecast misses by 1.3 °C on average

Montréal Forecast Reliability

Thirty days of Montréal forecasts graded against the station next door. Temperature is 1.3 °C off a day ahead; seven in ten rain calls were false alarms.

Montréal outage statistics from the Hydro-Québec reliability report

Hydro-Québec Outage Analysis

Two months of Hydro-Québec’s public outage feed, graded: regional reliability, Montréal boroughs, ETA accuracy and causes. Interactive charts and map.

DOMIA architecture: the agent loop, its tools, and the drivers for web, mobile and desktop

6 min

Building an AI Agent for End-to-End Testing

Chat, function calling and the agent loop in Python, then DOMIA, the testing agent I built on Google ADK and Gemini, in three recorded runs.

Boarding pass barcode in dark mode: white bars on a black background

Why a Dark-Mode Boarding Pass Won’t Scan

Why barcode readers need a foreground-colour setting, and what happens at an airport gate when they don’t have one.

A circular saw blade with the arbor hole at its centre

4 min

Counting Saw Blade Teeth with Edge Measurement

Why scanning a circle around the arbor hole works on real images where thresholding doesn’t, and how the tooth spacing checks the count.

Illustration: pool schedules turned into a search index that feeds a chatbot’s cited answer

5 min

Building a Chatbot That Answers From Your Own Documents

A RAG chatbot over Montréal’s indoor pool schedules: one text file per pool, embeddings with LlamaIndex, a ChainLit chat and a link to the source.

Scatter plot of the failing case, with input data points and cluster centres marked

3 min

Finding an Infinite Loop in Scikit-Learn’s K-Means

An input that makes scikit-learn’s K-means loop forever: the bug in its empty-cluster handling, the report I filed, and the fix.

VMMap snapshot showing memory states as columns and memory types as rows

10 min

Windows Memory Management: Private Data, Stack, Heap and Mapped Files

Each memory state and type in a VMMap snapshot of a Windows process, with VirtualAlloc, file-mapping and std::vector examples.

Diagram of virtual memory mapped onto physical memory and the page file

4 min

Windows Memory Management: Virtual vs Physical

How the Windows Memory Manager separates virtual from physical memory, and a C++ tool that records where a process’s virtual memory goes over time.