<?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: New World Coder</title>
    <description>The latest articles on DEV Community by New World Coder (@sachin_chitre_bad13f5669d).</description>
    <link>https://dev.to/sachin_chitre_bad13f5669d</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%2F3408102%2F118dd4d6-f15b-416b-8812-c55f126f873d.png</url>
      <title>DEV Community: New World Coder</title>
      <link>https://dev.to/sachin_chitre_bad13f5669d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sachin_chitre_bad13f5669d"/>
    <language>en</language>
    <item>
      <title>Why I built the compliance engine in Go</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Tue, 04 Aug 2026 14:18:01 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/why-i-built-the-compliance-engine-in-go-1gb4</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/why-i-built-the-compliance-engine-in-go-1gb4</guid>
      <description>&lt;p&gt;I did not pick Go because it is fashionable. I picked it because the product has to land in someone else's CI without a negotiation about runtimes.&lt;/p&gt;

&lt;p&gt;RiskLine's job is: read a YAML/JSON system description, evaluate a versioned ruleset, print a tier. That has to work as a pre-commit hook, a GitHub Action step, and a one-liner &lt;code&gt;go install&lt;/code&gt;. Node and Python are fine languages. They are worse at "here is a single static binary, trust it in your pipeline."&lt;/p&gt;

&lt;h2&gt;
  
  
  What "CI-friendly" actually means
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No interpreter version matrix for adopters&lt;/li&gt;
&lt;li&gt;Cross-compile for linux/mac/windows from one tree&lt;/li&gt;
&lt;li&gt;Cold start fast enough that nobody disables the hook&lt;/li&gt;
&lt;li&gt;Offline by default — a compliance CLI that phones home is a trust problem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distribution model is the same reason people reach for Open Policy Agent, Trivy, and Terraform-shaped tools. RiskLine is not built on OPA/Rego in v0.1 — the rule surface is small enough that embedded JSON + Go matching was enough — but the packaging lesson is the same. If the ruleset grows into something Rego expresses more clearly, that is a later decision, not a day-one dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embeddability
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;pkg/engine&lt;/code&gt; does not import net/http or CLI packages. The API server and the CLI are thin wrappers. That is what makes "SDK" real instead of "HTTP client with feelings." If you want classification inside another Go service, you call &lt;code&gt;engine.Classify&lt;/code&gt;, not a localhost port.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tradeoffs I am accepting
&lt;/h2&gt;

&lt;p&gt;Go JSON tags and OpenAPI can drift if you are careless — hence the contract being a checked-in YAML file and a (still too weak) CI smoke test. Help wanted on making that a real schema validation step: &lt;a href="https://github.com/new-world-coder/riskline/issues/4" rel="noopener noreferrer"&gt;issue #4&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also: writing rules in JSON conditions is less expressive than Rego. For prohibited flags and a handful of Annex III heuristics, it has been fine. I will revisit when the ruleset stops being fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the binary
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/new-world-coder/riskline/cmd/riskline-cli@v0.1.0-alpha
riskline-cli &lt;span class="nt"&gt;--json&lt;/span&gt; path/to/system.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/new-world-coder/riskline" rel="noopener noreferrer"&gt;new-world-coder/riskline&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>go</category>
      <category>opensource</category>
      <category>aiact</category>
      <category>compliance</category>
    </item>
    <item>
      <title>An open JSON schema for AI system risk classification</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Tue, 04 Aug 2026 14:17:58 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/an-open-json-schema-for-ai-system-risk-classification-2lb</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/an-open-json-schema-for-ai-system-risk-classification-2lb</guid>
      <description>&lt;p&gt;The useful part of RiskLine is not the binary. It is the contract.&lt;/p&gt;

&lt;p&gt;Everything — CLI table output, &lt;code&gt;POST /v1/classify&lt;/code&gt;, future generated clients — hangs off &lt;a href="https://github.com/new-world-coder/riskline/blob/main/api/openapi.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;api/openapi.yaml&lt;/code&gt;&lt;/a&gt;. If the handler and the doc disagree, that is a bug, not a documentation problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Request: describe the system, don't upload your codebase
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hiring Assist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"purpose"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Screen job applicants and rank candidates for interview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data_types"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"personal_data"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"employment_data"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"deployment_context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"saas_b2b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"autonomy_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"decision_support"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"affected_population"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"job_applicants"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"geographic_scope"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eu"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enums over free-text for the structural fields. Purpose stays free text because real systems do not fit a taxonomy on day one — and because keyword heuristics need something to chew on. Flags like &lt;code&gt;social_scoring&lt;/code&gt; and &lt;code&gt;real_time_remote_biometric_id&lt;/code&gt; exist for Article 5 cases where "infer from prose" is a bad idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Response: tier is not enough
&lt;/h2&gt;

&lt;p&gt;A label without a clause reference is how tools become shelfware. Required fields on every success response:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Why it is mandatory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;risk_tier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The thing you came for&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ruleset_version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Regulations move; "we said high-risk in 2024" is useless without the ruleset id&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;last_updated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Same — perishable mappings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;matched_rules[]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Which article/annex fired, paraphrased&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rationale&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plain-language why&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;recommended_controls&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Next engineering actions, not a policy essay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;disclaimer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Advisory tool, not legal advice — tested so refactors cannot drop it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;judgment_calls&lt;/code&gt; is optional but important. When the ruleset made an interpretation the Act text does not fully decide, we say so in the payload instead of burying it in a blog post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want feedback on
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Are the request enums too coarse for your inventory format?&lt;/li&gt;
&lt;li&gt;Should &lt;code&gt;geographic_scope: non_eu&lt;/code&gt; short-circuit differently, or stay "still classify, human decides applicability"?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;recommended_controls&lt;/code&gt; useful, or should it move to a separate optional profile?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open a GitHub issue. Schema feedback is a contribution, not noise — especially &lt;a href="https://github.com/new-world-coder/riskline/issues/new?template=ruleset_update.md" rel="noopener noreferrer"&gt;ruleset updates&lt;/a&gt; and &lt;a href="https://github.com/new-world-coder/riskline/issues/new?template=misclassification_report.md" rel="noopener noreferrer"&gt;misclassifications&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/new-world-coder/riskline" rel="noopener noreferrer"&gt;github.com/new-world-coder/riskline&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>go</category>
      <category>opensource</category>
      <category>aiact</category>
      <category>compliance</category>
    </item>
    <item>
      <title>How we classify AI systems under the EU AI Act</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Tue, 04 Aug 2026 14:16:15 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/how-we-classify-ai-systems-under-the-eu-ai-act-18bp</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/how-we-classify-ai-systems-under-the-eu-ai-act-18bp</guid>
      <description>&lt;p&gt;I built &lt;a href="https://github.com/new-world-coder/riskline" rel="noopener noreferrer"&gt;RiskLine&lt;/a&gt; because most "AI governance" tooling wants a portal login before it will tell you anything useful. I needed something that runs in CI, prints a tier, and shows &lt;em&gt;which article fired&lt;/em&gt; — without calling a model to invent a legal opinion.&lt;/p&gt;

&lt;p&gt;RiskLine is a small Go CLI/API over a versioned JSON ruleset. You describe a system; it returns prohibited / high_risk / limited_risk / minimal_risk plus clause refs, a rationale, recommended controls, and a disclaimer. Advisory only. Not legal advice.&lt;/p&gt;

&lt;p&gt;Below are three fixtures from the repo (&lt;code&gt;testdata/scenarios/&lt;/code&gt;) and the actual CLI output on my machine against ruleset &lt;code&gt;eu-ai-act-2024-v0.1.0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Prohibited — social scoring
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Citizen Score&lt;/span&gt;
&lt;span class="na"&gt;purpose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Score citizens based on social behaviour and personal characteristics for access to public services&lt;/span&gt;
&lt;span class="na"&gt;data_types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;personal_data&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;deployment_context&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;public_authority&lt;/span&gt;
&lt;span class="na"&gt;autonomy_level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;automated_decision&lt;/span&gt;
&lt;span class="na"&gt;affected_population&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;general_public&lt;/span&gt;
&lt;span class="na"&gt;social_scoring&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk tier:        prohibited
Matched rules
prohibited-social-scoring  prohibited  Article 5(1)(c)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one is boring on purpose. If the input asserts social scoring, Article 5(1)(c) wins. The interesting work is making sure higher-severity tiers always beat lower ones when multiple rules match — a law-enforcement biometric ID case should not get "downgraded" to high-risk because Annex III also fires.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. High-risk — recruiting screener
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Hiring Assist&lt;/span&gt;
&lt;span class="na"&gt;purpose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Screen job applicants and rank candidates for interview&lt;/span&gt;
&lt;span class="na"&gt;data_types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;personal_data&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;employment_data&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;deployment_context&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;saas_b2b&lt;/span&gt;
&lt;span class="na"&gt;autonomy_level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;decision_support&lt;/span&gt;
&lt;span class="na"&gt;affected_population&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;job_applicants&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk tier:        high_risk
Matched rules
high-risk-recruitment  high_risk  Annex III (4)(a)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Annex III (4)(a) is the recruitment/selection use-case list. Matching is partly keyword/population heuristics. That is a judgment call, and the response says so:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Matching on purpose keywords or job_applicants population is a pragmatic proxy; borderline HR analytics that only aggregate headcount may be over-classified…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have a real HR analytics system that got over-classified, that is exactly what the &lt;a href="https://github.com/new-world-coder/riskline/issues/new?template=misclassification_report.md" rel="noopener noreferrer"&gt;misclassification report&lt;/a&gt; template is for. I am using those issues as the validation loop instead of pretending I finished twenty customer interviews first.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Limited-risk — support chatbot
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Support Bot&lt;/span&gt;
&lt;span class="na"&gt;purpose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Customer support chatbot for product questions&lt;/span&gt;
&lt;span class="s"&gt;…&lt;/span&gt;
&lt;span class="na"&gt;autonomy_level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;content_generation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk tier:        limited_risk
Matched rules
limited-risk-chatbot-transparency  limited_risk  Article 50(1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Art. 50 is wider than chatbots. The v0.1 rule requires both an interactive autonomy level &lt;em&gt;and&lt;/em&gt; chatbot-ish purpose keywords, which probably under-detects some interactive systems. That uncertainty is intentional and logged on the rule. I would rather ship a narrow, tested heuristic than a confident wrong net.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boundary case I am least sure about
&lt;/h2&gt;

&lt;p&gt;Creditworthiness vs fraud detection.&lt;/p&gt;

&lt;p&gt;Annex III (5)(b) treats credit scoring of natural persons as high-risk, with a fraud-detection carve-out in the Act. RiskLine does &lt;strong&gt;not&lt;/strong&gt; auto-infer that carve-out from free text. A system whose purpose says "fraud" but still carries &lt;code&gt;financial_credit_data&lt;/code&gt; can still land high-risk and emit a judgment-call note.&lt;/p&gt;

&lt;p&gt;I am not confident we have the right product behaviour here yet. If you have shipped lending + fraud models under the Act and think the heuristic is wrong, open a misclassification issue with the input you used. That report is more useful to me than another star.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/new-world-coder/riskline/cmd/riskline-cli@v0.1.0-alpha
riskline-cli testdata/scenarios/high-risk-hiring.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Schema/contract: &lt;a href="https://github.com/new-world-coder/riskline/blob/main/api/openapi.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;api/openapi.yaml&lt;/code&gt;&lt;/a&gt;. Repo: &lt;a href="https://github.com/new-world-coder/riskline" rel="noopener noreferrer"&gt;new-world-coder/riskline&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>go</category>
      <category>opensource</category>
      <category>aiact</category>
      <category>compliance</category>
    </item>
    <item>
      <title>## 🧅 Inside Tor: A Simplified Look at Its Architecture and Code Organization</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Tue, 16 Sep 2025 08:37:19 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/-inside-tor-a-simplified-look-at-its-architecture-and-code-organization-5djg</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/-inside-tor-a-simplified-look-at-its-architecture-and-code-organization-5djg</guid>
      <description>&lt;p&gt;Tor (The Onion Router) is best known for enabling anonymous browsing, but under the hood, it’s a beautifully layered system of networking, cryptography, and client-server orchestration.&lt;br&gt;
If you’ve ever peeked at &lt;a href="https://gitlab.torproject.org/tpo/core/tor" rel="noopener noreferrer"&gt;Tor’s codebase&lt;/a&gt;, it might feel overwhelming — so let’s break it down in a way that maps directly to what you experience as a user.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔎 How the Codebase Maps to Features
&lt;/h2&gt;

&lt;p&gt;Tor’s repository can be thought of in &lt;strong&gt;three big layers&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;UI / Browsing Experience&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Not in Tor’s core repo itself (Tor is a daemon, not a browser).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Tor Browser&lt;/strong&gt; (a separate project) integrates Tor as its backend.&lt;/li&gt;
&lt;li&gt;Features like “Connect to Tor” or “New Identity” are user-facing but rely on Tor’s core services.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Core Networking (The Heart of Tor)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/core/or/&lt;/code&gt; → Onion routing logic, circuits, relays.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/core/mainloop/&lt;/code&gt; → Event loop, scheduling, async I/O.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/feature/hs/&lt;/code&gt; → Hidden services (now called Onion Services).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/feature/control/&lt;/code&gt; → Controller protocol (for Tor Browser &amp;amp; apps to talk to Tor).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Under-the-Hood Connectors &amp;amp; Utilities&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/lib/crypt_ops/&lt;/code&gt; → Encryption, key exchange, crypto primitives.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/net/&lt;/code&gt; → Low-level socket and connection management.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/log/&lt;/code&gt; → Logging &amp;amp; diagnostics.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/test/&lt;/code&gt; → Unit &amp;amp; integration tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as: &lt;strong&gt;Tor Browser asks → Tor Core builds onion routes → Networking + Crypto libraries do the heavy lifting.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  📊 Sequence: How a Webpage Request Works Over Tor
&lt;/h2&gt;

&lt;p&gt;Here’s a simplified flow of what happens when you type a URL in the Tor Browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sequenceDiagram
    participant User as User (Tor Browser)
    participant TorClient as Tor Client (Daemon)
    participant Entry as Entry Node
    participant Middle as Middle Node
    participant Exit as Exit Node
    participant Server as Destination Server

    User-&amp;gt;&amp;gt;TorClient: Request webpage
    TorClient-&amp;gt;&amp;gt;Entry: Build encrypted circuit
    TorClient-&amp;gt;&amp;gt;Middle: Extend circuit
    TorClient-&amp;gt;&amp;gt;Exit: Extend circuit (3 hops total)
    User-&amp;gt;&amp;gt;TorClient: HTTP(S) request
    TorClient-&amp;gt;&amp;gt;Exit: Forward encrypted request
    Exit-&amp;gt;&amp;gt;Server: Plain HTTP(S) request
    Server-&amp;gt;&amp;gt;Exit: Response
    Exit-&amp;gt;&amp;gt;TorClient: Encrypted response
    TorClient-&amp;gt;&amp;gt;User: Decrypted webpage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🖥️ Tor System Architecture
&lt;/h2&gt;

&lt;p&gt;Here’s how Tor’s main components connect — with onion encryption layers visualized across the hops:&lt;/p&gt;

&lt;p&gt;flowchart LR&lt;br&gt;
    subgraph UserSide[User Side]&lt;br&gt;
        Browser[Tor Browser]&lt;br&gt;
        Client[Tor Client (Daemon)]&lt;br&gt;
    end&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subgraph TorNetwork[Tor Network]&lt;br&gt;
    Entry[Entry Node\n(Encryption Layer 3)]&lt;br&gt;
    Middle[Middle Node\n(Encryption Layer 2)]&lt;br&gt;
    Exit[Exit Node\n(Encryption Layer 1)]&lt;br&gt;
end

&lt;p&gt;subgraph Services[Services]&lt;br&gt;
    Hidden[Hidden Service (.onion)]&lt;br&gt;
    Server[Regular Destination Server]&lt;br&gt;
end&lt;/p&gt;

&lt;p&gt;Browser --&amp;gt;|SOCKS Request| Client&lt;br&gt;
Client --&amp;gt;|Circuit Build| Entry&lt;br&gt;
Entry --&amp;gt; Middle --&amp;gt; Exit&lt;br&gt;
Exit --&amp;gt; Server&lt;br&gt;
Client --&amp;gt; Hidden&lt;br&gt;
Hidden --&amp;gt; Client&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  🥑 Side-by-Side Comparison: User vs Codebase&lt;br&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;User’s Perspective&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What’s Happening in the Code&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;“I click a link in Tor Browser.”&lt;/td&gt;
&lt;td&gt;Tor Browser issues a SOCKS request to the Tor client (&lt;code&gt;src/feature/control/&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Connecting to Tor network…”&lt;/td&gt;
&lt;td&gt;Client bootstraps by contacting directory authorities (&lt;code&gt;src/core/or/directory.c&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Building secure connection…”&lt;/td&gt;
&lt;td&gt;Multi-hop circuit built (&lt;code&gt;src/core/or/circuitbuild.c&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Page loads via Tor.”&lt;/td&gt;
&lt;td&gt;Data onion-wrapped &amp;amp; relayed through entry → middle → exit (&lt;code&gt;src/core/or/relay.c&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“I can access a .onion site.”&lt;/td&gt;
&lt;td&gt;Hidden service rendezvous (&lt;code&gt;src/feature/hs/&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Tor keeps running silently.”&lt;/td&gt;
&lt;td&gt;Event loop keeps sockets + circuits alive (&lt;code&gt;src/core/mainloop/&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🎯 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tor’s &lt;strong&gt;core repo is not a browser&lt;/strong&gt; — it’s the routing engine.&lt;/li&gt;
&lt;li&gt;The code is layered: &lt;strong&gt;control interface, onion routing logic, crypto &amp;amp; networking utilities&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The user’s “simple” experience of clicking a link actually triggers a sophisticated chain of &lt;strong&gt;circuit building, encryption, and relay coordination&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Sequence diagrams help bridge the gap between &lt;strong&gt;user actions&lt;/strong&gt; and &lt;strong&gt;what the code is doing&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✍️ &lt;em&gt;If you’re curious, explore the &lt;a href="https://gitlab.torproject.org/tpo/core/tor" rel="noopener noreferrer"&gt;Tor GitLab repo&lt;/a&gt; — just start from &lt;code&gt;src/core/or/&lt;/code&gt; to see the onion routing logic in action.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Would you like me to also &lt;strong&gt;add a system architecture diagram (Mermaid flowchart)&lt;/strong&gt; showing Tor’s main components (browser ↔ tor client ↔ relays ↔ hidden services), so your Dev.to readers get a visual overview too?&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>networking</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title>🚨 Developers: It's Time to Wake Up to the CDE Upskilling Challenge! 🚨</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Thu, 11 Sep 2025 13:34:17 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/developers-its-time-to-wake-up-to-the-cde-upskilling-challenge-1p92</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/developers-its-time-to-wake-up-to-the-cde-upskilling-challenge-1p92</guid>
      <description>&lt;p&gt;Cloud Development Environments (CDEs) are changing the way real software teams build, collaborate, and ship code. If you’re still coding only on local machines, you’re already behind the curve! Here’s why you need to upskill NOW:&lt;/p&gt;

&lt;p&gt;⚡ Speed &amp;amp; Consistency: Spin up fully-configured, production-like dev setups in seconds. No more "it works on my machine" drama!&lt;/p&gt;

&lt;p&gt;🔒 Security: Code and data stay in YOUR cloud—not scattered across developer laptops.&lt;/p&gt;

&lt;p&gt;🤖 AI-Native Workflows: CDEs like Coder seamlessly run AI coding agents or LLMs in secure, isolated workspaces. Scale your automation without the risk.&lt;/p&gt;

&lt;p&gt;🌍 Flexibility: Self-host anywhere—your cloud, your rules. Hook into ANY Git provider, leverage templates, and even run your favorite IDE in the browser or on desktop.&lt;/p&gt;

&lt;p&gt;👩‍💻 Future-Proof Skills: CDE adoption is exploding. Upskilling here makes you massively more valuable in projects that demand scale, compliance, and remote-ready agility.&lt;/p&gt;

&lt;p&gt;Ready to see what the leaders are already doing? Start with the official CDE Buyer's Guide PDF:&lt;br&gt;
👉 Download &amp;amp; Level Up Here&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://resources.coder.com/email-welcome-nurture/cde-buyers-guide?utm_term=&amp;amp;amp%3Butm_campaign=25Q1NU_Warm_Lead_Nurture&amp;amp;amp%3Butm_medium=email&amp;amp;amp%3B_hsenc=p2ANqtz--oqe0N0IJAiMrgSMecnIlBMS_JA-LMRUSDvZW9gPW1_3usTiYVDZBwA9XFooBf6gf7Zopz-202T6p24m1l0YMqjhqcfQ&amp;amp;amp%3B_hsmi=346335054&amp;amp;amp%3Butm_content=pathfactory&amp;amp;amp%3Butm_source=coder&amp;amp;amp%3B_pfses=mg3nRh9cFT6EA8UqiPPwKJrB" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.pathfactory.com%2Fassets%2F11220%2Fcontents%2F1276627%2Fthumbnails%2F600x%2Fc5a917bf-c74e-4d25-aaca-295b37fefcba.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://resources.coder.com/email-welcome-nurture/cde-buyers-guide?utm_term=&amp;amp;amp%3Butm_campaign=25Q1NU_Warm_Lead_Nurture&amp;amp;amp%3Butm_medium=email&amp;amp;amp%3B_hsenc=p2ANqtz--oqe0N0IJAiMrgSMecnIlBMS_JA-LMRUSDvZW9gPW1_3usTiYVDZBwA9XFooBf6gf7Zopz-202T6p24m1l0YMqjhqcfQ&amp;amp;amp%3B_hsmi=346335054&amp;amp;amp%3Butm_content=pathfactory&amp;amp;amp%3Butm_source=coder&amp;amp;amp%3B_pfses=mg3nRh9cFT6EA8UqiPPwKJrB" rel="noopener noreferrer" class="c-link"&gt;
             [Level Up] Enterprise Buyer's Guide to CDEs 
          &lt;/a&gt;
        &lt;/h2&gt;
          
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fresources.coder.com%2F_pfcdn%2Fassets%2F11220%2Ficons%2F1229075%2F01eec005-949c-47f3-b413-bfd4a7c7bfed.png"&gt;
          resources.coder.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Don't get left behind. Master CDE and future-proof your dev career. 🚀 #clouddevelopment #upskilling #devops #remotework #AIAgents&lt;/p&gt;

</description>
      <category>programming</category>
      <category>codereview</category>
      <category>refactorit</category>
      <category>cursor</category>
    </item>
    <item>
      <title>🚨 Warning for Anyone Using AI-Native Browsers Like Comet 🚨</title>
      <dc:creator>New World Coder</dc:creator>
      <pubDate>Mon, 08 Sep 2025 12:35:15 +0000</pubDate>
      <link>https://dev.to/sachin_chitre_bad13f5669d/warning-for-anyone-using-ai-native-browsers-like-comet-52oi</link>
      <guid>https://dev.to/sachin_chitre_bad13f5669d/warning-for-anyone-using-ai-native-browsers-like-comet-52oi</guid>
      <description>&lt;p&gt;Recently, while experimenting with Comet Browser’s AI automation features, I encountered a situation that made me pause:&lt;/p&gt;

&lt;p&gt;👉 I asked Comet to open a conversation on a job-matching platform, read the spec, and draft a reply.&lt;br&gt;
👉 I reviewed and sent the reply myself (with “never send without consent” enabled).&lt;br&gt;
👉 But when I logged back into the platform later via Chrome, the entire conversation thread was missing.&lt;/p&gt;

&lt;p&gt;This raised an important concern: AI-powered browsers can directly interact with sensitive web data in ways that traditional browsers never did.&lt;/p&gt;

&lt;p&gt;⚠️ That means:&lt;/p&gt;

&lt;p&gt;An AI agent could unintentionally archive, delete, or move data inside a web app.&lt;/p&gt;

&lt;p&gt;Platform sessions may behave differently across Comet vs Chrome.&lt;/p&gt;

&lt;p&gt;Critical job applications, client conversations, or project threads could get lost.&lt;/p&gt;

&lt;p&gt;🔒 My takeaway:&lt;br&gt;
Comet is powerful and exciting, but when dealing with sensitive information (like client messages, job applications, or financial data), double-check before letting AI agents interact on your behalf.&lt;/p&gt;

&lt;p&gt;These tools are game-changers—but they also demand extra caution.&lt;/p&gt;

&lt;p&gt;Have you faced anything similar with AI-native browsers or tools? Would love to hear how others are navigating this balance between automation and trust.&lt;/p&gt;

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