<?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: Thibaud</title>
    <description>The latest articles on DEV Community by Thibaud (@thibaudlepan).</description>
    <link>https://dev.to/thibaudlepan</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%2F4102581%2F9d3bd60f-236a-472b-b078-77911ecdcbfe.png</url>
      <title>DEV Community: Thibaud</title>
      <link>https://dev.to/thibaudlepan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thibaudlepan"/>
    <language>en</language>
    <item>
      <title>Six things old AZ-900 and DP-900 practice tests still teach that Microsoft has changed</title>
      <dc:creator>Thibaud</dc:creator>
      <pubDate>Mon, 05 Oct 2026 00:35:36 +0000</pubDate>
      <link>https://dev.to/thibaudlepan/six-things-old-az-900-and-dp-900-practice-tests-still-teach-that-microsoft-has-changed-4hop</link>
      <guid>https://dev.to/thibaudlepan/six-things-old-az-900-and-dp-900-practice-tests-still-teach-that-microsoft-has-changed-4hop</guid>
      <description>&lt;p&gt;Microsoft Learn moves faster than most practice question banks. While writing AZ-900 and DP-900 questions against the current skills outlines (July 20 and July 21, 2026), I kept running into answers that older material still teaches and that Microsoft's own pages now contradict. Here are six, each with the sentence from Microsoft Learn that settles it, read on October 5, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Azure Active Directory is Microsoft Entra ID
&lt;/h2&gt;

&lt;p&gt;You probably know this one, but old questions still use the old name, and some options mix the two to confuse you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Capabilities or services formerly known as "Azure Active Directory" or "Azure AD" are branded as Microsoft Entra product family features."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On the exam, expect Microsoft Entra ID, Microsoft Entra Domain Services and Microsoft Entra Conditional Access.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Entra External ID is not the new name of Azure AD B2C
&lt;/h2&gt;

&lt;p&gt;This one catches people out, because it sounds like the same rename.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is Microsoft Entra External ID a new name for Azure AD B2C? No, it's not a new name for Azure AD B2C."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;External ID is a separate, newer product for customer and partner identities. Azure AD B2C still exists for current customers, but the same FAQ says that effective May 1, 2025, its P1 and P2 plans are no longer available to purchase for new customers. If a question describes a new consumer app that needs sign-up and sign-in, the current answer is External ID.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The TCO calculator has been retired
&lt;/h2&gt;

&lt;p&gt;Many AZ-900 banks still ask you to choose between the pricing calculator and the Total Cost of Ownership calculator. The AZ-900 training module now says this.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The Total Cost of Ownership (TCO) calculator has been retired."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The pricing calculator is the tool the module points to for estimating Azure costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Data Migration Assistant is retired
&lt;/h2&gt;

&lt;p&gt;DP-900 questions about moving SQL Server to Azure used to end with "run the Data Migration Assistant". Its own overview page is now explicit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Data Migration Assistant (DMA) is retired from July 16, 2025."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The page sends you to the SQL Server to Azure SQL migration overview instead, where Azure Migrate handles discovery and assessment.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Azure Cosmos DB for PostgreSQL is on its way out
&lt;/h2&gt;

&lt;p&gt;Older DP-900 material lists it next to the other Cosmos DB APIs. Its page now opens with a warning.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Azure Cosmos DB for PostgreSQL is on a retirement path and no longer recommended for new projects."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Cosmos DB APIs worth knowing for DP-900 are NoSQL, MongoDB, Table, Apache Cassandra and Apache Gremlin.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. AI-900 is retired
&lt;/h2&gt;

&lt;p&gt;Not a question topic, but a planning trap. Plenty of guides still suggest AI-900 as the next step after AZ-900. Its study guide now carries this notice.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This exam was retired on June 30, 2026, at 11:59 PM Central Standard Time."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why this matters on exam day
&lt;/h2&gt;

&lt;p&gt;Microsoft writes the exam from the current skills outline, so an answer that was right two years ago can now be the distractor. When a practice question and Microsoft Learn disagree, trust Learn, and check the date on the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice
&lt;/h2&gt;

&lt;p&gt;I put 30 free questions online for each exam, split by the official skill area weights, no signup. After each answer you get the sentence from Microsoft Learn that backs it, with the link.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thibaudlepan77-svg.github.io/interview-questions-verified/az-900-azure-fundamentals-practice-questions.html" rel="noopener noreferrer"&gt;30 free AZ-900 practice questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thibaudlepan77-svg.github.io/interview-questions-verified/dp-900-azure-data-fundamentals-practice-questions.html" rel="noopener noreferrer"&gt;30 free DP-900 practice questions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each comes from a set of 300, four full exams and a drill, as a PDF on Ko-fi for 12 euros (&lt;a href="https://ko-fi.com/s/43bc8b8b2e" rel="noopener noreferrer"&gt;AZ-900&lt;/a&gt;, &lt;a href="https://ko-fi.com/s/d0f0b558d1" rel="noopener noreferrer"&gt;DP-900&lt;/a&gt;) or as a timed Udemy practice test course at 12.99 dollars until November 4 (&lt;a href="https://www.udemy.com/course/microsoft-az-900-azure-fundamentals-practice-exams-2026-g/?couponCode=F667843D60F9049C4E9B" rel="noopener noreferrer"&gt;AZ-900&lt;/a&gt;, &lt;a href="https://www.udemy.com/course/microsoft-dp-900-azure-data-fundamentals-practice-exams-2026/?couponCode=FE04D3FD94F3B9C644D5" rel="noopener noreferrer"&gt;DP-900&lt;/a&gt;). If you spot an answer that Learn contradicts, tell me in the comments.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>certification</category>
      <category>cloud</category>
      <category>career</category>
    </item>
    <item>
      <title>Eight Scrum habits that cost points on a Scrum Master assessment</title>
      <dc:creator>Thibaud</dc:creator>
      <pubDate>Mon, 05 Oct 2026 00:11:17 +0000</pubDate>
      <link>https://dev.to/thibaudlepan/eight-scrum-habits-that-cost-points-on-a-scrum-master-assessment-emo</link>
      <guid>https://dev.to/thibaudlepan/eight-scrum-habits-that-cost-points-on-a-scrum-master-assessment-emo</guid>
      <description>&lt;p&gt;Experience can work against you on a Scrum Master assessment. Your team runs Scrum a certain way, and the questions are written against the 2020 Scrum Guide, which is shorter and stricter than most teams. I wrote 200 practice questions using nothing but that guide, and these are the habits that cost points over and over.&lt;/p&gt;

&lt;p&gt;Every quote below is from The 2020 Scrum Guide by Ken Schwaber and Jeff Sutherland, offered under the Creative Commons Attribution Share-Alike 4.0 license.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Daily Scrum belongs to the Developers
&lt;/h2&gt;

&lt;p&gt;Many teams have the Scrum Master or a manager run the stand-up. The guide is plain about whose event it is.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The Daily Scrum is a 15-minute event for the Developers of the Scrum Team."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Product Owner and Scrum Master take part as Developers only when they actually work on Sprint Backlog items. And the format is up to the Developers, as long as it inspects progress toward the Sprint Goal and produces a plan for the next day.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. There is no Development Team anymore
&lt;/h2&gt;

&lt;p&gt;The 2020 guide talks about one Scrum Team made of one Scrum Master, one Product Owner and Developers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Within a Scrum Team, there are no sub-teams or hierarchies."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An option that says "the Development Team decides" is written in 2017 vocabulary. It is often the distractor.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Each artifact has a commitment, and you need all three
&lt;/h2&gt;

&lt;p&gt;Commitments are one of the additions of the 2020 version.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"For the Product Backlog it is the Product Goal. For the Sprint Backlog it is the Sprint Goal. For the Increment it is the Definition of Done."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a question asks what gives the Product Backlog its direction, the answer is the Product Goal, not the roadmap or the release plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Velocity and story points are not in the guide
&lt;/h2&gt;

&lt;p&gt;Search the 2020 guide for velocity, story points or user stories and you will not find them. They may be good practices, but an answer that makes them mandatory is wrong by the guide. Burn-down charts are a special case, the guide does mention them, as one forecasting practice among several.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Various practices exist to forecast progress, like burn-downs, burn-ups, or cumulative flows. While proven useful, these do not replace the importance of empiricism."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. Refinement is an activity, not an event
&lt;/h2&gt;

&lt;p&gt;There are five events, the Sprint, Sprint Planning, the Daily Scrum, the Sprint Review and the Sprint Retrospective. Refinement is not one of them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This is an ongoing activity to add details, such as a description, order, and size."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So an option that schedules a "refinement event" with a timebox is not Scrum as the guide defines it.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The Sprint Review is not a release gate
&lt;/h2&gt;

&lt;p&gt;Teams that release once a Sprint often assume the Review is where the release gets approved.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The Sprint Review should never be considered a gate to releasing value."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An Increment can go to stakeholders before the end of the Sprint.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Know the timeboxes for a one-month Sprint
&lt;/h2&gt;

&lt;p&gt;Sprint Planning is a maximum of eight hours, the Sprint Review four hours, the Sprint Retrospective three hours, and the Daily Scrum 15 minutes. For shorter Sprints the guide says the events are usually shorter, without giving a formula.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Only the Product Owner can cancel a Sprint
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Only the Product Owner has the authority to cancel the Sprint."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not the Scrum Master, not the Developers, not a stakeholder, even a senior one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use this
&lt;/h2&gt;

&lt;p&gt;Read the 2020 guide once, slowly. It is short. Then, when a practice question tempts you with something your team does, ask whether the guide says it. If it does not, it is probably the trap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice
&lt;/h2&gt;

&lt;p&gt;I put 30 questions online for free, six from each part of the guide, no signup. Each answer shows the sentence of the Scrum Guide that settles it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thibaudlepan77-svg.github.io/interview-questions-verified/scrum-master-practice-questions-scrum-guide.html" rel="noopener noreferrer"&gt;30 free Scrum practice questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They come from a set of 200, four tests and a drill. It is a &lt;a href="https://ko-fi.com/s/126cedd65d" rel="noopener noreferrer"&gt;PDF on Ko-fi for 9 euros&lt;/a&gt;, or the same questions as a &lt;a href="https://www.udemy.com/course/scrum-master-practice-tests-200-questions-scrum-guide-2020/?couponCode=45FB1D4B5DC49B96882A" rel="noopener noreferrer"&gt;Udemy practice test course&lt;/a&gt; at 12.99 dollars with that link until November 4. If you think one of my answers reads the guide wrongly, tell me in the comments.&lt;/p&gt;

</description>
      <category>scrum</category>
      <category>agile</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What changed in the AWS AI Practitioner exam guide, AIF-C01 version 1.1</title>
      <dc:creator>Thibaud</dc:creator>
      <pubDate>Sun, 04 Oct 2026 22:54:40 +0000</pubDate>
      <link>https://dev.to/thibaudlepan/what-changed-in-the-aws-ai-practitioner-exam-guide-aif-c01-version-11-53hc</link>
      <guid>https://dev.to/thibaudlepan/what-changed-in-the-aws-ai-practitioner-exam-guide-aif-c01-version-11-53hc</guid>
      <description>&lt;p&gt;If you are preparing for the AWS Certified AI Practitioner exam with material written before May 2026, part of the syllabus moved under you. AWS published version 1.1 of the AIF-C01 exam guide on April 30, 2026, five weeks after version 1.0, and the guide itself says updates show up on the exam about a month after publication. I went through the revision page line by line while writing a set of practice questions, and this is what changed.&lt;/p&gt;

&lt;p&gt;The domain weights in version 1.1 are Fundamentals of AI and ML 20 percent, Fundamentals of GenAI 24, Applications of Foundation Models 28, Guidelines for Responsible AI 14, Security, Compliance, and Governance for AI Solutions 14. The exam has 65 questions, 50 of them scored, and you need 700 out of 1,000 to pass. The revision page lists its changes objective by objective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seven objectives that did not exist before
&lt;/h2&gt;

&lt;p&gt;These are new lines in version 1.1, not rewordings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.2.6&lt;/strong&gt; When to use traditional ML models versus foundation models, for example because of regulatory concerns, explainability or operational constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.1.4&lt;/strong&gt; The token based pricing model and how it affects cost and performance for inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.1.5&lt;/strong&gt; The role of context engineering in FM applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.1.6&lt;/strong&gt; Foundational agentic AI concepts. Multi-agent patterns, Model Context Protocol and how it connects agents to external systems, multi-agent communication, memory management, tool usage and workflow orchestration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3.2.5&lt;/strong&gt; Prompt versioning and management with Amazon Bedrock Prompt Management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3.4.5&lt;/strong&gt; Business alignment metrics for AI applications, such as task completion rate, user satisfaction and cost per interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5.1.5&lt;/strong&gt; Hallucination detection and grounding, such as RAG grounding, output validation and confidence scoring.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agentic AI is the big one. It now appears in the basic terms you must define (1.1.1), in the comparison between AI, ML, GenAI and deep learning (1.1.2), in real world applications (1.2.4), in a whole new objective (2.1.6), and in the security objective through AgentCore Identity and Policy in AgentCore (5.1.1).&lt;/p&gt;

&lt;h2&gt;
  
  
  Services that came in
&lt;/h2&gt;

&lt;p&gt;The revision page lists seven services added to the in-scope list. Amazon Aurora, Amazon Bedrock AgentCore, Kiro, Strands Agents, Amazon Q, Amazon SageMaker JumpStart and AWS Transform. Amazon MemoryDB left the list.&lt;/p&gt;

&lt;p&gt;One detail if you read the guide closely. Amazon Q is in that "added" list and in the revision table for objective 1.3.4, but the in-scope services page and the objective 1.3.4 as published today do not mention it. Objective 1.3.4 now gives Amazon Bedrock, Amazon Quick, Kiro and SageMaker AI as examples. I would not spend much time on Amazon Q until the guide settles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples that changed inside existing objectives
&lt;/h2&gt;

&lt;p&gt;Some objectives kept their number but swapped their examples, which is where older question banks quietly go stale.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inference types (1.1.3)&lt;/strong&gt; used to say batch and real-time. It now adds asynchronous and serverless.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model metrics (1.3.6)&lt;/strong&gt; dropped Area Under the Curve and now lists accuracy, precision, recall and F1 score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline services (1.3.4)&lt;/strong&gt; used to point at SageMaker Data Wrangler, Feature Store and Model Monitor. The examples are now Amazon Bedrock, Amazon Quick, Kiro and SageMaker AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Services to build GenAI apps (2.3.1)&lt;/strong&gt; no longer cite Bedrock PartyRock or Bedrock Data Automation. The new examples are Bedrock, SageMaker AI, JumpStart, Amazon Quick, Kiro, Strands Agents and Bedrock AgentCore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents (3.1.6)&lt;/strong&gt; used to name Amazon Bedrock Agents. It now asks you to define the role of AI agents and their business applications, without naming a product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization cost (3.1.5)&lt;/strong&gt; adds model distillation next to pre-training, fine-tuning, in-context learning and RAG.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FM evaluation metrics (3.4.2)&lt;/strong&gt; add LLM-as-a-judge next to ROUGE, BLEU and BERTScore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability tools (4.2.2)&lt;/strong&gt; add SageMaker Clarify and Amazon Bedrock Model Evaluations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security considerations (5.1.4)&lt;/strong&gt; add data leakage prevention, output filtering and validation, audit trails for AI interactions, and toxicity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I would study with this
&lt;/h2&gt;

&lt;p&gt;If your course predates May 2026, keep it. Most of the exam is still the same material. Then spend extra time on three things the old courses barely touch. What an agent is and how it uses tools, memory and MCP. How tokens drive cost, and when RAG, fine-tuning or distillation is the cheaper route. And the Bedrock pieces that make answers safer, Guardrails, contextual grounding and Prompt Management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AIF-C01 exam guide, &lt;code&gt;docs.aws.amazon.com/aws-certification/latest/ai-practitioner-01/ai-practitioner-01.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Revisions page of the same guide, &lt;code&gt;aif-01-revisions.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In-scope services page, &lt;code&gt;aif-01-in-scope-services.html&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three read on October 5, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice
&lt;/h2&gt;

&lt;p&gt;I put 30 AIF-C01 questions online for free, written against version 1.1, split by the official domain weights, no signup. After each answer you see the sentence from the AWS documentation that backs it, with the link.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thibaudlepan77-svg.github.io/interview-questions-verified/aws-ai-practitioner-aif-c01-practice-questions.html" rel="noopener noreferrer"&gt;30 free AIF-C01 practice questions with sources&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They come from a set of 300, four full exams and a drill. It is a &lt;a href="https://ko-fi.com/s/76cb2752a0" rel="noopener noreferrer"&gt;PDF on Ko-fi for 12 euros&lt;/a&gt;, or the same questions as a &lt;a href="https://www.udemy.com/course/aws-ai-practitioner-aif-c01-practice-exams-300-questions/?couponCode=472A6455B764390E1161" rel="noopener noreferrer"&gt;timed Udemy practice test course&lt;/a&gt; at 12.99 dollars with that link until November 4. If a quote has changed by the time you read this, tell me in the comments and I will fix the question.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>certification</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>AWS Support plans changed, and most CLF-C02 notes have not</title>
      <dc:creator>Thibaud</dc:creator>
      <pubDate>Sun, 04 Oct 2026 21:56:26 +0000</pubDate>
      <link>https://dev.to/thibaudlepan/aws-support-plans-changed-and-most-clf-c02-notes-have-not-5fll</link>
      <guid>https://dev.to/thibaudlepan/aws-support-plans-changed-and-most-clf-c02-notes-have-not-5fll</guid>
      <description>&lt;p&gt;AWS has reshuffled its Support plans, and a lot of Cloud Practitioner prep material has not caught up yet. Support plans sit under task 4.3 of the CLF-C02 exam guide, so this is one of the few places where an old flashcard can cost you a point. I went through the current AWS documentation line by line while checking a set of practice questions, and this is what it says as of October 4, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lineup today
&lt;/h2&gt;

&lt;p&gt;The AWS Support plans page lists four plans.&lt;/p&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;Starts at&lt;/th&gt;
&lt;th&gt;What it adds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;free, every account&lt;/td&gt;
&lt;td&gt;account and billing help, support forums, service health checks, documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business Support+&lt;/td&gt;
&lt;td&gt;$29 per month per account&lt;/td&gt;
&lt;td&gt;24x7 phone, web and chat with Cloud Support Engineers, generative AI help, under 30 minutes human engagement for business critical system down cases, more than 500 Trusted Advisor checks, the Support API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise Support&lt;/td&gt;
&lt;td&gt;$5,000 minimum, down from $15,000&lt;/td&gt;
&lt;td&gt;a designated Technical Account Manager, up to 15 minute response on production critical cases, AWS Security Incident Response, strategic business reviews, AWS Countdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unified Operations&lt;/td&gt;
&lt;td&gt;above Enterprise&lt;/td&gt;
&lt;td&gt;a designated TAM plus Domain Specialist Engineers, architecture guidance, infrastructure event management, critical workload reviews and personalised runbooks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is going away
&lt;/h2&gt;

&lt;p&gt;Three names you will still meet in older courses and question banks are on their way out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developer Support&lt;/strong&gt; will be discontinued on January 1, 2027. Existing customers can keep it until then or move to Business Support+.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business Support&lt;/strong&gt;, the plan without the plus, will be discontinued on the same date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise On-Ramp&lt;/strong&gt; will be discontinued on January 1, 2027 as well. AWS is moving On-Ramp customers to Enterprise Support through 2026, at renewal or in batches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The three old plans stay available in the AWS GovCloud (US) Region. Everywhere else, the lineup above is what AWS documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this shows up in a question
&lt;/h2&gt;

&lt;p&gt;A few patterns are worth having in your head.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Cheapest plan with 24x7 phone access to engineers."&lt;/strong&gt; The current answer is Business Support+. Older banks say Business, and before that some used Developer as a distractor for "business hours email only". If both Business and Business Support+ appear in the options, read the wording slowly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which plan includes a designated Technical Account Manager?"&lt;/strong&gt; Enterprise Support, and Unified Operations. Not Business Support+. Older material often answered Enterprise On-Ramp with a "pool of TAMs". AWS is moving On-Ramp customers to Enterprise Support during 2026, so that answer is on its way out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"A team on Basic Support only sees a few Trusted Advisor checks."&lt;/strong&gt; Full Trusted Advisor checks, and the Trusted Advisor API, need Business Support+, Enterprise Support or Unified Operations. The same three plans are required to call the AWS Health API, and accounts that have not yet moved off the old Business or Enterprise On-Ramp plans keep that access for now. Without a qualifying plan, the call fails with &lt;code&gt;SubscriptionRequiredException&lt;/code&gt;, while the Health Dashboard itself stays available to everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How does a Basic Support customer dispute a charge?"&lt;/strong&gt; Account and billing support is free for every account owner. You open a case, no paid plan needed. Only personalised technical support requires a paid plan.&lt;/p&gt;

&lt;p&gt;Nobody outside AWS can tell you when the exam question pool will follow these changes, so the safe approach is to learn the current lineup and still recognise the retired names when they show up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three renames while you are at it
&lt;/h2&gt;

&lt;p&gt;These do not change the right answer, but they can make you doubt it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The posture checks and finding aggregation that older material calls Security Hub are documented today as &lt;strong&gt;AWS Security Hub CSPM&lt;/strong&gt;, for Cloud Security Posture Management, inside a wider Security Hub user guide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon QuickSight&lt;/strong&gt; continues as &lt;strong&gt;Amazon Quick Sight&lt;/strong&gt;, a feature of Amazon Quick. Same dashboards and BI. AWS states that existing QuickSight APIs keep working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon AppStream 2.0&lt;/strong&gt; is now &lt;strong&gt;Amazon WorkSpaces applications&lt;/strong&gt;. The product page says "formerly AppStream 2.0" in its first line.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AWS Support plans, &lt;code&gt;docs.aws.amazon.com/awssupport/latest/user/aws-support-plans.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Security Hub CSPM, &lt;code&gt;docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Amazon Quick, &lt;code&gt;docs.aws.amazon.com/quicksight/latest/user/welcome.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;WorkSpaces applications, &lt;code&gt;aws.amazon.com/workspaces/applications/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All four read on October 4, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice
&lt;/h2&gt;

&lt;p&gt;I put 30 CLF-C02 questions online for free, split by the official domain weights, no signup. After each answer you get the sentence from the AWS documentation that backs it, with the link, so you can check me instead of trusting me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thibaudlepan77-svg.github.io/interview-questions-verified/aws-clf-c02-practice-questions.html" rel="noopener noreferrer"&gt;30 free CLF-C02 practice questions with sources&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They come from a paid set of 300, four full exams and a drill, &lt;a href="https://ko-fi.com/s/3c12cb25a5" rel="noopener noreferrer"&gt;12 euros on Ko-fi&lt;/a&gt;. If a quote has changed by the time you read this, leave a comment and I will fix the question.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>certification</category>
      <category>cloud</category>
      <category>career</category>
    </item>
    <item>
      <title>My pitch detector read every note sharp, and the cause was arithmetic, not audio</title>
      <dc:creator>Thibaud</dc:creator>
      <pubDate>Mon, 31 Aug 2026 10:46:03 +0000</pubDate>
      <link>https://dev.to/thibaudlepan/my-pitch-detector-read-every-note-sharp-and-the-cause-was-arithmetic-not-audio-4850</link>
      <guid>https://dev.to/thibaudlepan/my-pitch-detector-read-every-note-sharp-and-the-cause-was-arithmetic-not-audio-4850</guid>
      <description>&lt;p&gt;Disclosure before anything else. I built the free tool linked at the end, and I sell a paid version of it. I have no connection to Vocal Pitch Monitor or to the person who makes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I went looking
&lt;/h2&gt;

&lt;p&gt;Google's autocomplete is a public endpoint. It answers with what people type rather than with what you assume they type, and it costs nothing to ask. Here is what came back this morning for "vocal pitch monitor".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vocal pitch monitor app
vocal pitch monitor online
vocal pitch monitor pc
vocal pitch monitor online free
vocal pitch monitor free
vocal pitch monitor apk
vocal pitch monitor download
vocal pitch monitor mod apk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vocal Pitch Monitor is an Android app. It draws the note you are making as a line on a scrolling graph, and singers like it a lot. On Google Play it has more than a million downloads and 4.1 stars from 7,310 reviews.&lt;/p&gt;

&lt;p&gt;So the app exists and is well liked. Yet four of those eight completions are people asking for it somewhere other than an Android phone. There is an iOS build by the same developer, released in 2014, last updated in January 2021, priced at 1.99 dollars, and rated 2.6 out of 5 from 42 ratings. Against 4.1 from 7,310 on Android. I have not used it and I am not going to review an app I have not used, but a gap that size between two versions of one product is the kind of thing that keeps a search query alive for years.&lt;/p&gt;

&lt;p&gt;The Web Audio API hands a page raw microphone samples, so a tool like this no longer has to be an app at all. I built one. Then I went to check whether mine was actually correct, and it was not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug
&lt;/h2&gt;

&lt;p&gt;I stopped feeding my detector my own voice and started feeding it tones whose frequency I already knew. It was always sharp. Never flat, always sharp. That is the shape of a bug, not the shape of noise.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frequency      what my detector reported
82.41 Hz       29.8 cents sharp
98 Hz          15.5 cents sharp
130.81 Hz      9.1 cents sharp
440 Hz         2.6 cents sharp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thirty cents is about a third of a semitone. On a low E, my own tool was lying to anyone who checked it against a tuning fork. Three symptoms to explain, and they turned out to have one cause. The sign is always positive. The size grows as the note gets lower. And it is much worse on a pure sine than on a voice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cause
&lt;/h2&gt;

&lt;p&gt;The detector is a YIN implementation. YIN builds a difference function&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tex"&gt;&lt;code&gt;d(tau) = sum over j of ( x[j] - x[j+tau] )&lt;span class="p"&gt;^&lt;/span&gt;2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and expanded that is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d(tau) = power of the head window
       + power of the tail window
       - 2 * autocorrelation(tau)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The usual fast implementation computes the autocorrelation with an FFT, and then takes a shortcut. It assumes both power terms equal &lt;code&gt;r0&lt;/code&gt;, the autocorrelation at lag zero, so it writes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d(tau) = 2*r0 - 2*acf[tau]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That shortcut is where it goes wrong, and it goes wrong for a reason that has nothing to do with sound.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FFT autocorrelation is biased.&lt;/strong&gt; At lag &lt;code&gt;tau&lt;/code&gt; only &lt;code&gt;N - tau&lt;/code&gt; sample pairs actually overlap, but the result is still divided by &lt;code&gt;N&lt;/code&gt;. So &lt;code&gt;acf[tau]&lt;/code&gt; decays as &lt;code&gt;tau&lt;/code&gt; grows, purely as an artefact of counting. Feed it a perfectly periodic signal and it still slopes downward.&lt;/p&gt;

&lt;p&gt;Put that decaying &lt;code&gt;acf&lt;/code&gt; into &lt;code&gt;2*r0 - 2*acf[tau]&lt;/code&gt; and the difference is inflated more and more at long lags. The minimum therefore slides toward &lt;strong&gt;shorter&lt;/strong&gt; lags. A shorter lag means a &lt;strong&gt;higher&lt;/strong&gt; frequency. Every reading comes out sharp.&lt;/p&gt;

&lt;p&gt;Now all three symptoms fall out of it. The bias only ever pushes one way, so the sign is always positive. A low note means a long period means a large &lt;code&gt;tau&lt;/code&gt;, where the taper is worst, so the error grows in the bass. And a pure sine has a wide shallow minimum with nothing to anchor it, while a harmonically rich voice has a sharp narrow one that resists being dragged, which is why my worst case was a sine and not a singer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;Do not correct the autocorrelation. Recompute the difference honestly, over a window of &lt;strong&gt;constant length&lt;/strong&gt;, on a handful of lags around the first estimate.&lt;br&gt;
&lt;/p&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;largeur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                 &lt;span class="c1"&gt;// same count for every lag&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tau&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;tauMin&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;tau&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;tauMax&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;tau&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;somme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;largeur&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&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;ecart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tau&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;somme&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;ecart&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;ecart&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;tau&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;tauMin&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;somme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Constant length is the whole point. Every lag is judged on exactly the same number of terms, so the counting artefact cannot exist. Then take the local minimum and interpolate parabolically. It costs one narrow pass over half the buffer, which is nothing next to the FFT you already ran.&lt;/p&gt;

&lt;p&gt;Same table afterwards.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;82.41 Hz       0.0 cents
98 Hz          0.0 cents
130.81 Hz      0.0 cents
440 Hz         0.0 cents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  I got the fix wrong first, and that part is worth more than the fix
&lt;/h2&gt;

&lt;p&gt;My first version searched three samples either side of the first estimate. It changed nothing at 82 Hz. Gain of exactly zero, on the one case I had written it for.&lt;/p&gt;

&lt;p&gt;A thirty cent error is about nine samples on a low E and less than one sample on a high A. So a fixed search width in samples missed precisely the cases that needed it, and helped only the cases that did not. The width had to be a fraction of the period.&lt;br&gt;
&lt;/p&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;rayon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tauCentre&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.04&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When the size of a bug scales with something, the fix has to scale with the same thing.&lt;/strong&gt; A constant put up against a proportional defect works at exactly one point on the scale.&lt;/p&gt;

&lt;p&gt;One more thing saved me here. My search returns the original estimate untouched if the minimum lands on the edge of the bracket, rather than interpolating against a missing neighbour. That guard is why the failure showed up as "no change" instead of as a plausible wrong number. A guard that hands back its input when it is unsure is worth more than one that always produces an answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two things to check in any pitch detector
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Feed it a frequency you already know.&lt;/strong&gt; Not your voice. A test that uses your voice cannot separate your error from the tool's. Sixteen synthetic tones found a bug that months of singing at it did not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feed it a pure sine in the bass.&lt;/strong&gt; It is the least forgiving input for autocorrelation methods and it is also, unhelpfully, the first thing a sceptical user reaches for.&lt;/p&gt;

&lt;p&gt;And keep the two kinds of test apart. I have a bench that compares my port to its reference implementation to within a ten thousandth of a cent, and it stayed green through all of this, because both sides were wrong in the same way. A fidelity test tells you that you copied correctly. Only a known frequency tells you that you are right.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool
&lt;/h2&gt;

&lt;p&gt;One page, runs in the tab, no account, nothing installed, and nothing you sing leaves the machine because there is no server to send it to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thibaudlepan77-svg.github.io/steady-pitch/" rel="noopener noreferrer"&gt;https://thibaudlepan77-svg.github.io/steady-pitch/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It names the note and shows how many cents sharp or flat you are, in C D E or do re mi, with a settable reference A. There is a trainer on the same page that grades a held note. Level one is free and uses the same detector at the same precision. The full file is 9.99 dollars once, no subscription, and I will say plainly that the big singing apps have far more content than I do.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>algorithms</category>
      <category>music</category>
    </item>
  </channel>
</rss>
