2026
- 2026-01-08Architectural and Algorithmic Strategies for Token Conservation in AI-Assisted Development
- 2026-01-08AI Frontiers, part 59: Model routing — choosing a model per request, and proving it works
- 2026-01-10DotNetCode, part 7: One MCP tool library, three hosts — WebApi, Azure Function, and .NET Framework 4.8
- 2026-01-13React.js, part 16: Suspense boundaries in production — streaming, nested fallbacks, and error recovery
- 2026-01-15AI Frontiers, part 19: KV-cache engineering — the memory wall of long context
- 2026-02-03DevOps on Google Cloud, part 6: One batch — the whole stack in Terraform
- 2026-02-05AI Frontiers, part 60: Continuous evaluation in production — drift, regressions, rollbacks
- 2026-02-10Messaging in .NET, part 2: Redis Streams, or the message log you may already be running
- 2026-02-17Cross-Checking with AI
- 2026-02-24Stripe in C#, part 6: Webhooks — every case, one endpoint (signatures, catalog, idempotency, retries)
- 2026-02-24React.js, part 17: startTransition with async functions and the useEffectEvent escape hatch
- 2026-02-24Rust, part 14: The 2025 releases — let chains, 1.9x, and a year of small wins
- 2026-03-05AI Frontiers, part 61: Retrieval at scale — sharding, freshness, and cache invalidation
- 2026-03-19AI Frontiers, part 20: The RAG-to-agentic-RAG evolution
- 2026-04-09AI Frontiers, part 62: Human-in-the-loop design — review queues and trust calibration
- 2026-04-14React.js, part 18: Testing modern React — React Testing Library, Vitest, and queries that survive refactors
- 2026-04-18DotNetCode, part 8: A React SPA and an ASP.NET Core API in one repository
- 2026-04-22Modernizing Legacy Architectures
- 2026-05-07AI Frontiers, part 63: Interoperability — standards, protocols, and portable context
- 2026-05-16Use AI in .NET Projects: automating RMA troubleshooting with a safely scoped agent
- 2026-05-21AI Frontiers, part 21: Synthetic data and the model-collapse debate
- 2026-06-04AI Frontiers, part 64: The economics of applied AI — where the margin actually is
- 2026-06-09React.js, part 19: The React Compiler in production — the eslint plugin, bailouts, and measuring the win
- 2026-06-30Autonomous Execution Loops in Modern AI Agents
- 2026-07-02AI Frontiers, part 65: A field guide to shipping AI systems — what I would do differently
- 2026-07-09AI-Enabled RMA, part 1: The AI advises, the policy decides
- 2026-07-11DotNetCode, part 9: UnifiedShopping — a full-stack e-commerce sample with web, admin and mobile
- 2026-07-16AI Frontiers, part 22: Constitutional AI and scalable oversight
- 2026-07-23AI-Enabled RMA, part 2: Eight projects, one dependency rule
- 2026-08-06AI-Enabled RMA, part 3: The policy evaluator — nine rules, a rule trace, and the money
- 2026-08-20AI-Enabled RMA, part 4: Retrieval and the lockdown — BM25, scope gating, and untrusted output
- 2026-09-10AI-Enabled RMA, part 5: One policy, three hosts — the MCP tool server
- 2026-09-12The Illusion of Autonomy
- 2026-09-15React.js, part 20: Where React is heading — the Activity component and rendering what is offscreen
- 2026-09-15Rust, part 15: The state of Rust today — 1.98, the supply chain, and the borrow checker's next act
- 2026-09-17AI Frontiers, part 23: Where the frontier goes next
- 2026-09-29AI-Enabled RMA, part 6: The wizard end to end — state, paid repairs, and the tests
- 2026-09-29AccessToBlazer: converting a classic Access database to a Blazor Server app
- 2026-09-29IBE Barcode Studio: from commercial Windows app to a free, open-source barcode toolkit — and how to use it
- 2026-09-30Messaging in .NET, part 3: Kafka and RabbitMQ side by side, or a queue is not a log
2025
- 2025-01-16AI Frontiers, part 13: DeepSeek-V3 and the cost-efficiency shock
- 2025-01-18DotNetCode, part 3: CleanValidation — input parsing that never throws
- 2025-01-21Rust, part 12: serde and the derive ecosystem
- 2025-01-22AI fundamentals, part 6: Evaluation — measuring what models can do (and how benchmarks lie)
- 2025-02-04React.js, part 12: React 19 Actions and useActionState — the form lifecycle, finally built in
- 2025-02-06AI Frontiers, part 48: Fine-tuning versus prompting — the decision nobody makes explicitly
- 2025-02-18DevOps on AWS, part 6: One batch — the whole stack in Terraform
- 2025-03-06AI Frontiers, part 49: Agent observability — tracing, replay, and debugging loops
- 2025-03-20AI Frontiers, part 14: The agentic coding turn — from autocomplete to teammates
- 2025-04-03AI Frontiers, part 50: Inference cost engineering — caching, routing, and unit economics
- 2025-04-12DotNetCode, part 4: Terraform for a production-shaped Azure site
- 2025-04-22React.js, part 13: useFormStatus and pending states — a submit button that cannot double-submit
- 2025-04-24AI Frontiers, part 51: The evaluation of agents — tasks, traces, and cost-aware scoring
- 2025-05-13Rust, part 13: Rust 1.85, edition 2024, and async closures
- 2025-05-14AI fundamentals, part 7: Alignment — RLHF and why models behave (mostly)
- 2025-05-15AI Frontiers, part 15: Computer use and GUI agents
- 2025-06-05AI Frontiers, part 52: Long-context retrieval — position, recency, and what gets lost
- 2025-06-10Shopify in C#, part 6: Fulfillment in the GraphQL-first world — fulfillmentOrder, tracking, and the REST sunset
- 2025-07-03AI Frontiers, part 53: Reasoning distillation — putting thinking into small models
- 2025-07-05DotNetCode, part 5: Four Azure Function relays — Graph email, SmartyStreets, Shopify, Dataverse
- 2025-07-15Azure Functions on .NET 10: Why the isolated worker model is now the only story
- 2025-07-15React.js, part 14: ref as a prop, ref cleanup, and the refs you should stop writing
- 2025-07-15Messaging in .NET, part 1: Kafka, or how two programs talk without knowing each other
- 2025-07-17AI Frontiers, part 16: Test-time scaling and the reasoning models
- 2025-07-19Rethinking Systems Programming
- 2025-08-07AI Frontiers, part 54: Robotics and embodied models — the sim-to-real gap
- 2025-08-21Tracking packages by API: FedEx, UPS, DHL, USPS — and the AliExpress/Temu carriers from China
- 2025-09-04AI Frontiers, part 55: Biology and protein models — what AlphaFold changed
- 2025-09-10The Model Context Protocol
- 2025-09-10AI fundamentals, part 8: From lab to product — context, tools, and failure modes
- 2025-09-18AI Frontiers, part 17: Quantization — running 70B on a laptop
- 2025-09-30React.js, part 15: Document metadata and stylesheets in React 19 — hoisting without a helmet library
- 2025-10-09AI Frontiers, part 56: Science with models — from conjecture to verification
- 2025-10-11DotNetCode, part 6: Verifying Stripe webhooks with hand-rolled HMAC
- 2025-11-06AI Frontiers, part 57: Security of agentic systems — permissions, sandboxes, and blast radius
- 2025-11-20AI Frontiers, part 18: Speculative decoding — faster inference for free
- 2025-11-26Retrieval-Augmented Generation
- 2025-12-04AI Frontiers, part 58: Data residency and sovereignty — where inference is allowed to run
2024
- 2024-01-04AI Frontiers, part 35: Mistral, Mixtral, and the efficiency-first open ecosystem
- 2024-01-16Node.js, part 22: require(esm) — the dual-package problem finally closes
- 2024-01-18AI Frontiers, part 7: The context window wars — from 4K to 200K (and the road to a million)
- 2024-02-08AI Frontiers, part 36: Benchmarks and contamination — measuring models honestly
- 2024-02-13React.js, part 8: Server Actions — forms that talk to the server without a fetch
- 2024-02-14AI fundamentals, part 3: Building a tiny GPT — the transformer block in NumPy
- 2024-02-17GoShop in Node.js: 40 endpoints, idempotency and a degraded mode
- 2024-03-07AI Frontiers, part 37: The long tail of licensing — what open weights actually permit
- 2024-03-19Stripe in C#, part 5: Refunds, disputes, and invoices — the money comes back
- 2024-03-19Rust, part 9: Send, Sync, and the future that isn't Send
- 2024-03-21AI Frontiers, part 8: Mixture of experts and the memory-feasible frontier
- 2024-04-04AI Frontiers, part 38: Training infrastructure — FlashAttention, FSDP, and the plumbing of scale
- 2024-04-23Node.js, part 23: Node 22 — WebSocket client, glob, and magic bytes
- 2024-05-02AI Frontiers, part 39: The GPU supply chain and the cost of a training cluster
- 2024-05-07React.js, part 9: Context without the re-render storm — splitting providers and stabilizing values
- 2024-05-11Serverless at scale on AWS: three Terraform + Lambda scenarios
- 2024-05-16AI Frontiers, part 9: Small language models — Phi, Gemma, and the desktop class
- 2024-06-06AI Frontiers, part 40: Data curation — deduplication, filtering, and why clean beats big
- 2024-06-19AI fundamentals, part 4: Scaling laws — the economics of intelligence
- 2024-06-25Rust, part 10: Cargo as a build system — features, profiles, workspaces, cross-compilation
- 2024-07-11AI Frontiers, part 41: Voice interfaces — ASR, TTS, and the latency budget
- 2024-07-18AI Frontiers, part 10: Multimodal turns one — vision, audio, and the GPT-4o moment
- 2024-08-01AI Frontiers, part 42: Evaluation-driven development — building your own test set
- 2024-08-10DotNetCode, part 1: One codebase, four frameworks — the multi-targeting idea
- 2024-08-20React.js, part 10: The React Compiler — what it memoizes, and when to stop hand-writing useMemo
- 2024-08-20Node.js, part 24: Graceful shutdown, structured logs, and the end of console.log in production
- 2024-08-21DevOps on Azure, part 6: One batch — the whole stack in Terraform
- 2024-09-05AI Frontiers, part 43: Embeddings as infrastructure — search, clustering, and drift
- 2024-09-19AI Frontiers, part 11: OpenAI o1 and inference-time compute
- 2024-09-25AI fundamentals, part 5: Inference — how an LLM writes one token at a time
- 2024-10-08Windows domains, part 6: NTLM retirement, Server 2025, and the passwordless endgame
- 2024-10-08Rust, part 11: unsafe, FFI, and the boundary to C
- 2024-10-10AI Frontiers, part 44: Synthetic preference data and the RLAIF flywheel
- 2024-11-02DotNetCode, part 2: ResilientSqlAccess — retry with backoff for SQL that blips
- 2024-11-07AI Frontiers, part 45: Structured output — schemas, grammars, and constrained decoding
- 2024-11-12React.js, part 11: useOptimistic — instant UI on top of a slow server
- 2024-11-27AI Frontiers, part 46: Small models on device — NPUs, memory budgets, and privacy
- 2024-12-05AI Frontiers, part 12: Model Context Protocol — plumbing for the agent era
- 2024-12-10DevOps on Google Cloud, part 5: Pipelines and observability — Cloud Build and the operations suite
- 2024-12-19AI Frontiers, part 47: Multi-agent systems — when decomposition helps and when it hurts
2023
- 2023-01-19AI Frontiers, part 1: Attention is all you need — reading the transformer paper five years later
- 2023-02-16AI Frontiers, part 24: The prompt is not the product — in-context learning and its limits
- 2023-02-21Node.js, part 19: The permission model — capability-based security for a process
- 2023-03-07Rust, part 5: Traits, generics and monomorphization — static versus dynamic dispatch
- 2023-03-12A cross-platform barcode scanner app with Ionic, Angular and TypeScript
- 2023-03-14React.js, part 4: Server Components arrive — the mental model behind the App Router
- 2023-03-30AI Frontiers, part 25: Instruction tuning — from FLAN to Alpaca
- 2023-04-13AI Frontiers, part 26: Hallucination — the failure mode that will not go away
- 2023-04-25DevOps on Google Cloud, part 4: VPC, service accounts, and Secret Manager — the security skeleton
- 2023-05-04AI Frontiers, part 2: GPT-4 and the emergent abilities debate
- 2023-05-18AI Frontiers, part 27: Alignment before the assistant era — RLHF and its discontents
- 2023-06-01AI Frontiers, part 3: LoRA and QLoRA — fine-tuning on a single GPU
- 2023-06-08AI fundamentals, part 1: From bytes to BPE — how language models read text
- 2023-06-13Node.js, part 20: A real CLI in one file — parseArgs, readline, and exit codes
- 2023-06-15AI Frontiers, part 28: Diffusion models — how image generation actually works
- 2023-06-17A Messenger-style chat UI with Blazor Server and SignalR
- 2023-06-20React.js, part 5: The use() hook and reading a promise in render
- 2023-06-20Rust, part 6: Lifetimes without the fear
- 2023-06-27DevOps on AWS, part 5: Pipelines and observability — shipping and watching
- 2023-07-06AI Frontiers, part 29: The open-weight leap — LLaMA, Alpaca, and the leak that built an ecosystem
- 2023-07-20AI Frontiers, part 4: Llama 2 and the open-weights turning point
- 2023-08-10AI Frontiers, part 30: Tool use arrives — function calling and the plugin experiment
- 2023-08-19Use Span in .NET to Achieve Higher Performance with Less Memory Usage
- 2023-08-30AI fundamentals, part 2: Attention — the idea that made transformers win
- 2023-09-03The Irony of Repatriation Rhetoric
- 2023-09-07AI Frontiers, part 31: AutoGPT and the first agent wave
- 2023-09-16GoShop: learning Go by building a 40-endpoint shopping backend
- 2023-09-21AI Frontiers, part 5: Retrieval-augmented generation before it was everywhere
- 2023-09-26React.js, part 6: useSyncExternalStore — connecting React to the world outside it
- 2023-09-26Node.js, part 21: Single executable applications — shipping a binary without Node
- 2023-09-26Rust, part 7: async Rust — futures, executors, and why there is no runtime in std
- 2023-10-05AI Frontiers, part 32: Serving is the product — PagedAttention and continuous batching
- 2023-11-02AI Frontiers, part 33: Mechanistic interpretability — looking inside the black box
- 2023-11-14Shopify in C#, part 5: Payments and refunds — transactions as the ledger, calculate-then-commit
- 2023-11-16AI Frontiers, part 6: Vector databases — the missing infrastructure layer
- 2023-12-05React.js, part 7: useDeferredValue and useId — the quiet hooks that fixed real bugs
- 2023-12-07AI Frontiers, part 34: Prompt injection — the vulnerability class nobody can patch
- 2023-12-09Realtime pages with Blazor and SignalR in .NET 10
- 2023-12-12Rust, part 8: async fn in traits arrives (1.75), and what four years of workarounds cost
2022
- 2022-02-20Rolling up car windows automatically: Arduino Nano meets the CAN bus
- 2022-03-15DevOps on Azure, part 5: Pipelines and observability — Azure DevOps and App Insights
- 2022-03-15Rust, part 1: Ownership, borrowing, and the cost model that replaces a GC
- 2022-03-192021日产经典轩逸加装定速巡航 中文
- 2022-03-192021日产经典轩逸车载天猫精灵及自制多口充电器GPS时钟 中文
- 2022-03-192021日产经典轩逸安装室外温度传感器 中文
- 2022-03-192021日产经典轩逸安装360全景环视系统 中文
- 2022-03-192021日产经典轩逸舒适版安装DA屏倒车摄像头前后雷达行车记录仪 中文
- 2022-03-212021经典轩逸安装钢油底壳 中文
- 2022-04-12React.js, part 1: The React 18 concurrent root — createRoot, automatic batching, and what actually changed
- 2022-04-19Node.js, part 16: Node 18 — global fetch, Web Streams, and the shrinking dependency list
- 2022-05-17Windows domains, part 5: Hybrid identity — Entra Connect, the PRT, and the seam between two worlds
- 2022-06-14Rust, part 2: Result, the ? operator, and errors a caller can act on
- 2022-08-09React.js, part 2: Why your effect runs twice in development (and what StrictMode is really telling you)
- 2022-08-09Node.js, part 17: The built-in test runner and watch mode
- 2022-08-16Shopify in C#, part 4: Orders and draft orders — reading the ledger, sending the invoice
- 2022-09-13DevOps on AWS, part 4: VPC, IAM, and secrets — the security skeleton
- 2022-09-27Rust, part 3: Iterators, closures, and what "zero-cost" really means
- 2022-10-11Stripe in C#, part 4: Checkout Sessions — the whole payment page, hosted
- 2022-11-15Node.js, part 18: Corepack — pinning the package manager instead of documenting it
- 2022-12-06React.js, part 3: Suspense and useTransition — keeping the UI responsive while data loads
- 2022-12-13Rust, part 4: Rust lands in the Linux kernel
2021
- 2021-01-24A WiFi Geiger counter on an ESP8266
- 2021-03-02Node.js, part 13: npm workspaces — a monorepo without adding a tool
- 2021-03-14Protecting a piano from dry air: an ESP8266 humidity controller
- 2021-04-20Shopify in C#, part 3: The GraphQL Admin API — one endpoint, variables, cost budget, and real customers
- 2021-04-22DevOps on AWS, part 3: Data — S3, RDS/Aurora, DynamoDB, and the caching layer
- 2021-05-02A GPS clock for the car that survives tunnels
- 2021-06-15Node.js, part 14: The profiler you already have — --cpu-prof, heap snapshots, and the flame graph
- 2021-08-15An audio spectrum display on ESP32/ESP8266: ADC speed meets the FFT
- 2021-09-28Node.js, part 15: diagnostics_channel — publishing what happens inside your app, without an event emitter
- 2021-11-09DevOps on Google Cloud, part 3: Data — Cloud SQL, Firestore, Cloud Storage, Memorystore
- 2021-12-07Stripe in C#, part 3: Customers, saved payment methods, and charging while they sleep
2020
- 2020-01-12A toolbox of Arduino libraries for ESP8266 projects
- 2020-02-11Node.js, part 9: Optional chaining and nullish coalescing — the defensive code you can delete
- 2020-02-16GarfieldXBM: bitmap icons for small monochrome displays
- 2020-04-05Patching the u8g2 ST7565 display driver for 'Mini 12864' panels
- 2020-05-19DevOps on Google Cloud, part 2: Compute — Cloud Run, GKE, and Cloud Functions
- 2020-05-26Node.js, part 10: AsyncLocalStorage — request-scoped context without threading it through every call
- 2020-05-30The Engine of Permanent Revolution
- 2020-06-21An ESP8266 RSS reader that shows news, weather and clock on a small LCD
- 2020-07-08DevOps on AWS, part 2: Compute — EC2, ECS/Fargate, and Lambda
- 2020-08-09Fetching weather on an ESP8266 with the WeatherAPI.com client
- 2020-08-18Node.js, part 11: fs.promises and AbortController — doing two things at once, then stopping one
- 2020-09-27A kitchen weather station: forecast, indoor climate and smoke alarm on one LCD
- 2020-10-18CaptionConverter: turning any subtitle file into scrolling lyrics
- 2020-10-27DevOps on Azure, part 4: VNet, managed identity, and Key Vault — the security skeleton
- 2020-11-10Stripe in C#, part 2: The PaymentIntent lifecycle — server, client, and 3DS without fear
- 2020-11-10Node.js, part 12: Top-level await — when a module is its own init sequence
2019
- 2019-02-03Driving a 16x2 character LCD over I2C with ESP8266 and Arduino
- 2019-02-05Node.js, part 5: ES modules arrive — import, export, and the interop rules
- 2019-03-24OpenSCAD: 3D modelling with code instead of a mouse
- 2019-05-19A math practice toy for kids, part 1: Plus and minus on a 16x2 LCD
- 2019-05-21Node.js, part 6: The EventEmitter — and the 'error' event that crashes your process
- 2019-06-04Windows domains, part 4: The feature arc — Server 2008 R2 to 2019
- 2019-06-22A math practice toy, part 2: Mixed questions and a score system on the Nano
- 2019-07-14Marlin firmware: inside the software that drives a 3D printer
- 2019-08-13Node.js, part 7: HTTP/2 in core — multiplexing, headers, and the end of the connection pool hack
- 2019-08-14DevOps on Azure, part 3: Data — Azure SQL, Cosmos DB, Blob Storage, and Redis
- 2019-08-20Stripe in C#, part 1: Keys, Stripe.net, and your first charge
- 2019-09-08A math practice toy, part 3: A 128x64 graphics LCD and bigger fonts
- 2019-10-12Classic PC Assembly Language: dissecting the DOS copy command
- 2019-10-22Shopify in C#, part 2: Customers done right — search, pagination by cursor, addresses, metafields
- 2019-11-16DevOps on AWS, part 1: The map — services and how they fit together
- 2019-11-17A math practice toy, part 4: WiFi clock, NTP time and auto-dimming on ESP8266
- 2019-11-19Node.js, part 8: Getting dependencies under control — lockfiles, npm ci, and audit
2018
- 2018-02-19Node.js, part 1: async/await without the callback pyramid
- 2018-05-14Node.js, part 2: util.promisify and living with callbacks
- 2018-06-10Maintaining a fork of the Cordova local-notifications plugin
- 2018-09-11Node.js, part 3: Streams, backpressure, and why pipeline() replaced .pipe()
- 2018-09-18Shopify in C#, part 1: The Admin API, a custom app, and your first customers
- 2018-10-14Fixing the PUYA flash chip crash on ESP-01 modules
- 2018-11-06DevOps on Azure, part 2: Compute — App Service, AKS, Container Apps, Functions
- 2018-11-27Node.js, part 4: Worker threads — real parallelism for CPU-bound work
- 2018-12-11DevOps on Google Cloud, part 1: The map — services and how they fit together
2017
2016
2015
2014
2013
2012
2011
2000