writing
What put up a fight, and what came of it.
One subject per piece, written after the fact from a real case: what was tried, what held, and what was dropped along the way with the reason. With no case behind it, a piece stays in the drawer.
01contents
subject
year
period
2020202120222023202420252026
2026The grain of randomness: what decides a repetitionA generator of repeated fields is usually set with a single number, the quantity of randomness. It is the less decisive of the two. The one that decides the image is the level at which that randomness is injected, and it appears nowhere in the code.2026Gale-Shapley at the milonga: stable does not mean fairThe algorithm behind the 2012 Nobel prize guarantees that no couple will walk off the floor together. It guarantees nobody a dance. Between those two promises the gap is wider than it looks.2026Mathematics has no compilerFour mathematicians have opened a blog to say what AI is changing in their work. The discipline believes itself safe: it has proof and peer review. Yet the object is the one software builds, assembled step by step, and without any of what makes refusing free here. That refusal, not trust, is what explains how much I get done now.2026AI Act, Cyber Resilience Act, Résilience bill: the same missing inventoryThree European texts land on the same calendar and do not do the same thing to demand: one has just slipped by eighteen months, the next bites in six weeks, the third holds budgets back until it passes. What they ask for, though, looks very much alike.2026Astro: rules before pages, then publishingThe whole path, private repository included: design system first, implementation second, deployment on every push. With the five traps that actually bit, because none of them is in any documentation.2026Seeing a drawing inside outSeven old drawings lifted off their paper, then turned over. What the paper/ink switch reveals in a sixteenth-century sheet, and what it distorts: because a tool that reveals also distorts.2026Astro: from a CV to a static siteThe whole path, for an independent or an association: turning a profile and an idea for a logo into a site one person can maintain. The code matters more than the hosting.2026Time saved, strain, and who pockets the difference“It saves me time” is the most common sentence about AI at work and the least useful: it holds three. The first has a mathematical ceiling, the second can move the other way, and the third is not yours.2026Agent Skills, out of the clipboardThe instructions given to assistants have settled where nothing gets reviewed: in conversations and personal files. Getting them out does not need one more tool, but treating them like the rest of the code.2026Neither all salary nor all dividendsThe question an independent running a company settles once a year, usually by guesswork. The answer is at neither end: the curve has a peak, and it moves with the result.2026You are not taxed on what you withdrawThe question fits in a sentence: how much can I live on without eating into the capital? The French answer runs into a misunderstanding that costs in both directions: people expect to pay the headline rate, which applies to only part of the withdrawal.2026Two disciplines of lookingChess and drawing teach the same thing by two routes: recognising a configuration before calculating, and agreeing to calculate when recognition fails.2026Mathematics seen from the insideA research diary, a thesis on intuition, the history of a single number: three books that show the work rather than its conclusion. And five others, outside computing.2026TMDL in Fabric: two routes for the same fileNow that a semantic model is written as text, it can be reviewed and versioned like code. Two ways of deploying it remain, which do not cost the same and do not address the same teams.2026Through the tradesman’s entranceA bitter testimony, a television series and a comic. Three routes that carry science to people who will never read a proof, and what each one drops along the way.2026dbt exposures generated from TMDLThe dependency graph stops at the last table, while the question asked in meetings is always about what comes after. One repository and a text format are enough to extend it: provided it is generated and never hand-written.2025Choosing, rather than taking what comesTwo long engagements, and time between them to look at the practice itself. What rate, what refusals, which tools to keep for ten years.2025dbt-fabric called from a Fabric notebookAn integrated platform does not always offer a place to put a dbt project. dbt’s Python entry point provides one, provided you accept what is unusual about the arrangement.2025What is decided before the lineThree books that are not about the line but about what is settled before it: where you look from, what the form is made of, and how the darks gather. Nothing artistic about any of it.2024On what horizon to judge a systemA year spent from one client to the next. You see up close how an AI budget line is defended or collapses in committee, and on what horizon a system should be judged.2024PyMuPDF and pgvector: what the chunking decidesIn a retrieval-augmented chain, attention goes to the model. Quality is settled two steps earlier: in how a PDF is cut, and in what the extraction already lost.2024Polars and Delta from a Durable FunctionA transactional table format and a function you do not control sit badly together: one assumes a writer that lasts, the other can be replayed at any moment. What that imposes, and where the line falls.2023Deciding whether to buildThe year generative AI stops being a watch item and becomes a question asked in meetings, usually badly. And the year my place in those meetings changed.2023dbt under Airflow: one task per model, not one per projectA dbt project launched from an orchestrator usually fits in a single task. The graph on screen is then a lie, and a retry replays everything. What handing the graph back to the orchestrator changes, and what it costs.2023SageMaker and EMR from Airflow: an orchestrator that computes nothingA managed DAG has neither the memory nor the permissions to carry a training run. It triggers, it waits, it wakes somebody, and that last part is always written last, usually after the incident.2022Around the code, not inside itTwo client engagements in parallel for much of the year. What wears you down at that pace is never the model: it is the review, the estimate, the handover.2022Four feature flags, and how long they liveA classification that is not mine, and the question it leaves open: the date the flag goes away. With no written answer, it becomes part of the product.2022Celery and FastAPI: answering before the work is doneA server that processes an image during the request eventually falls over. Separating the acknowledgement from the work changes the nature of the failure, and raises three questions the synchronous version hid.2021A correct figure is not enoughJoining a consultancy teaches you quickly that the difficulty is not computing correctly but getting a figure accepted by a room that did not follow the computation.2020Searching by resemblanceIn 2020, comparing documents by their vectors meant assembling the chain yourself. The state of the art then, and what vector databases actually changed since.2020Two ways to open a nutThe chisel or patience: Grothendieck describes two approaches to a problem, and they do not cost the same. Choosing is not a matter of temperament.2020What lockdown left time to readA data warehouse, an economist and a psychologist. The year the time given back by the absence of commuting went into books.2020What wears a developer down, and what holds them upWhat draws people into this trade is well documented. What comes loose is less so, and gets mistaken for lost interest when it is something else. Three criteria account for most departures.2020Public figures do not make proofFrench open data is plentiful and free, which is what makes it misleading. What data journalism teaches an engineer, and the step almost nobody takes.2020What tidying does not settleThree method books read the same year, and their shared limit: they organise a stock, while the scarce resource is attention. What survives once that promise is removed.2020Negotiating scope, not priceFour traditions say the same thing about cooperation: the room for manoeuvre lies in what gets done, seldom in the amount. The position held since, and what it costs.2020A model that runs on the reader’s machineIn 2020 I ran recognition models inside a browser, for a reason that had nothing to do with performance. An openly dated retrospective: the technique has been replaced, the argument has not.2020A trade that found out it was a craftSoftware engineering started describing itself in workshop terms (code smells, refactoring, patterns) without deciding to. What that language lets you say about the trade, and what it does not buy back.2020Ten years before the trade had a nameFrom soil mechanics to data warehouses, a reading log kept since 2011 tells a decade in which the discipline named itself after the fact. What it shows, and what it hides.
