Changelog
A running log of new courses, articles, and site improvements
August 2026
- New blog: distributed-locking-redis-zookeeper-etcd — Redis Redlock vs ZooKeeper and etcd architectural comparison for distributed mutual exclusion, fencing tokens, and split-brain safety
- New blog: ai-assisted-code-review — Gemini Code Assist vs Claude vs GitHub Copilot for pull-request review, context boundaries, and severity-labeled false-positive control
- New blog: ai-chatbot-gemini — Building a Gemini-powered chatbot with conversation history, function calling, streaming replies, and stall recovery
- New blog: automate-docs-typedoc-mdx — Generating versioned API docs from TSDoc comments with TypeDoc and MDX, plus a CI gate on undocumented exports
- New blog: chatgpt-style-rag-langchain — A ChatGPT-style RAG chatbot with LangChain covering chunking, embedding consistency, retrieval, and grounded generation
- New blog: cloud-run-background-workers — Auto-scaling background workers on Google Cloud Run with Pub/Sub, concurrency, and idempotent message handling
- New blog: component-first-design-system — A component-first design system in React built on tokens, primitives, composed components, and patterns
- New blog: containerizing-legacy-nodejs — Containerizing a legacy Node.js app with multi-stage Docker builds vs Cloud Native Buildpacks and healthcheck design
- New blog: data-oriented-programming-typescript — Data-oriented programming in TypeScript with generics, discriminated unions, and exhaustive compile-time state checks
- New blog: deploy-multimodal-gemini-edge — Deploying multimodal Gemini models on edge devices, model-tier sizing, and the confidence-gated cloud fallback
- New blog: evolution-llm-apis — How LLM APIs evolved from single-string prompts to typed, tool-calling contracts across OpenAI, Anthropic, and Google
- New blog: feature-flags-firebase-remote-config — Feature flags with Firebase Remote Config: default values, percentage rollout, and the fetch-throttling kill-switch trap
- New blog: fencing-tokens-distributed-transactions — Fencing tokens for distributed locks: why a lease alone isn't exclusive and where the monotonicity check must live
- New blog: gemini-ai-firebase-functions — Calling the Gemini API from Firebase Cloud Functions with Secret Manager, App Check, and a cold-start timeout budget
- New blog: gemini-content-safety-filters — Gemini's built-in content safety filters, tuning safetySettings per harm category, and the false-positive problem in specialized domains
- New blog: gemini-sdk-generate-diagrams — Generating diagrams with the Gemini SDK by producing structured diagram syntax and rendering it deterministically
- New blog: high-performance-api-gateway — Anatomy of a high-performance API gateway: NGINX vs Envoy, retry budgets, and the retry-storm failure mode
- New blog: interactive-ai-diagrams — Rendering LLM-generated diagrams as interactive React graphs: streamed parsing, incremental layout, and click-to-expand
- New blog: knowledge-base-nextjs-mdx — Building a searchable Next.js knowledge base on MDX with content-as-data, static generation, and a client-side search index
- New blog: low-latency-multiplayer-webrtc — WebRTC data channels for multiplayer game state, NAT traversal via STUN/TURN, and client-side prediction
- New blog: migrate-mysql-to-spanner — Migrating MySQL to Cloud Spanner with zero downtime: schema translation, dual-write cutover, and the sequential-key hotspot trap
- New blog: multitenant-saas-gcp — A GCP blueprint for multi-tenant SaaS: silo vs. pool vs. bridge isolation, tenant resolution, and containing a noisy-neighbor failure
- New blog: observability-opentelemetry-gcp — Wiring OpenTelemetry into Cloud Trace and Cloud Monitoring through a Collector, GKE deployment shapes, and sampling cost control
- New blog: optimizing-lcp — Breaking Largest Contentful Paint into its four phases — TTFB, load delay, load time, render delay — and fixing the one that's actually slow
- New blog: prevent-cache-stampede-redis — Implementing Redis cache-stampede locks correctly: atomic SET NX EX, a Lua-scripted safe unlock, and the multi-node failure case
- New blog: optimizing-postgresql-query-execution-jit-pg-stat-statements — PostgreSQL query performance optimization with pg_stat_statements metrics, LLVM JIT compilation cost tuning, and parallel sequential scans
- New blog: optimizing-microservices-latency-ebpf-xdp-bpftrace — Microservice tail latency optimization with in-kernel eBPF tracepoints, XDP NIC driver packet filtering, bpftrace one-liners, and Parca continuous profiling
- New blog: building-vector-search-engines-faiss-milvus-qdrant — High-scale vector similarity search engines with FAISS GPU acceleration, distributed Milvus clustering, Qdrant Rust payload filtering, and PQ/SQ quantization
- New blog: implementing-rate-limiting-algorithms-leaky-bucket-token-bucket — API rate limiting algorithms with Token Bucket, Leaky Bucket, Sliding Window Counter, atomic Redis Lua evaluation, and HTTP 429 Retry-After headers
- New blog: securing-cloud-storage-s3-gcs-encryption-kms-iam — Enterprise cloud storage security in AWS S3 and GCP GCS, envelope encryption, KMS Customer Managed Keys, private VPC Endpoints, and WORM Object Lock
- New blog: building-high-throughput-event-streaming-apache-flink-spark — Real-time event stream processing with Apache Flink event-driven engine, RocksDB state backends, Chandy-Lamport checkpointing, and Spark Structured Streaming
- New blog: building-high-throughput-message-queues-apache-pulsar-kafka — Message queue architecture with Apache Pulsar vs Kafka, BookKeeper decoupled ledger segment storage, multi-tenancy, and low tail latency SLAs
- New blog: building-realtime-recommendation-systems-feature-store-feast — Real-time ML feature stores with Feast declarative feature views, Redis sub-5ms online feature serving, and point-in-time time-travel joins
- New blog: building-realtime-analytics-pipelines-apache-pinot-druid — Sub-second user-facing real-time analytics with Apache Pinot Star-Tree indexes, Apache Druid Roaring Bitmap segment compaction, and Kafka streaming ingestion
- New blog: implementing-distributed-caching-redis-cluster-memcached — Distributed caching architecture with Redis Cluster 16,384 hash slots, Memcached multi-threaded slab allocation, and atomic cache stampede locks
- New blog: implementing-database-connection-pooling-pgbouncer-hikaricp — Database connection pooling with PgBouncer transaction pooling, HikariCP lock-free JVM bytecode optimizations, and (CPU cores * 2) + 1 sizing math
- New blog: building-custom-kubernetes-controllers-kubebuilder-go — Custom Kubernetes Operators with Kubebuilder in Go, CRD struct annotations, idempotent Reconcile() control loops, informers, and envtest integration
- New blog: securing-microservices-mutual-tls-mtls-cert-manager — Mutual TLS (mTLS) microservice security with cert-manager automated X.509 certificate issuance, SPIFFE/SPIRE workload identities, and zero-downtime rotation
- New blog: building-event-driven-microservices-kafka-schema-registry — Event-driven microservices with Apache Kafka decoupled event streams, Confluent Schema Registry Avro contracts, and Dead Letter Queues (DLQ)
- New blog: building-high-performance-api-gateways-envoy-kong-apisix — High-performance API gateways with Envoy Proxy C++ Wasm extensions, Kong OpenResty Lua plugins, and Apache APISIX ETCD lock-free route hot reloading
- New blog: building-high-performance-search-meilisearch-elasticsearch — High-performance full-text search with Meilisearch LMDB memory-mapped search-as-you-type vs Elasticsearch Lucene inverted index sharding and hybrid vector search
- New blog: securing-api-gateways-oauth2-m2m-client-credentials — Machine-to-Machine (M2M) authentication with OAuth2 Client Credentials Grant, short-lived JWT tokens, API Gateway JWKS verification, and scope-based authorization
- New blog: implementing-event-sourcing-cqrs-framework-go — Event Sourcing and CQRS pattern in Go, append-only PostgreSQL JSONB event stores, optimistic concurrency versioning, aggregate root snapshotting, and read projections
- New blog: building-scalable-graph-apis-graphql-federation-apollo — Scalable GraphQL APIs with Apollo Federation v2 supergraph schema composition, Apollo Router Rust query planning, and Hasura instant SQL compilation
- New blog: building-scalable-websocket-gateways-socketio-redis-adapter — Horizontally scaled WebSocket gateways with Socket.IO, Redis Pub/Sub Adapter cross-node event broadcasting, Nginx sticky sessions, and ping heartbeats
- New blog: building-reactive-microservices-akka-actor-model — Fault-tolerant reactive microservices with the Akka Actor Model, lock-free state encapsulation, supervisor trees, cluster sharding, and event-sourced persistence
- New blog: securing-kubernetes-workloads-opa-gatekeeper-kyverno — Kubernetes workload policy enforcement with OPA Gatekeeper Rego constraint templates, Kyverno declarative YAML policies, and admission webhooks
- New blog: securing-kubernetes-network-policies-calico-cilium — Kubernetes zero-trust pod network isolation with Calico iptables/BGP routing, Cilium in-kernel eBPF packet filters, and FQDN egress rules
- New blog: securing-cloud-native-applications-ebpf-cilium-tetragon — Cloud-native Kubernetes security with eBPF, Cilium L3-L7 BPF map policies, Tetragon system call execution tracing, and in-kernel SIGKILL enforcement
- New blog: distributed-tracing-opentelemetry-collector-tempo — Distributed tracing pipeline with OpenTelemetry SDK W3C context propagation, OTel Collector tail-based sampling, and Grafana Tempo object storage
- New blog: implementing-distributed-tracing-opentelemetry-jaeger — End-to-end microservice distributed tracing with OpenTelemetry SDKs, OTel Collector pipelines, W3C traceparent context propagation, and tail-based sampling
- New blog: securing-web-applications-oauth2-jwt-token-rotation — Secure authentication with OAuth2 Refresh Token Rotation (RTR), single-use refresh token exchange, HttpOnly cookies, and RS256 JWKS asymmetric signatures
- New blog: optimizing-kubernetes-cluster-autoscaling-karpenter-keda — Cloud-native Kubernetes autoscaling with Karpenter just-in-time node provisioning, KEDA event-driven pod scaling (Kafka, SQS), and Spot consolidation
- New blog: building-event-driven-microservices-apache-pulsar — Cloud-native event streaming with Apache Pulsar, decoupled BookKeeper ledger storage, multi-tenant namespaces, and serverless Pulsar Functions
- New blog: building-high-performance-time-series-databases-influxdb-timescaledb — Time-series database architecture with InfluxDB TSM & TimescaleDB Hypertables, automatic chunking, continuous aggregates, and automated retention policies
- New blog: building-distributed-consensus-hashicorp-raft-go — Fault-tolerant distributed consensus in Go with HashiCorp Raft, randomized election timeouts, Write-Ahead Log quorum replication, and FSM snapshotting
- New blog: implementing-service-mesh-traffic-management-envoy-proxy — Service mesh traffic management with Envoy Proxy, dynamic xDS gRPC APIs (LDS, RDS, CDS, EDS), weighted canary routing, circuit breaking, and automatic mTLS
- New blog: building-reactive-web-apps-elixir-phoenix-liveview — Server-centric reactive web applications with Elixir & Phoenix LiveView, BEAM actor model WebSocket concurrency, and morphdom DOM diffing
- New blog: securing-web-applications-content-security-policy-csp — Browser security hardening with Content Security Policy (CSP) headers, per-request cryptographic nonces, 'strict-dynamic' script loading, and Report-To violation telemetry
- New blog: implementing-saga-pattern-microservices-distributed-transactions — Microservice distributed transactions with the Saga pattern, Orchestration state machines vs Choreography events, and idempotent compensating transactions
- New blog: building-scalable-microservices-grpc-protobuf — High-performance inter-service communication with gRPC & Protocol Buffers, HTTP/2 multiplexing, Proto3 code generation, and Envoy L7 load balancing
- New blog: optimizing-database-queries-indexing-strategies — Relational database indexing strategies with PostgreSQL B-Tree, Hash, GIN (JSONB), and GiST indexes, Partial indexes, Covering INCLUDE scans, and REINDEX bloat fixes
- New blog: building-event-driven-microservices-nats-jetstream — High-throughput event-driven microservices with NATS JetStream, persistent stream wildcards, durable consumers, AckExplicit policies, and built-in KV stores
- New blog: securing-cloud-infrastructure-hashicorp-vault — Cloud infrastructure secret management with HashiCorp Vault, dynamic database credential leases, PKI certificate engine, and Kubernetes Vault Agent sidecar injection
- New blog: building-realtime-data-pipelines-apache-flink — Real-time stateful stream processing with Apache Flink, Event-Time watermarking, embedded RocksDB state backends, and Chandy-Lamport exactly-once checkpoints
- New blog: building-custom-k8s-admission-webhooks-open-policy-agent — Dynamic Kubernetes admission webhooks with Open Policy Agent (OPA) Gatekeeper, Mutating/Validating lifecycle, Rego policy syntax, and ConstraintTemplates
- New blog: optimizing-web-vitals-inp-interaction-to-next-paint — Core Web Vitals Interaction to Next Paint (INP) optimization, breaking main-thread long tasks with scheduler.yield(), Web Workers offloading, and web-vitals RUM telemetry
- New blog: securing-web-applications-owasp-top-10-mitigation — Defense-in-depth web application security against OWASP Top 10 risks, parameterized SQL queries, IDOR server-side checks, DOMPurify XSS sanitization, and CSP headers
- New blog: implementing-database-sharding-vitess-kubernetes — Horizontal database sharding with Vitess on Kubernetes, VTGate SQL proxies, Hash Vindexes, and zero-downtime VReplication resharding
- New blog: building-distributed-task-queues-celery-redis — Distributed task queue architecture with Python Celery, Redis broker and result backend, idempotent task design, exponential backoff retries, and Flower monitoring
- New blog: building-custom-ai-copilots-langchain-nextjs — In-App AI Copilots with LangChain.js, Next.js App Router Server Actions, SSE streaming, Zod schema tools, and Redis session memory
- New blog: mastering-ebpf-linux-kernel-observability — Linux kernel observability with eBPF bytecode, in-kernel verifier safety, eBPF Maps, kprobes/tracepoints, and Cilium Kubernetes container networking
- New blog: implementing-zero-trust-network-architecture-tailscale — Zero-Trust network security with Tailscale P2P WireGuard mesh networks, STUN NAT discovery, DERP relays, SSO ACL policies, and MagicDNS
- New blog: building-high-performance-search-meilisearch-typesense — High-performance search engines with Meilisearch (Rust LMDB) and Typesense (C++ RAM indexing), sub-50ms typo tolerance, hybrid vector search, and faceted filtering
- New blog: architecting-multi-region-active-active-databases — Multi-region active-active database architectures, CRDT deterministic conflict resolution, Google Spanner TrueTime, and CockroachDB Raft Range consensus
- New blog: building-custom-cli-tools-rust-clap — Building developer CLI tools with Rust and Clap v4, derive macro argument parsing, anyhow contextual error handling, and stripped binary cross-compilation
- New blog: optimizing-database-performance-redis-cache-aside — High-performance database caching with Redis Cache-Aside (Lazy Loading), mutation key invalidation, mutex lock stampede prevention, and TTL jittering
- New blog: securing-microservices-api-gateway-kong-keycloak — API Gateway security with Kong and Keycloak, OIDC bearer_only token validation, JWKS public key caching, and JWT claims extraction
- New blog: implementing-zero-downtime-deployments-blue-green-canary — Zero-downtime deployment patterns with Blue-Green 100% router cutovers, progressive Canary traffic splitting with Argo Rollouts, Prometheus metric analysis, and Expand-Contract DB schemas
- New blog: building-event-driven-microservices-aws-eventbridge — Serverless event routing with AWS EventBridge, Schema Discovery OpenAPI contracts, content-based JSON rules, and SQS Dead-Letter Queue event archiving
- New blog: mastering-kubernetes-custom-resource-definitions-kubebuilder — Kubernetes operators with Custom Resource Definitions (CRDs), Kubebuilder scaffolding, OpenAPI v3 validation schemas, and Go controller-runtime reconciliation loops
- New blog: building-realtime-analytics-clickhouse-kafka — Real-time streaming analytics with ClickHouse columnar OLAP, SIMD vectorized query execution, Kafka Engine tables, and Materialized View transformations
- New blog: securing-cloud-infrastructure-terraform-sentinel — Infrastructure-as-Code (IaC) security with Terraform and Sentinel Policy-as-Code, pre-apply guardrails, mandatory cloud tagging, and enforcement levels
- New blog: implementing-semantic-caching-llm-queries-redis — Semantic caching for LLM API prompts with Redis Vector Search, RediSearch HNSW indexing, Float32 binary buffer encoding, and cosine similarity thresholding
- New blog: building-graph-databases-neo4j-cypher — Native graph database modeling with Neo4j, Index-Free Adjacency O(1) memory pointer traversals, Cypher ASCII-art queries, and APOC Dijkstra shortest path algorithms
- New blog: mastering-gitops-argocd-fluxcd-kubernetes — GitOps declarative continuous deployment on Kubernetes, Argo CD vs Flux CD controller architectures, drift reconciliation, and Helm releases
- New blog: securing-single-page-applications-oauth2-pkce — OAuth 2.0 PKCE security in SPAs, Web Crypto API SHA-256 verifier generation, HTTP-Only SameSite cookies, and refresh token rotation
- New blog: building-scalable-websocket-servers-node-uwebsockets — Node.js uWebSockets.js performance, C++ native fast-paths, 100k+ connection RAM optimization, topic Pub/Sub broadcasting, and backpressure management
- New blog: implementing-distributed-tracing-jaeger-opentelemetry — Distributed tracing across microservices with OpenTelemetry, W3C TraceContext header propagation, OTel Collector daemons, and Jaeger UI waterfall graphs
- New blog: optimizing-frontend-performance-core-web-vitals — Google Core Web Vitals (LCP, INP, CLS), fetchpriority='high' hero image preloading, main-thread scheduler.yield() yielding, and CSS aspect-ratio layout locks
- New blog: building-reactive-microservices-spring-boot-webflux — Non-blocking Spring WebFlux architecture, Netty event loops vs Servlet thread-per-request, Project Reactor Mono & Flux streams, R2DBC database drivers, and backpressure control
- New blog: securing-microservices-istio-service-mesh-mtls — Istio Service Mesh Zero-Trust architecture, Envoy sidecar proxies, Mutual TLS (mTLS), SPIFFE X.509 certificates, and AuthorizationPolicies
- New blog: implementing-feature-flags-launchdarkly-unleash — Decoupled deployment & releases, LaunchDarkly SaaS vs Unleash self-hosted VPC, local SSE streaming evaluation, and emergency kill-switches
- New blog: building-high-throughput-apis-go-gin-framework — Go Gin framework REST API performance, Radix tree URL routing, sync.Pool zero-allocation contexts, and Go pprof CPU flame graphs
- New blog: zero-downtime-database-migrations-flyway-liquibase — Expand-Contract database schema migration pattern, Flyway SQL versioning vs Liquibase XML changesets, and non-blocking DDL lock management
- New blog: container-orchestration-kubernetes-vs-docker-swarm — Kubernetes control planes vs Docker Swarm CLI simplicity, Custom Resource Definitions (CRDs), Ingress routing, and Horizontal Pod Autoscaling (HPA)
- New blog: graphql-subscriptions-vs-websockets-for-realtime-data — Raw WebSockets TCP frame streaming vs GraphQL Subscriptions declarative schema typing, graphql-ws, and Redis Pub/Sub socket scaling
- New blog: building-custom-ai-agents-with-langgraph-and-gemini — Autonomous AI agents with LangGraph & Gemini 1.5 Flash, cyclic StateGraph loops, TypedDict state reducers, conditional tool edges, and RedisSaver persistence
- New blog: implementing-cqrs-and-event-sourcing-in-dotnet — CQRS pattern in .NET 9, MediatR command bus, Marten PostgreSQL event streams, aggregate state hydration, and async read DTO projections
- New blog: architecting-serverless-applications-aws-lambda-dynamodb — Serverless AWS Lambda execution, DynamoDB single-table design, Provisioned Concurrency, SnapStart, and EventBridge integration
- New blog: implementing-full-text-search-elasticsearch-vs-pgvector — BM25 lexical keyword search vs pgvector HNSW semantic embeddings, analyzer pipelines, and Reciprocal Rank Fusion (RRF) hybrid search
- New blog: securing-rest-apis-oauth2-jwt-best-practices — OAuth2 Authorization Code Flow with PKCE, RS256 asymmetric JWT signing, JWKS public keys, and Refresh Token Rotation
- New blog: building-resilient-distributed-systems-circuit-breaker-pattern — Circuit Breaker tri-state machine (Closed, Open, Half-Open), sliding window thresholds, stale cache fallbacks, and Resilience4j vs Envoy
- New blog: optimizing-postgresql-query-performance-explain-analyze — PostgreSQL EXPLAIN ANALYZE cost trees, Seq Scan vs Bitmap Index Scan, Shared Buffers hit ratios, and Hash Join memory tuning
- New blog: building-event-driven-microservices-kafka-schema-registry — Asynchronous Kafka event streaming, Confluent Schema Registry (Avro & Protobuf), BACKWARD compatibility, and Poison Pill DLQ isolation
- New blog: webassembly-rust-browser-guide — WebAssembly (Wasm) in Rust, wasm-bindgen TypeScript bindings, zero-copy linear memory sharing, and 128-bit SIMD vectorization
- New blog: zero-trust-architecture-cloud-native-microservices — SPIFFE/SPIRE workload identity attestation, Envoy STRICT mTLS mesh encryption, and Open Policy Agent (OPA) Rego authorization
- New blog: multitenant-saas-postgres-schema — Multitenant SaaS PostgreSQL schema patterns, Row-Level Security (RLS), schema-per-tenant, and PgBouncer connection scaling
- New blog: nextjs-16-app-router-performance — React Server Components streaming, explicit 'use cache' directives, client bundle pruning, and Core Web Vitals optimization
- New blog: observability-opentelemetry-grafana — OpenTelemetry Collector pipelines, W3C traceparent propagation, Prometheus metrics, and Grafana Tempo/Loki correlation
- New blog: observable-state-management-react — Observable atomic state DAGs in React, Recoil vs Jotai architecture comparison, selectors, and V8 WeakMap garbage collection
- New blog: secure-mongodb-rbac — MongoDB Role-Based Access Control (RBAC), SCRAM-SHA-256 authentication, custom user roles, and TLS 1.3 encryption
- New blog: ci-cd-pipeline-github-actions-vercel — Automated GitHub Actions CI static verification matrix, Vercel Preview Deployments, and Playwright E2E testing
- New blog: zero-data-retention-gdpr — Ephemeral RAM processing, cryptographic key shredding, zero-log gateway filtering, and GDPR Article 17 Right to Erasure
- New blog: practical-prompt-engineering-gemini-1-5-flash — Gemini 1.5 Flash system instructions, responseSchema structured JSON outputs, context caching, and multimodal prompt tuning
- New blog: understanding-vector-embeddings — Vector embeddings evolution from Word2Vec to Gemini 1.5 Flash, cosine/dot-product similarity math, and HNSW graph indexing
- New blog: ssr-vs-edge-rendering-nextjs-16 — Server-Side Rendering (Node.js) vs V8 Edge Isolates in Next.js 16, cold start physics, DB latency traps, and runtime limits
- New blog: real-time-collaborative-apps-crdts-websockets — Conflict-free Replicated Data Types (CRDTs), WebSocket transport, state vectors, and offline-first convergence
- New blog: deep-dive-raft-consensus-algorithm — Raft consensus state machine replication, leader election mechanics, log invariants, and joint consensus cluster membership
- New blog: when-to-use-redis-redlock-vs-etcd-vs-zookeeper — Redis Redlock, etcd leases, and ZooKeeper ephemeral nodes architecture, fencing tokens, and split-brain safety comparison
- New blog: claude-code-zero-data-retention — Zero Data Retention (ZDR) enterprise architecture, SOC2/HIPAA compliance boundaries, and local transcript secret redaction
- New blog: claude-code-security-auditing — automated security & vulnerability auditing, OWASP AST scanning, and parameterized SQL query refactoring
- New blog: claude-code-remote-control — managing terminal sessions from mobile devices, zero-knowledge mTLS relay tunnels, and QR code pairing
- New blog: claude-code-chrome-integration — web and browser automation via Chrome DevTools Protocol (CDP), live DOM tree inspection, and network payload auditing
- New blog: claude-code-ios-simulator — hands-free iOS application testing with Xcode, xcrun simctl, simulator frame capture, and touch gesture synthesis
- New blog: claude-code-computer-use — native CLI Computer Use on macOS, Accessibility permissions, visual pixel grounding, and coordinate safety
- New blog: claude-code-large-codebases — monorepo optimization, hierarchical CLAUDE.md rule scoping, git sparse-checkouts, and .claudeignore tuning
- New blog: claude-code-scheduled-tasks — goal-driven autopilot mode (/goal), recurring background loops (/loop), cron schedules, and reactive timers
- New blog: claude-code-ultraplan — moving from local CLI drafts to web UI execution, bidirectional plan sync, and cloud subagent swarms
- New blog: claude-code-auto-mode — autonomous execution with Auto Mode, permission mode evaluation order, hard-deny rules, and CI automation
- New blog: claude-code-worktrees — parallel coding with git worktrees, zero-collision multi-agent execution, git index lock isolation, and directory pruning
- New blog: claude-agent-sdk-guide — building autonomous AI coding agents in TypeScript and Python with custom tools, tool search at scale, session persistence, and OTel tracing
- New blog: claude-code-context-window — inside Claude Code's context window token economics, automatic compaction triggers, and prompt cache hit mechanics
- New blog: claude-code-mcp-plugins — extending Claude Code with Model Context Protocol (MCP) servers, custom plugin executables, private marketplaces, and Channels event webhooks
- New blog: claude-code-enterprise-gateway — self-hosting Claude Apps Gateway on AWS and GCP with OIDC SSO, per-developer spend limits, and telemetry
- New blog: claude-code-cli-reference — official-docs-based guide to Claude Code CLI commands and flags across interactive sessions, print mode automation, resume/fork/worktree state, permissions, MCP/plugins/settings, background agents, diagnostics, and project cleanup
- New blog: agent-sdk-vs-claude-tools — a decision framework across Anthropic's own developer tool surface: the Messages API's manual tool loop, the beta Tool Runner, the Claude Agent SDK's permission-evaluation order (deny rules beat bypassPermissions), Claude Code as the SDK shipped as a CLI product, and Managed Agents' hosted agent/environment/session/events model, traced through one PR-review agent and a denied secrets-file read
- New blog: managing-sessions-in-claude-code — the session lifecycle around Claude Code: --continue/-c vs --resume vs the /resume picker, where JSONL transcripts persist on disk and what a resume does and doesn't restore (model, permission mode, but not --mcp-config/--add-dir/bypassPermissions), /clear vs /compact vs a new session, and /branch/--fork-session/--worktree for running concurrent conversations on the same repo
- New blog: how-claude-code-works — the mechanics inside Claude Code as a product: the read-plan-call-observe agentic loop, the tool-use system (Read/Edit/Bash/Grep) and how it drives shell/git integration, context growth and auto-compaction, the four permission modes and a denied .env-read failure trace, and how subagents/Task, MCP servers, and skills extend the same loop without changing its mechanics
- New blog: rag-types-and-when-to-use-them — infographic-based RAG taxonomy that separates maturity labels, architecture choices, and retrieval techniques across naive, memory, agentic, graph, HyDE, Self-RAG, CRAG, multimodal, modular, and adaptive RAG
- New blog: top-ai-tools-for-2026-business-market-map — infographic-based 2026 AI tools market map across websites, work, support, media, growth, and document automation with buyer guardrails instead of logo-ranking claims
- New blog: agentic-ai-tech-stack-explained — infographic-based eight-layer agentic AI stack map covering infrastructure, evaluation, foundation models, orchestration, vector stores, embeddings, ingestion, memory/context, and a stale-contract retrieval failure
- New blog: llm-architecture-explained — infographic-based end-to-end LLM request path from prompt text through tokenization, embeddings, transformer blocks, output logits, autoregressive generation, and stale-context failure recovery
- New blog: subagents-explained — what a subagent actually is (a disposable, isolated agent invocation with its own context window and tool budget), the context-isolation/tool-budget mechanism, fan-out/sequential/specialist delegation patterns, and a budget-exhaustion failure recovered with a validated output contract
- New blog: world-models-explained — the encode/predict/plan loop that lets a model predict an action's consequence on environment state, JEPA-style latent prediction vs pixel-space generation, and the compounding-rollout-error failure that limits how far imagined plans can be trusted
- New blog: context-rot-in-ai-agents — why longer AI agent sessions get less reliable even when every fact in the transcript is correct, the attention-dilution/lost-in-the-middle/distractor/instruction-drift mechanisms behind it, a traced turn-34 constraint failure, and compaction/sub-agent/scratchpad/checkpoint fixes
- New AI systems batch: agent-identity-non-human-authentication (scoped, short-lived credentials replacing shared API keys for agents), mixture-of-experts-explained (sparse expert routing and expert collapse), kv-cache-speculative-decoding-explained (inference-serving memory and latency mechanics), computer-use-browser-agents-explained (screen/DOM-grounded agent loops and misclick failure modes), and shadow-ai-enterprise-governance (unsanctioned AI tool sprawl and org-level controls)
- New blog: test-time-compute-explained — train-time vs test-time compute budgets, parallel sampling vs sequential budget forcing, and why extra reasoning helps checkable tasks but not recall-bound ones
- New reasoning, safety, evaluation, and product AI batch: chain-of-thought-reasoning-models, react-pattern-reasoning-acting-loop, ai-agent-memory-short-term-long-term, human-in-the-loop-ai-agent-patterns, hallucination-why-it-happens, jailbreaking-vs-prompt-injection, red-teaming-llms-methodology-tooling, explainable-ai-interpretability-techniques, llm-as-a-judge, mmlu-vs-swe-bench-vs-humaneval, copilot-vs-agent, vibe-coding-what-breaks-when-fine, zero-shot-vs-few-shot-learning, and multimodal-ai-explained
- SEO update: refreshed site, blog, and AI topic metadata for LLM internals, tokenization, transformer architecture, model training, and production AI discovery
- New model internals AI batch: transformer-self-attention-explained, tokenization-explained-token-count, quantization-vs-distillation, rlhf-vs-constitutional-ai, foundation-models-vs-small-language-models, and synthetic-data-training-risks
- New blog: structured-llm-outputs-json-schema — schema, prompt meaning, validation, bounded repair retries, output versioning, and invalid enum incident recovery for LLM contracts
- New blog: llm-streaming-tool-calls-cancellation — LLM streaming as an event lifecycle covering token deltas, tool-call buffering, output gates, cancellation propagation, and terminal trace states
- New blog: llm-caching-response-semantic-prompt — response cache vs semantic cache vs prompt cache, scoped keys, invalidation as a trust boundary, semantic false-hit risk, and stale-answer recovery
- New blog: ai-gateway-routing-cost-controls — AI gateway as the shared model boundary for routing, provider keys, budget checks, traces, typed fallback, and a support-triage failure recovery practice
- Updated blog: rest-api-authentication-methods — expanded from the infographic into eight REST auth methods: API keys, Basic, Bearer, JWT, OAuth 2.0, OIDC, HMAC signatures, and mTLS with request flows and failure modes
- New AI safety blog batch: agent-evals-observability-explained, guardrails-sandboxing-ai-agents, and prompt-injection-rag-tool-using-agents — production agent quality, runtime policy, sandboxing, and RAG/tool injection defenses
- Updated blog: gastown-vs-claude-agent-teams-vs-gsd — added explicit sub-agent vs multi-agent sections, clarified Gas Town naming and vocabulary, and mapped ownership, communication, merge, and recovery boundaries
- New blog: slash-commands-checkpoints-mcp-skills-plugins-ralph-loops — six agentic coding controls placed by job: slash commands trigger workflows, checkpoints recover state, MCP connects scoped tools, skills package procedures, plugins distribute proven extensions, and Ralph loops keep long work fresh and verifiable
- Updated blog: what-is-agentic-ai — expanded into an agentic AI terms map covering agent loops, tool calling, MCP/A2A/ACP, context rot, memory, RAG variants, evals, governance, guardrails, blast radius, token economics, LLMOps, shadow AI, vector databases, reasoning models, and prompt/context/harness trade-offs
- New blog: gastown-vs-claude-agent-teams-vs-gsd — three multi-agent orchestrators compared by where they put durable state (git-backed hooks vs shared task list/mailbox vs markdown plan files), traced through the same checkout-service bug fix and a mid-task crash-recovery story
- New blog: capacity-planning-for-beginners — mapping the request path before buying capacity, estimating peak traffic from business inputs, finding the first bottleneck with service-time math, proving a plan with a focused load test, and an autoscaling-the-wrong-tier failure that made checkout worse
- New blog: server-vs-client-components — Server Components as the App Router default (RSC Payload + HTML + JS pipeline), the 'use client' module-graph boundary and what it actually bundles, the children slot pattern Context providers require, and an environment-poisoning secret leak fixed with the server-only package
- New blog: fine-tuning-vs-rag-vs-prompting — three levers controlling different things (per-request behavior, per-request facts, durable weight changes), why fine-tuning teaches form far better than facts, prompt-then-RAG-then-fine-tune evaluation order, and a fine-tuned model that still hallucinated an outdated fact
- New blog: rag-chunking-strategies — chunk size as a precision-vs-context trade-off, fixed-size vs recursive (paragraph/sentence-aware) vs semantic (similarity-drop) chunking, and a pricing table split mid-row traced to a structure-aware chunking fix
- New blog: embeddings-explained — what an embedding vector actually represents and why two models' vector spaces are never comparable, cosine vs dot product vs Euclidean (the model's training decides which, not habit), Matryoshka truncatable embeddings, and a mixed-model-version search degradation traced to a silent failure mode
- New blog: tls-handshake-explained — TLS 1.3's 1-RTT handshake traced from ClientHello's opportunistic key_share to Finished, why dropping static RSA key exchange makes forward secrecy mandatory, OCSP stapling, and a 0-RTT replay incident recovered by application-layer idempotency
- New blog: docker-multi-stage-builds — why RUN rm never removes a file from earlier image layers, named-stage COPY --from syntax, layer-cache ordering plus BuildKit cache mounts, and choosing alpine vs distroless vs scratch by debuggability trade-off
- New blog: sli-slo-and-sla-explained — SLI as a precisely-defined good/valid ratio, why the SLO is deliberately tighter than the SLA (an early-warning buffer, not a discrepancy), error budgets as a spendable resource, and multi-window multi-burn-rate alerting for catching both fast and slow incidents
- New blog: kafka-consumer-groups-explained — why partition count is the hard parallelism ceiling, eager vs cooperative-sticky (KIP-429) rebalancing, auto-commit vs manual-commit offset risk, and a rebalance storm traced to max.poll.interval.ms
- New blog: cache-stampede-prevention — why a stampede multiplies origin load by concurrent-miss count, mutex-locked recomputation (Redis SETNX + lock TTL safety net), probabilistic early expiration, stale-while-revalidate, and a flash-sale connection-pool-exhaustion incident traced to its fix
- New blog: database-query-execution-plans — reading a Postgres EXPLAIN tree bottom-up for execution order, scan/join node types by selectivity and input size, why cost isn't milliseconds, the estimated-vs-actual-rows gap as the highest-value signal, and a correctly-skipped index traced via selectivity
- New blog: sharding-vs-partitioning-vs-replication — three axes, not three alternatives (split a table vs split a dataset vs copy data), why partitioning stays inside one query planner while sharding has none, leader-follower/multi-leader/leaderless replication topologies, and choosing a sharding key that survives real tenant-size skew
- New blog: acid-and-isolation-levels-explained — ACID's four properties precisely defined (including why ACID Consistency isn't CAP Consistency), the anomaly matrix per isolation level, Postgres's Repeatable Read vs Serializable and write skew, MVCC's row-versioning mechanism, and a lost-update bug traced to its atomic-SQL fix
- New blog: oauth2-openid-connect-explained — OAuth 2.0's four roles and what it actually delegates, the Authorization Code flow with PKCE, why OpenID Connect's id_token (not a bare access token) proves identity, Client Credentials vs deprecated Implicit/Password flows, and an intercepted-authorization-code failure PKCE prevents
- New blog: cors-explained-without-confusion — the same-origin policy vs CORS headers, why a simple request executes server-side before the browser ever checks Access-Control-Allow-Origin, preflight OPTIONS for non-simple requests, credentialed requests and the no-wildcard-with-credentials rule, and a blocked-response-but-already-executed failure
- New blog: exactly-once-delivery-myth-vs-reality — the Two Generals Problem as proof exactly-once delivery is impossible over an unreliable network, effectively-once via at-least-once plus idempotency, what Kafka's exactly-once semantics actually cover, and a duplicate charge traced past Kafka's transactional boundary
- New blog: transactional-outbox-pattern — one signup through the dual-write gap between a database commit and a broker publish, the outbox table and relay that close it, at-least-once delivery, a relay crash recovered by consumer idempotency, and cleanup/CDC/2PC alternatives
- New blog: saga-vs-two-phase-commit — one trip booking through 2PC's coordinator lock and blocking problem, the saga pattern's local transactions and compensating actions, choreography vs orchestration, and a payment-decline failure recovered by reverse-order compensation
- AdSense approval pass: noindex + sitemap-exclude in-progress courses; enriched course pages, Topics/Courses hubs; expanded About/Contact; homepage identity
- AdSense content readiness: expanded About (mission, audience, editorial standards, operator), Contact (error-report checklist), and homepage identity blurb linking About/Contact
- New blog: ai-coding-surfaces-ide-plugin-cli — IDE vs plugin vs CLI as delivery attachments; multi-homing (Cursor/Codex); Amp CLI-first; links to the agents comparison
- New blog: rise-of-claude-code — Claude Code arc from Labs side project through May 2025 GA, late-2025 harness, Opus 4.5, and Cowork; corrects “first CLI” and OpenClaw conflation
- SEO catalog pass: every post has 120–160 char metaDescription + 2+ contextual internal links; topic TagLinks use real tags; blog ItemList lists all 92 posts; hub OG images; 404 noindex without homepage canonical; removed SearchAction pointing at /search; learning-path titles synced
- Catalog-wide skill pass complete across all 92 guides: -detail/-zoom on every 4+ section post; SVG ≥10px; honest titles; code/practice/freshness coverage; CAP/outbox truth fixes
- Updated recent AI guides to new quality gates: context-engineering (ctx-pack-detail), evolution-of-workflows (eow-yolo-detail), agentic-engineering-roadmap (aer-hook-detail), plus July 2026 freshness notes where product surfaces are named
- Updated blog + quality gates: ai-coding-agents-compared — top comparison matrix, layered stack map, request-level MCP denial zoom, editor instruction parity, July 2026 source boundary; strict 4+ section guides now require a -zoom/-detail signal and 10px SVG text floor
- New blog: ai-coding-agents-compared — Claude Code, Copilot, Codex, Cursor, OpenCode, and Antigravity compared by execution boundary, with MCP and OpenClaw placed on their correct integration and control-plane layers
- New blog: agentic-engineering-roadmap — vibe coding → vibe engineering → agentic engineering as a capability ladder; AGENTS.md, MCP, Ralph loops, hooks, sandboxing, swarms, and a promotion-gate decision rule
- New blog: evolution-of-workflows-2025-vs-2026 — six AI coding control styles from micromanage to swarms; SDD, YOLO, Ralph loops, failure modes, and blast-radius decision rule
- New blog: context-engineering — LLM output is a function of the packed window; why the rename from prompt engineering, gather→curate→call, and pollution failure recovery
- New blog: disaster-recovery-rpo-vs-rto — precise RPO/RTO definitions, DR strategy tiers, deriving targets from business impact, and a corruption incident where near-zero RPO never applied to the failure class that hit
- New blog: multi-region-architecture-fundamentals — what multi-region buys you, routing/replication basics, failure domains and blast radius, and a shared config service that crash-looped three regions at once
- New blog: data-locality-and-edge-computing — one personalization API through the physical latency floor, edge caching/functions/data-replication patterns, trade-offs, and a data-residency failure
- New blog: hot-partitions-and-hotspot-mitigation — one multi-tenant shard through how partitions get hot, per-shard/per-key detection, mitigation techniques, and a noisy-neighbor tenant failure
- New blog: read-heavy-vs-write-heavy-system-design — one URL-shortener redirect through measuring the real per-table ratio, read-heavy and write-heavy patterns, and a dashboard index that broke redirects
- New blog: active-active-vs-active-passive-architecture — one order service through both redundancy shapes, RTO/RPO trade-offs, and a standby that promoted on schedule but with a stale schema
- New blog: fail-fast-vs-fail-safe-systems — one wire-transfer approval gate through when to stop vs what state to stop into, fail-fast and fail-safe mechanisms, and a real fail-open security bug
- New blog: fault-tolerance-vs-high-availability — one payment service through two different promises, their mechanisms, where they overlap and diverge, and a lost-charge failover outage
- New blog: graceful-degradation-patterns — one product page through core-path classification, fallbacks, feature-flag kill switches, testing degraded mode, and a broken-fallback failure
- New blog: single-points-of-failure — one checkout system through hidden SPOFs, real vs disguised redundancy, correlated failures, a shared-NAT-gateway outage, and a blast-radius decision rule
- New blog: backpressure-in-distributed-systems — one order pipeline through signaling mechanisms, backpressure vs load shedding, end-to-end propagation, an unbounded-queue OOM failure, and a decision rule
- New blog: quorum-reads-and-writes — one Dynamo-style cart store through W/R tuning, sloppy quorums, hinted handoff, read repair, a lost-hint failure, and a quorum-vs-consensus decision rule
- New blog: consistent-hashing-explained-visually — one cache cluster through modular-hash remap storms, the hash ring, virtual nodes, a load-skew scale-out failure, and a decision rule
- New blog: strong-vs-eventual-consistency — one replicated profile write through linearizable quorum vs async replication, read-your-writes/causal session guarantees, a lost-update LWW failure, and a per-read decision rule
- New blog: synchronous-vs-asynchronous-processing — one order through deadline-bound calls and durable queues, precise 202 semantics, worker-crash redelivery, idempotency, confirms/acks, and a user-promise decision rule
- New blog: stateless-vs-stateful-architecture — one shopping cart through shared vs local state, sticky-session loss, concurrency, scaling/security boundaries, and a state-ownership decision rule
- New blog: availability-vs-reliability-vs-durability — one order contract, user-facing SLIs, idempotency, durable acknowledgment, failover data-loss recovery, and separate decision rules
- New blog: latency-vs-throughput-explained — checkout-api latency vs throughput, percentiles, Little's Law, batching p99 failure, and latency-first vs throughput-first decision
- New blog: what-happens-after-you-type-a-url — one browser navigation through DNS, TCP/TLS or QUIC, HTTP edge/origin, rendering, stale-DNS recovery, and stage-based diagnostics
- Exemplar rewrite: docker-vs-kubernetes — one checkout-api request threaded through both; reconciliation loop, request path via readiness-gated Service, CrashLoopBackOff recovery, RBAC/Secrets/HPA boundaries, and a capability-based decision rule
- Updated blog: mcp-vs-a2a-vs-acp — stack map for MCP/A2A/ACP/SLIM; corrects SLIM (AGNTCY transport, not OpenAI tools) and ACP naming; decision by boundary
- SEO site-wide: stronger brand title/description, RSS discovery links, WebSite SearchAction, Organization logo, Article/Course JSON-LD fixes, robots disallow /search, sitemap freshness by updatedAt, hub-page metas, blog ItemList
- SEO: 12-ai-frameworks-for-engineers — search-intent title/meta, Article JSON-LD image + publisher logo, AI Engineer path wiring
- New blog: 12-ai-frameworks-for-engineers — maps LangGraph, CrewAI, Microsoft Agent Framework, Haystack, LlamaIndex, vLLM, Ollama, FAISS, Chroma, Pinecone/Qdrant/Weaviate, XGBoost, and Transformers into stack lanes (not twelve peer frameworks), with a support-request path and decision rule
- Deepened production guides: core-layers-master-agentic-ai, top-ai-github-repositories, how-to-choose-database, full-stack-production-reality, llmops-stack, microservices-design-patterns, ai-agent-project-structure, and full-stack-developer-roadmap-2026 — concrete request paths, failure recovery, runnable checks, and bounded claims
- Corrected blogs against current primary documentation: aspnet-core-authorization-types, cap-theorem-explained, jwt-deep-dive-validation-security, dotnet-before-vs-after-ai-era, clean-architecture-dotnet, cicd-github-actions-deployment, database-indexing-explained, load-balancing-l4-vs-l7, event-driven-architecture-patterns, from-llm-to-agentic-ai, mcp-vs-a2a-vs-acp, docker-volumes-explained, kubernetes-request-flow, claude-code-workflow, and monolith-vs-microservices-vs-modular-monolith
- Updated blogs: sql-vs-nosql-comparison, rate-limiting-algorithms, rest-api-design-best-practices, offline-mobile-sync, nine-ai-concepts-2026, what-is-agentic-ai, prompt-vs-context-vs-harness, top-15-vector-databases, typescript-advanced-patterns, npm-vs-npx, and types-of-databases — balanced code, failure recovery, taxonomy, and checkable practice
- Courses: lesson exercises/self-checks rendered; honest skeletal and complete durations; security callouts; pseudo-code labels; caching description no longer implies a starter repo
- Courses: honest durations and in-progress status; unsupported ratings removed; prerequisites/objectives added; browser-local progress clarified
- Diagram UX: removed duplicate hero renders and H2 number badges; StepFlow rows capped at three; dark-mode fills improved
- Updated blog: kafka-vs-rabbitmq-vs-sqs — qualified FIFO guarantees; ack/idempotency code; broker-choice practice
- Updated blog: graphql-vs-rest-vs-grpc — early decision skim; REST/GraphQL/gRPC code and error shapes
- Updated blog: jwt-vs-session-vs-oauth — shorter model-choice guide with session/JWT/OAuth failure paths
- Updated blog: rest-api-authentication-methods — auth header/challenge examples, 401/403 shapes, and practice
- Updated blog: rate-limiting-algorithms — Redis sketches, 429/Retry-After behavior, and bounded claims
- Updated blog: api-security-best-practices — IDOR-safe authorization, secret handling, rate-limit failures, and threat-model practice
- Updated blog: caching-strategies-redis-cdn — unsupported latency claims removed; fallback code and measured practice
- Updated blog: event-sourcing-vs-cqrs — heuristic claims softened; failure-aware decision flow and practice
- Updated blogs: ten-powerful-ai-skills and core-layers-master-agentic-ai — narrower mechanisms, canonical links, failure modes, and timed practice
- Updated blogs: event-driven-architecture, prompt-engineering-for-developers, load-balancing-l4-vs-l7, horizontal-vs-vertical-scaling — request traces, implementation examples, and decision evidence
- Updated blogs: observability-logs-metrics-traces, sql-vs-nosql, database-indexing-explained — concrete failure traces, bounded claims, code, and practice
- Updated blog: types-of-apis-and-use-cases — shorter intro, two-axis hero, visual travel flow, contract security/versioning/testing, stronger SEO title
- New blog: types-of-apis-and-use-cases — Open vs Internal vs Partner by trust boundary; REST/SOAP/GraphQL as style axis; corrects service→DB as API type
- Updated blog: classic-rag-vs-graph-rag-vs-agentic-rag — title includes Multi-Agent; skim comparison; Graph/Agentic code; eval section; honest code labels; metaDescription
- Skills: site-wide common page mistakes gate (no hero dup, code when implementable, vary rhythm, diagram a11y, close open loops)
- UX: Key takeaway shows prose before share buttons; related cards show date + read time; diagram SVG text marked decorative for a11y
- Skill: validator + pipeline forbid reusing heroDiagram as a section diagram (fixes duplicate SVG on page)
- Updated blog: rabbitmq-messaging-patterns — clearer pattern flows; no duplicate hero map
- Updated blog: solid-principles-dotnet — ISP depth; decide diagram layout; no duplicate hero map
- New blog: rabbitmq-messaging-patterns — simple queue vs competing consumers vs fanout (corrects pub-sub mislabel)
- Updated blog: solid-principles-dotnet — knowledge map, first-principles SOLID, OOP pillars, layers + pain→principle guide (updated skill bar)
- Updated blog: cap-theorem-explained — clearer CP (latest write or error) vs AP (always respond, maybe stale) under partition, refreshed diagrams
- New blog: prompt-vs-context-vs-harness — prompt (message) vs context (memory) vs harness (machine) with gather→act→verify
- New blog: nginx-gateway — NGINX as edge gateway (reverse proxy, LB, cache, rate limit, static, TLS, routing, WebSockets)
- Updated blog: websocket-vs-sse-vs-long-polling — four real-time timelines (short poll, long poll, SSE, WebSocket) with decision guidance
- New blog: claude-code-workflow — CLAUDE.md hierarchy, skills, hooks, permissions, four-layer architecture, and daily plan/compact loop
- New blog: mcp-vs-a2a-vs-acp — MCP (agent→tools) vs A2A (registry + cards) vs ACP (REST + manifest)
- New blog: from-llm-to-agentic-ai — eight-stage ladder from bare LLM through RAG, tools, memory, agents, skills/hooks, and governance
- SEO: sitemap prioritizes fresh blog posts (weekly + 0.9), newest articles listed first after hub pages
- Updated blog: classic-rag-vs-graph-rag-vs-agentic-rag — clearer Query→Answer flows, when-to-use guidance, decision zoom diagram, and links to vector DB / agentic guides
- New blog: dotnet-tools-cheat-sheet — eight .NET toolkit lanes (auth, ORM, test, log, platforms, jobs, reporting, Blazor UI) plus a starter SaaS stack
- New blog: npm-vs-npx — npm installs and manages packages; npx runs CLIs/scaffolds without permanent installs
- Updated blog: microservices-design-patterns — clearer flows matching BFF/CQRS/discovery/events/DB-per-service/gateway, when-to-use guidance, and combine diagram
- New blog: microservices-architecture-blueprint — production path (LB → gateway → services → DB-per-service) plus Kafka, resilience, observability, and K8s CI/CD
- New blog: database-scaling-techniques — read replicas, sharding, partitioning, and caching for ~10M users (cache → replicas → partition → shard)
- New blog: git-commands-cheatsheet — 15 core Git commands as a learning path (setup → daily loop → remotes → branches → undo)
- New blog: caching-101 — latency ladder, seven cache layers, hit/miss flow, eviction (LRU/LFU/FIFO/TTL), and practices (complements Redis/CDN strategies guide)
- New blog: csharp-async-await — async frees threads during I/O waits (not faster code); sync vs async request paths and when CPU work should skip async
- Site-wide learning UX: removed Step N titles from all guide sections; multi-zoom diagrams on vector DBs and types-of-databases; Kubernetes request-path details de-cluttered
- Updated blogs: llmops-stack and nine-ai-concepts-2026 — easier learning prose, no Step titles, multi-zoom diagrams (map + flow + one-request zoom)
- New blog: llmops-stack — ten LLMOps tool lanes from model providers through evals, guardrails, and cloud deploy
- New blog: nine-ai-concepts-2026 — agentic loops, MCP, multi-agent, gateway, inference economics, evals, guardrails, observability, Bitter Lesson
- New blog: types-of-databases — twelve database types mapped from SQL and NewSQL through vector and ledger stores
- Updated blog: software-engineer-career-levels — six-level pyramid, growth signals, Principal and Distinguished sections
- New blog: top-15-vector-databases — 15 vector stores mapped across managed, open-source, search, and extensions
- Added About, Contact, and Privacy Policy pages with footer links (AdSense / publisher readiness)
- New blog: full-stack-production-reality — the 13 layers between a demo and a production app, grouped into app, data, platform, resilience, and operations
- Site-wide content pass: corrected readTime estimates on 30 articles, added hero and section diagrams to 10 articles that were missing visuals, and fixed diagram-quality tooling false positives
- Skills: learning-path + diagram quality bar in content-pipeline / site-content / image-to-blog
- Updated blog: ai-agent-project-structure — src/ diagram teaches request flow (not flat card grid)
- Updated blog: ai-agent-project-structure — step-by-step learning path from map → request flow → build & prove
- Learning UX: “What you’ll learn” is now a numbered Learning path on all guide articles
- Updated blog: ai-agent-project-structure — redesigned folder tree, gradient cards, and pipeline diagrams
- New blog: ai-agent-project-structure — agent/, tools/, models/, prompts/, api/, tests, data, and main.py layout
- New blog: layers-of-ai — AI, machine learning, neural networks, deep learning, generative AI, and agentic AI hierarchy
- New blog: offline-mobile-sync — local DB, outbox queue, ordered push, and pull sync with last_synced_at
- New blog: microservices-roadmap — containers, databases, messaging, gateways, observability, and cloud stack
- New blog: docker-volumes-explained — named volumes, bind mounts, tmpfs, and sharing data between containers
- New blog: kubernetes-request-flow — User request path through DNS, Ingress, Service, EndpointSlice, and Pod
- New blog: git-branching-strategy — main, develop, feature, release, and hotfix branches with naming conventions
- Updated blog: docker-vs-kubernetes — Docker client/daemon architecture, Kubernetes control plane, and cluster diagrams
- New blog: junior-vs-senior-qa — Junior vs Senior QA mindset, seven analytical questions, and growth path
- New blog: API Security Best Practices — identity, least exposure, secrets, traffic control, egress risk, and observability
- New blog: Full Stack Developer Roadmap 2026 — frontend to DevOps, plus emerging skills and non-negotiable fundamentals
- New blog: top-claude-skills — 50 Claude skills across dev, research, automation, and creator workflows
- New blog: Why Is Redis So Fast? — in-memory design, single-thread model, data structures, and event I/O
- New blog: What Is Agentic AI? — orchestrator, memory, tools, multi-agent protocol, and specialist agents
- Browse by tag: /tags index with clickable tags on articles, blog cards, and topic pages
- New blog: QA Engineer Career Levels — Associate, QA, and Senior QA
- New blog: Software Engineer Career Levels — Associate through Principal, Senior Staff, and Architect track
- Content pipeline: strict `--slug=` validation, Playwright visual diagram review, post-deploy smoke tests
- New blog: Top 12 AI GitHub Repositories — OpenClaw, n8n, Ollama, LangChain, Claude Code, and more
- New blog: Linux Essentials for Developers — shell, filesystem, permissions, and processes
- New logo, favicon, and upgraded blog diagrams (diagram-kit with gradient cards)
- Added dark mode toggle with system preference detection
- Newsletter signup on homepage
- RSS feed at /rss.xml for blog subscribers
- Social sharing buttons on all articles
- Course progress tracking saved locally in your browser
- Working site search — courses, articles, topics, and paths
- Topics explorer at /topics — browse content by subject
- Learning Paths at /paths — structured sequences for Backend, AI, Full-Stack, and System Design interview prep
- Related articles section at the bottom of every blog post
June 2026
- New course: System Design Fundamentals — 12 lessons covering scalability, caching, load balancing, CAP theorem, and design case studies
- New course: Databases for Developers — 10 lessons on SQL, NoSQL, schema design, indexes, and vector databases
- New blog article: Communication Protocols Between Services — REST, GraphQL, WebSocket, gRPC, and SOAP compared
- Improved font to Inter with 17px base size and tighter heading letter-spacing
- Fixed blog grid layout — 3-column with full-width last card when alone
- Improved contrast across muted text elements for WCAG AA compliance
May 2026
- Blog launched with 6 deep-dive articles: REST API Authentication, RAG Comparison, Database Selection, Microservices Patterns, Agentic AI Layers, and .NET + AI Era
- Course detail pages with curriculum, instructor card, and progress sidebar
- Lesson pages with before/after code comparisons
- SEO: JSON-LD structured data for courses and articles, sitemap, robots.txt
April 2026
- Site launched with 5 courses: Next.js Fundamentals, TypeScript Essentials, Advanced React Patterns, Building UI Design Systems, and Caching
- Initial design: Inter font, blue primary, clean card layout