<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dev Encyclopedia</title>
    <description>The latest articles on DEV Community by Dev Encyclopedia (@dev_encyclopedia).</description>
    <link>https://dev.to/dev_encyclopedia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3960190%2F006fbb41-1855-46cb-a641-7e9f5326421e.png</url>
      <title>DEV Community: Dev Encyclopedia</title>
      <link>https://dev.to/dev_encyclopedia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_encyclopedia"/>
    <language>en</language>
    <item>
      <title>MCPConfigCheck: Check Your MCP Server Config for Known Supply Chain Risks</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sat, 20 Jun 2026 05:56:39 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/mcpconfigcheck-check-your-mcp-server-config-for-known-supply-chain-risks-51ll</link>
      <guid>https://dev.to/dev_encyclopedia/mcpconfigcheck-check-your-mcp-server-config-for-known-supply-chain-risks-51ll</guid>
      <description>&lt;p&gt;Your MCP config might be one unpinned version away from a supply chain attack.&lt;/p&gt;

&lt;p&gt;If you're running MCP servers in Claude Desktop, Claude Code, Cursor, or VS Code, that config file is now part of your attack surface, and most developers never check it against anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern behind recent incidents
&lt;/h2&gt;

&lt;p&gt;The MCPoison and ContextCrush incidents both followed the same playbook:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A config gets approved once, looking completely benign&lt;/li&gt;
&lt;li&gt;It's silently updated to a malicious version later&lt;/li&gt;
&lt;li&gt;Or a tampered server feeds attacker-controlled instructions directly into the AI agent's context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because MCP servers have direct access to your AI agent's working memory and can invoke tools on your behalf, a compromised server can exfiltrate credentials or execute commands with no visible indication anything is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MCPConfigCheck does
&lt;/h2&gt;

&lt;p&gt;Paste your &lt;code&gt;mcp.json&lt;/code&gt; or &lt;code&gt;claude_desktop_config.json&lt;/code&gt; and it instantly checks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Known incident matches&lt;/strong&gt;: cross-referenced against a maintained catalog of disclosed MCP supply chain incidents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unpinned versions&lt;/strong&gt;: &lt;code&gt;@latest&lt;/code&gt; or no version pin, which can silently resolve to a compromised release&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overly broad filesystem access&lt;/strong&gt;: root (&lt;code&gt;/&lt;/code&gt;) or home directory (&lt;code&gt;~&lt;/code&gt;) access that exposes SSH keys, &lt;code&gt;.env&lt;/code&gt; files, and credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unverified npm scopes&lt;/strong&gt;: packages outside known publisher scopes, more exposed to typosquatting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded secrets&lt;/strong&gt;: API keys or tokens sitting in plain text in your config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unexpected command runners&lt;/strong&gt;: anything outside the standard &lt;code&gt;npx&lt;/code&gt;, &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;uvx&lt;/code&gt;, &lt;code&gt;docker&lt;/code&gt; set&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each server gets a Critical, Warning, or Clean rating with a plain-English explanation and a fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's safe to paste your actual config
&lt;/h2&gt;

&lt;p&gt;Everything runs 100% client-side. The JSON is parsed locally in your browser, the threat catalog is a static bundled dataset, and no network requests are made. Nothing leaves your browser, and if your config has secrets in env vars, they're masked in the output.&lt;/p&gt;

&lt;p&gt;No install, no signup, no server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://devencyclopedia.com/tools/mcpconfigcheck" rel="noopener noreferrer"&gt;https://devencyclopedia.com/tools/mcpconfigcheck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find an incident the catalog doesn't cover yet, there's a contact link on the site to report it for the next update.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>security</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Caching Strategies Explained: CDN, Redis &amp; DB Cache</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Fri, 19 Jun 2026 03:33:32 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/caching-strategies-explained-cdn-redis-db-cache-4fkm</link>
      <guid>https://dev.to/dev_encyclopedia/caching-strategies-explained-cdn-redis-db-cache-4fkm</guid>
      <description>&lt;p&gt;Ask a dev to speed up a slow app and the first word out of their mouth is usually "Redis." That instinct isn't wrong, but it's incomplete. Redis solves one specific problem, shared fast key value lookups across multiple servers, and a huge number of performance issues never need to touch it at all.&lt;/p&gt;

&lt;p&gt;Here's the framing that actually helps: there isn't one cache, there are four. A request from a browser passes through the browser's own cache, then a CDN, then your application's in memory or Redis layer, and finally the database's own cache, before any of your code runs.&lt;/p&gt;

&lt;p&gt;In the full guide, I cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser caching with &lt;code&gt;Cache-Control&lt;/code&gt;: max age, no cache vs no store, and immutable&lt;/li&gt;
&lt;li&gt;CDN caching, and why authenticated or per user data shouldn't go anywhere near it&lt;/li&gt;
&lt;li&gt;In process vs distributed caching, and where each one breaks down at scale&lt;/li&gt;
&lt;li&gt;Cache aside, write through, and write behind patterns, with JS and Python examples&lt;/li&gt;
&lt;li&gt;TTL expiry, event driven invalidation, and versioned keys for handling staleness&lt;/li&gt;
&lt;li&gt;A decision table mapping common data types to the right cache layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus a free Redis memory calculator to help size your instance before you provision anything.&lt;/p&gt;

&lt;p&gt;Read the full breakdown here 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devencyclopedia.com/blog/caching-strategies-explained" rel="noopener noreferrer"&gt;https://devencyclopedia.com/blog/caching-strategies-explained&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>redis</category>
      <category>systemdesign</category>
      <category>devops</category>
    </item>
    <item>
      <title>30 Next.js Interview Questions and Answers (2026)</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Thu, 18 Jun 2026 03:55:55 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/30-nextjs-interview-questions-and-answers-2026-50gg</link>
      <guid>https://dev.to/dev_encyclopedia/30-nextjs-interview-questions-and-answers-2026-50gg</guid>
      <description>&lt;p&gt;Next.js shows up in more frontend and full-stack job postings every year, and the framework keeps moving fast enough that last year's interview prep is already out of date.&lt;/p&gt;

&lt;p&gt;PPR is the stable default in Next.js 16. &lt;code&gt;"use cache"&lt;/code&gt; replaced the confusing implicit fetch caching from Next.js 13/14. &lt;code&gt;params&lt;/code&gt; and &lt;code&gt;searchParams&lt;/code&gt; are now Promises. &lt;code&gt;middleware.ts&lt;/code&gt; is now &lt;code&gt;proxy.ts&lt;/code&gt;. Turbopack is the default bundler for both &lt;code&gt;next dev&lt;/code&gt; and &lt;code&gt;next build&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If your prep material does not cover these, you're walking in with an outdated mental model.&lt;/p&gt;

&lt;p&gt;This guide covers 30 questions across five categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fundamentals:&lt;/strong&gt; what Next.js adds over plain React, rendering strategies, file-based routing, &lt;code&gt;next/image&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Router conventions:&lt;/strong&gt; &lt;code&gt;layout.tsx&lt;/code&gt;, &lt;code&gt;loading.tsx&lt;/code&gt;, route groups, parallel routes, middleware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server vs. Client Components:&lt;/strong&gt; when to use &lt;code&gt;"use client"&lt;/code&gt;, hydration errors, Suspense and streaming, Server Actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data fetching and caching:&lt;/strong&gt; &lt;code&gt;"use cache"&lt;/code&gt;, &lt;code&gt;revalidatePath&lt;/code&gt; vs. &lt;code&gt;revalidateTag&lt;/code&gt;, ISR, the four cache layers, async Request APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance and advanced:&lt;/strong&gt; Partial Prerendering (PPR), Turbopack, &lt;code&gt;next/image&lt;/code&gt; props and Core Web Vitals, authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each answer is written the way you'd say it out loud in an interview, not the way the docs phrase it, with code samples for the questions where you might be asked to write something live.&lt;/p&gt;

&lt;p&gt;There's also a quick reference table at the end with all 30 questions and their core concepts, useful for a final scan the night before.&lt;/p&gt;




&lt;p&gt;Read the full guide with all answers and code samples:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://devencyclopedia.com/blog/nextjs-interview-questions-2026" rel="noopener noreferrer"&gt;30 Next.js Interview Questions and Answers (2026)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Guessing Your LLM API Bill. Compare Claude, GPT-5, and Gemini Costs Side by Side</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Wed, 17 Jun 2026 03:58:04 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/stop-guessing-your-llm-api-bill-compare-claude-gpt-5-and-gemini-costs-side-by-side-2693</link>
      <guid>https://dev.to/dev_encyclopedia/stop-guessing-your-llm-api-bill-compare-claude-gpt-5-and-gemini-costs-side-by-side-2693</guid>
      <description>&lt;p&gt;Provider pricing pages show per-token rates. What they don't show is your actual monthly bill based on your call volume, prompt sizes, and whether you're using context caching.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;LLMCostCalc&lt;/strong&gt;, a free, browser-based calculator that does that math for you across 8 models: Claude Haiku/Sonnet/Opus, GPT-5 mini/GPT-5/GPT-5 Pro, and Gemini 2.5 Flash/Pro.&lt;/p&gt;

&lt;p&gt;Here's what 1,000 calls/day with medium prompts looks like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Monthly Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 2.5 Flash&lt;/td&gt;
&lt;td&gt;$11.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5 mini&lt;/td&gt;
&lt;td&gt;$23.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
&lt;td&gt;$144.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;$540.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.5&lt;/td&gt;
&lt;td&gt;$2,700.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's a 230x spread between the cheapest and most expensive option at the same workload.&lt;/p&gt;

&lt;p&gt;The tool also models &lt;strong&gt;context caching savings&lt;/strong&gt; for Anthropic and Google models, breaks out input vs output costs separately (output tokens are typically 3-5x pricier), and gives you a plain-English recommendation for the best cost-to-quality tradeoff at your volume.&lt;/p&gt;

&lt;p&gt;Everything runs in your browser. No signup, no data sent anywhere.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://devencyclopedia.com/tools/llmcostcalc" rel="noopener noreferrer"&gt;Try LLMCostCalc on Dev Encyclopedia&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>webdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>50 Cloud &amp; DevOps Interview Questions and Answers (2026)</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Tue, 16 Jun 2026 03:51:16 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/50-cloud-devops-interview-questions-and-answers-2026-312d</link>
      <guid>https://dev.to/dev_encyclopedia/50-cloud-devops-interview-questions-and-answers-2026-312d</guid>
      <description>&lt;p&gt;Cloud and DevOps knowledge is no longer optional for backend engineers. AWS Lambda, Docker, and microservices show up in job requirements for roles that used to be purely application-focused. Azure Entra ID is now a standard topic for any role touching enterprise Microsoft environments.&lt;/p&gt;

&lt;p&gt;This guide covers &lt;strong&gt;50 questions&lt;/strong&gt; across 6 categories, written to be said out loud in an interview: specific, grounded in real behavior, with working code examples throughout.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Full article with all answers, code snippets, and a quick reference table:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://devencyclopedia.com/blog/cloud-devops-interview-questions" rel="noopener noreferrer"&gt;devencyclopedia.com/blog/cloud-devops-interview-questions&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What's covered
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Category 1: Serverless &amp;amp; AWS Lambda (Q1–Q8)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What is serverless and what problem does it solve?&lt;/li&gt;
&lt;li&gt;How does the Lambda execution model work?&lt;/li&gt;
&lt;li&gt;Lambda cold starts and how to reduce them (&lt;code&gt;provisioned concurrency&lt;/code&gt;, &lt;code&gt;SnapStart&lt;/code&gt;, runtime choice)&lt;/li&gt;
&lt;li&gt;Reserved vs unreserved vs provisioned concurrency&lt;/li&gt;
&lt;li&gt;Lambda Layers, invocation types, limits, and production monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Category 2: AWS API Gateway (Q9–Q14)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;REST API vs HTTP API vs WebSocket API&lt;/li&gt;
&lt;li&gt;Integration types: Lambda proxy, HTTP, AWS Service, Mock&lt;/li&gt;
&lt;li&gt;Authorization: IAM, Lambda Authorizer, JWT Authorizer&lt;/li&gt;
&lt;li&gt;Throttling, stages, canary deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Category 3: AWS S3 (Q15–Q20)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Core concepts: buckets, objects, keys&lt;/li&gt;
&lt;li&gt;Storage classes: Standard, IA, Glacier, Intelligent-Tiering, Deep Archive&lt;/li&gt;
&lt;li&gt;Versioning, presigned URLs (GET and PUT), event notifications&lt;/li&gt;
&lt;li&gt;Bucket policy vs ACL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Category 4: Docker (Q21–Q32)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker vs VM: shared kernel, boot time, resource overhead&lt;/li&gt;
&lt;li&gt;Image vs container, layer caching, efficient Dockerfiles&lt;/li&gt;
&lt;li&gt;Multi-stage builds (fat build image vs lean production image)&lt;/li&gt;
&lt;li&gt;Compose, network drivers, volumes vs bind mounts&lt;/li&gt;
&lt;li&gt;Container security: non-root, distroless, &lt;code&gt;cap-drop&lt;/code&gt;, read-only FS&lt;/li&gt;
&lt;li&gt;Docker Swarm vs Kubernetes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Category 5: Microservices (Q33–Q42)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Monolith vs microservices: when to use each&lt;/li&gt;
&lt;li&gt;Synchronous (REST, gRPC) vs async (queues, Kafka) communication&lt;/li&gt;
&lt;li&gt;Circuit Breaker pattern (Closed, Open, Half-Open states)&lt;/li&gt;
&lt;li&gt;Saga pattern: choreography vs orchestration&lt;/li&gt;
&lt;li&gt;Event sourcing, distributed tracing, service mesh, 12-factor app&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Category 6: Azure Entra ID (Q43–Q50)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What Entra ID is and how it differs from on-premises AD&lt;/li&gt;
&lt;li&gt;App Registration vs Service Principal&lt;/li&gt;
&lt;li&gt;OAuth 2.0 flows: Auth Code, PKCE, Client Credentials, OBO, Device Code&lt;/li&gt;
&lt;li&gt;Managed Identities (why they replace client secrets)&lt;/li&gt;
&lt;li&gt;Conditional Access, Azure RBAC vs Entra ID roles, SSO, PIM&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick sample: Q29 — Multi-stage Docker build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="c"&gt;# Stage 1: build&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;node:22&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;builder&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; package*.json ./&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm ci
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm run build

&lt;span class="c"&gt;# Stage 2: production image&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;node:22-alpine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;production&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; package*.json ./&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm ci &lt;span class="nt"&gt;--only&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; --from=builder /app/dist ./dist&lt;/span&gt;
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; node&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 3000&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["node", "dist/server.js"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The production image contains only the Alpine runtime, production deps, and compiled output. The build environment is discarded. Result: ~80MB instead of ~800MB.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick sample: Q36 — Circuit Breaker (Node.js)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CircuitBreaker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;opossum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;breaker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;CircuitBreaker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callPaymentService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;errorThresholdPercentage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;resetTimeout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;breaker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deferred&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Payment queued for retry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;span class="nx"&gt;breaker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;open&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Circuit OPEN&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;breaker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fire&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;paymentData&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Quick reference: all 50 questions at a glance
&lt;/h2&gt;

&lt;p&gt;The full article includes a table with every question and its core concept in one pass — useful for a last-minute scan before an interview.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5 things to have solid before you walk in:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cold start mitigation: &lt;code&gt;provisioned concurrency&lt;/code&gt;, &lt;code&gt;SnapStart&lt;/code&gt;, small packages&lt;/li&gt;
&lt;li&gt;REST API vs HTTP API: caching and usage plans vs price and JWT authorizers&lt;/li&gt;
&lt;li&gt;Multi-stage Docker build: separate build image from production image&lt;/li&gt;
&lt;li&gt;Saga pattern: choreography vs orchestration for distributed transactions&lt;/li&gt;
&lt;li&gt;Managed identities: why they replace client secrets in Azure&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Full guide (all 50 answers + code examples):&lt;br&gt;
👉 &lt;a href="https://devencyclopedia.com/blog/cloud-devops-interview-questions" rel="noopener noreferrer"&gt;devencyclopedia.com/blog/cloud-devops-interview-questions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>docker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>40 SQL Interview Questions and Answers (2026)</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Mon, 15 Jun 2026 04:18:13 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/40-sql-interview-questions-and-answers-2026-296m</link>
      <guid>https://dev.to/dev_encyclopedia/40-sql-interview-questions-and-answers-2026-296m</guid>
      <description>&lt;p&gt;SQL shows up in almost every backend and full-stack interview. Not just basic SELECT queries — interviewers want to know if you understand what's happening underneath.&lt;/p&gt;

&lt;p&gt;This guide covers 40 questions across 6 categories, from fundamentals to the kind of advanced questions that separate mid-level from senior candidates.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's covered
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fundamentals&lt;/strong&gt;: SQL sublanguages, NULL behavior, DELETE vs TRUNCATE vs DROP, WHERE vs HAVING, query execution order&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Joins and relationships&lt;/strong&gt;: all JOIN types, self-joins, anti-join pattern, correlated subqueries, N+1 problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indexes and performance&lt;/strong&gt;: B-Tree indexes, clustered vs non-clustered, composite indexes, covering indexes, EXPLAIN ANALYZE&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transactions and concurrency&lt;/strong&gt;: ACID, isolation levels, deadlocks, MVCC, optimistic vs pessimistic locking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced SQL&lt;/strong&gt;: window functions, ROW_NUMBER vs RANK vs DENSE_RANK, LAG/LEAD, CTEs, recursive CTEs, materialized views&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MySQL vs PostgreSQL&lt;/strong&gt;: key differences, upsert patterns, JSONB, classic query challenges&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A few questions worth knowing cold
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why does &lt;code&gt;NULL = NULL&lt;/code&gt; return NULL and not TRUE?&lt;/strong&gt;&lt;br&gt;
SQL uses three-valued logic: TRUE, FALSE, and NULL (unknown). A comparison with NULL always returns NULL. Use &lt;code&gt;IS NULL&lt;/code&gt; / &lt;code&gt;IS NOT NULL&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the N+1 query problem?&lt;/strong&gt;&lt;br&gt;
It happens when you fetch a list of records, then run a separate query for each one. Fix it with a JOIN or eager loading at the ORM level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When should you NOT add an index?&lt;/strong&gt;&lt;br&gt;
On small tables, columns with low cardinality (like a boolean), or tables with very high write volume where index maintenance cost outweighs read gains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between RANK and DENSE_RANK?&lt;/strong&gt;&lt;br&gt;
Both assign rankings with ties, but RANK skips numbers after a tie (1, 1, 3) while DENSE_RANK does not (1, 1, 2).&lt;/p&gt;




&lt;p&gt;Full answers, code examples, and EXPLAIN output walkthroughs for all 40 questions are on Dev Encyclopedia.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://devencyclopedia.com/blog/sql-database-interview-questions" rel="noopener noreferrer"&gt;https://devencyclopedia.com/blog/sql-database-interview-questions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>webdev</category>
      <category>interview</category>
    </item>
    <item>
      <title>GitHub Actions Security: 7 Misconfigurations to Avoid</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sun, 14 Jun 2026 05:47:22 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/github-actions-security-7-misconfigurations-to-avoid-3h35</link>
      <guid>https://dev.to/dev_encyclopedia/github-actions-security-7-misconfigurations-to-avoid-3h35</guid>
      <description>&lt;p&gt;GitHub Actions is the most-targeted CI/CD platform in the world right now. Not because it's insecure by design because billions of automated workflows run on it daily, most with misconfigured permissions, mutable dependencies, and zero security review.&lt;/p&gt;

&lt;p&gt;In 2026 alone: the Megalodon campaign poisoned thousands of repos in six hours. The TanStack cache poisoning attack published malicious packages with valid, signed provenance. The &lt;code&gt;tj-actions/changed-files&lt;/code&gt; compromise exfiltrated secrets from thousands of repos in a single day.&lt;/p&gt;

&lt;p&gt;All of them used GitHub Actions misconfigurations as the entry point.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 7 misconfigurations covered:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Overly Permissive &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;&lt;/strong&gt; — write-all is still the default for repos created before Feb 2023&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pull_request_target&lt;/code&gt; with untrusted code&lt;/strong&gt; — the pattern behind the highest-impact GHA CVEs ever disclosed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unpinned third-party actions&lt;/strong&gt; — &lt;code&gt;@v4&lt;/code&gt; is mutable; one compromised repo and every workflow picks it up&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expression injection (script injection)&lt;/strong&gt; — &lt;code&gt;${{ github.event.pull_request.title }}&lt;/code&gt; in a &lt;code&gt;run:&lt;/code&gt; block is a shell injection vector&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets in logs and artifacts&lt;/strong&gt; — GitHub's masking only catches exact-match patterns; encoded values bypass it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared caches across trust boundaries&lt;/strong&gt; — how the TanStack attack actually worked&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted runners without isolation&lt;/strong&gt; — ephemeral by default on GitHub-hosted; not on yours&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Plus a &lt;strong&gt;5-minute hardening checklist&lt;/strong&gt; and a one-command audit using &lt;code&gt;zizmor&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Full breakdown with code examples, fixes, and a copy-paste checklist:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://devencyclopedia.com/blog/github-actions-security" rel="noopener noreferrer"&gt;GitHub Actions Security: 7 Misconfigurations to Avoid&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>security</category>
      <category>devops</category>
      <category>cicd</category>
    </item>
    <item>
      <title>GitHub Actions Tutorial: CI/CD from Push to Deploy (2026)</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sat, 13 Jun 2026 20:09:46 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/github-actions-tutorial-cicd-from-push-to-deploy-2026-1a9l</link>
      <guid>https://dev.to/dev_encyclopedia/github-actions-tutorial-cicd-from-push-to-deploy-2026-1a9l</guid>
      <description>&lt;p&gt;Most teams set up CI/CD once, copy-paste it forever, and never really understand what's happening inside that YAML file.&lt;/p&gt;

&lt;p&gt;This tutorial breaks it down from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Inside
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your first workflow file, explained line by line&lt;/li&gt;
&lt;li&gt;Running tests automatically on every push and pull request&lt;/li&gt;
&lt;li&gt;Using Secrets so API keys never end up in your repo&lt;/li&gt;
&lt;li&gt;Deploying to a server via SSH after tests pass&lt;/li&gt;
&lt;li&gt;Caching dependencies so CI runs finish in seconds, not minutes&lt;/li&gt;
&lt;li&gt;Matrix builds to test across multiple Node.js versions in parallel&lt;/li&gt;
&lt;li&gt;The 5 most common workflow errors and how to fix them&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If GitHub Actions has always felt like magic you just trust and don't touch, this guide is worth a read.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://devencyclopedia.com/blog/github-actions-tutorial" rel="noopener noreferrer"&gt;Read the full article on Dev Encyclopedia&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>devops</category>
      <category>cicd</category>
      <category>webdev</category>
    </item>
    <item>
      <title>React Fiber Architecture Explained: How React Renders UI</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sat, 13 Jun 2026 04:13:13 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/react-fiber-architecture-explained-how-react-renders-ui-4687</link>
      <guid>https://dev.to/dev_encyclopedia/react-fiber-architecture-explained-how-react-renders-ui-4687</guid>
      <description>&lt;p&gt;Fiber has been React's core engine since v16, but most devs never look at how it actually works. Here's a plain-English breakdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem before Fiber
&lt;/h2&gt;

&lt;p&gt;The old Stack Reconciler would walk the entire component tree in one uninterruptible pass. A slow render locked the main thread completely. Typing, clicking, scrolling — all blocked.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Fiber changed
&lt;/h2&gt;

&lt;p&gt;Fiber breaks rendering into small units of work (one fiber per component). Each fiber is a JS object with &lt;code&gt;child&lt;/code&gt;, &lt;code&gt;sibling&lt;/code&gt;, and &lt;code&gt;return&lt;/code&gt; pointers — a linked list structure that lets React walk the tree incrementally and pause mid-render.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two phases
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Render phase&lt;/strong&gt; — runs component functions, diffs old vs new. Invisible to the user. Can pause, restart, or be thrown away entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commit phase&lt;/strong&gt; — writes DOM changes. Synchronous and atomic. Users only ever see a complete UI.&lt;/p&gt;

&lt;p&gt;This split directly explains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why &lt;code&gt;useEffect&lt;/code&gt; runs after paint (scheduled after commit)&lt;/li&gt;
&lt;li&gt;Why &lt;code&gt;useLayoutEffect&lt;/code&gt; runs before paint (fires during commit)&lt;/li&gt;
&lt;li&gt;Why Strict Mode double-invokes components (render phase can restart)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lanes (priority system)
&lt;/h2&gt;

&lt;p&gt;Every update gets a lane:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SyncLane&lt;/code&gt; — clicks, keypresses (highest priority)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DefaultLane&lt;/code&gt; — regular state updates&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TransitionLane&lt;/code&gt; — updates wrapped in &lt;code&gt;useTransition&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;IdleLane&lt;/code&gt; — background work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;High-priority lanes always run first. This is what makes &lt;code&gt;useTransition&lt;/code&gt; work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Double buffering
&lt;/h2&gt;

&lt;p&gt;React keeps two trees: the current tree (on screen) and a work-in-progress tree (built off-screen). On commit, they swap. You never see a half-rendered UI.&lt;/p&gt;




&lt;p&gt;I wrote a full deep-dive with diagrams covering all of this in detail:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://devencyclopedia.com/blog/react-fiber-architecture-explained" rel="noopener noreferrer"&gt;https://devencyclopedia.com/blog/react-fiber-architecture-explained&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Next.js Dark Mode Without the Flash (Tailwind v4)</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Mon, 08 Jun 2026 03:09:15 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/nextjs-dark-mode-without-the-flash-tailwind-v4-4io0</link>
      <guid>https://dev.to/dev_encyclopedia/nextjs-dark-mode-without-the-flash-tailwind-v4-4io0</guid>
      <description>&lt;p&gt;Every dark mode implementation has the same enemy: the flash.&lt;/p&gt;

&lt;p&gt;The page renders in light mode, then instantly switches to dark. It happens because JavaScript applies the CSS class after the HTML is already painted -- and by then it's too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Happens
&lt;/h2&gt;

&lt;p&gt;Browsers paint HTML before JavaScript runs. By the time your JS reads &lt;code&gt;localStorage&lt;/code&gt; and adds &lt;code&gt;dark&lt;/code&gt; to &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;, the first frame is already done.&lt;/p&gt;

&lt;p&gt;The only real fix is a blocking inline script in &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; that runs before any rendering. That's what &lt;code&gt;next-themes&lt;/code&gt; handles automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Key Pieces
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;code&gt;suppressHydrationWarning&lt;/code&gt; goes on &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;, not &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most guides get this wrong. Without it on the right element, you'll still see hydration warnings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Tailwind v4 dropped &lt;code&gt;darkMode: 'class'&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add this to &lt;code&gt;globals.css&lt;/code&gt; instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@custom-variant&lt;/span&gt; &lt;span class="n"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="n"&gt;dark&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dark&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the #1 reason dark mode breaks after upgrading to Tailwind v4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Mount-guard your toggle button&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;useTheme()&lt;/code&gt; returns &lt;code&gt;undefined&lt;/code&gt; during hydration. Render &lt;code&gt;null&lt;/code&gt; until mounted or your toggle will flicker.&lt;/p&gt;




&lt;p&gt;Full setup with complete code, Cloudflare Pages notes, and troubleshooting:&lt;br&gt;
👉 &lt;a href="https://devencyclopedia.com/blog/nextjs-dark-mode-without-flash" rel="noopener noreferrer"&gt;https://devencyclopedia.com/blog/nextjs-dark-mode-without-flash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>darkmode</category>
      <category>react</category>
    </item>
    <item>
      <title>Claude Code Cheatsheet: Commands, Hooks &amp; Subagents</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sun, 07 Jun 2026 05:47:58 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/claude-code-cheatsheet-commands-hooks-subagents-f4h</link>
      <guid>https://dev.to/dev_encyclopedia/claude-code-cheatsheet-commands-hooks-subagents-f4h</guid>
      <description>&lt;p&gt;Most developers use Claude Code like a fancy autocomplete. That's maybe 20% of what it can do.&lt;/p&gt;

&lt;p&gt;Claude Code is a terminal agent with full project access. It reads files, runs shell commands, commits to git, runs parallel subagents, and enforces rules through lifecycle hooks. Once you know the full feature set, the way you work changes.&lt;/p&gt;

&lt;p&gt;I put together a complete reference covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every slash command and when to reach for each&lt;/li&gt;
&lt;li&gt;Keyboard shortcuts worth memorizing (&lt;code&gt;Esc Esc&lt;/code&gt;, &lt;code&gt;Ctrl+B&lt;/code&gt;, &lt;code&gt;!command&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CLAUDE.md&lt;/code&gt; — the file that shapes every session&lt;/li&gt;
&lt;li&gt;Hooks — the rules Claude literally &lt;strong&gt;cannot&lt;/strong&gt; ignore&lt;/li&gt;
&lt;li&gt;Custom slash commands vs. Skills (and the threshold for choosing)&lt;/li&gt;
&lt;li&gt;Subagents — how parallel workers cut a 20-min task to 7 min&lt;/li&gt;
&lt;li&gt;PR review setup with inline GitHub comments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The thing most people miss: CLAUDE.md vs. Hooks
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is &lt;em&gt;advisory&lt;/em&gt;. Claude reads it at session start and follows its instructions roughly 80% of the time. It's the right place for style preferences, stack context, and reminders.&lt;/p&gt;

&lt;p&gt;Hooks are deterministic shell scripts. A &lt;code&gt;PreToolUse&lt;/code&gt; hook that exits with code 1 stops Claude cold. No exceptions, no model judgment. That's how you block &lt;code&gt;rm -rf&lt;/code&gt;, enforce Prettier on every write, and prevent &lt;code&gt;.env&lt;/code&gt; files from ever touching a commit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo $CLAUDE_TOOL_INPUT_COMMAND | grep -q 'rm -rf' &amp;amp;&amp;amp; exit 1 || exit 0"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Rule of thumb: &lt;code&gt;CLAUDE.md&lt;/code&gt; for guidance, hooks for anything where "most of the time" is not good enough.&lt;/p&gt;
&lt;h2&gt;
  
  
  Subagents change the math on long tasks
&lt;/h2&gt;

&lt;p&gt;Context windows fill up. In a long session, the earlier parts of your conversation fade from Claude's working memory and output quality drops.&lt;/p&gt;

&lt;p&gt;Subagents solve this by offloading work to separate Claude instances with clean, empty context. Claude can run &lt;strong&gt;three subagents simultaneously&lt;/strong&gt;. Code review, test run, and DB migration check in parallel instead of sequentially. Tasks that take 20 minutes in a single session regularly finish in 7.&lt;/p&gt;

&lt;p&gt;Full cheatsheet with every command, shortcut, hook type, and subagent config with working examples throughout:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://devencyclopedia.com/blog/claude-code-cheatsheet" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.devencyclopedia.com%2Fblogs%2Fclaude-code-cheatsheet%2Fog.png" height="450" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://devencyclopedia.com/blog/claude-code-cheatsheet" rel="noopener noreferrer" class="c-link"&gt;
            Claude Code Cheatsheet: Commands, Hooks &amp;amp; Subagents — Dev Encyclopedia
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The complete Claude Code reference: every slash command, keyboard shortcut, hook, subagent, and CLAUDE.md tip — with real examples for developers.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
          devencyclopedia.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://devencyclopedia.com" rel="noopener noreferrer"&gt;Dev Encyclopedia&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>GitHub Copilot Just Changed How It Charges You, Here's What It Means</title>
      <dc:creator>Dev Encyclopedia</dc:creator>
      <pubDate>Sat, 06 Jun 2026 07:25:15 +0000</pubDate>
      <link>https://dev.to/dev_encyclopedia/github-copilot-just-changed-how-it-charges-you-heres-what-it-means-hic</link>
      <guid>https://dev.to/dev_encyclopedia/github-copilot-just-changed-how-it-charges-you-heres-what-it-means-hic</guid>
      <description>&lt;p&gt;GitHub Copilot dropped the flat-rate model on June 1. Now it uses &lt;strong&gt;AI Credits&lt;/strong&gt; and a lot of developers are getting surprised bills.&lt;/p&gt;

&lt;p&gt;Here's the 2-minute version:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Tab completions&lt;/strong&gt; → still free, unlimited&lt;br&gt;
❌ &lt;strong&gt;Chat, agent mode, code review&lt;/strong&gt; → costs credits now&lt;/p&gt;

&lt;h2&gt;
  
  
  How fast do credits run out?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Credits/month&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;1,500&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro+&lt;/td&gt;
&lt;td&gt;7,000&lt;/td&gt;
&lt;td&gt;$39&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One agentic session on Claude Opus or GPT-5.5 = up to &lt;strong&gt;200 credits&lt;/strong&gt;.&lt;br&gt;
That's your whole week gone in a single session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should you do?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Switch to &lt;strong&gt;GPT-5 mini&lt;/strong&gt; for quick questions (saves 70–80%)&lt;/li&gt;
&lt;li&gt;Set a &lt;strong&gt;spending cap&lt;/strong&gt; in GitHub billing settings&lt;/li&gt;
&lt;li&gt;Batch your questions — fewer sessions = fewer credits&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Full breakdown by workflow + free cost calculator 👇&lt;/strong&gt;&lt;br&gt;
🔗 &lt;a href="https://devencyclopedia.com/blog/github-copilot-token-billing-2026" rel="noopener noreferrer"&gt;https://devencyclopedia.com/blog/github-copilot-token-billing-2026&lt;/a&gt;&lt;br&gt;
🧮 &lt;a href="https://devencyclopedia.com/tools/copilot-credit-calculator" rel="noopener noreferrer"&gt;https://devencyclopedia.com/tools/copilot-credit-calculator&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
