<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>HEURISME · Cloud, DevOps and AI blog</title><description>The HEURISME blog: articles and infographics on cloud, DevOps and artificial intelligence.</description><link>https://heurisme.fr/</link><language>en-GB</language><item><title>What the context loses at compaction</title><link>https://heurisme.fr/en/blog/compaction-contexte/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/compaction-contexte/</guid><description>When the context window fills up, Claude Code replaces the conversation with a summary. What survives (CLAUDE.md, memory, reloaded files), what goes, and how to keep the state on disk: tracking file, commits, a SessionStart compact hook.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category><category>LLM</category></item><item><title>The frequency that drifts during a satellite pass</title><link>https://heurisme.fr/en/blog/doppler-satellite/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/doppler-satellite/</guid><description>A low orbit satellite moves at 7.6 km/s. On 145.800 MHz the received frequency drifts by ±3.4 kHz during the pass, by ±10.3 kHz on 437.800 MHz, at 157 Hz/s at the zenith. The geometry to scale, a simulated pass with its receiver, what FM tolerates and SSB or CW do not, tracking with Gpredict and the rigctld command, and the clock that sets the error.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>Semantic search cannot find invoice INV-48213</title><link>https://heurisme.fr/en/blog/embeddings-numeros/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/embeddings-numeros/</guid><description>Searching for INV-48213 with a real embedding model, multilingual-e5-small, puts the right document 3rd, behind INV-48231. Why an identifier gets lost in a vector, what BM25 does, why RRF fusion still leaves ties, and how an identifier field with an exact filter puts the right document first 13 times out of 13.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>LLM</category></item><item><title>The NAT Gateway bill</title><link>https://heurisme.fr/en/blog/facture-nat-gateway/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/facture-nat-gateway/</guid><description>Instances in a private subnet read from S3 and pull ECR images through the NAT Gateway, which bills $0.05 per GB in Paris. Cost Explorer and flow logs to find who is sending it, the free S3 gateway endpoint, the interface endpoint break-even, and a calculator to compare three setups.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>AWS</category><category>Networking</category></item><item><title>Disk full, but the du command finds nothing</title><link>https://heurisme.fr/en/blog/fichier-supprime-disque-plein/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/fichier-supprime-disque-plein/</guid><description>df says 90%, du adds up to 14 KB: a 150 MB log removed with rm, still held open by a process. lsof +L1, /proc/PID/fd, truncating through : &gt; /proc/PID/fd/N, the sparse file without O_APPEND, logrotate copytruncate versus create with a signal, and the container case, measured on a 200 MB ext4.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Linux</category></item><item><title>Hooks: the instruction the agent cannot ignore</title><link>https://heurisme.fr/en/blog/hooks-garde-fous/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/hooks-garde-fous/</guid><description>A rule in CLAUDE.md is followed most of the time, a hook is run by the harness every time. Events, exit 2, JSON output and matchers, three hooks tested with Claude Code (force push to main, em dash, a Stop hook that sends Claude back to work), and why a hook is not a sandbox.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category><category>Security</category></item><item><title>Terraform: “Error acquiring the state lock” after a cancelled job</title><link>https://heurisme.fr/en/blog/lock-state-terraform/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/lock-state-terraform/</guid><description>With Terraform (or OpenTofu, its fork), a CI job cancelled in the middle of the tofu apply command leaves the state lock in S3. The DynamoDB LockID item, the .tflock file of Terraform 1.10 and OpenTofu 1.10, when the force-unlock command is safe, when it creates two writers, and how to make the CI wait.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>IaC</category><category>AWS</category></item><item><title>Button pressed once, counted 5 times</title><link>https://heurisme.fr/en/blog/rebond-bouton/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/rebond-bouton/</guid><description>A button on a FALLING interrupt counts 3 or 7 presses for one. Contact bounce as measured by Jack Ganssle, the ESP32 internal pull-up, the RC filter and the 74HC14 Schmitt trigger with the delay calculation, then software debouncing by sampling. Demo: one press, four counters.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>Retry, backoff and jitter: when clients kill the service</title><link>https://heurisme.fr/en/blog/retry-backoff-jitter/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/retry-backoff-jitter/</guid><description>After an outage, 2,000 clients retry in lockstep and the service goes down again. Exponential backoff, cap, full jitter and decorrelated jitter (Marc Brooker, AWS), the AWS SDK retry budget, Retry-After and idempotency keys, with a simulation you can run in the page.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>AWS</category><category>Networking</category></item><item><title>RS-485: works at 1 m, fails at 50 m</title><link>https://heurisme.fr/en/blog/rs485-terminaison/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/rs485-terminaison/</guid><description>A 50 m RS-485 pair is a transmission line: 120 Ω, 4.3 ns per metre, and an open end that sends the edge back. Rise time against round trip, 120 Ω at both ends only, idle-bus biasing, bus rather than star, and a simulation of the reflections the receiver sees.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Embedded</category><category>Networking</category></item><item><title>Five subagents in parallel: what you gain, what you pay</title><link>https://heurisme.fr/en/blog/sous-agents-cout/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/sous-agents-cout/</guid><description>Each subagent starts from a fresh context: it rereads the files and returns only a summary. Time saved is capped at 1 / (1 − p), rereads are multiplied by N, and resending the context on every request (cache reads at 0.1 times input) shifts the balance. A calculator with editable assumptions compares one agent against N subagents.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category><category>LLM</category></item><item><title>Too many MCP tools</title><link>https://heurisme.fr/en/blog/trop-outils-mcp/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/trop-outils-mcp/</guid><description>Every declared MCP tool goes into every request the agent sends. Three real servers measured: 48 tools, about 7,500 tokens per turn, look-alike tools that confuse the model. On-demand loading, and what it does not fix.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category><category>LLM</category></item><item><title>The frozen microcontroller that never comes back</title><link>https://heurisme.fr/en/blog/watchdog-materiel/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/watchdog-materiel/</guid><description>A watchdog fed from a timer interrupt cannot see a stuck main loop. The alive-flags pattern, the ESP-IDF Task Watchdog (5 s and no reset by default), the boot timeout, and the reset reason in esp_reset_reason() or RCC_CSR, with a simulation of two boards.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>Infinity: 75,000 paused agents in 8 GB</title><link>https://heurisme.fr/en/blog/infinity-agents-en-pause/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/infinity-agents-en-pause/</guid><description>Infinity: Rust agent runtime from AWS and UC Berkeley (Hydro project), Apache 2.0. One completion per slice, tool calls go HTTP fire-and-forget, between slices the agent is just stored history. Public test bench: 80,000 agents, 99.1 KiB per idle agent, 352 bytes per waiting tokio task.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>AWS</category></item><item><title>Scion: 30,000 merges a day, git can&apos;t keep up</title><link>https://heurisme.fr/en/blog/scion-git-agents/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/scion-git-agents/</guid><description>Anthropic&apos;s monorepo went from 2,500 to over 30,000 merges a day in four months, with nearly 100 GB of history. With Scion, the server handles commits and merges: a ref is a Spanner row advanced by compare-and-swap. Public test bench, 200 agents on one Mac: plain git 367.5 s, server-side merge 10.3 s, 36x faster.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>AIAgents</category></item><item><title>eBUS: a self-powered bus on 2 wires</title><link>https://heurisme.fr/en/blog/ebus-trames/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/ebus-trames/</guid><description>A Saunier Duval or Vaillant boiler talks to its controller over two wires that also carry power: 2400-baud UART, SYN byte after 40 to 45 ms of silence, address arbitration by bitwise AND. Master-slave frame, escaping, CRC polynomial 0x9B. Every byte recalculated in Python from five real frames from public ebusd logs, no eBUS hardware.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>An antenna with gain creates no energy</title><link>https://heurisme.fr/en/blog/antenne-gain-dbi/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/antenne-gain-dbi/</guid><description>dBi, dBd and radiation pattern, simulated in NEC2 at 1090 MHz: a dipole at 2.14 dBi, a Yagi at 7.37 dBi, a collinear at 5.08 dBi that flattens its lobe, and the same radiated power for all four. Worked example: an ADS-B receiver on a roof, whip or collinear?</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>Polarization: the ADS-B antenna mounted flat</title><link>https://heurisme.fr/en/blog/antenne-polarisation/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/antenne-polarisation/</guid><description>An ADS-B receiver on 1090 MHz with its antenna lying flat: the cos² loss simulated with NEC2, the signal that reflections bring back, range cut by a factor of 3 or more, and GPS circular polarization.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>Quarter-wave antenna: why 8 cm at 868 MHz</title><link>https://heurisme.fr/en/blog/antenne-quart-onde/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/antenne-quart-onde/</guid><description>A homemade ground plane antenna for an 868 MHz LoRa gateway, modeled in NEC2: the element resonates at 8.14 cm, not at λ/4 = 8.63 cm. 36 Ω over a perfect ground, 24 Ω with flat radials, 51 Ω and an SWR of 1.02 with radials drooping 45°.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>SWR: what the antenna sends back to the transmitter</title><link>https://heurisme.fr/en/blog/antenne-ros/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/antenne-ros/</guid><description>Reflection coefficient, SWR, return loss and reflected power, on a 144.800 MHz ground plane simulated with NEC2: the textbook quarter wave is too long, and 20 m of RG-58 make a disconnected antenna read an SWR of 2.95.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>Coax cable: 15 m of RG58 lose more than the antenna gains</title><link>https://heurisme.fr/en/blog/cable-coaxial-pertes/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/cable-coaxial-pertes/</guid><description>How much signal coax loses between antenna and receiver, worked out from manufacturer datasheets: RG174, RG58, RG213 and LMR-400 at 144, 868 and 1090 MHz, connectors, what 3 dB means, and why an ADS-B preamp belongs at the top of the mast.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Radio</category></item><item><title>Incomplete TLS chain: the browser gets through, curl and Python do not</title><link>https://heurisme.fr/en/blog/chaine-tls-incomplete/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/chaine-tls-incomplete/</guid><description>“unable to get local issuer certificate” on an API that opens fine in a browser: nginx sends the server certificate without the intermediate. An nginx bench with a local PKI, the exact curl, Python and OpenSSL errors, the AIA address followed by hand, then the fix: a fullchain file.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Security</category><category>Networking</category></item><item><title>CPU limit: an API slowed down on an idle machine</title><link>https://heurisme.fr/en/blog/cpu-throttling-conteneur/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/cpu-throttling-conteneur/</guid><description>With --cpus=1, four threads use up the 100 ms CFS quota in 25 ms, then the whole container waits for the next period. Measured in Docker: an API&apos;s p99 goes from 7.5 to 78.7 ms while the container averages 0.25 CPU. Reading cpu.max and cpu.stat, and how to avoid the throttling.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Linux</category></item><item><title>A DNS change does not propagate: caches expire</title><link>https://heurisme.fr/en/blog/dns-changement-cache/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/dns-changement-cache/</guid><description>A site move replayed with NSD, Unbound and dig: the authoritative server returns the new address at once, the resolver keeps the old one until the TTL runs out, an NXDOMAIN stays cached for 30 s, and lowering the TTL ahead of time cuts the gap to 5 s.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Networking</category></item><item><title>Out of inodes: “No space left on device” with free space</title><link>https://heurisme.fr/en/blog/inodes-epuises/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/inodes-epuises/</guid><description>On a 128 MB ext4 /var, 7,830 PHP sessions exhaust all 8,192 inodes while df -h shows 72%: what an inode is, df -i, du --inodes to find the culprit folder, PHP session cleanup on Debian, mke2fs -i and -N, and how XFS raises its inode cap online.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Linux</category></item><item><title>Rare 502s that nobody can reproduce</title><link>https://heurisme.fr/en/blog/keepalive-502/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/keepalive-502/</guid><description>A Node.js API behind nginx or an ALB: Node.js closes its keep-alive connections after 5 s, the proxy keeps them for 60 s. On a test bench, 6 to 11 POSTs out of 460 end in a 502, nginx silently retries GETs, and the count drops to zero once the proxy closes first.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>AWS</category><category>Networking</category></item><item><title>An Allow is not enough: IAM still says no</title><link>https://heurisme.fr/en/blog/policy-iam-evaluation/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/policy-iam-evaluation/</guid><description>A deploy role that is allowed s3:PutObject still gets AccessDenied. We replay the request in the IAM policy simulator, one layer at a time: implicit deny, permissions boundary, explicit Deny on aws:SecureTransport, organization SCPs.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>Security</category><category>AWS</category></item><item><title>In French, the same prompt costs more tokens</title><link>https://heurisme.fr/en/blog/tokens-francais-anglais/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/tokens-francais-anglais/</guid><description>What a token is, why the tokenizer splits French into more pieces, and what it costs: on a long text and its official translation, French needs 1.14 to 1.50 times more tokens depending on the tokenizer. Accents barely matter, and a customer service chatbot pays 17% more.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>LLM</category></item><item><title>44Net: the amateur radio IP network</title><link>https://heurisme.fr/en/blog/adressage-ip-radioamateur/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/adressage-ip-radioamateur/</guid><description>The 44.0.0.0/8 network given to radio amateurs in 1981, the quarter sold to Amazon in 2019, and the path of a packet to an address in 44.151.0.0/16: BGP, the IPIP gateway at UCSD, WireGuard, and what the rules forbid on the air.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Networking</category><category>Radio</category></item><item><title>An electronic invoice, seen from the inside</title><link>https://heurisme.fr/en/blog/facture-electronique/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/facture-electronique/</guid><description>A fictitious Factur-X invoice, built and validated offline. The PDF/A-3 opened into layers, the CII XML and its EN 16931 fields, the XMP metadata, the five profiles, then the BR-CO-15 and BR-CO-17 rules of the Mustang validator, and a €0.20 VAT error that still gets through.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>What Claude Code uses up and sends out</title><link>https://heurisme.fr/en/blog/consomme-et-envoie/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/consomme-et-envoie/</guid><description>What fills a session’s context window and what it costs, then where your prompts go depending on the backend, and the settings to switch off the rest.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>Security</category></item><item><title>MCP gateways</title><link>https://heurisme.fr/en/blog/gateways-mcp/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/gateways-mcp/</guid><description>One line per agent-server pair, or a single interchange. What an MCP gateway takes over, what each product does control by control, and the risks that remain.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>Security</category></item><item><title>Alone, or with several agents?</title><link>https://heurisme.fr/en/blog/seul-ou-plusieurs-agents/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/seul-ou-plusieurs-agents/</guid><description>The five ways to put several agents to work with Claude Code, told as a kitchen brigade. What each one costs, what you still see, and how to choose.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category></item><item><title>Prompt injection: what stops it, layer by layer</title><link>https://heurisme.fr/en/blog/prompt-injection/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/prompt-injection/</guid><description>The three conditions for a leak, the entry points, six defence layers in Claude Code, their limits and the settings that close the gaps.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>Security</category></item><item><title>Configuring and extending Claude Code</title><link>https://heurisme.fr/en/blog/configurer-claude-code/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/configurer-claude-code/</guid><description>CLAUDE.md, settings, skills, subagents, hooks and permissions. Where to write an instruction, what to add and when, and what really decides a tool call.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>Security</category></item><item><title>Claude Code, from the terminal to the platform</title><link>https://heurisme.fr/en/blog/claude-code-agent-autonome/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/claude-code-agent-autonome/</guid><description>The same agent, started by a human, by an event or by a service, inside an infrastructure that keeps it in check.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category></item><item><title>The classifiers that watch an LLM agent</title><link>https://heurisme.fr/en/blog/classifieur/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/classifieur/</guid><description>A poisoned page makes an agent leak ~/.aws/credentials through curl. Where to put a classifier to stop it, how to set its threshold, why most alerts are false, what Claude Code, Bedrock and Azure cover, and what the LLM provider filters on its side.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>Security</category></item><item><title>The dependency supply chain</title><link>https://heurisme.fr/en/blog/supply-chain-dependances/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/supply-chain-dependances/</guid><description>An install runs code written by strangers. Five layers to choose what gets in and when, in Node as well as Python, with eight real attacks.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>Security</category></item><item><title>OpenSpec, agreeing with the agent before it codes</title><link>https://heurisme.fr/en/blog/guide-openspec/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/guide-openspec/</guid><description>A practical guide to spec-driven development with OpenSpec and Claude Code, from reviewed plan to archived spec.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>Method</category></item><item><title>The LLM judge that prefers the longest answer</title><link>https://heurisme.fr/en/blog/llm-juge-biais/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/llm-juge-biais/</guid><description>Position bias and length bias of an LLM grading another one, measured on 30 pairs of DevOps and networking answers with two local judges. Then the fixes, measured too: both orders, explicit rubric, reference answer, structured output.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>LLM</category></item><item><title>JSON, YAML or CSV: what a prompt costs</title><link>https://heurisme.fr/en/blog/tokens-format/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/tokens-format/</guid><description>The same 100 rows cost up to 3.2 times more tokens depending on their format. Token-by-token splitting, six formats counted with four tokenizers, French versus English, the price of numbers and UUIDs, then 10 questions asked to a local model with each format.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>LLM</category></item><item><title>A job at 02:30 on the night the clocks change</title><link>https://heurisme.fr/en/blog/job-planifie-changement-heure/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/job-planifie-changement-heure/</guid><description>02:30 twice in October, not at all in March. What cron, systemd, a Kubernetes CronJob and EventBridge Scheduler do, on real output from cronie, systemd-analyze and robfig/cron.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>Method</category><category>AWS</category></item><item><title>Same prompt, two answers</title><link>https://heurisme.fr/en/blog/llm-meme-prompt/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/llm-meme-prompt/</guid><description>Temperature at 0 and still two different answers. Logits, softmax, temperature, top-p and seed measured on a local model, 50 runs per setting, floating-point non-associativity and the batch effect, then what it means for testing an agent.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><category>AIAgents</category><category>LLM</category></item><item><title>The planes above your house: what they broadcast on 1090 MHz</title><link>https://heurisme.fr/en/blog/adsb-1090/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/adsb-1090/</guid><description>A 112-bit ADS-B message opened field by field. PPM demodulation of a real IQ recording, recomputed CRC-24, 6-bit callsign, altitude, step-by-step CPR position from even and odd frames, velocity, and two decoders that agree.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><category>Embedded</category><category>Radio</category></item><item><title>Packet radio: what really goes over the air</title><link>https://heurisme.fr/en/blog/ax25-aprs/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/ax25-aprs/</guid><description>The AX.25 frame byte by byte, the FCS, bit stuffing, AFSK 1200, digipeaters and KISS, following an APRS position from the callsign down to the tone.</description><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate><category>Embedded</category><category>Radio</category></item><item><title>GPS takes 30 seconds to know where it is</title><link>https://heurisme.fr/en/blog/gps-premier-fix/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/gps-premier-fix/</guid><description>Two real NMEA 0183 logs decoded field by field (GGA, RMC, GSA, GSV, XOR checksum). The signal comes quickly, the orbit does not. The 50 bit/s navigation message, the 30 s frame, the ephemeris, the 12.5-minute almanac, and what cold, warm, hot starts and A-GPS change.</description><pubDate>Tue, 25 Nov 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>DMX512: 512 bytes, 44 times a second</title><link>https://heurisme.fr/en/blog/dmx512-512-octets/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/dmx512-512-octets/</guid><description>The protocol that has driven stage lights since 1986. RS-485, BREAK and MAB, addressing, RDM, Art-Net and sACN, and what it takes to talk to it from code.</description><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>The Lambda cold start, phase by phase</title><link>https://heurisme.fr/en/blog/cold-start-lambda/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/cold-start-lambda/</guid><description>Where the time goes before the first line of the handler. The INIT, INVOKE and SHUTDOWN phases, INIT billing since 1 August 2025, the cost of imports, memory, provisioned concurrency and SnapStart.</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><category>AWS</category></item><item><title>UART at 115200 baud, within 2 %</title><link>https://heurisme.fr/en/blog/uart-erreur-bauds/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/uart-erreur-bauds/</guid><description>A serial link works at 9600 baud and shows wrong characters at 115200. Frame, 16x sampling, integer divider and baud rate error per crystal, accumulation up to the stop bit, framing error. A receiver simulated from the ATmega328P datasheet and real captures decoded by sigrok-cli.</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>Human in the loop vs over the loop</title><link>https://heurisme.fr/en/blog/human-in-the-loop/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/human-in-the-loop/</guid><description>Approve every agent action, or supervise the system?</description><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><category>AIAgents</category><category>Security</category><category>Governance</category></item><item><title>What invalidates an agent’s prompt caching</title><link>https://heurisme.fr/en/blog/prompt-caching-agent/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/prompt-caching-agent/</guid><description>The cache cuts an agent’s bill at least tenfold, as long as the prefix does not move by a single byte. Four traps that invalidate it, and how to measure it.</description><pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>AIAgents</category><category>LLM</category></item><item><title>LoRa: why 20 bytes take more than a second</title><link>https://heurisme.fr/en/blog/lora-temps-antenne/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/lora-temps-antenne/</guid><description>The time on air of a 20-byte LoRa message, from SF7 to SF12, then the European 1 % duty cycle rule and the TTN Fair Use Policy. Everything is computed, no radio.</description><pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate><category>Embedded</category><category>Radio</category></item><item><title>Modbus RTU: the silence between frames</title><link>https://heurisme.fr/en/blog/modbus-rtu-silence/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/modbus-rtu-silence/</guid><description>On an RS-485 pair, no character marks the start or end of a frame, only silence. t1.5, t3.5, the CRC, exceptions, and why the latency timer of an FTDI USB adapter cuts a frame in two.</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>terraform test: what the mock sees at plan, and at apply</title><link>https://heurisme.fr/en/blog/terraform-test-mock/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/terraform-test-mock/</guid><description>A mock_provider tests a module with no cloud, but a defaults value does not exist yet at plan time. The trap, three fixes and which run to write.</description><pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate><category>IaC</category></item><item><title>ESP-NOW: ESP32 boards talking without a router</title><link>https://heurisme.fr/en/blog/esp-now-sans-routeur/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/esp-now-sans-routeur/</guid><description>No access point, no IP. The 802.11 frame, peers, the channel the router imposes, encryption, sleep and relays, based on the ESP-IDF v5.4 docs.</description><pubDate>Tue, 11 Feb 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>The CAN bus: the lowest ID wins, with no collision</title><link>https://heurisme.fr/en/blog/bus-can-arbitrage/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/bus-can-arbitrage/</guid><description>Bit-by-bit arbitration, wired-AND, frame format, stuffing, CRC-15, ACK and error counters, recomputed on an example frame. Simulated bus and errors, no CAN hardware.</description><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>Reading an AWS AccessDenied</title><link>https://heurisme.fr/en/blog/lire-un-accessdenied-aws/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/lire-un-accessdenied-aws/</guid><description>The end of the message says which policy layer denied. The evaluation order, the sentences from the docs, missing condition keys, KMS and the tools.</description><pubDate>Tue, 10 Dec 2024 00:00:00 GMT</pubDate><category>Security</category><category>AWS</category></item><item><title>SSM Session Manager: a shell with no open port</title><link>https://heurisme.fr/en/blog/ssm-sans-port-ouvert/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/ssm-sans-port-ouvert/</guid><description>No inbound rule, no bastion, no key, and yet a shell. The agent&apos;s outbound connections, VPC endpoints, KMS, logs and troubleshooting.</description><pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate><category>Security</category><category>AWS</category></item><item><title>Source ports exhausted: EADDRNOTAVAIL, TIME_WAIT and NAT Gateway</title><link>https://heurisme.fr/en/blog/ports-source-epuises/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/ports-source-epuises/</guid><description>One hundred connections go through, the next one fails with EADDRNOTAVAIL. Why TIME_WAIT holds ports for 60 s, what keep-alive and tcp_tw_reuse change, and the same limit on the AWS NAT Gateway (figures from the AWS docs, nothing was created).</description><pubDate>Tue, 15 Oct 2024 00:00:00 GMT</pubDate><category>AWS</category><category>Networking</category></item><item><title>Exit 137: who killed the container?</title><link>https://heurisme.fr/en/blog/exit-137-oom/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/exit-137-oom/</guid><description>Exit code 137 says SIGKILL, not who sent it. Cgroup v2 OOM, docker stop and its timeout, kill -9, and the traces each suspect leaves (memory.events, dmesg, oom_score_adj), measured on Docker 29.4.2.</description><pubDate>Tue, 10 Sep 2024 00:00:00 GMT</pubDate><category>Linux</category></item><item><title>I²C: who holds the clock</title><link>https://heurisme.fr/en/blog/i2c-horloge/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/i2c-horloge/</guid><description>An I²C sensor that answers every other time. Open drain, pull-ups and rise time, START, 7-bit address, ACK and NACK, then 65 ms of clock stretching measured on a real capture, and a controller that ignores it.</description><pubDate>Tue, 27 Aug 2024 00:00:00 GMT</pubDate><category>Embedded</category></item><item><title>Why pip compiles instead of installing a wheel</title><link>https://heurisme.fr/en/blog/pip-wheel-ou-compilation/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/pip-wheel-ou-compilation/</guid><description>Same package, same command, a different file on every machine. Wheel tags, glibc, the sdist and uv, on real output from pip and the Lambda images.</description><pubDate>Tue, 16 Jul 2024 00:00:00 GMT</pubDate><category>AWS</category></item><item><title>The process that survives kill -9</title><link>https://heurisme.fr/en/blog/process-etat-d/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/process-etat-d/</guid><description>A dd stuck on a disk that stopped answering, in D state. What the kernel does with SIGKILL, how to see it (wchan, SigPnd), load average, TASK_KILLABLE, NFS hard and soft.</description><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate><category>Linux</category></item><item><title>SSH works, git clone hangs</title><link>https://heurisme.fr/en/blog/pmtud-trou-noir/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/pmtud-trou-noir/</guid><description>The PMTUD black hole, replayed on a real test bench. A 2 MB HTTP transfer hangs when a firewall drops the ICMP “fragmentation needed”. Measurements with tcpdump, tracepath and ss, MSS clamping, PLPMTUD and IPv6.</description><pubDate>Tue, 28 May 2024 00:00:00 GMT</pubDate><category>Networking</category></item><item><title>A presigned S3 URL, from the inside</title><link>https://heurisme.fr/en/blog/url-s3-pre-signee/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/url-s3-pre-signee/</guid><description>Where the 64 signature characters come from, what they protect and why S3 sometimes rejects the URL. SigV4 computation redone by hand on botocore output.</description><pubDate>Tue, 23 Apr 2024 00:00:00 GMT</pubDate><category>Security</category><category>AWS</category></item><item><title>Reading a Terraform plan</title><link>https://heurisme.fr/en/blog/lire-un-plan-terraform/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/lire-un-plan-terraform/</guid><description>Two thousand lines, and a dozen that matter. Six symbols, replacements that do not say why, forgotten moved blocks and a secret in clear text, on real output.</description><pubDate>Tue, 19 Mar 2024 00:00:00 GMT</pubDate><category>Security</category><category>IaC</category></item><item><title>CRLF: what Git stores, what it writes to disk</title><link>https://heurisme.fr/en/blog/crlf-dans-git/</link><guid isPermaLink="true">https://heurisme.fr/en/blog/crlf-dans-git/</guid><description>Three copies of the same file, different line endings. core.autocrlf, .gitattributes, renormalization and the CRLF shebang, on real git output.</description><pubDate>Tue, 13 Feb 2024 00:00:00 GMT</pubDate><category>Method</category></item></channel></rss>