<?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: weiyi</title>
    <description>The latest articles on DEV Community by weiyi (@weiyi).</description>
    <link>https://dev.to/weiyi</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%2F655533%2F4d6d7257-0a75-4d05-bf68-c11b5c5b15f1.png</url>
      <title>DEV Community: weiyi</title>
      <link>https://dev.to/weiyi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/weiyi"/>
    <language>en</language>
    <item>
      <title>Langfuse in Practice: Make Slow, Expensive and Wrong AI Responses Diagnosable</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:22:56 +0000</pubDate>
      <link>https://dev.to/weiyi/langfuse-in-practice-make-slow-expensive-and-wrong-ai-responses-diagnosable-2m45</link>
      <guid>https://dev.to/weiyi/langfuse-in-practice-make-slow-expensive-and-wrong-ai-responses-diagnosable-2m45</guid>
      <description>&lt;p&gt;After an AI application launches, the painful moment is often a user saying “it got this wrong again” while you cannot tell which step failed.&lt;/p&gt;

&lt;p&gt;Did retrieval miss the document, or did the prompt omit a condition? Was the model slow, or did a tool time out and retry three times? Did a cheaper model save money per call but make the whole task more expensive?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Langfuse connects these questions to one task's execution.&lt;/strong&gt; Inspect the call tree, inputs, outputs, latency, usage and evaluation results, then decide what to change. A dashboard is the entry point; fixing problems is the benefit.&lt;/p&gt;

&lt;p&gt;This article follows official documentation checked on &lt;strong&gt;October 11, 2026, and Python SDK 4.17.0&lt;/strong&gt;. The example demonstrates instrumentation without calling a real model. No production benchmarks or deployment results are invented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Distinguish traces, observations and sessions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;What it records&lt;/th&gt;
&lt;th&gt;Common mistake&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trace&lt;/td&gt;
&lt;td&gt;One complete task: a chat turn or agent run&lt;/td&gt;
&lt;td&gt;Putting a day's requests into one trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observation&lt;/td&gt;
&lt;td&gt;One step: retrieval, model invocation or tool execution&lt;/td&gt;
&lt;td&gt;Recording only the final answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session&lt;/td&gt;
&lt;td&gt;Related turns or successive tasks&lt;/td&gt;
&lt;td&gt;Replacing individual task boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use one trace per question, with retrieval and generation as children. Link multiple conversation turns with a session. The current SDK uses OpenTelemetry; correct context propagation matters more than attractive names.&lt;/p&gt;

&lt;p&gt;Do not wrap an entire agent loop in one generation. Record each model call separately and associate tools with the relevant step. Otherwise you see the total bill but cannot find the result that inflated the context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instrument one workflow first
&lt;/h2&gt;

&lt;p&gt;One RAG question-answering endpoint is enough to start:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;answer-question
├── retrieve-documents
└── draft-answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Record the question and final result on the root, document IDs, versions and supplied passages on retrieval, and model inputs, outputs and actual usage on generations.&lt;/p&gt;

&lt;p&gt;Keep names stable, such as &lt;code&gt;retrieve-documents&lt;/code&gt;. Put order numbers, questions and request IDs in attributes, not names. Add release, environment and prompt version to make before-and-after comparisons possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  A minimal Python example
&lt;/h2&gt;

&lt;p&gt;This example pins &lt;strong&gt;Python SDK 4.17.0&lt;/strong&gt;, requiring Python 3.10 or newer. Check SDK and server versions separately; do not mix methods from old tutorials.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"langfuse==4.17.0"&lt;/span&gt;

&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LANGFUSE_PUBLIC_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"pk-lf-REPLACE_ME"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LANGFUSE_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-lf-REPLACE_ME"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LANGFUSE_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://cloud.langfuse.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get project keys in Langfuse settings. BASE_URL above is the EU Cloud endpoint; replace it for another region or self-hosting. Keep secrets in server-side environment variables. Merely writing a .env file does not make Python load it; these commands export variables explicitly.&lt;/p&gt;

&lt;p&gt;Save this as &lt;code&gt;trace_demo.py&lt;/code&gt; and run &lt;code&gt;python trace_demo.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langfuse&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_client&lt;/span&gt;

&lt;span class="n"&gt;langfuse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;How long are repeat article visits deduplicated?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;langfuse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start_as_current_observation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;as_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;span&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;answer-question&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;question&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;release&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;demo-v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;development&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;langfuse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start_as_current_observation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;as_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;span&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;retrieve-documents&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;retrieval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;privacy-v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Repeat visits count once within 30 minutes.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
        &lt;span class="n"&gt;retrieval&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;langfuse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start_as_current_observation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;as_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;draft-answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;question&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;documents&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;simulation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;generation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Repeat visits count once within 30 minutes. [privacy-v1]&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;generation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;langfuse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flush&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documents and answers are hard-coded, with &lt;code&gt;simulation=True&lt;/code&gt;. The generation makes no model request and reports no invented tokens or costs. Replace both sections with your retrieval and model functions, record the actual model ID and copy real usage from the provider response.&lt;/p&gt;

&lt;p&gt;Call &lt;code&gt;flush()&lt;/code&gt; before a short-lived script exits. Handle long-running services through their lifecycle, rather than flushing after every token or tiny step. Verify propagation across async tasks, threads and queues: a context manager alone does not guarantee cross-process continuity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to inspect once traces arrive
&lt;/h2&gt;

&lt;p&gt;Start with a request a user has confirmed is wrong:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Input conditions:&lt;/strong&gt; missing product model, date or applicable version?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval:&lt;/strong&gt; relevant, current documents with essential conditions preserved?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model call:&lt;/strong&gt; complete context and unexpected retries?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool result:&lt;/strong&gt; did an HTTP success actually complete the business action?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inspect step durations and total task time. Streaming also requires distinguishing first-token latency from completion. Count every call and retry when measuring cost. Estimates depend on model pricing configuration and usage; reconcile the provider's bill separately.&lt;/p&gt;

&lt;p&gt;Langfuse does not prove answer correctness or enforce business permissions. Showing an unauthorized attempt is not preventing it. Authentication, validation, idempotency and write confirmation remain application responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt management: preserve the version actually used
&lt;/h2&gt;

&lt;p&gt;Moving text into an editable interface is only the start. Link versions to calls so failures can be reproduced and changes compared.&lt;/p&gt;

&lt;p&gt;Create a text prompt named &lt;code&gt;support-answer&lt;/code&gt; using &lt;code&gt;{{question}}&lt;/code&gt; and &lt;code&gt;{{context}}&lt;/code&gt;, then label an accepted version production:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;langfuse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;support-answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;production&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;compiled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;compile&lt;/code&gt; substitutes variables; it does not invoke a model. Fetching production selects an intentionally released version. Creating a version should not automatically deploy it. Associate the returned prompt object with the generation through your integration.&lt;/p&gt;

&lt;p&gt;SDK caching does not remove every dependency. First fetches, refreshes and failures still matter. Important workflows can prefetch at startup and retain a validated fallback prompt, with logs showing when fallback occurred.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluation: turn failures into regression cases
&lt;/h2&gt;

&lt;p&gt;Start with twenty or thirty real, sanitized cases: ordinary and ambiguous questions, missing evidence, tool timeouts and questions the system should not answer. Define expected behavior before comparing prompts, models or retrieval strategies.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Useful for&lt;/th&gt;
&lt;th&gt;Watch for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deterministic code&lt;/td&gt;
&lt;td&gt;JSON, required fields, business conditions&lt;/td&gt;
&lt;td&gt;Correct format with wrong content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human annotation&lt;/td&gt;
&lt;td&gt;Expert judgments, edge cases, rubric calibration&lt;/td&gt;
&lt;td&gt;Inconsistent standards and review costs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM-as-a-Judge&lt;/td&gt;
&lt;td&gt;Batch scoring against a clear rubric&lt;/td&gt;
&lt;td&gt;Bias, unstable scores and evaluator fees&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Online evaluation monitors live traffic; offline experiments compare candidates on a fixed dataset. Use both and inspect important failures rather than hiding them in an average. Calibrate model judges against human labels; keep explicit code checks for permissions and critical rules.&lt;/p&gt;

&lt;p&gt;Evaluation has its own cost. Budget sampling rate, judge model and frequency together instead of evaluating everything and discovering monitoring costs more than the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud or self-hosting: count operations too
&lt;/h2&gt;

&lt;p&gt;For a first trial, use a Cloud test project and sanitized samples; assess production-data requirements before uploading them. Self-hosting offers control over deployment and data flows, but is more than running one container.&lt;/p&gt;

&lt;p&gt;The current architecture includes Web, Worker, PostgreSQL, ClickHouse, Redis/Valkey and S3/Blob storage. PostgreSQL holds transactional data, ClickHouse observability data, cache services the queue, and object storage raw events and multimodal attachments.&lt;/p&gt;

&lt;p&gt;Official documentation positions Docker Compose for local use and testing, without built-in high availability, scaling or backups. Production operation needs TLS, authentication, database and object backups, queue monitoring, capacity, retention and upgrade recovery.&lt;/p&gt;

&lt;p&gt;Distinguish the open-source core from Enterprise additions requiring licenses. Cloud limits, plans and self-hosting costs are different measures; this article does not substitute an unverified price for a total-cost calculation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mask before export and verify after integration
&lt;/h2&gt;

&lt;p&gt;Traces can be more sensitive than ordinary logs: questions, document text, tool parameters and answers may appear together. Do not collect real email addresses, phone numbers, tokens and complete internal files by default.&lt;/p&gt;

&lt;p&gt;Sanitize before data leaves the application. Current Python documentation recommends &lt;code&gt;mask_otel_spans&lt;/code&gt; for new setups, covering exported OpenTelemetry attributes from SDK and third-party instrumentation; legacy &lt;code&gt;mask&lt;/code&gt; has different coverage. Inspect automatic integrations as well as hand-written fields.&lt;/p&gt;

&lt;p&gt;Verify normal requests, failures and script shutdown on one workflow. Review exported content and project permissions before expanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first goal is modest: when a user reports a bad answer, find that request, explain the failure and turn it into a pre-release check.&lt;/strong&gt; That makes Langfuse more than another AI dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official sources
&lt;/h2&gt;

&lt;p&gt;Checked October 11, 2026. Complete integration still needs your project credentials and acceptance testing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/observability/get-started" rel="noopener noreferrer"&gt;Tracing quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/observability/sdk/overview" rel="noopener noreferrer"&gt;SDK versions and compatibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/observability/sdk/instrumentation" rel="noopener noreferrer"&gt;Instrumentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/observability/best-practices" rel="noopener noreferrer"&gt;Trace best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/prompt-management/get-started" rel="noopener noreferrer"&gt;Prompt management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/evaluation/overview" rel="noopener noreferrer"&gt;Evaluation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/self-hosting" rel="noopener noreferrer"&gt;Self-hosting architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langfuse.com/docs/observability/features/masking" rel="noopener noreferrer"&gt;Masking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/langfuse/4.17.0/" rel="noopener noreferrer"&gt;Python package 4.17.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blogging</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI is splitting up the work. I'm more interested in who finishes the job</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:22:23 +0000</pubDate>
      <link>https://dev.to/weiyi/ai-is-splitting-up-the-work-im-more-interested-in-who-finishes-the-job-2n01</link>
      <guid>https://dev.to/weiyi/ai-is-splitting-up-the-work-im-more-interested-in-who-finishes-the-job-2n01</guid>
      <description>&lt;p&gt;When I saw that ChatGPT could put several agents to work at once, my first thought was writing for this blog. Checking documentation, finding examples and verifying prices could finally happen in parallel.&lt;/p&gt;

&lt;p&gt;Then I thought about the results coming back. Someone still has to read them together. Prices are an obvious trap: one agent finds subscription pricing, another finds API pricing. Put those straight into an article and fluent writing won't save it.&lt;/p&gt;

&lt;p&gt;Add Cursor's cloud-agent update, Google DeepMind's Minecraft experiment and Anthropic's quantum-circuit research, and my question becomes: how much work would these actually save in my own projects?&lt;/p&gt;

&lt;h2&gt;
  
  
  Research in parallel, then sit down and compare the results
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://x.com/OpenAI/status/2111192259073094035" rel="noopener noreferrer"&gt;OpenAI's announcement&lt;/a&gt; says GPT-6 Astra Pro in ChatGPT supports parallel agents, with individual progress tracking and completed tasks you can open to review. The announcement explicitly makes it available to Pro users in the Chat tab.&lt;/p&gt;

&lt;p&gt;I'd try that for a technical article. One agent reads official documentation, another finds examples, another checks pricing and access conditions. That should be quicker than waiting for one agent to do everything in order.&lt;/p&gt;

&lt;p&gt;But I wouldn't immediately combine their answers into a draft.&lt;/p&gt;

&lt;p&gt;The web app and API of the same product can offer different capabilities. A fresh announcement might not yet be reflected in the documentation. Each answer can have a source and still mislead readers when placed beside the others.&lt;/p&gt;

&lt;p&gt;So I'd still ask: which version, what date and which region? Only once those line up would I use the material. Research can happen simultaneously; I don't want to skip that final comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  With Cursor, environment management is what I'd like to try
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cursor.com/en-US/changelog/cloud-agent-canvases-and-environments" rel="noopener noreferrer"&gt;Cursor's update&lt;/a&gt; lets cloud agents build interactive canvases. Finish a dashboard or report, send someone a link, and they can view it. Convenient enough.&lt;/p&gt;

&lt;p&gt;For development, though, I'm more interested in the beta Environments API: creating and managing agents' cloud environments programmatically.&lt;/p&gt;

&lt;p&gt;Spending ages on setup before writing any code wears down my patience. The repository is cloned but dependencies aren't right. The service finally starts, then a missing environment variable turns up. Get it working, switch tasks, and start again.&lt;/p&gt;

&lt;p&gt;Agents need those problems solved, too. If repositories, dependencies and test environments can be prepared and reused, at least each task doesn't have to begin with a conversation about how to start the project.&lt;/p&gt;

&lt;p&gt;Cursor says large multi-repository environments load five times faster. I'd read that as less waiting before work begins, not a fivefold improvement in the whole development process.&lt;/p&gt;

&lt;p&gt;The repository limit isn't consistent: &lt;a href="https://x.com/cursor_ai/status/2111193980981665837" rel="noopener noreferrer"&gt;the X post&lt;/a&gt; says 500, while the changelog and &lt;a href="https://cursor.com/docs/cloud-agent/api/endpoints" rel="noopener noreferrer"&gt;agent-creation API documentation&lt;/a&gt; say 300. If I needed that many, I'd plan around the documented 300 and confirm access to a higher limit first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four agents playing Minecraft: I'd like to see the handoffs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://x.com/GoogleDeepMind/status/2111127991401247033" rel="noopener noreferrer"&gt;Google DeepMind's experiment&lt;/a&gt; put four Gemini 4 Argon agents into Minecraft from scratch. They defeated the Ender Dragon after roughly 27 hours.&lt;/p&gt;

&lt;p&gt;According to the announcement, they operated through code and text, wrote 2,783 programs, divided jobs over chat, shared notes and debugged together, without humans helping them complete the game tasks.&lt;/p&gt;

&lt;p&gt;But &lt;a href="https://x.com/maxencefaldor/status/2111023397106770026" rel="noopener noreferrer"&gt;the researcher's full account&lt;/a&gt; includes important details. They played on Easy, read their surroundings and acted through Mineflayer, and had a pathfinding plugin. They didn't see game pixels or use a keyboard and mouse like a human. Researchers could monitor, pause or stop the experiment from a dashboard.&lt;/p&gt;

&lt;p&gt;It wasn't a smooth run, either: 605 respawns, with 22% of programs ending in an error. The log records victory at 27 hours and 14 minutes. “Finished in 27 hours” can hide a lot of retries.&lt;/p&gt;

&lt;p&gt;The win is worth watching, but I'm more curious about what happened during those hours.&lt;/p&gt;

&lt;p&gt;When one agent finds resources, how does it tell the others enough to save them unnecessary trips? When something goes wrong, who notices and brings everyone back on track?&lt;/p&gt;

&lt;p&gt;Development has similar problems. Several agents being able to code doesn't guarantee they'll work well together. One changes an interface while another builds a page against the old version. Put them together and it will still break.&lt;/p&gt;

&lt;p&gt;For my blog, I'd consider dividing translations by language, or having one agent check links while another checks pages. I'd be much less comfortable with several agents changing styles and routes at once. Each might think its work is finished; the combined result still needs a look.&lt;/p&gt;

&lt;p&gt;Before deciding whether this transfers well to real projects, I'd also want repeated-run success rates and the cost of those 27 hours. Without them, I can't work out whether it's worthwhile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowing whether the result is right matters more to me
&lt;/h2&gt;

&lt;p&gt;There's an arrangement I like in &lt;a href="https://www.anthropic.com/research/designing-efficient-quantum-circuits" rel="noopener noreferrer"&gt;Anthropic's quantum-circuit research&lt;/a&gt;: give Claude Mythos 5 circuit specifications and an automated evaluator.&lt;/p&gt;

&lt;p&gt;After a design, a program checks correctness and scores “qubit count × gate count.” The model gets the feedback and tries again. Improvement doesn't depend entirely on the model explaining how well it did.&lt;/p&gt;

&lt;p&gt;The report says all eight selected tasks produced designs more resource-efficient than the best previously published approaches. One Reed–Solomon decoder used roughly one-twelfth the gates of Google's earlier construction. That's a circuit-design comparison, not a twelvefold speedup of an entire quantum computer. Nor does the research claim no human participation: the point-addition task ran for 53 hours, with an initial brief and occasional human prompts to explore more broadly.&lt;/p&gt;

&lt;p&gt;Quantum circuits are far from my daily work, but I need ways to check AI's results when building a website, too.&lt;/p&gt;

&lt;p&gt;If it says a page is fixed, I'd like to see it on a phone. If it says a link is repaired, open it. If it says a release is live, confirm we're seeing the new version. Having those checks makes it easier to delegate more.&lt;/p&gt;

&lt;p&gt;Otherwise, four “finished” messages just mean asking four times: finished where? Show me.&lt;/p&gt;

&lt;p&gt;So I'd start these features with a few independent blog tasks. Agree on which files each agent can change and what it should return, then look at the combined work afterward.&lt;/p&gt;

&lt;p&gt;I'd like them to finish their parts so I can check and use the result. If I still need four or five conversations open to track down who changed what, I'd rather start with fewer agents.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>WorkBuddy or Codex? Choose by the Work You Need Done</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:21:15 +0000</pubDate>
      <link>https://dev.to/weiyi/workbuddy-or-codex-choose-by-the-work-you-need-done-ck6</link>
      <guid>https://dev.to/weiyi/workbuddy-or-codex-choose-by-the-work-you-need-done-ck6</guid>
      <description>&lt;p&gt;If most of your work involves documents, spreadsheets and presentations, I’d start with WorkBuddy. If you spend your day changing code, investigating errors and running tests in a project directory, I’d start with Codex.&lt;/p&gt;

&lt;p&gt;Both can write code and handle files. The useful question is where your work starts and what you need to take away. “Which is smarter?” won’t get you far.&lt;/p&gt;

&lt;h2&gt;
  
  
  The main difference is the workflow
&lt;/h2&gt;

&lt;p&gt;WorkBuddy is Tencent’s general-purpose AI workspace. Its official capabilities include research, documents, spreadsheets and presentations, as well as website and application development. Give it a set of materials and specify the output you need: that is a natural way to use it.&lt;/p&gt;

&lt;p&gt;Codex has terminal, IDE and cloud entry points. For local development, it can inspect a project, edit files and run commands with tools already on your machine. Your existing build, test and Git workflows can continue.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Start with&lt;/th&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Competitor research and reports&lt;/td&gt;
&lt;td&gt;WorkBuddy&lt;/td&gt;
&lt;td&gt;Reliable sources and supported conclusions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Combining spreadsheets and making slides&lt;/td&gt;
&lt;td&gt;WorkBuddy&lt;/td&gt;
&lt;td&gt;No lost fields; usable output files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adding features to an existing project&lt;/td&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Consistent structure and reasonable changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixing bugs, testing and code review&lt;/td&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Correct diagnosis and verified results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A new website or small tool&lt;/td&gt;
&lt;td&gt;Try either&lt;/td&gt;
&lt;td&gt;How easily it fits future maintenance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is a suggested division of work, not a limit on either product. Results also depend on the model, permissions and connected tools. If a task fails, check whether it lacked sources, command access or clear requirements before switching products.&lt;/p&gt;

&lt;h2&gt;
  
  
  With WorkBuddy, specify what you want to take away
&lt;/h2&gt;

&lt;p&gt;“Analyze competitors” is too broad. You may get lots of text that still needs organizing. Try this instead:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use these three product websites to make a comparison table of pricing, main features and intended users. Cite a source for each item. Mark missing information “unconfirmed.” Finish with three recommendations. Deliver an editable spreadsheet and a one-page summary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now the materials, scope and format are clear. For spreadsheets, add the deduplication field, currency units and rules for missing values. Every omitted rule leaves another guess to fix later.&lt;/p&gt;

&lt;p&gt;Split large jobs into two stages: facts and tables first, then the report or slides after you approve the direction. Formatting before checking facts creates unnecessary rework. Save recurring templates and rules in project materials or skills; next time, replace the inputs rather than explaining everything again.&lt;/p&gt;

&lt;h2&gt;
  
  
  With Codex, give it a goal you can check
&lt;/h2&gt;

&lt;p&gt;“Optimize the website” can produce a long list of changes without a clear improvement. Be specific:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fix overflowing article tables on mobile. Keep horizontal scrolling and check Chinese and English pages. Explain the cause, changed files and how you verified the fix.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For backend errors, provide the trigger, relevant logs and expected behavior. For changes spanning modules, ask it to diagnose the problem and explain its proposed edits before implementing them.&lt;/p&gt;

&lt;p&gt;Put lasting project rules in AGENTS.md: build commands, directory conventions and deployment steps. Keep it short and useful.&lt;/p&gt;

&lt;p&gt;You don’t need the most expensive model or strongest reasoning setting for every job. Try faster settings for copy edits, styling and simple batch changes. Increase reasoning for cross-module work, elusive bugs and complex reviews. Exact choices depend on the models currently available.&lt;/p&gt;

&lt;p&gt;Review the changes and rerun the scenario that failed. “Done” is a notification; code and execution results are the evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using both: make the handoff clean
&lt;/h2&gt;

&lt;p&gt;For a blog, WorkBuddy could organize topics, sources and outlines, while Codex handles pages, multilingual structure, APIs and deployment. Assign reports and channel copy according to the output needed.&lt;/p&gt;

&lt;p&gt;Hand over files, settled decisions, remaining tasks and unverified information. A long chat transcript makes the next tool guess again.&lt;/p&gt;

&lt;p&gt;Don’t have two agents edit the same code at once. Let one implement while the other reviews without editing, or use separate branches or work directories for parallel development. Otherwise you may have to repair overwritten changes yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which is better value?
&lt;/h2&gt;

&lt;p&gt;Don’t compare only subscription fees or response speed. Run three to five recurring tasks and record completion time, usage or fees, and your own correction time.&lt;/p&gt;

&lt;p&gt;An answer in one minute that takes half an hour to repair costs more of your time than a five-minute result you can check and use.&lt;/p&gt;

&lt;p&gt;If you want just one tool, pick the one closest to your daily work. Start with WorkBuddy for office materials, Codex for existing code projects. Add the other when you find a concrete gap.&lt;/p&gt;




&lt;p&gt;Sources checked October 13, 2026. These recommendations use official capabilities, not a comparative hands-on benchmark.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codebuddy.cn/docs/workbuddy/Overview" rel="noopener noreferrer"&gt;WorkBuddy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/cli" rel="noopener noreferrer"&gt;Codex CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blogging</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Roadster tempts me. But I'm not putting down RMB 332,000 yet</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:20:58 +0000</pubDate>
      <link>https://dev.to/weiyi/the-roadster-tempts-me-but-im-not-putting-down-rmb-332000-yet-2hjm</link>
      <guid>https://dev.to/weiyi/the-roadster-tempts-me-but-im-not-putting-down-rmb-332000-yet-2hjm</guid>
      <description>&lt;p&gt;My first reaction to the latest Roadster news was: finally, something is happening again.&lt;/p&gt;

&lt;p&gt;Then I saw the production year. 2028.&lt;/p&gt;

&lt;p&gt;That's Musk's latest timing, according to an October 16 report from Cailian Press. After all the years since the 2017 unveiling, another date doesn't immediately get me excited. Starting production isn't the same as handing a car to a buyer in China, either.&lt;/p&gt;

&lt;p&gt;I still want to see the car. As for reserving one now, I'll wait.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is it for? I wouldn't make it my only car
&lt;/h2&gt;

&lt;p&gt;I don't find the likely buyer hard to picture: everyday transport is already covered, and they want something they simply enjoy owning. Take it out on a sunny weekend. Enjoy looking at it in the garage, too.&lt;/p&gt;

&lt;p&gt;Some people love a Ferrari's sound, others a Porsche's driving feel. There will also be people drawn to Tesla's slightly adventurous approach. At this point, saving electricity isn't really the issue.&lt;/p&gt;

&lt;p&gt;If my budget also had to cover family transport, commuting and long trips, I wouldn't be considering a Roadster. Those needs would come first.&lt;/p&gt;

&lt;p&gt;It plays a similar role within Tesla. Model 3 and Model Y sell in volume; the Roadster gives people a reason to think Tesla can still make something surprising. The audience discussing it can be much larger than the audience buying it.&lt;/p&gt;

&lt;p&gt;The current Chinese reservation information describes the Performance version as a two-seater, with active aerodynamics and a multimode intake system. The old descriptions of a four-seat sports car may no longer match what is being offered.&lt;/p&gt;

&lt;p&gt;I'd like to know what all that feels like on the road. We aren't at the point where I can answer that yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  RMB 332,000 is a reservation payment. I'm reluctant to queue this early
&lt;/h2&gt;

&lt;p&gt;Tesla's Chinese site currently lists an initial payment of RMB 332,000. That's a reservation payment, not the car's price.&lt;/p&gt;

&lt;p&gt;The frequently quoted US$200,000 and US$250,000 figures were the original 2017 prices for the base and Founders Series versions. With so much time passed and the product changing, converting those figures into a present-day Chinese on-road price doesn't tell me much.&lt;/p&gt;

&lt;p&gt;This is what holds me back: I can't yet work out the final cost, the specification I'll receive and the delivery date together. RMB 332,000 can buy an everyday car. I'm not keen to exchange it for a place waiting for updates.&lt;/p&gt;

&lt;p&gt;Other people will be happy to. I understand wanting to join the queue early, particularly if you've followed Tesla and waited years for this car. But I'd read the Chinese reservation agreement before paying, especially the refund process and what changes when it becomes a firm order. An American report saying a deposit is refundable doesn't make the Chinese agreement unnecessary.&lt;/p&gt;

&lt;p&gt;As for selling it in China, the visible route today is online reservation. My reading is that Tesla can take interest from its keenest buyers first and let the car's publicity draw attention. We don't yet have enough information about Chinese allocations, delivery or final pricing to claim we know its full sales plan.&lt;/p&gt;

&lt;p&gt;When it comes to buying one, I doubt the salesperson will need to spend long explaining electricity costs per 100 km. I'd spend more time asking where it can be repaired, how long special parts take and what happens if I damage the underbody.&lt;/p&gt;

&lt;h2&gt;
  
  
  An electric sports car needs more than acceleration now
&lt;/h2&gt;

&lt;p&gt;In 2017, the Roadster's acceleration figures were memorable by themselves. Today, China already has plenty of very quick EVs.&lt;/p&gt;

&lt;p&gt;The Yangwang U9 and MG Cyberster occupy different price brackets and offer different experiences, but they show how much choice has grown for an EV with character. I need the Roadster's final price before deciding what to compare it with.&lt;/p&gt;

&lt;p&gt;If it competes for traditional sports-car money, I'm even more interested in how it drives. One hard launch is impressive. Can it sustain performance for several laps? How are the brakes? Is the steering enjoyable? Those matter more to me than a single demonstration sprint.&lt;/p&gt;

&lt;p&gt;Then there are the dull questions that could come up every day: will it clear the garage ramp, is the seat comfortable after an hour, and can I replace a damaged tyre without a saga? Buying a toy doesn't mean wanting to spend every day looking after it.&lt;/p&gt;

&lt;p&gt;Musk's past talk of a SpaceX cold-gas thruster package, even “flying,” is interesting to watch. I wouldn't build that into my valuation yet. Let's see the final Chinese specification and what's permitted on public roads.&lt;/p&gt;

&lt;p&gt;One detail worth keeping straight: 0–60 mph is acceleration to roughly 96.6 km/h, not 0–100 km/h. Both the date and the units matter when reading this car's specifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'd like driver assistance. The Tesla badge doesn't confirm the features
&lt;/h2&gt;

&lt;p&gt;You might reasonably ask whether a Tesla this expensive would have FSD.&lt;/p&gt;

&lt;p&gt;I'd like to know, too. But as of October 16, 2026, the Chinese reservation information I could find did not establish the complete driver-assistance specification, FSD functions or pricing for the Chinese Roadster. Calling it standard equipment, or promising city driving assistance at delivery, is premature.&lt;/p&gt;

&lt;p&gt;I'm perfectly happy to have assistance in a sports car. After a day out, help following traffic in a jam sounds useful. Easier parking would be welcome, too. Enjoying driving and wanting an easier time in congestion aren't contradictory.&lt;/p&gt;

&lt;p&gt;But if driver assistance were my main reason to buy, I'd try cars already delivered with their functions enabled. There's no need to imagine the Roadster's future Chinese features for it. Even if supervised FSD is offered, the driver still has to watch the road; it isn't driverless operation.&lt;/p&gt;

&lt;p&gt;So would I buy one? For now, I wouldn't reserve it. I'd wait for production cars.&lt;/p&gt;

&lt;p&gt;Once Chinese pricing is available and there's a car to try, I'd happily go and see it. If it's enjoyable to drive and isn't too troublesome to use, there will still be time to get excited.&lt;/p&gt;

&lt;p&gt;What I'd really like to read now is what the first owners think after a few months. I've seen plenty of Roadster launch news over the years.&lt;/p&gt;




&lt;p&gt;Sources: &lt;a href="https://www.tesla.cn/roadster/reserve" rel="noopener noreferrer"&gt;Tesla China reservations&lt;/a&gt;; &lt;a href="https://news.qq.com/rain/a/20261016A03TZQ00" rel="noopener noreferrer"&gt;Cailian Press, October 16 production timing report&lt;/a&gt;; &lt;a href="https://news.qq.com/rain/a/20260920A08HTA00" rel="noopener noreferrer"&gt;IT Home, September 20 reservation and historical pricing report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blogging</category>
      <category>programming</category>
    </item>
    <item>
      <title>Deploy a Static Site on Alibaba Cloud: Codeup, Flow, OSS and ESA</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:20:41 +0000</pubDate>
      <link>https://dev.to/weiyi/deploy-a-static-site-on-alibaba-cloud-codeup-flow-oss-and-esa-4o53</link>
      <guid>https://dev.to/weiyi/deploy-a-static-site-on-alibaba-cloud-codeup-flow-oss-and-esa-4o53</guid>
      <description>&lt;p&gt;Once an article is written, the release process should deliver it reliably to readers. Build, upload, refresh and verification need distinct steps so you can see where a failure occurred.&lt;/p&gt;

&lt;h2&gt;
  
  
  A clear release path
&lt;/h2&gt;

&lt;p&gt;This project currently builds and publishes through local commands, uploads static output to OSS and serves it through ESA. Codeup and Flow configuration templates are ready, but the actual repository and cloud pipeline are not connected yet.&lt;/p&gt;

&lt;p&gt;When configuring Flow later, reuse these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install dependencies from the lockfile with npm ci.&lt;/li&gt;
&lt;li&gt;Run npm run build to check types and generate pages.&lt;/li&gt;
&lt;li&gt;Upload static assets first, then publish HTML and Sitemap.&lt;/li&gt;
&lt;li&gt;Refresh ESA caches and verify that public content matches the build.&lt;/li&gt;
&lt;li&gt;Notify search engines and save successful submission state.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Treat different content differently in the cache
&lt;/h2&gt;

&lt;p&gt;Content-hashed assets can be cached for a long time. HTML and Sitemap benefit from revalidation and a refresh after publication so readers don't receive stale content.&lt;/p&gt;

&lt;p&gt;Cache refresh is asynchronous. Verify that public pages return the new content before submitting URLs, reducing the chance that a search service sees an old page or error response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make failures recoverable
&lt;/h2&gt;

&lt;p&gt;A multi-file OSS upload isn't atomic. If it fails midway, rerunning can complete the missing parts. Search notifications save successful batches, leaving only pending content for a later attempt.&lt;/p&gt;

&lt;p&gt;A platform accepting a request does not mean an article is indexed. Check website publication and search notifications separately. See the project's deployment documentation for configuration and maintenance details.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blogging</category>
      <category>programming</category>
    </item>
    <item>
      <title>SIG Mesh or a Proprietary Protocol? Connecting Bluetooth Devices to a Gateway</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:20:24 +0000</pubDate>
      <link>https://dev.to/weiyi/sig-mesh-or-a-proprietary-protocol-connecting-bluetooth-devices-to-a-gateway-2hea</link>
      <guid>https://dev.to/weiyi/sig-mesh-or-a-proprietary-protocol-connecting-bluetooth-devices-to-a-gateway-2hea</guid>
      <description>&lt;p&gt;The &lt;a href="https://ay3s.com/en/articles/run-matter-gateway-with-pc-and-phone/" rel="noopener noreferrer"&gt;previous post&lt;/a&gt; got the Matter half working with nothing more than a PC and a phone. Next comes the other half of the gateway: &lt;strong&gt;what protocol should the gateway and the Bluetooth devices actually speak?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our devices originally used a Bluetooth advertising protocol we defined ourselves, controlled through our own app. It had run for a long time without trouble. So early in the project, someone on the team asked: &lt;strong&gt;do we really need SIG Mesh?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question deserves its own post, because "skipping SIG Mesh" can mean two very different things with very different consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, what does "skipping it" mean?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Option one: don't use the SIG Mesh protocol.&lt;/strong&gt; The devices keep their proprietary advertising protocol, and the gateway speaks it too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option two: use the SIG Mesh protocol but skip Bluetooth SIG qualification.&lt;/strong&gt; Technically follow the standard, just don't register or pay with the SIG.&lt;/p&gt;

&lt;p&gt;The first is a technical choice; the second is a compliance question. A lot of debates go nowhere because they mix the two up. Let's cover the technology first and qualification later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four ways to connect devices to a gateway
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Coverage&lt;/th&gt;
&lt;th&gt;Number of devices&lt;/th&gt;
&lt;th&gt;Interoperability&lt;/th&gt;
&lt;th&gt;Security&lt;/th&gt;
&lt;th&gt;Effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Proprietary advertising&lt;/td&gt;
&lt;td&gt;Around the gateway only, no relaying&lt;/td&gt;
&lt;td&gt;No hard limit&lt;/td&gt;
&lt;td&gt;Only your own products&lt;/td&gt;
&lt;td&gt;All on you&lt;/td&gt;
&lt;td&gt;Small&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct BLE connections (each device connects to the gateway)&lt;/td&gt;
&lt;td&gt;Around the gateway only&lt;/td&gt;
&lt;td&gt;Limited by concurrent connections, usually a dozen or so&lt;/td&gt;
&lt;td&gt;Fair&lt;/td&gt;
&lt;td&gt;Standard encryption&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Home-grown proprietary mesh&lt;/td&gt;
&lt;td&gt;Relaying possible&lt;/td&gt;
&lt;td&gt;Depends on implementation&lt;/td&gt;
&lt;td&gt;Only your own products&lt;/td&gt;
&lt;td&gt;All on you&lt;/td&gt;
&lt;td&gt;Very large&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SIG Mesh&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Relaying, whole-home coverage&lt;/td&gt;
&lt;td&gt;Hundreds of nodes are fine&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Works across vendors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard encryption and replay protection&lt;/td&gt;
&lt;td&gt;Medium, mostly in the chip SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Proprietary advertising&lt;/strong&gt; is the simplest: to turn on a light, the gateway broadcasts a command and the device acts on it. But there's no relaying. If the gateway is in the living room, the bedroom light may never hear it. Provisioning, encryption and replay protection all have to be designed and maintained by you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct BLE connections&lt;/strong&gt; work like a phone and a pair of Bluetooth earbuds. Encryption is standard, but a gateway can only hold a limited number of connections at once, nowhere near the dozens of switches and lights in a typical home.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A home-grown proprietary mesh&lt;/strong&gt; means reinventing SIG Mesh. Controlling relay storms, de-duplicating messages, rotating keys, protecting sequence numbers against replay: every one of them is a trap. Plenty of vendors built their own mesh in the early days; most have since moved to SIG Mesh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SIG Mesh&lt;/strong&gt; is the Bluetooth SIG's standard. Devices relay for each other and cover the whole house, the security model is already there, and, most importantly, it defines a standard set of device models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where SIG Mesh really pays off: standard models
&lt;/h2&gt;

&lt;p&gt;SIG Mesh specifies how common devices such as switches and lights are described and controlled:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SIG Mesh model&lt;/th&gt;
&lt;th&gt;Device&lt;/th&gt;
&lt;th&gt;Matter equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Generic OnOff&lt;/td&gt;
&lt;td&gt;Switches, plugs&lt;/td&gt;
&lt;td&gt;On/Off Light&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light Lightness&lt;/td&gt;
&lt;td&gt;Dimmable lights&lt;/td&gt;
&lt;td&gt;Dimmable Light&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light CTL&lt;/td&gt;
&lt;td&gt;Tunable white lights&lt;/td&gt;
&lt;td&gt;Color Temperature Light&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light HSL&lt;/td&gt;
&lt;td&gt;Color lights&lt;/td&gt;
&lt;td&gt;Extended Color Light&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This table matters enormously for a gateway. &lt;strong&gt;Matter has device types that map almost one to one&lt;/strong&gt;, so the translation is very direct. With a proprietary protocol, you'd have to define that mapping yourself and revisit it for every new device type.&lt;/p&gt;

&lt;p&gt;Standard models bring two more benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The gateway and the devices can use chips from different vendors.&lt;/strong&gt; Our gateway uses a Silicon Labs module and our devices use Telink chips. As long as both follow the standard models, they work together, and no single chip vendor locks us in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other ecosystems become easier to join.&lt;/strong&gt; Xiaomi's Bluetooth Mesh, for example, is built on SIG Mesh, and its light and switch templates use these same models. A Xiaomi version later on could reuse most of the application code, replacing mainly the provisioning and authentication layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What SIG Mesh costs you
&lt;/h2&gt;

&lt;p&gt;SIG Mesh isn't free; most of the cost has simply been paid by someone else already.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The protocol is complex.&lt;/strong&gt; Provisioning uses ECDH key exchange, messages are encrypted at both the network and transport layers, and there's segmentation, sequence numbers and the IV Index. All of that lives in the chip vendor's SDK and has already passed SIG testing. On the device side, use the SDK; don't write your own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network size has limits.&lt;/strong&gt; SIG Mesh forwards messages by flooding relays, so the more nodes in one area, the more crowded the air gets. As a rule of thumb, a network performs best with a few hundred nodes or fewer. Commercial lighting with thousands of points needs to be split by floor or zone into several networks and gateways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gateway can only store so many nodes.&lt;/strong&gt; This is easy to overlook:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telink's official gateway firmware stores up to &lt;strong&gt;200 nodes&lt;/strong&gt; by default, or 110 with remote provisioning enabled. A four-gang switch counts as one node, not four.&lt;/li&gt;
&lt;li&gt;If you build a gateway on Nordic's Zephyr stack, the default configuration allows only &lt;strong&gt;8 nodes&lt;/strong&gt;, with a replay-protection list of just 10 entries. Leave it unchanged and messages from the 11th device will start failing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two hundred nodes is plenty for a home, but check these numbers during design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A device belongs to only one network.&lt;/strong&gt; The same light can't be managed by our gateway and by a Xiaomi hub at the same time. Supporting both ecosystems means two product versions, provisioned separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you skip SIG qualification?
&lt;/h2&gt;

&lt;p&gt;Back to the second meaning of the original question: using SIG Mesh without Bluetooth SIG qualification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technically it makes no difference.&lt;/strong&gt; The devices work normally and interoperate with other SIG Mesh devices. The risks are elsewhere:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Patent license&lt;/td&gt;
&lt;td&gt;The SIG patent license only covers qualified products&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales channels&lt;/td&gt;
&lt;td&gt;Amazon and other platforms, large retailers and overseas distributors often ask for a Bluetooth qualification ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SIG enforcement&lt;/td&gt;
&lt;td&gt;The SIG notifies unqualified products and asks for qualification or withdrawal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trademark&lt;/td&gt;
&lt;td&gt;You can't use the "Bluetooth" name or logo on packaging or marketing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A common misunderstanding: &lt;strong&gt;going back to a proprietary protocol doesn't avoid SIG qualification.&lt;/strong&gt; Any product that uses Bluetooth needs qualification to be sold, Mesh or not. Without Mesh, you simply skip the Mesh-specific tests.&lt;/p&gt;

&lt;p&gt;The good news is that qualification doesn't necessarily mean retesting. If you use a stack the chip vendor has already qualified, without modifying its qualified parts, you can reference their qualification and just submit a declaration and pay the fee. If the Bluetooth design of the switches, lights and wireless switches is identical, they can share one design and one fee.&lt;/p&gt;

&lt;p&gt;Note also that &lt;strong&gt;radio certifications&lt;/strong&gt; such as SRRC, CE and FCC are legal requirements and separate from SIG qualification. Without them, the product can't be sold legally. A later post will cover certification costs and order.&lt;/p&gt;

&lt;h2&gt;
  
  
  On the gateway side, where does Mesh live?
&lt;/h2&gt;

&lt;p&gt;On the devices, using the chip SDK is uncontroversial. On the gateway, the Mesh stack can live in one of three places:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;How it works&lt;/th&gt;
&lt;th&gt;Pros and cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Implement Mesh in the gateway program&lt;/td&gt;
&lt;td&gt;Use the Linux board's own Bluetooth to send and receive Mesh advertisements&lt;/td&gt;
&lt;td&gt;One chip fewer, but thousands of lines of protocol stack to write and your own qualification testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bluetooth module as a co-processor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Mesh stack runs on the module; the main program sends commands over UART&lt;/td&gt;
&lt;td&gt;Proven stack and the vendor's qualification can be referenced; one extra module&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Module as a plain Bluetooth controller&lt;/td&gt;
&lt;td&gt;The module runs standard HCI; Mesh runs on Linux (for example BlueZ)&lt;/td&gt;
&lt;td&gt;Off-the-shelf module firmware, but no development on Windows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We chose the second: &lt;strong&gt;a Bluetooth module as a co-processor&lt;/strong&gt;. The hardest, most qualification-sensitive part of Mesh stays with the chip vendor, and we handle only the serial commands and the Matter translation. Which vendor's module makes the best co-processor is the subject of the next post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;So, can you skip SIG Mesh?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not using the SIG Mesh protocol&lt;/strong&gt;: possible, but you lose relaying, standard security and cross-vendor interoperability, and you still need Bluetooth qualification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using SIG Mesh without qualification&lt;/strong&gt;: functionality is unaffected, but exports, online marketplaces and major retail channels are effectively off-limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For us, the biggest value of SIG Mesh isn't the word "standard". It's a set of device models that map almost one to one onto Matter. That keeps the gateway's translation layer simple and leaves us free to choose our chips.&lt;/p&gt;

&lt;p&gt;If your devices still use a proprietary protocol and you're weighing a move to SIG Mesh, or you're already building a Bluetooth Mesh gateway, I'd be glad to talk: &lt;a href="https://linktr.ee/weiyii" rel="noopener noreferrer"&gt;linktr.ee/weiyii&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Cover image: &lt;a href="https://commons.wikimedia.org/wiki/File:Tapo_smart_LED_bulb_lighting_sample.jpg" rel="noopener noreferrer"&gt;Japanwikisan&lt;/a&gt;, &lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener noreferrer"&gt;CC BY 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>matter</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Same Claude Opus 5.5: Why Some People Ship an App and Others Call It Dumb</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:19:59 +0000</pubDate>
      <link>https://dev.to/weiyi/same-claude-opus-55-why-some-people-ship-an-app-and-others-call-it-dumb-e3d</link>
      <guid>https://dev.to/weiyi/same-claude-opus-55-why-some-people-ship-an-app-and-others-call-it-dumb-e3d</guid>
      <description>&lt;p&gt;Same model, Claude Opus 5.5. Some people say it gets a week's work done in half a day. Others say it gets two out of every three questions wrong.&lt;/p&gt;

&lt;p&gt;I recently used it to build a mobile app called Ruzai (如在). When you're away from your computer, it lets you use your phone to view the AI assistant's conversations on that computer, send it messages, and approve the critical actions it wants to run.&lt;/p&gt;

&lt;p&gt;Product design, UI, code, GitHub Actions pipelines that build Android APKs and push iOS builds to TestFlight, a self-hosted OTA update server, App Store listing assets: nearly all of it was done by Opus 5.5 inside Claude Code. Along the way we switched tech stacks once, evaluated two cross-platform frameworks, and I rejected the UI three times.&lt;/p&gt;

&lt;p&gt;Looking back, &lt;strong&gt;model capability was almost never the bottleneck.&lt;/strong&gt; With the same model, whether the results are good comes down to the person using it. This post breaks that down into a few concrete gaps, based on what actually happened during the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tech stack, up front
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What we ended up with&lt;/th&gt;
&lt;th&gt;Tried / abandoned along the way&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mobile framework&lt;/td&gt;
&lt;td&gt;React Native 0.88 + Expo SDK 58&lt;/td&gt;
&lt;td&gt;uni-app x (abandoned), Lynx 4.0 (abandoned after a prototype)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Routing and compilation&lt;/td&gt;
&lt;td&gt;Expo Router, React Compiler, TypeScript 6&lt;/td&gt;
&lt;td&gt;TypeScript 7 (incompatible with typescript-eslint)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gestures and animation&lt;/td&gt;
&lt;td&gt;Reanimated 4.7, Gesture Handler 3.3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Builds&lt;/td&gt;
&lt;td&gt;GitHub Actions: Android APK, iOS upload to TestFlight&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OTA updates&lt;/td&gt;
&lt;td&gt;expo-updates protocol, hosted on my own server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HarmonyOS&lt;/td&gt;
&lt;td&gt;Native ArkTS version, builds cleanly in CI&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development and debugging&lt;/td&gt;
&lt;td&gt;Expo Go plus a real device, with the AI driving the phone directly over adb&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every "abandoned" and "switched to" in that table was a disagreement between me and the AI. Let's go through them one by one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 1: Say "it's ugly" and the AI can only guess, three rounds in a row
&lt;/h2&gt;

&lt;p&gt;When the first version of the UI came out, I said: it's ugly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round one&lt;/strong&gt;, Opus 5.5 changed the color scheme. It found three established palettes online and built them into the prototype for me to choose from:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Primary color&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A Warm Cream&lt;/td&gt;
&lt;td&gt;Claude's official palette&lt;/td&gt;
&lt;td&gt;Terracotta orange &lt;code&gt;#c96442&lt;/code&gt;, off-white background &lt;code&gt;#faf9f5&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B Teal&lt;/td&gt;
&lt;td&gt;Radix Sage gray + Jade green&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#29a383&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C Indigo&lt;/td&gt;
&lt;td&gt;Radix Slate gray + Indigo blue&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#3e63dd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three palettes were perfectly sensible. I still thought it looked ugly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round two&lt;/strong&gt;, it stopped just swapping colors and rebuilt the whole thing in the style of the 2026 Gemini App redesign: pure white or pure black backgrounds, no borders anywhere, an oversized greeting, and a floating pill-shaped input box.&lt;/p&gt;

&lt;p&gt;In this round it also tracked down a cause I never would have guessed: &lt;strong&gt;the screenshots themselves looked cheap.&lt;/strong&gt; The mockups were captured with headless Chrome on Windows, where Chinese text renders in Microsoft YaHei by default. After switching to Source Han Sans (Noto Sans SC), the look instantly got close to MiSans and PingFang on a phone. Part of what I'd been calling ugly in the first two rounds was really the screenshot font.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round three&lt;/strong&gt;, I figured the problem might be the icon colors, so I had it drop gradients entirely. It produced six solid-color icon options (black background with a bold sans, black background with a serif, a vermilion seal stamp...), and we settled on a white "Z" on solid black.&lt;/p&gt;

&lt;p&gt;Only after three rounds did I realize I'd been handing out verdicts the whole time, never direction. If my first sentence had been "conversation-first like ChatGPT, black and white, no gradients," the first version would have been close to final.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI has no aesthetic preferences. What it gives you is the average of a huge number of designs.&lt;/strong&gt; If you can't articulate what you want, toss it a screenshot of an app you like. That beats ten rounds of "make it look more premium."&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 2: Whatever the spec says, it does to the letter
&lt;/h2&gt;

&lt;p&gt;This project had two computers doing the work: one handled the server and the mobile app, the other handled the Windows client. The AIs on each side didn't share memory. They coordinated through spec documents in the code repository: the protocol, the APIs, what needed to change this time. One side wrote and committed the doc, the other pulled it down, followed it, and marked the status when done.&lt;/p&gt;

&lt;p&gt;This setup worked really well. When the desktop client got a new icon and was hooked up to the mobile relay, this side wrote the handoff doc first, and the other side just followed it and got it done.&lt;/p&gt;

&lt;p&gt;But it has a side effect: &lt;strong&gt;any decision written into the doc, the AI will carry out without compromise.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At one point, the spec switched the mobile tech stack to uni-app x. Opus 5.5 followed it and wrote an entire uni-app codebase, committed it, fixed the issues, and did a beautiful job. Only after it was done did I realize this locked the product into a single platform vendor, DCloud: push notifications, builds, and OTA updates would all depend on them. So I tore it down and started over with React Native + Expo.&lt;/p&gt;

&lt;p&gt;The AI won't ask on its own, "Will you regret this choice three years from now?" &lt;strong&gt;Irreversible decisions like tech stack selection have to be made by a human.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 3: Have it write code first, or have it explain why first
&lt;/h2&gt;

&lt;p&gt;Later I wanted to try ByteDance's Lynx: one codebase for Android and iOS, and possibly HarmonyOS down the road. Opus 5.5 quickly put together a prototype that compiled, connected to the server, and rendered conversations.&lt;/p&gt;

&lt;p&gt;But the UI had gone ugly again, nothing like the finalized design.&lt;/p&gt;

&lt;p&gt;This time I didn't let it jump straight into fixes. Instead I said: &lt;strong&gt;no code yet. First let's work out why, then come up with a plan, and only then write code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reasons it gave were very specific:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;React Native version&lt;/th&gt;
&lt;th&gt;Lynx prototype&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Icons&lt;/td&gt;
&lt;td&gt;SVG line icons&lt;/td&gt;
&lt;td&gt;☰ ＋ ↑ text symbols&lt;/td&gt;
&lt;td&gt;Lynx can't render SVG out of the box&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sidebar&lt;/td&gt;
&lt;td&gt;Slides in from the left, 84% width, with an overlay&lt;/td&gt;
&lt;td&gt;Replaced by a full-page list&lt;/td&gt;
&lt;td&gt;No ready-made drawer or modal components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bottom sheet&lt;/td&gt;
&lt;td&gt;Picking a computer, confirmation details with screenshots&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overall&lt;/td&gt;
&lt;td&gt;Tuned piece by piece against the prototype&lt;/td&gt;
&lt;td&gt;Thrown together in an hour to prove feasibility&lt;/td&gt;
&lt;td&gt;Lynx can't use React Native components; only pure logic can be reused&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On top of that, testing turned up regressions: in Lynx 4.1.0, taps inside a scroll-view didn't fire, and in ReactLynx 0.128 all taps stopped working entirely, so we had to roll back to 4.0.3 and 0.126.&lt;/p&gt;

&lt;p&gt;Once the reasons were laid out, the decision was easy: stick with React Native.&lt;/p&gt;

&lt;p&gt;If I'd just said "make the UI look good," it would probably have spent hours re-tuning everything on Lynx, only for us to switch back in the end. &lt;strong&gt;The faster AI writes code, the further it runs in the wrong direction.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 4: The more power you give it, the clearer the boundaries need to be
&lt;/h2&gt;

&lt;p&gt;For on-device testing, I had the AI drive an Android phone directly over adb: tapping buttons, typing text, taking screenshots to check results. That's how a lot of issues surfaced that the desktop prototype simply couldn't reveal:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Cause&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard covers the input box&lt;/td&gt;
&lt;td&gt;With edge-to-edge enabled, the layout didn't make room for the keyboard&lt;/td&gt;
&lt;td&gt;Switched KeyboardAvoidingView to padding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Taps do nothing after the screen dims&lt;/td&gt;
&lt;td&gt;The first tap gets used to wake the screen&lt;/td&gt;
&lt;td&gt;Send KEYCODE_WAKEUP before testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sidebar swipe gesture ends the moment it starts&lt;/td&gt;
&lt;td&gt;The native ScrollView stole the touch&lt;/td&gt;
&lt;td&gt;Switched to Gesture Handler's ScrollView, plus a 36dp-wide transparent hit zone along the left edge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long conversations stop halfway when opened&lt;/td&gt;
&lt;td&gt;During batched layout, the code's own scroll-to-bottom also fired scroll events, which got misread as "the user scrolled up"&lt;/td&gt;
&lt;td&gt;Only finger drags can change the "at bottom" state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text typed via adb never appears&lt;/td&gt;
&lt;td&gt;The WeChat keyboard intercepted the input&lt;/td&gt;
&lt;td&gt;Tap a candidate word to commit it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;But things did go wrong once: it hit the back button, landed on the phone's home screen, and its next few taps went straight into WeChat and Alipay.&lt;/p&gt;

&lt;p&gt;No harm done, but it was enough of a wake-up call: &lt;strong&gt;an AI that can only chat can only talk; an AI hooked up to tools can verify its own work, and can also cause trouble on its own.&lt;/strong&gt; The same model performs at a completely different level depending on whether it has tools. How much access to grant, which device to test on, and which apps are off-limits all need to be spelled out up front.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 5: Where you review the work determines what you see
&lt;/h2&gt;

&lt;p&gt;The screenshot font issue earlier was really a review problem: &lt;strong&gt;if you look at results in the wrong environment, even good work gets dismissed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Builds are the same. Android packages built by GitHub Actions were signed with a different debug certificate every time, so installing a new version meant uninstalling the old one first. Committing a fixed debug.keystore to the repo finally solved it. You'd never catch that without installing twice on a real phone.&lt;/p&gt;

&lt;p&gt;App Store listing assets are an even bigger pile of details:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Asset&lt;/th&gt;
&lt;th&gt;Required dimensions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Title artwork&lt;/td&gt;
&lt;td&gt;5244 × 2950 or 3840 × 1646&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search result artwork&lt;/td&gt;
&lt;td&gt;5244 × 2950, 3840 × 2560, or 1920 × 1280&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 6.3-inch screenshots&lt;/td&gt;
&lt;td&gt;1206 × 2622 or 2622 × 1206&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The AI got all these dimensions right on the first try, but the sample data in the screenshots only got swapped for neutral content after I looked them over and asked.&lt;/p&gt;

&lt;p&gt;Then there was the store description. It wrote it based on our real internal use cases, with every feature covered, but describing it that literally would very likely have gotten stuck in review. The AI didn't know that; I did. We ended up reframing it as "use your phone to remotely control and view the AI conversations on your computer," with the subtitle "Remote-control and view the AI on your computer."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI can get things right, but only someone who's been through it knows which things, done right, are actually risky.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 6: Do you know what to ask?
&lt;/h2&gt;

&lt;p&gt;Late in the project, I asked: "For small UI tweaks from now on, can we just push an update instead of rebuilding every time?"&lt;/p&gt;

&lt;p&gt;That one question bought me a full OTA update system: using the expo-updates protocol, with update bundles hosted on my own server. runtimeVersion uses the fingerprint policy, so JS-only releases update automatically when the phone opens the app, and only changes to native code require a new build.&lt;/p&gt;

&lt;p&gt;If I hadn't asked, it wouldn't have done it on its own. Not because it couldn't, but because it didn't know this mattered to me.&lt;/p&gt;

&lt;p&gt;Likewise, the HarmonyOS version only started because I asked, "Can you build a native HarmonyOS version?" It wrote one in ArkTS that builds cleanly on GitHub Actions, and along the way worked through a few pitfalls you only find by actually doing it: Huawei's ohpm registry frequently returns 503 to GitHub's runners, so retries are needed; imageknife 3.2.8 and above requires API 18, so we had to stay on 3.2.7.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI goes exactly as far as your questions take it.&lt;/strong&gt; People who know how to ask naturally get more out of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 7: Are you really using "the same model"?
&lt;/h2&gt;

&lt;p&gt;One last fact that often gets overlooked: when two people say "I'm using Opus 5.5," they may not be using the same thing at all.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Difference&lt;/th&gt;
&lt;th&gt;What it actually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;Web chat, Claude Code, all sorts of wrapper apps, each with a completely different system prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tools&lt;/td&gt;
&lt;td&gt;Whether it can read files, run a terminal, drive a browser or a phone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning effort&lt;/td&gt;
&lt;td&gt;Thinking levels, fast mode; the same model varies a lot between high and low settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;1M context or standard length; whether old conversations get compacted, and what gets lost when they do&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Route&lt;/td&gt;
&lt;td&gt;Official API, a cloud provider, or various third-party relays; the version and limits behind them aren't necessarily the same&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I built Ruzai with Claude Code: it can read and write the entire repository, run commands, call adb, and use GitHub. Comparing that to a one-question-one-answer session in a web chat was never a fair fight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Putting the seven gaps side by side:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Feels "dumb"&lt;/th&gt;
&lt;th&gt;Feels "smart"&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aesthetics&lt;/td&gt;
&lt;td&gt;Just says "it's ugly"&lt;/td&gt;
&lt;td&gt;Gives reference screenshots, says clearly what not to do&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spec docs&lt;/td&gt;
&lt;td&gt;Once it's written, it's settled&lt;/td&gt;
&lt;td&gt;Makes irreversible decisions yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Order&lt;/td&gt;
&lt;td&gt;Jumps straight into code&lt;/td&gt;
&lt;td&gt;Reasons and plan first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool access&lt;/td&gt;
&lt;td&gt;None, or wide open&lt;/td&gt;
&lt;td&gt;Gives tools, and draws boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;Looks at screenshots on a computer&lt;/td&gt;
&lt;td&gt;Checks on a real device, with real fonts and real data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Questions&lt;/td&gt;
&lt;td&gt;Waits for it to think of things&lt;/td&gt;
&lt;td&gt;Knows what to ask&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Only looks at the model name&lt;/td&gt;
&lt;td&gt;Looks at client, tools, effort level, route&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Across the whole project, Opus 5.5 wrote nearly all the code, but every turning point was a human decision: dropping uni-app x, passing on Lynx, removing gradients, rewriting the store copy, adding OTA updates.&lt;/p&gt;

&lt;p&gt;So next time you feel like the AI has "gotten dumber," don't rush to switch models. Take another look at the job description you gave it, and ask whether that was the part that wasn't very smart.&lt;/p&gt;

&lt;p&gt;For the more technical side of things, like retrieval, context curation, reasoning budgets, and verification, I wrote about those in &lt;a href="https://ay3s.com/en/articles/make-ai-smarter-before-changing-models/" rel="noopener noreferrer"&gt;Before Switching Models, Make Your AI Smarter&lt;/a&gt;. The two pair well together.&lt;/p&gt;

&lt;p&gt;If you're also building your own product with Claude Code or another AI, I'd love to chat: &lt;a href="https://linktr.ee/weiyii" rel="noopener noreferrer"&gt;linktr.ee/weiyii&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Cover image: &lt;a href="https://commons.wikimedia.org/wiki/File:Couple_working_at_home_(Unsplash).jpg" rel="noopener noreferrer"&gt;Crew&lt;/a&gt;, &lt;a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener noreferrer"&gt;CC0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Choosing a Matter Gateway Processor: RK3506 vs RK3562 vs RK3576 vs RDK X5</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:19:31 +0000</pubDate>
      <link>https://dev.to/weiyi/choosing-a-matter-gateway-processor-rk3506-vs-rk3562-vs-rk3576-vs-rdk-x5-3dnd</link>
      <guid>https://dev.to/weiyi/choosing-a-matter-gateway-processor-rk3506-vs-rk3562-vs-rk3576-vs-rdk-x5-3dnd</guid>
      <description>&lt;p&gt;The &lt;a href="https://ay3s.com/en/articles/bluetooth-mesh-gateway-chip-telink-silabs-nordic/" rel="noopener noreferrer"&gt;previous post&lt;/a&gt; settled the gateway's Bluetooth chip: a Silicon Labs module runs the Mesh stack and takes commands from the host over UART. This post is about the other chip, &lt;strong&gt;the main processor that runs Linux and the gateway program&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There's far more choice here than for the Bluetooth chip. We looked at Rockchip's RK3506, RK3562 and RK3576, plus D-Robotics' RDK X5, which a partner company recommended. The conclusion wasn't to pick one chip but to &lt;strong&gt;offer three tiers by product positioning&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, how much performance does a gateway really need?
&lt;/h2&gt;

&lt;p&gt;Lay out the requirements and a lot of "high-end" turns out to be unnecessary:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;What it takes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gateway program&lt;/td&gt;
&lt;td&gt;A single Rust program using a few dozen MB of RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matter&lt;/td&gt;
&lt;td&gt;Very little traffic; commissioning crypto is heavier but happens once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;Ethernet or Wi-Fi; 100 Mbps is plenty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth module&lt;/td&gt;
&lt;td&gt;One UART, &lt;strong&gt;with RTS/CTS hardware flow control&lt;/strong&gt; (Silicon Labs BGAPI has no checksum)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System&lt;/td&gt;
&lt;td&gt;Minimal Linux, read-only root filesystem, A/B partitions for OTA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;The Matter device certificate's private key needs protection, ideally with secure boot and OTP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a pure Bluetooth Mesh to Matter bridge, compute barely matters. What does matter: &lt;strong&gt;UART flow control, secure boot, SDK quality, long-term supply and price&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  RK3506: the cheapest, enough for bridging
&lt;/h2&gt;

&lt;p&gt;The RK3506 is a fairly new entry-level Rockchip chip:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Three Cortex-A7 cores at 1.2 GHz, 32-bit, plus a Cortex-M0.&lt;/li&gt;
&lt;li&gt;DDR3L memory, typically 128 MB to 512 MB.&lt;/li&gt;
&lt;li&gt;100 Mbps RMII Ethernet, no PCIe; Wi-Fi only over SDIO or USB.&lt;/li&gt;
&lt;li&gt;Flexible pin multiplexing with plenty of UARTs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Core boards are cheap; Luckfox's Lyra modules with 512 MB RAM and 8 GB eMMC list at a little over 100 yuan (about US$15).&lt;/p&gt;

&lt;p&gt;For a gateway it's &lt;strong&gt;enough&lt;/strong&gt;: the program needs a few dozen MB, and three A7 cores handle Matter and Mesh translation easily. We confirmed the gateway program compiles for the RK3506's 32-bit ARM target (&lt;code&gt;armv7-unknown-linux-musleabihf&lt;/code&gt;) without code changes.&lt;/p&gt;

&lt;p&gt;Two caveats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose 512 MB.&lt;/strong&gt; The 128 MB variants are too tight beyond a demo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check secure boot, OTP and OP-TEE support first.&lt;/strong&gt; The chip is new, documentation is thin, and this determines how the private key is protected for Matter certification.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The downsides are clear: 32-bit, little memory and no NPU leave almost no room for future features.&lt;/p&gt;

&lt;h2&gt;
  
  
  RK3562: some headroom, the mainstream choice
&lt;/h2&gt;

&lt;p&gt;The RK3562 is our "standard" choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Four Cortex-A53 cores at 2.0 GHz, 64-bit.&lt;/li&gt;
&lt;li&gt;LPDDR4, 1 to 4 GB.&lt;/li&gt;
&lt;li&gt;Gigabit Ethernet, PCIe, USB 3.0 and around ten UARTs.&lt;/li&gt;
&lt;li&gt;A 1 TOPS NPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MYIR, Forlinx, Industio and others sell core boards listed at roughly 150–300 yuan (US$20–40); development boards run 500–600 yuan.&lt;/p&gt;

&lt;p&gt;The reason to choose it is &lt;strong&gt;headroom&lt;/strong&gt;: 64-bit, gigabit Ethernet and 2 GB of RAM leave space for local automation, a web admin page or more protocols later. Rockchip's Linux SDK support is mature, and one Buildroot command produces a complete firmware image.&lt;/p&gt;

&lt;p&gt;One lesson: &lt;strong&gt;buy the development board and the production core board from the same vendor&lt;/strong&gt;. The BSP and device tree you develop against then match production, saving a porting round.&lt;/p&gt;

&lt;h2&gt;
  
  
  RK3576: only for a control panel with a screen
&lt;/h2&gt;

&lt;p&gt;The RK3576 is a big step up: eight cores (4×A72 + 4×A53), a 6 TOPS NPU and much stronger display and video. Core boards start around 500 yuan (about US$70).&lt;/p&gt;

&lt;p&gt;For a pure bridge it's clearly overkill. It suits a different product: &lt;strong&gt;a smart home control panel with a screen&lt;/strong&gt;, such as a 7-inch wall display that shows device status and scenes while doubling as the gateway. The NPU would also help with local voice or AI features later.&lt;/p&gt;

&lt;h2&gt;
  
  
  RDK X5: workable, but not a good fit for a gateway
&lt;/h2&gt;

&lt;p&gt;A partner company suggested D-Robotics' RDK X5. The specs are impressive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eight Cortex-A55 cores at 1.5 GHz.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 10 TOPS BPU&lt;/strong&gt; (D-Robotics' AI accelerator) and 4K video encoding and decoding.&lt;/li&gt;
&lt;li&gt;A module integrating RAM and eMMC, optionally with Wi-Fi 6 and Bluetooth 5.4.&lt;/li&gt;
&lt;li&gt;The 4 GB development board costs 549 yuan (about US$75).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technically it runs a gateway fine: it's 64-bit ARM Linux, our program works as is, the needed interfaces are there, and there's a Buildroot SDK with a secure firmware option.&lt;/p&gt;

&lt;p&gt;In a gateway, though, the issues pile up:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Wasted compute&lt;/td&gt;
&lt;td&gt;The selling points are 10 TOPS and vision processing, which a gateway never uses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Module prices vary widely by channel and are clearly above the RK3562 overall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ecosystem&lt;/td&gt;
&lt;td&gt;A single vendor, with far fewer community resources and solution partners than Rockchip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System&lt;/td&gt;
&lt;td&gt;The main image is Ubuntu desktop; production needs the Buildroot SDK, whose maturity needs checking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maturity&lt;/td&gt;
&lt;td&gt;The module documentation we found still said "product under development"; production status and supply need confirming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duplicate Bluetooth&lt;/td&gt;
&lt;td&gt;The Wi-Fi module also includes Bluetooth, but our Bluetooth is handled by a separate Mesh module, leaving an unused radio&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It's a great &lt;strong&gt;robotics and vision AI platform&lt;/strong&gt;, just not the right base for a cost-sensitive gateway.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;RK3506&lt;/th&gt;
&lt;th&gt;RK3562&lt;/th&gt;
&lt;th&gt;RK3576&lt;/th&gt;
&lt;th&gt;RDK X5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;3×A7, 32-bit&lt;/td&gt;
&lt;td&gt;4×A53, 64-bit&lt;/td&gt;
&lt;td&gt;4×A72 + 4×A53&lt;/td&gt;
&lt;td&gt;8×A55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI compute&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;1 TOPS&lt;/td&gt;
&lt;td&gt;6 TOPS&lt;/td&gt;
&lt;td&gt;10 TOPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical RAM&lt;/td&gt;
&lt;td&gt;128–512 MB&lt;/td&gt;
&lt;td&gt;1–4 GB&lt;/td&gt;
&lt;td&gt;4–8 GB&lt;/td&gt;
&lt;td&gt;2–8 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ethernet&lt;/td&gt;
&lt;td&gt;100 Mbps&lt;/td&gt;
&lt;td&gt;Gigabit&lt;/td&gt;
&lt;td&gt;Gigabit&lt;/td&gt;
&lt;td&gt;Gigabit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Listed core board price&lt;/td&gt;
&lt;td&gt;~US$15&lt;/td&gt;
&lt;td&gt;~US$20–40&lt;/td&gt;
&lt;td&gt;From ~US$70&lt;/td&gt;
&lt;td&gt;Varies by channel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ecosystem and SDK&lt;/td&gt;
&lt;td&gt;New, thin docs&lt;/td&gt;
&lt;td&gt;Mature&lt;/td&gt;
&lt;td&gt;Mature&lt;/td&gt;
&lt;td&gt;Single vendor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Bridging only, lowest cost&lt;/td&gt;
&lt;td&gt;Bridging plus extras&lt;/td&gt;
&lt;td&gt;Screen panel, AI&lt;/td&gt;
&lt;td&gt;Robotics, vision AI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Our choice: three tiers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Processor&lt;/th&gt;
&lt;th&gt;Positioning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Budget&lt;/td&gt;
&lt;td&gt;RK3506&lt;/td&gt;
&lt;td&gt;Bluetooth Mesh to Matter only, lowest cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;RK3562&lt;/td&gt;
&lt;td&gt;Headroom for local automation, web admin and more protocols&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;RK3576&lt;/td&gt;
&lt;td&gt;Control panel with a screen that doubles as the gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three share one software stack: Rockchip's SDK with Buildroot, with the gateway program built for different targets and identical Bluetooth modules and device firmware. That's the layered design from the &lt;a href="https://ay3s.com/en/articles/bluetooth-devices-to-matter-apple-home/" rel="noopener noreferrer"&gt;first post&lt;/a&gt; at work: swap the processor and neither the Bluetooth nor the Matter layer changes.&lt;/p&gt;

&lt;p&gt;For validation we start with an RK3562 development board, which has the most headroom and is easiest to debug. Once everything works, the same program moves to the RK3506 to bring costs down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions to ask before ordering
&lt;/h2&gt;

&lt;p&gt;Whichever chip you choose, ask the vendor these before buying boards:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Can the UART run RTS/CTS hardware flow control&lt;/strong&gt;, and are those pins broken out?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How is the SDK delivered&lt;/strong&gt;, does it include Buildroot, and which kernel version?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What's the status and documentation for secure boot, OTP and OP-TEE?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's the production price and lead time for the core board&lt;/strong&gt;, and is there an end-of-life plan?&lt;/li&gt;
&lt;li&gt;Which onboard Wi-Fi module is used, and is its driver already working?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;It's easy to let specs drive the choice of processor: cores, TOPS, RAM, always reaching for more. For a gateway, what decides success are the unglamorous details: UART flow control, secure boot, a usable SDK and long-term availability. Decide how far the product needs to go first, then decide how much performance to buy.&lt;/p&gt;

&lt;p&gt;If you're choosing a processor for a smart home gateway, or customizing Buildroot with Rockchip's SDK, I'd be glad to talk: &lt;a href="https://linktr.ee/weiyii" rel="noopener noreferrer"&gt;linktr.ee/weiyii&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Cover image: &lt;a href="https://commons.wikimedia.org/wiki/File:Rockchip_RK3288-C.jpg" rel="noopener noreferrer"&gt;Mbrickn&lt;/a&gt;, &lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener noreferrer"&gt;CC BY 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>matter</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Matter Gateway Certification: What You Need and What It Costs</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:19:14 +0000</pubDate>
      <link>https://dev.to/weiyi/matter-gateway-certification-what-you-need-and-what-it-costs-3bmd</link>
      <guid>https://dev.to/weiyi/matter-gateway-certification-what-you-need-and-what-it-costs-3bmd</guid>
      <description>&lt;p&gt;The earlier posts were all about technology: the &lt;a href="https://ay3s.com/en/articles/bluetooth-devices-to-matter-apple-home/" rel="noopener noreferrer"&gt;overall architecture&lt;/a&gt;, protocols, the Bluetooth chip and the &lt;a href="https://ay3s.com/en/articles/matter-gateway-soc-rk3506-rk3562-rk3576-rdk-x5/" rel="noopener noreferrer"&gt;main processor&lt;/a&gt;. But whether a gateway can actually be sold usually comes down not to technology but to &lt;strong&gt;certification&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://ay3s.com/en/articles/run-matter-gateway-with-pc-and-phone/" rel="noopener noreferrer"&gt;second post&lt;/a&gt;, Apple Home showed an "Uncertified Accessory" warning when adding the gateway. During development you can tap "Add Anyway". A production product can't rely on that: users hesitate, and retailers simply refuse it.&lt;/p&gt;

&lt;p&gt;This post walks through the certifications a Bluetooth Mesh to Matter gateway needs: what they are, what each covers, roughly what they cost and in what order to do them.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, three kinds of certification
&lt;/h2&gt;

&lt;p&gt;The certifications a gateway faces fall into three groups that cover completely different things:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;What it covers&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;If you skip it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ecosystem&lt;/td&gt;
&lt;td&gt;Using the Matter name and working properly with each platform&lt;/td&gt;
&lt;td&gt;Matter (CSA)&lt;/td&gt;
&lt;td&gt;"Uncertified Accessory" warning, no Matter logo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocol&lt;/td&gt;
&lt;td&gt;Whether the product's Bluetooth implementation complies&lt;/td&gt;
&lt;td&gt;Bluetooth SIG&lt;/td&gt;
&lt;td&gt;No Bluetooth trademark, many sales channels closed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radio&lt;/td&gt;
&lt;td&gt;Whether RF emissions meet local regulations&lt;/td&gt;
&lt;td&gt;SRRC, CE, FCC&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Legally required&lt;/strong&gt;, no lawful sale&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first two are industry requirements; the last is the law. Most of the cost and time goes into these three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Matter certification: only the gateway needs it
&lt;/h2&gt;

&lt;p&gt;Good news first: &lt;strong&gt;the switches and lights behind the bridge don't need Matter certification.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Matter's model, Apple Home sees only one Matter device, the gateway. The switches and lights behind it are bridged devices the gateway represents. So only the gateway is certified, and the devices' chips and protocols have nothing to do with Matter certification. That was one of the main reasons for choosing a gateway in the &lt;a href="https://ay3s.com/en/articles/bluetooth-devices-to-matter-apple-home/" rel="noopener noreferrer"&gt;first post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Matter certification is run by the Connectivity Standards Alliance (CSA). Roughly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Join the CSA&lt;/strong&gt; as a member.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply for a Vendor ID (VID)&lt;/strong&gt; and assign Product IDs (PIDs).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test at an authorized lab.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;After passing, &lt;strong&gt;pay the certification fee&lt;/strong&gt;; the product is listed in the CSA's certification database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In production, flash a Device Attestation Certificate (DAC) into every unit&lt;/strong&gt;, bought from a certificate authority.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  CSA membership and certification fees
&lt;/h3&gt;

&lt;p&gt;These are the prices currently listed on the CSA website (check there for the latest):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Membership&lt;/th&gt;
&lt;th&gt;Annual fee&lt;/th&gt;
&lt;th&gt;Certification fee per product&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Associate&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Can't test directly; certification transfer only, US$2,500 per product plus US$500 a year&lt;/td&gt;
&lt;td&gt;Only rebrands already certified products&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adopter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;US$7,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;US$3,000&lt;/strong&gt; (US$2,500 for your own derivatives)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;The lowest level for certifying your own product&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Participant&lt;/td&gt;
&lt;td&gt;US$21,500&lt;/td&gt;
&lt;td&gt;US$2,000 (US$1,500 for derivatives)&lt;/td&gt;
&lt;td&gt;Voting rights; needed to transfer certification for OEM customers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Promoter&lt;/td&gt;
&lt;td&gt;US$100,000+&lt;/td&gt;
&lt;td&gt;US$2,000&lt;/td&gt;
&lt;td&gt;Large companies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Many articles still quote US$7,000 for Adopter and US$20,000 for Participant; those are prices from around 2023.&lt;/p&gt;

&lt;p&gt;For a company starting out with Matter, &lt;strong&gt;Adopter is the usual choice&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lab testing
&lt;/h3&gt;

&lt;p&gt;Testing must be done at a CSA-authorized lab. Labs in China quote &lt;strong&gt;roughly 30,000–50,000 yuan (about US$4,000–7,000) per product&lt;/strong&gt;, depending on product type and test scope. Bridges need more testing than single devices, for behavior such as adding and removing bridged devices at runtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  Device certificates (DAC)
&lt;/h3&gt;

&lt;p&gt;When a Matter device is commissioned, the phone checks its device certificate to confirm it comes from a legitimate manufacturer. During development the official Matter test certificates are used, which is exactly why Apple Home warns about an uncertified accessory.&lt;/p&gt;

&lt;p&gt;In production you buy certificates from a CSA-approved certificate authority, &lt;strong&gt;one per unit&lt;/strong&gt;, priced by volume and quoted individually. Two engineering points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protect the private key, ideally in the chip's secure storage. That's why secure boot and OTP support matter when &lt;a href="https://ay3s.com/en/articles/matter-gateway-soc-rk3506-rk3562-rk3576-rdk-x5/" rel="noopener noreferrer"&gt;choosing the processor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The production line needs a station that flashes a unique certificate and pairing code into each unit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bluetooth SIG qualification: unavoidable if you use Bluetooth
&lt;/h2&gt;

&lt;p&gt;Any product that uses Bluetooth needs Bluetooth SIG qualification to be sold, Mesh or not. As the &lt;a href="https://ay3s.com/en/articles/sig-mesh-or-private-protocol-for-gateway/" rel="noopener noreferrer"&gt;third post&lt;/a&gt; noted, going back to a proprietary protocol doesn't avoid the fee.&lt;/p&gt;

&lt;p&gt;Fortunately, &lt;strong&gt;retesting usually isn't required&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you use a stack the chip or module vendor has already qualified, &lt;strong&gt;without modifying its qualified parts&lt;/strong&gt;, you can reference their qualification ID (QDID) in the SIG system, submit a declaration and pay the fee.&lt;/li&gt;
&lt;li&gt;The declaration fee is per design; the SIG's current Adopter price is around US$10,000 (check the SIG website).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If switches, lights and wireless switches share an identical Bluetooth design&lt;/strong&gt; (same chip, same stack version), they can be combined into one design and one fee.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our design has two Bluetooth designs, the Silicon Labs module in the gateway and the Telink chips in the devices, each referencing its vendor's QDID.&lt;/p&gt;

&lt;h2&gt;
  
  
  Radio certification: legally required, no shortcuts
&lt;/h2&gt;

&lt;p&gt;Radio certification covers RF emissions and is mandatory by law. By region:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Region&lt;/th&gt;
&lt;th&gt;Certification&lt;/th&gt;
&lt;th&gt;With a certified module&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;China&lt;/td&gt;
&lt;td&gt;SRRC type approval&lt;/td&gt;
&lt;td&gt;Usually still needed for the product; ask the certification body&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;CE (RED directive)&lt;/td&gt;
&lt;td&gt;Reference the module's test reports and issue a declaration of conformity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;US&lt;/td&gt;
&lt;td&gt;FCC&lt;/td&gt;
&lt;td&gt;Reuse the module's FCC ID and test the finished product&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A gateway usually has two radios: Wi-Fi and the Bluetooth module. &lt;strong&gt;Using certified modules without changing antennas or RF parameters&lt;/strong&gt; avoids most RF testing. That's another reason our gateway uses an off-the-shelf Silicon Labs module instead of a custom Bluetooth RF design.&lt;/p&gt;

&lt;p&gt;Beyond RF, electronics usually need safety and EMC certification, such as China's CCC and the LVD and EMC parts of CE. Gateways with power adapters deserve particular attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Apple Home need separate certification?
&lt;/h2&gt;

&lt;p&gt;A common question: to work with Apple Home, does the gateway also need HomeKit certification?&lt;/p&gt;

&lt;p&gt;For Matter devices, &lt;strong&gt;no&lt;/strong&gt;. A Matter-certified device can be added to and controlled in Apple Home directly, without Apple's MFi process. The same goes for Google Home, Amazon Alexa and Home Assistant; that's the whole point of Matter.&lt;/p&gt;

&lt;p&gt;Only if you want to print a "Works with Apple Home" badge on the packaging do you need to look into Apple's program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roughly what the first year costs
&lt;/h2&gt;

&lt;p&gt;Estimated for one company, one gateway, certifying Matter as an Adopter (US dollars; exchange rates and quotes vary):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Approximate cost&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CSA Adopter fee&lt;/td&gt;
&lt;td&gt;7,500&lt;/td&gt;
&lt;td&gt;Annual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matter certification fee&lt;/td&gt;
&lt;td&gt;3,000&lt;/td&gt;
&lt;td&gt;Per product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matter lab testing&lt;/td&gt;
&lt;td&gt;4,000–7,000&lt;/td&gt;
&lt;td&gt;About 30,000–50,000 yuan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth SIG declaration&lt;/td&gt;
&lt;td&gt;~10,000&lt;/td&gt;
&lt;td&gt;Per design, no retesting with vendor QDID; gateway and devices may each need one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radio certification&lt;/td&gt;
&lt;td&gt;Depends on region&lt;/td&gt;
&lt;td&gt;Certified modules avoid most of it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Device certificates&lt;/td&gt;
&lt;td&gt;Per unit&lt;/td&gt;
&lt;td&gt;Ongoing in production&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Counting only the gateway's Matter certification and one Bluetooth declaration, first-year fixed costs come to roughly &lt;strong&gt;US$25,000–30,000&lt;/strong&gt;, excluding radio certification and device certificates. From the second year on, it's mainly the CSA fee and certification for new products.&lt;/p&gt;

&lt;p&gt;Selling in China, Europe and the US at once raises the radio and safety costs noticeably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Suggested order
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decide the sales regions&lt;/strong&gt; to know which radio certifications you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check certificates when choosing modules&lt;/strong&gt;: the Bluetooth module's QDID and the original SRRC, CE and FCC certificates for the Wi-Fi and Bluetooth modules, matching model and SDK version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Join the CSA before the hardware is frozen&lt;/strong&gt;, get a VID and understand test requirements early, rather than finding missing features after samples are built.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-test engineering samples.&lt;/strong&gt; Many labs offer pre-testing, cheaper than formal testing and good for catching problems early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formal Matter testing&lt;/strong&gt;, while preparing certificate flashing for production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submit the Bluetooth SIG declaration&lt;/strong&gt;, referencing the chip vendor's QDID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Radio and safety certification&lt;/strong&gt;, which can run in parallel with Matter testing.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Certification sounds like paperwork, but it shapes technical choices: whether to use certified modules, whether the processor has secure storage, whether switches and lights can share one Bluetooth design. Factor certification in when choosing chips and you'll save a lot of money and time later.&lt;/p&gt;

&lt;p&gt;The prices here come from the CSA and Bluetooth SIG websites and lab quote ranges. They change often, so check the latest official prices and lab quotes before committing.&lt;/p&gt;

&lt;p&gt;If you're preparing for Matter certification, or weighing the cost and order of Bluetooth and radio certification, I'd be glad to talk: &lt;a href="https://linktr.ee/weiyii" rel="noopener noreferrer"&gt;linktr.ee/weiyii&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Cover image: &lt;a href="https://commons.wikimedia.org/wiki/File:Anechoic_chamber_for_EMC_testing_(Electromagnetic_Compatibility)_Nemko_Norway.jpg" rel="noopener noreferrer"&gt;Grethe Spongsveen&lt;/a&gt;, &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>matter</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Want smarter AI? Don't rush to change models</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:18:57 +0000</pubDate>
      <link>https://dev.to/weiyi/want-smarter-ai-dont-rush-to-change-models-25j2</link>
      <guid>https://dev.to/weiyi/want-smarter-ai-dont-rush-to-change-models-25j2</guid>
      <description>&lt;p&gt;What frustrates me about AI is not knowing when I can rely on it.&lt;/p&gt;

&lt;p&gt;It explains a complicated problem convincingly, then repeatedly gets a small change wrong. You've supplied the information, yet it overlooks it. It says the code is fixed; run it and the problem is still there.&lt;/p&gt;

&lt;p&gt;The natural reaction is to blame the model and buy a more expensive one.&lt;/p&gt;

&lt;p&gt;That might help. But I'd first check whether it received the right information, whether its working process makes sense, and how it decides its work is correct.&lt;/p&gt;

&lt;p&gt;Leave those unresolved and a stronger model may stumble in exactly the same place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The document is there. Why can't it find it?
&lt;/h2&gt;

&lt;p&gt;Connecting AI to a knowledge base is common now. Split documents into chunks, turn them into vectors, store them in a database, retrieve a few relevant passages for a question, then ask the model to answer. That's retrieval-augmented generation, or RAG.&lt;/p&gt;

&lt;p&gt;It sounds straightforward. The trouble often starts at “retrieve a few relevant passages.”&lt;/p&gt;

&lt;p&gt;Ask about the specific error code &lt;code&gt;TS-999&lt;/code&gt;, for instance, and the system returns generic troubleshooting articles. Related material, yes, but the answer is missing.&lt;/p&gt;

&lt;p&gt;Vector search understands meaning; error codes, product models and API names also need exact matching. I'd consider combining semantic search with BM25 keyword search, merging and deduplicating the results, then using a reranker to select the useful passages.&lt;/p&gt;

&lt;p&gt;There's a subtler problem, too: splitting a document can strip away its meaning.&lt;/p&gt;

&lt;p&gt;Suppose a retrieved passage says, “This version does not support bulk imports.”&lt;/p&gt;

&lt;p&gt;Which product? Which version? An obsolete release or the one we're using? Without that background, the model can easily apply the statement to the wrong thing.&lt;/p&gt;

&lt;p&gt;Adding the title, version, section and necessary context to each passage helps. In Anthropic's experiments, contextualized chunks combined with hybrid retrieval and reranking reduced the top-20 retrieval failure rate from &lt;strong&gt;5.7% to 1.9%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That doesn't promise the same improvement for every knowledge base. What it does suggest is this: &lt;strong&gt;when an answer is wrong, check what information the AI actually received first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If retrieval missed the right material, polishing the prompt won't easily rescue the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A longer conversation doesn't necessarily mean it understands you better
&lt;/h2&gt;

&lt;p&gt;Many people keep everything in one chat: project background, error logs, passing ideas and old plans. After dozens of turns, it feels as though the model should understand them better.&lt;/p&gt;

&lt;p&gt;But the conversation may now contain conflicting instructions.&lt;/p&gt;

&lt;p&gt;Last week the plan was A; yesterday it became B. An earlier direction was discussed and later abandoned. A person would need to sort that out, too.&lt;/p&gt;

&lt;p&gt;The earlier &lt;em&gt;Lost in the Middle&lt;/em&gt; study found that, for the models and tasks it tested, putting key information in the middle of long inputs often produced worse results than placing it at the beginning or end. That cannot simply be generalized to every current model. Still, accepting a long input and using all of it well are different abilities.&lt;/p&gt;

&lt;p&gt;Context engineering sounds technical. In day-to-day work, a large part of it is deciding what the AI needs to see at this particular step.&lt;/p&gt;

&lt;p&gt;For a website indexing problem, start with robots.txt, the sitemap, page responses and the webmaster dashboard. Read the relevant logs when they're needed. There's no reason to load the whole codebase and every previous conversation at the start.&lt;/p&gt;

&lt;p&gt;Partway through a long task, leave a handoff: decisions made, files changed, checks passed and unresolved issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'd rather it continue from an accurate progress note than guess our current goal from an enormous conversation history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compression shouldn't mean removing everything, though. Lose a critical constraint and you'll still have to redo the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is paying for more thinking worthwhile?
&lt;/h2&gt;

&lt;p&gt;Test-time compute studies how additional computation while answering can improve a model's results.&lt;/p&gt;

&lt;p&gt;It might try several solutions and select among them, or generate an answer and revise it using feedback.&lt;/p&gt;

&lt;p&gt;Research shows that, on particular tasks and under particular compute budgets, allocating this computation well can let a smaller model outperform a much larger one. How you search and how you judge the candidates both matter.&lt;/p&gt;

&lt;p&gt;The easy mistake is confusing more thinking with more talking.&lt;/p&gt;

&lt;p&gt;An answer twice as long isn't necessarily better. Generate five proposals and you still need a way to choose the reliable one.&lt;/p&gt;

&lt;p&gt;Run tests for code, substitute a calculation back into the original problem, and compare factual claims with primary sources. That feedback gives the next attempt something useful to work with.&lt;/p&gt;

&lt;p&gt;If what's missing is current pricing or recently updated API documentation, look it up first. Reasoning cannot supply a fact the model never received.&lt;/p&gt;

&lt;p&gt;I'd prioritize speed for organizing, classifying and extracting information. For difficult reasoning or important code changes, I'd increase the reasoning budget and prepare a way to check the result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The spending worth making is the spending that reduces errors and rework.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Give AI real results to check
&lt;/h2&gt;

&lt;p&gt;I'm interested in agent harnesses: the surrounding arrangements for splitting tasks, using tools, preserving progress and checking outcomes.&lt;/p&gt;

&lt;p&gt;In March 2026, Anthropic described an experiment separating planning, generation and evaluation. The generator built an application; the evaluator interacted with running pages, checked APIs and data, then returned specific issues for revision.&lt;/p&gt;

&lt;p&gt;One detail deserves attention: cost.&lt;/p&gt;

&lt;p&gt;In one game-editor example, the solo agent ran for about &lt;strong&gt;20 minutes and cost $9&lt;/strong&gt;. The full harness ran for about &lt;strong&gt;six hours and cost $200&lt;/strong&gt;. It produced a more complete result, but at a much higher cost.&lt;/p&gt;

&lt;p&gt;I wouldn't conclude that adding agents is automatically better value. The time and budgets weren't remotely equal.&lt;/p&gt;

&lt;p&gt;The useful lesson is to define completion, inspect the result, and bring back concrete failures to fix.&lt;/p&gt;

&lt;p&gt;Publishing a blog post, for instance, isn't proved by an upload endpoint returning success. Check that the page opens, the body is complete, the canonical URL is right and language links point to the correct versions.&lt;/p&gt;

&lt;p&gt;Nor would I rely entirely on “take another look for problems.” Models can grade their own output generously. A second model doesn't automatically become a strict reviewer, either.&lt;/p&gt;

&lt;p&gt;Acceptance criteria should be specific and, ideally, verifiable through tests, actual page interactions or real data. Set retry and spending limits as well, so a minor issue doesn't keep the system looping all night.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does remembering more mean understanding you better?
&lt;/h2&gt;

&lt;p&gt;I don't want to explain my writing style every time, or repeatedly remind an assistant that WeChat articles should go into drafts only.&lt;/p&gt;

&lt;p&gt;Those are lasting preferences worth remembering.&lt;/p&gt;

&lt;p&gt;“Don't send this one to WeChat yet,” however, applies to the current task. The system needs to understand scope, rather than cancel all future WeChat work.&lt;/p&gt;

&lt;p&gt;Research such as Mem0 explores extracting important information from conversations, consolidating it and retrieving it later. The difficult part is that information changes and conflicts.&lt;/p&gt;

&lt;p&gt;Alongside the content, I'd want a memory to carry its source, date, scope and whether a later decision superseded it.&lt;/p&gt;

&lt;p&gt;Remember user preferences, but inspect live project state. Server ports, dependency versions and deployments should come from the current environment when possible, not a conversation from two weeks ago.&lt;/p&gt;

&lt;p&gt;I'd reserve fine-tuning for relatively stable, recurring needs: fixed classifications, output formats and particular domain tasks. Frequently changing material belongs in retrieval; live state belongs in tool results. Each has a job.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'd start with the tasks that failed
&lt;/h2&gt;

&lt;p&gt;These techniques can all help. They don't all need installing at once.&lt;/p&gt;

&lt;p&gt;I'd collect twenty or thirty real tasks and record how the AI failed.&lt;/p&gt;

&lt;p&gt;Can't find the material? Improve retrieval. Forgets requirements late in a task? Organize context and handoffs. Has the facts but reasons badly? Consider a stronger model or more inference compute. Claims completion without finishing? Add verification.&lt;/p&gt;

&lt;p&gt;Change one or two things at a time, then compare the same tasks: success rate, cost, waiting time and manual cleanup.&lt;/p&gt;

&lt;p&gt;Keep some tasks out of the tuning process, too, to see whether improvements hold for unfamiliar questions. Otherwise, a better-looking prompt may simply be overfitted to a few examples.&lt;/p&gt;

&lt;p&gt;My expectations for smarter AI are practical: something that needed five explanations now needs two; work that used to require a complete recheck now arrives with verification.&lt;/p&gt;

&lt;p&gt;Model upgrades are worth following. There's already plenty to improve while waiting for the next one.&lt;/p&gt;




&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/news/contextual-retrieval" rel="noopener noreferrer"&gt;Anthropic: Contextual Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents" rel="noopener noreferrer"&gt;Anthropic: Effective Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2408.03314" rel="noopener noreferrer"&gt;Scaling LLM Test-Time Compute Optimally&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/research/harness-design-long-running-apps" rel="noopener noreferrer"&gt;Anthropic: Harness Design for Long-running Application Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2504.19413" rel="noopener noreferrer"&gt;Mem0: Scalable Long-Term Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2307.03172" rel="noopener noreferrer"&gt;Lost in the Middle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Make Time to Write Down What Is Happening</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:18:39 +0000</pubDate>
      <link>https://dev.to/weiyi/make-time-to-write-down-what-is-happening-3mdb</link>
      <guid>https://dev.to/weiyi/make-time-to-write-down-what-is-happening-3mdb</guid>
      <description>&lt;h2&gt;
  
  
  Give an idea somewhere to land
&lt;/h2&gt;

&lt;p&gt;Writing things down isn't only about sharing. It helps you think a problem through. Each paragraph gives you another chance to look at an idea again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Starting with a specific question works better than waiting for fully formed inspiration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Find a sustainable rhythm
&lt;/h2&gt;

&lt;p&gt;You don't have to publish every day, but you can keep collecting ideas. This blog will grow gradually in the same way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blogging</category>
      <category>programming</category>
    </item>
    <item>
      <title>How I’ve Improved My Blog with GPT, One Step at a Time</title>
      <dc:creator>weiyi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:17:48 +0000</pubDate>
      <link>https://dev.to/weiyi/how-ive-improved-my-blog-with-gpt-one-step-at-a-time-300o</link>
      <guid>https://dev.to/weiyi/how-ive-improved-my-blog-with-gpt-one-step-at-a-time-300o</guid>
      <description>&lt;p&gt;My blog, &lt;a href="https://weiyii.cn" rel="noopener noreferrer"&gt;weiyii.cn&lt;/a&gt;, has used GPT for page changes, multilingual content, search submissions and WeChat drafts.&lt;/p&gt;

&lt;p&gt;At first, my questions were broad: “How can I optimize the website?” “Why hasn’t Baidu indexed it?”&lt;/p&gt;

&lt;p&gt;I learned to point directly at what bothered me. Cramped typography? Change it. Tables unreadable on a phone? Fix them. Specific problems make results easier to see.&lt;/p&gt;

&lt;p&gt;Now I generally describe the problem, GPT reads the project, changes files and runs checks, and we look at the live result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with what doesn’t feel right to read
&lt;/h2&gt;

&lt;p&gt;For a blog, readable articles matter most to me. Is the homepage easy to scan? Is body text too small? Are headings too heavy? Can a phone user read the tables? Ordinary details, but readers meet them first.&lt;/p&gt;

&lt;p&gt;I tell GPT directly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Adjust the article page’s font and size, and check mobile too. Let tables use the content width; keep horizontal scrolling when they’re too wide.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It finds the relevant pages and styles before changing them. &lt;strong&gt;“Optimize the UI” alone won’t necessarily produce something you like.&lt;/strong&gt; Say what feels wrong, then open the result on desktop and phone. Adjust again if needed.&lt;/p&gt;

&lt;p&gt;I handle PageSpeed reports similarly: give it the link, ask it to investigate, and compare the findings with the project. The report helps locate issues, but I still want to know whether loading improved and reading remained comfortable. A score is useful; people need a usable site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multilingual work turned out to involve more than translation
&lt;/h2&gt;

&lt;p&gt;I added English, Spanish, Russian, Japanese and Arabic so more people could read the articles. Beyond the body, titles, summaries, categories, tags, menus and sharing text all needed attention. Arabic also needed right-to-left layout; swapping text alone would look odd.&lt;/p&gt;

&lt;p&gt;Each language now has its own URL: /en/articles/…/ for English, /ja/articles/…/ for Japanese. Opening it gives you the corresponding text.&lt;/p&gt;

&lt;p&gt;I had GPT check hreflang, x-default and canonical too. The names sound complicated, but the purpose is straightforward: &lt;strong&gt;tell search engines which URLs are language versions of the same article.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The latest check passed for 370 foreign-language pages and their Chinese counterparts. Batch checking saves me opening them one by one. Translation quality still needs spot checks, especially when a technical term can change a sentence’s meaning.&lt;/p&gt;

&lt;h2&gt;
  
  
  I’ve also asked: submitted already, so why no indexing?
&lt;/h2&gt;

&lt;p&gt;Of course I want people to find the site. I asked about the Sitemap, Baidu indexing, and having GPT submit the whole site.&lt;/p&gt;

&lt;p&gt;The easy mistake is treating a successful submission as successful indexing. I now check which step actually happened:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;How I submit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IndexNow&lt;/td&gt;
&lt;td&gt;Public page URLs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Sitemap through the Search Console API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Baidu&lt;/td&gt;
&lt;td&gt;URL submission API within the site quota&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After the latest release at the time of writing, IndexNow accepted 438 site URLs and Google accepted the Sitemap. Baidu’s daily quota was exhausted, so remaining submissions had to wait.&lt;/p&gt;

&lt;p&gt;That sounds good, but 438 accepted URLs doesn’t mean 438 indexed pages. Crawling and indexing still need checking in the search platforms. &lt;strong&gt;GPT can complete the submission; search engines decide what and when to index.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For ordinary blog posts, Google doesn’t offer a general per-page indexing-request API equivalent to IndexNow. I use its Sitemap API.&lt;/p&gt;

&lt;h2&gt;
  
  
  More articles made manual repetition less appealing
&lt;/h2&gt;

&lt;p&gt;Writing is followed by translations, builds, page checks, uploads, cache refreshes and URL submissions. Then come the WeChat cover, layout, summary and original-article link.&lt;/p&gt;

&lt;p&gt;A couple of posts are manageable manually. With repetition, I wanted a fixed process. GPT helped turn those steps into scripts. The next release uses the same workflow; logs show where something failed.&lt;/p&gt;

&lt;p&gt;WeChat drafts now go through the API too. Supported fields—title, author, summary, cover and source link—are set together, then read back to verify them. We check for an existing draft before retrying: a network failure can otherwise leave duplicates.&lt;/p&gt;

&lt;p&gt;I stop at the draft box. Before publishing publicly, I look again, especially at mobile tables, paragraphs and the cover.&lt;/p&gt;

&lt;h2&gt;
  
  
  The more I use it, the less I say “optimize everything”
&lt;/h2&gt;

&lt;p&gt;I try to state three things: the problem, expected behavior and how to verify it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Article tables overflow on mobile. Fix them, keep horizontal scrolling, and check Chinese and English pages. Explain the cause and verification.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Submit public pages to IndexNow and record the response. Keep failures pending. Don’t call submission success indexing success.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The wording doesn’t need to be fancy. It needs enough information.&lt;/p&gt;

&lt;p&gt;I still check live pages after “done.” A local build doesn’t prove the live cache updated; a successful site release doesn’t prove search submission succeeded. We encountered Baidu quota limits and an IndexNow historical-state validation failure. An existing full-site submission script resolved the latter. Clear status and finishing the remaining work help more than a blanket “everything succeeded.”&lt;/p&gt;

&lt;h2&gt;
  
  
  The best part is not starting over every time
&lt;/h2&gt;

&lt;p&gt;GPT saves scattered bits of time: finding styles, checking links, organizing translations and preparing drafts. Small tasks add up.&lt;/p&gt;

&lt;p&gt;I can now hand it a concrete problem and examine the result. Saved workflows remain useful next time. What the site should cover, which articles deserve publishing and whether a page feels comfortable are still my decisions.&lt;/p&gt;

&lt;p&gt;Start with one small task: a mobile table, an article’s language pages or a working draft-upload process. Get it working, then add the next piece. That’s how my blog has improved.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared for DEV with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
