<?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: Harkeerat Singh</title>
    <description>The latest articles on DEV Community by Harkeerat Singh (@harkeerat24).</description>
    <link>https://dev.to/harkeerat24</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%2F3949369%2F0f8acbdb-2239-4486-b128-77aa683c53de.png</url>
      <title>DEV Community: Harkeerat Singh</title>
      <link>https://dev.to/harkeerat24</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harkeerat24"/>
    <language>en</language>
    <item>
      <title>GSoC'26_Week12 : T-Shirt, Tests &amp; Auto Layout</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 17 Aug 2026 12:18:38 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-12-3i5f</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-12-3i5f</guid>
      <description>&lt;p&gt;Week 12 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(August 10th to August 16th)&lt;/strong&gt; was a really fun mix of something personal and a lot of progress on the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;👕 The Most Awaited Package!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At the start of the week, something I had been waiting for finally arrived — &lt;strong&gt;my CircuitVerse T-shirt!&lt;/strong&gt; 🎉&lt;/p&gt;

&lt;p&gt;If you guys have been following my blogs, you might remember that my team won CircuitVerse's &lt;strong&gt;MERGATHONE Repository Cleanup Contest&lt;/strong&gt; at the end of May. I wrote about it in my &lt;a href="https://dev.to/harkeerat24/gsoc26-week-1-gkd"&gt;Week 1 blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I opened the package and saw the &lt;strong&gt;CircuitVerse logo&lt;/strong&gt;, it honestly felt amazing.&lt;/p&gt;

&lt;p&gt;It might just look like a T-shirt, but for me it was a small reminder of where I started — using CircuitVerse as a student for my digital logic course, then contributing to it, and now spending my summer working on it through GSoC. 🩵&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9kd6icnuoky967mt4hk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9kd6icnuoky967mt4hk.jpg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧪 Finally Fixing the Round-Trip Gaps&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Coming back to the technical work, I followed up on all the problems the Editor's Picks tests had exposed last week.&lt;/p&gt;

&lt;p&gt;The main fixes were around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔌 Preserving &lt;strong&gt;complete wire topology&lt;/strong&gt;, including dangling, standalone and multi-port nets.&lt;/li&gt;
&lt;li&gt;📐 Preserving routing, intermediate nodes, component port positions and other layout details.&lt;/li&gt;
&lt;li&gt;🗂️ Restoring important project state like the &lt;strong&gt;project name, clock settings, focused circuit, tab order and annotations&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After working through these issues, &lt;strong&gt;all 12 Editor's Picks projects were finally passing the complete round-trip tests!&lt;/strong&gt; 🎉&lt;/p&gt;

&lt;p&gt;I raised &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1194" rel="noopener noreferrer"&gt;PR #1194&lt;/a&gt;&lt;/strong&gt; with the fixes and the new test coverage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxouz14jxr80j6y1jz96c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxouz14jxr80j6y1jz96c.png" alt="Editor's Picks round-trip tests passing" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PR is still under review, so there may still be a few edge cases to clean up before it gets merged.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔄 Starting the Auto Layout Feature&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I wasted no time and moved on to the next part of my GSoC project — &lt;strong&gt;Auto Layout using ELK.js&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This was actually a feature my mentors and I had discussed way back during the Community Bonding period. The idea is simple: when a canonical circuit does not already have component positions, the importer should still be able to generate a clean and readable layout automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kieler/elkjs" rel="noopener noreferrer"&gt;&lt;strong&gt;ELK.js&lt;/strong&gt;&lt;/a&gt; brings the Eclipse Layout Kernel's graph-layout algorithms to JavaScript, letting us automatically calculate clean positions for connected nodes and edges. That makes it a really good fit for laying out circuits when position data is missing.&lt;/p&gt;

&lt;p&gt;I had already spent some time researching &lt;strong&gt;ELK.js&lt;/strong&gt; earlier in the summer, so starting the implementation after finishing the canonical pipeline was not too difficult.&lt;/p&gt;

&lt;p&gt;It is also a pretty interesting feature to work on because now the problem is not just about preserving circuit data — it is also about deciding &lt;strong&gt;where everything should actually appear on the canvas.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 What's Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Next week, I want to get &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1194" rel="noopener noreferrer"&gt;PR #1194&lt;/a&gt;&lt;/strong&gt; through review and merged, addressing any mentor feedback or edge cases that come up.&lt;/p&gt;

&lt;p&gt;Alongside that, I'll finish the &lt;strong&gt;Auto Layout&lt;/strong&gt; feature and raise a PR for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Really looking forward to next week! ⚡💻&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>opensource</category>
      <category>circuitverse</category>
      <category>javascript</category>
    </item>
    <item>
      <title>GSoC'26_Week11 : Real Circuits Broke My Assumptions</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 17 Aug 2026 11:19:54 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-11-2fj</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-11-2fj</guid>
      <description>&lt;p&gt;Week 11 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(August 3rd to August 9th)&lt;/strong&gt; was all about one thing: &lt;strong&gt;testing the canonical pipeline against real circuits.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This week, Aboo suggested verifying canonical import/export against &lt;strong&gt;all the projects in &lt;a href="https://circuitverse.org/explore?section=picks#picks" rel="noopener noreferrer"&gt;CircuitVerse Editor's Picks&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧪 Testing the Editor's Picks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I created a new &lt;strong&gt;&lt;code&gt;editorPicks.spec.ts&lt;/code&gt;&lt;/strong&gt; test file for this.&lt;/p&gt;

&lt;p&gt;My first approach was to fetch each project's &lt;code&gt;circuit_data&lt;/code&gt; through the CircuitVerse API while the test was running.&lt;/p&gt;

&lt;p&gt;After discussing it with my mentors, we changed the approach. Depending on the network/API would make the tests slower and could make them fail for reasons completely unrelated to the canonical pipeline.&lt;/p&gt;

&lt;p&gt;So instead, I downloaded the Editor's Picks circuit data and kept all &lt;strong&gt;12 projects as local fixtures&lt;/strong&gt; inside the test suite.&lt;/p&gt;

&lt;p&gt;That made the tests repeatable and gave us a fixed set of real-world circuits to keep checking in the future.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔄 The Round-Trip Test&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The test flow was as follows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1️⃣ Load the original legacy &lt;code&gt;circuit_data&lt;/code&gt; using CircuitVerse's legacy loader.&lt;br&gt;&lt;br&gt;
2️⃣ Export the loaded project through &lt;code&gt;canonicaliseProject()&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
3️⃣ Import that canonical JSON again through &lt;code&gt;importCanonical()&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
4️⃣ Re-export the reconstructed project.&lt;br&gt;&lt;br&gt;
5️⃣ Compare the hashes and canonical project data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Basically, if the canonical pipeline is really preserving the project, &lt;strong&gt;legacy → canonical → import → canonical&lt;/strong&gt; should come back to the same result.&lt;/p&gt;

&lt;p&gt;That was the theory at least 😅&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🐛 And... A Lot of Projects Failed&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once I ran the tests across the Editor's Picks, many of the real circuits started failing the round trip.&lt;/p&gt;

&lt;p&gt;This was actually useful because the tests immediately exposed things my original pipeline wasn't preserving properly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔌 &lt;strong&gt;Complete wire topology:&lt;/strong&gt; dangling wires, standalone wires and some multi-port/fan-out nets could lose information.&lt;/li&gt;
&lt;li&gt;📐 &lt;strong&gt;Routing and layout details:&lt;/strong&gt; intermediate routing, port positions and some canvas/subcircuit visual data were incomplete.&lt;/li&gt;
&lt;li&gt;🗂️ &lt;strong&gt;Project-level state:&lt;/strong&gt; things like the project name, clock settings, focused circuit, tab order and annotations were not fully round-tripping.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My earlier tests were mostly hitting the &lt;strong&gt;happy path&lt;/strong&gt;. The Editor's Picks were much bigger and messier, which is exactly why they were such a good test set.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 Back to Research&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I spent the rest of the week going through the failed projects one by one and trying to understand what information was being lost and where it should live in the canonical structure.&lt;/p&gt;

&lt;p&gt;There were a few design decisions to think through, especially around representing complete wire/routing topology without making the canonical format unnecessarily complicated.&lt;/p&gt;

&lt;p&gt;So I &lt;strong&gt;did not rush a PR this week.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 What's Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The tests did exactly what good tests are supposed to do — &lt;strong&gt;they broke my assumptions before users did.&lt;/strong&gt; 😄&lt;/p&gt;

&lt;p&gt;Hopefully next week I can start fixing these round-trip gaps and raise a PR with the Editor's Picks verification passing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Looking forward to next week! 🚀&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>software</category>
      <category>testing</category>
    </item>
    <item>
      <title>GSoC'26_Week10 : Stricter Types, PR Merged</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 17 Aug 2026 11:17:23 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-10-49io</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-10-49io</guid>
      <description>&lt;p&gt;Week 10 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(July 27th to August 2nd)&lt;/strong&gt; was all about getting back on track.&lt;/p&gt;

&lt;p&gt;Last week was a little slow because I was travelling back to college and setting everything up again. As soon as this week started, I wanted to catch up and finally turn the &lt;strong&gt;type-safety discussion from Week 9 into actual code.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🛡️ Making the Pipeline More Type-Safe&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I spent the start of the week researching how to make the types stricter.&lt;br&gt;
The main refactor ended up being:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧩 Moving the canonical data contracts into a dedicated &lt;strong&gt;&lt;code&gt;canonical.types.ts&lt;/code&gt;&lt;/strong&gt; file.&lt;/li&gt;
&lt;li&gt;🔌 Replacing loose &lt;code&gt;WireNode&lt;/code&gt; / &lt;code&gt;CVScope&lt;/code&gt; style structures with the real simulator &lt;strong&gt;&lt;code&gt;Node&lt;/code&gt; and &lt;code&gt;Scope&lt;/code&gt; types&lt;/strong&gt; wherever possible.&lt;/li&gt;
&lt;li&gt;🧱 Defining proper shared types such as &lt;code&gt;CanonicalProject&lt;/code&gt;, &lt;code&gt;CanonicalScope&lt;/code&gt;, &lt;code&gt;CanonicalComponent&lt;/code&gt;, &lt;code&gt;CanonicalNet&lt;/code&gt;, &lt;code&gt;CanonicalLayout&lt;/code&gt; and component property types.&lt;/li&gt;
&lt;li&gt;🎯 Keeping the truly dynamic component lookup at one documented boundary instead of letting &lt;code&gt;unknown&lt;/code&gt; and type assertions spread through the whole pipeline.&lt;/li&gt;
&lt;li&gt;🏗️ Adding typed component-constructor handling so the importer can dynamically rebuild components without falling back to &lt;code&gt;any&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea was pretty simple: &lt;strong&gt;if the pipeline already knows the shape of something, TypeScript should know it too.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;July 29th&lt;/strong&gt;, I raised &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1173" rel="noopener noreferrer"&gt;PR #1173&lt;/a&gt;&lt;/strong&gt; with this refactor.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🤖 PR Review&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Soon after opening the PR, CodeRabbit caught something much more interesting than a normal type issue.&lt;/p&gt;

&lt;p&gt;The comparator inside &lt;code&gt;canonicalSort&lt;/code&gt; was using &lt;strong&gt;interface order for some component pairs&lt;/strong&gt; and structural fingerprints for others. That meant the comparison was not a proper total order and, in some cases, sorting could depend on the original array order.&lt;/p&gt;

&lt;p&gt;For a normal application that might just look like a sorting bug. For a &lt;strong&gt;canonical format&lt;/strong&gt;, that is dangerous because component IDs, net IDs and eventually the canonical hash all depend on deterministic ordering.&lt;/p&gt;

&lt;p&gt;The fix was to make the rule consistent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🧠 &lt;strong&gt;Compare the structural fingerprint first. Only when the fingerprints are equal, use the interface order as the tie-breaker.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I updated the comparator and also cleaned up a few unsafe non-null assumptions around wire-port and routing lookups.&lt;/p&gt;

&lt;p&gt;CodeRabbit marked the issue as addressed after the follow-up commit. 🎉&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After the review fixes, &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1173" rel="noopener noreferrer"&gt;PR #1173&lt;/a&gt; was merged&lt;/strong&gt; later this week!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupqtlj866xboqt8irmu6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupqtlj866xboqt8irmu6.png" alt="GitHub showing CircuitVerse PR #1173 merged after review fixes" width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 What's Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Next week, I’ll start working on &lt;strong&gt;tests&lt;/strong&gt; and see how the canonical pipeline holds up on more real circuits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Back on track. Time to test! 🧪⚡&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>softwaredevelopment</category>
      <category>typescript</category>
    </item>
    <item>
      <title>GSoC'26_Week9 : Rethinking Type Safety</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 17 Aug 2026 10:54:23 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-9-1ddp</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-9-1ddp</guid>
      <description>&lt;p&gt;Week 9 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(July 20th to July 26th)&lt;/strong&gt; was a quieter week, but an important one.&lt;/p&gt;

&lt;p&gt;After the excitement of passing midterms, I spent most of this week thinking about something my mentor &lt;strong&gt;Aboo&lt;/strong&gt; had raised: &lt;strong&gt;how type-safe is the canonical pipeline actually?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 Aboo's Concern: Type Safety&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The canonical pipeline was already written in TypeScript, but there were still places where I was relying on dynamic structures such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nx"&gt;unknown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CircuitVerse components are a little tricky here because different components expose different ports and properties at runtime.&lt;/p&gt;

&lt;p&gt;At first, using &lt;code&gt;unknown&lt;/code&gt; felt like the safest way to represent all of that. But after discussing it with Aboo, I realised the better approach was to keep &lt;code&gt;unknown&lt;/code&gt; only for values whose types genuinely can't be known beforehand — and &lt;strong&gt;document those cases clearly.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🛠️ Rethinking the Type Structure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I spent time tracing where the loose types were actually entering &lt;code&gt;canonical.ts&lt;/code&gt; and &lt;code&gt;importCanonical.ts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The direction we discussed was to &lt;strong&gt;keep the pipeline strongly typed for everything we know&lt;/strong&gt;, move shared canonical interfaces into a dedicated types folder, and isolate the genuinely dynamic simulator boundary instead of allowing &lt;code&gt;unknown&lt;/code&gt; to spread everywhere.&lt;/p&gt;

&lt;p&gt;The shared definitions would live under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v1/src/simulator/src/types/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the canonical data model separate from the implementation and makes the types reusable by both export and import.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🎒 Back to College&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The coding side was a little slower this week because I also had to &lt;strong&gt;travel back to college for the new semester&lt;/strong&gt;. 🚆🎒&lt;/p&gt;

&lt;p&gt;Between travelling, settling back in and getting everything ready, I could not put in the same number of hours as the previous weeks.&lt;/p&gt;

&lt;p&gt;Still, this week gave me a clear direction for the refactor instead of rushing into another patch.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 What's Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once I am properly settled back at college, the plan is to start implementing the stricter type structure and clean up the weak points inside the canonical pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I will get back to coding next week! ⚡💻&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>opensource</category>
      <category>circuitverse</category>
      <category>typescript</category>
    </item>
    <item>
      <title>GSoC'26_Week8 : Midterms Passed!</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 17 Aug 2026 10:50:40 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-8-48cg</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-8-48cg</guid>
      <description>&lt;p&gt;Week 8 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(July 13th to July 19th)&lt;/strong&gt; was a pretty big one — &lt;strong&gt;Midterm Evaluations!&lt;/strong&gt; 🥳&lt;/p&gt;

&lt;p&gt;After seven weeks of building the canonical pipeline, this week was mostly about wrapping up the first half properly, getting my open PRs merged, and waiting for that one green check on the GSoC dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;📝 Writing the Midterm Progress Report&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I started the week by finishing my &lt;strong&gt;official Midterm Progress Blog&lt;/strong&gt; for CircuitVerse. You can read it &lt;a href="https://blog.circuitverse.org/posts/harkeerat_singh_gsoc26_phase1_report/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Writing it made me realise how much the project had changed since the first proof of concept. What started as a small JavaScript experiment had now grown into a deterministic, type-safe export and import pipeline using things like &lt;strong&gt;1-WL, Kahn's Algorithm and SHA-256 hashing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It was genuinely satisfying to look back at everything in one place.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🛠️ Two More PRs Through Review&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My main coding focus was getting the two Pull Requests from Week 7 through mentor review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1131" rel="noopener noreferrer"&gt;PR #1131&lt;/a&gt;:&lt;/strong&gt; The complete canonical JSON import pipeline with round-trip verification.&lt;/li&gt;
&lt;li&gt;🖥️ &lt;strong&gt;&lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1132" rel="noopener noreferrer"&gt;PR #1132&lt;/a&gt;:&lt;/strong&gt; Connecting the canonical export/import pipeline to the actual simulator UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reviews caught a few important edge cases I had missed, including making sure exported project files stayed strictly in the &lt;strong&gt;&lt;code&gt;.cv&lt;/code&gt; format&lt;/strong&gt; and cleaning up the remaining legacy save/import behaviour in V1.&lt;/p&gt;

&lt;p&gt;I addressed the review comments, pushed the fixes, and by the end of the week &lt;strong&gt;both &lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1131" rel="noopener noreferrer"&gt;PR #1131&lt;/a&gt; and &lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1132" rel="noopener noreferrer"&gt;PR #1132&lt;/a&gt; were merged! 🎉&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz686s6m6lzm2xzfi79g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz686s6m6lzm2xzfi79g.png" alt="GitHub showing CircuitVerse PR #1131 merged" width="798" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjx19m51qkcz3z6imqsy4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjx19m51qkcz3z6imqsy4.png" alt="GitHub showing CircuitVerse PR #1132 merged" width="799" height="197"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🥳 MIDTERMS... PASSED!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Then came the part I had been waiting for all week.&lt;/p&gt;

&lt;p&gt;On Friday night at around &lt;strong&gt;11:30 PM&lt;/strong&gt;, I opened the GSoC contributor dashboard and finally saw it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;PASSED! 🚀&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I just stared at it for a while. The first half had been full of graph algorithms, TypeScript refactors, review comments, bugs, demos and a lot of late-night debugging, so seeing that green result felt amazing.&lt;/p&gt;

&lt;p&gt;Passing the midterm also meant receiving my &lt;strong&gt;first developer stipend&lt;/strong&gt;, which made the milestone even more special for me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fui0tt3xnbvoda6aunj4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fui0tt3xnbvoda6aunj4h.png" alt="Google Summer of Code contributor dashboard showing my midterm evaluation as passed" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Looking Ahead to Phase 2&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I spent the weekend resting and celebrating a little with family and friends.&lt;/p&gt;

&lt;p&gt;The core canonical export/import pipeline is now in a much stronger place, so the second half can move toward the remaining work:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📜 JSON Schema validation&lt;br&gt;&lt;br&gt;
🧪 Writing tests&lt;br&gt;&lt;br&gt;
🔄 Auto Layout Feature&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first half of GSoC has genuinely taught me a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Midterms done. Time for Phase 2! 🚀🔥&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>opensource</category>
      <category>circuitverse</category>
      <category>typescript</category>
    </item>
    <item>
      <title>GSoC'26_Week7 : The Full Pipeline Comes Alive</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:34:50 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-7-1i84</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-7-1i84</guid>
      <description>&lt;p&gt;Week 7 of my Google Summer of Code journey with CircuitVerse &lt;strong&gt;(July 6th to July 12th)&lt;/strong&gt; is officially done.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔌 Building the End-to-End Pipeline&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The first order of business was &lt;strong&gt;updating importCanonical.ts to stay perfectly in sync with our finalized canonical.ts&lt;/strong&gt;. Once the core code layers matched up, the simulator was officially able to take our deterministic JSON and &lt;strong&gt;completely rebuild the digital circuits from scratch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;The Ultimate Developer Satisfaction:&lt;/strong&gt; There is genuinely nothing quite like exporting a complex circuit layout, deleting it, and watching the import engine reconstruct it onto the canvas flawlessly.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🖥️ Wireframing the New Export &amp;amp; Import UI&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Because my &lt;strong&gt;official GSoC Midterm Evaluation lands next week&lt;/strong&gt;, I wanted to get the remaining features pushed early so my mentors had plenty of time to review it. &lt;strong&gt;My main task became hooking up the engine to the real CircuitVerse frontend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the import side&lt;/strong&gt;, I configured the workflow to accept the new deterministic canonical structure, dropping support for the legacy layout parsing. I also added a safety transaction backup: if a canvas import crashes or fails for any reason, the system automatically rolls back, preserving the user's existing work instead of wiping the canvas clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the export side&lt;/strong&gt;, I tied the "Export as File" actions directly to canonical.ts to output perfect .cv files. To make the feature developer-friendly, I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📜 A &lt;strong&gt;live JSON preview panel&lt;/strong&gt; powered by CodeMirror.&lt;/li&gt;
&lt;li&gt;📋 A &lt;strong&gt;Copy to Clipboard&lt;/strong&gt; utility button.&lt;/li&gt;
&lt;li&gt;💾 A &lt;strong&gt;Download Circuit&lt;/strong&gt; action trigger.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flu0bytxqd455mluln6dc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flu0bytxqd455mluln6dc.png" alt="Export UI" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🚀 Pushing the Pull Requests &amp;amp; Demo Time&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once the UI layers were polished, I &lt;strong&gt;opened up two new Pull Requests&lt;/strong&gt;—one for the import pipeline and another covering the newly minted UI views. &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 Brainstorming Determinism with Aboo&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;During the sync meeting, my mentor Aboo and I had an interesting design &lt;strong&gt;discussion regarding a potential edge case that could break component determinism.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We discussed an &lt;strong&gt;alternative strategy&lt;/strong&gt; that changes how components are tracked and saved internally. Right now, it's just an initial architectural discussion, so &lt;strong&gt;I’m going to hold off&lt;/strong&gt; on writing code until the rest of the mentoring group weighs in. We'll likely dive deeper into this next week!&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;📺 Demo Day&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I also got to showcase my progress during our weekly CircuitVerse GSoC Contributors' Meeting! Giving a &lt;strong&gt;live demonstration of the full export-to-import&lt;/strong&gt; loop running seamlessly inside the active simulator environment was a proud moment, and the &lt;strong&gt;feedback from the community was incredibly warm and positive.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Looking Ahead: Midterm Evaluations!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;With Week 7 officially wrapped, I am incredibly proud to say that the &lt;strong&gt;majority (arguably the most challenging) parts&lt;/strong&gt; of my GSoC roadmap are finished.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next week is the big one: Midterm Evaluations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wish me luck, and see you all in Week 8! ⚡💻&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>opensource</category>
      <category>circuitverse</category>
      <category>typescript</category>
    </item>
    <item>
      <title>GSoC'26_Week6 : First PR Finally Merged</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:13:20 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-6-50d</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-6-50d</guid>
      <description>&lt;p&gt;Week 6 of my Google Summer of Code journey with CircuitVerse (&lt;strong&gt;June 29th to July 5th&lt;/strong&gt;) was arguably the &lt;strong&gt;most rewarding week&lt;/strong&gt; of the summer so far.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 The Power of Elite Code Review&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This week, all my &lt;strong&gt;mentors dropped reviews&lt;/strong&gt; on my initial three pull requests. It was the first time I’ve ever experienced code review at this level of depth, and honestly, &lt;strong&gt;I learned a lot from the reviews&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My mentors caught edge cases I hadn’t even considered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ &lt;strong&gt;A brilliant architectural idea&lt;/strong&gt;: Caching the canonical hashes. Instead of recomputing the heavy Weisfeiler-Leman structure and SHA-256 hash every single time a project saves, we can cache the hash of circuits that haven't changed and reuse them.&lt;/li&gt;
&lt;li&gt;💡 This &lt;strong&gt;caching suggestion&lt;/strong&gt; completely shifted how I view the project's performance. It opens the door to fast saving pipelines! We decided to slate this optimisation for a dedicated upcoming PR.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🥞 CircuitVerse GSoC contributors' meeting&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;During our weekly CircuitVerse GSoC contributors' meeting, I shared my progress but also raised a genuine concern: since almost all of my &lt;strong&gt;upcoming PR's relies on my initial pull requests being merged&lt;/strong&gt;, waiting for slow code reviews was starting to bottleneck my timeline.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My mentor, Aboo, dropped an absolute game-changer of a suggestion: &lt;strong&gt;Stacked PRs.&lt;/strong&gt; If you want to know more about it, you can read &lt;a href="https://newsletter.pragmaticengineer.com/p/stacked-diffs" rel="noopener noreferrer"&gt;https://newsletter.pragmaticengineer.com/p/stacked-diffs&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;⏳ Timeline Extensions &amp;amp; Midterms&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My mentors decided to &lt;strong&gt;extend my project timeline by two weeks! 🗓️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It gives us plenty of room to run thorough testing, edge-case debugging, and performance polishing. Because of this timeline adjustment, my official &lt;strong&gt;GSoC midterm evaluation has also shifted by a week&lt;/strong&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🥳 FINALLY... IT MERGED!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There couldn’t have been a better way to close out the week. On the very last day, I opened GitHub and saw the glorious notification: &lt;strong&gt;My first pull request as a GSoC contributor was officially merged into main! 😭🎉&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1o7dks2ytspc9ly12go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1o7dks2ytspc9ly12go.png" alt="GitHub showing my first GSoC pull request, PR #1095, merged into CircuitVerse" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PR &lt;a href="https://github.com/CircuitVerse/cv-frontend-vue/pull/1095" rel="noopener noreferrer"&gt;https://github.com/CircuitVerse/cv-frontend-vue/pull/1095&lt;/a&gt; MERGED!&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Looking Ahead to Week 7&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I am riding a &lt;strong&gt;massive wave of motivation right now&lt;/strong&gt;. Thank you to my mentors for the incredible guidance this week. &lt;/p&gt;

&lt;p&gt;Let’s keep this momentum rolling! ⚡💻&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>learning</category>
      <category>opensource</category>
      <category>performance</category>
    </item>
    <item>
      <title>GSoC'26_Week5 : Back on Track with Import</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Sat, 11 Jul 2026 18:53:27 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-5-29hd</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-5-29hd</guid>
      <description>&lt;p&gt;Week 5 of my Google Summer of Code journey with CircuitVerse (&lt;strong&gt;June 22nd to June 28th&lt;/strong&gt;) is officially in the books.&lt;/p&gt;

&lt;p&gt;After dealing with a rough sickness last week, I’m happy to say &lt;strong&gt;this week was incredibly positive&lt;/strong&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔄 Reconnecting with the Community&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Since I had to miss last week's sync because I was under the weather, I had to attend the CircuitVerse GSoC Contributors' Meeting this week. It felt so good to &lt;strong&gt;reconnect with everyone&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;I shared the progress I'd managed to scrape together over the last couple of weeks, and the &lt;strong&gt;mentors were incredibly understanding&lt;/strong&gt; and kind about my slower pace due to being sick. &lt;strong&gt;The CircuitVerse community is genuinely unmatched!&lt;/strong&gt; Everyone is so encouraging, and having that layer of support makes a world of difference.&lt;/p&gt;

&lt;p&gt;It was also super motivating to hear what the other contributors have been up to. Seeing how much progress everyone has made gave me a massive burst of inspiration to jump right back into development!&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🛠️ importCanonical.ts is Completed!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once the meeting was over, I officially &lt;strong&gt;finished implementing the entire import pipeline in importCanonical.ts! 🥳&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This file does the heavy lifting of taking our clean, deterministic canonical JSON and &lt;strong&gt;reconstructing the circuit&lt;/strong&gt; right back onto the user's canvas. Here is what's packed inside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🔀 Full Multi-Circuit Support:&lt;/strong&gt; The import pipeline seamlessly handles projects containing multiple individual circuits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📐 Smart Subcircuit Dependency Resolution:&lt;/strong&gt; Just like the export pipeline, the import engine now uses &lt;strong&gt;Kahn's Algorithm&lt;/strong&gt; to figure out the exact sequence the circuits need to be loaded in so that nested dependencies never break.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛑 What's Missing? (For Now):&lt;/strong&gt; The import pipeline &lt;strong&gt;doesn't validate the incoming JSON file&lt;/strong&gt;. I am waiting until the canonical format is finalised. Once that's locked in, I will add JSON schema validation in the file.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🚀 The PR Status&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;On the GitHub side of things, the &lt;strong&gt;three foundational Pull Requests&lt;/strong&gt; I opened earlier are &lt;strong&gt;still actively under review&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One of my mentors gave them a look this week and left some &lt;strong&gt;excellent feedback&lt;/strong&gt;. I spent a good chunk of time addressing all the requested changes and polishing the code. Now, I’m just &lt;strong&gt;waiting for another round of reviews&lt;/strong&gt; and final green lights from the rest of the mentoring team.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Because my new import pipeline relies entirely on the foundational changes I introduced in canonical.ts, I haven't opened a fresh PR for the import code just yet. I’m keeping it local for now and will raise the PR the second those core building blocks get merged into main!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Final Reflections &amp;amp; Looking Ahead to Week 6&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;All in all, Week 5 was exactly what I needed. &lt;strong&gt;It felt amazing to get back into a solid development&lt;/strong&gt; groove, receive highly detailed feedback on my work, and keep the momentum moving forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Let's see what Week 6 brings! ⚡💻&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>community</category>
      <category>devjournal</category>
      <category>opensource</category>
    </item>
    <item>
      <title>GSoC'26_Week4 : A Slow Week, Big Progress</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 22 Jun 2026 19:07:54 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc-2026-week-4-2p33</link>
      <guid>https://dev.to/harkeerat24/gsoc-2026-week-4-2p33</guid>
      <description>&lt;p&gt;&lt;strong&gt;Week 4&lt;/strong&gt; of my Google Summer of Code journey (&lt;strong&gt;June 15th to June 21st&lt;/strong&gt;)!&lt;/p&gt;

&lt;p&gt;If I’m being completely honest, this week didn’t exactly go according to plan. &lt;strong&gt;I was not feeling well this week&lt;/strong&gt;. Because of that, my main focus had to shift from coding to resting up and recovering.&lt;/p&gt;

&lt;p&gt;Even though it was a slower week, I still managed to get some work done.&lt;/p&gt;

&lt;p&gt;My main goals for this week were to &lt;strong&gt;write importCanonical.ts&lt;/strong&gt; and set up a &lt;strong&gt;JSON Schema.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;import file is super important&lt;/strong&gt; because it takes the clean, hashed canonical JSON we built in the last few weeks and &lt;strong&gt;actually reconstructs the digital circuits back onto the screen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Despite feeling sick, I managed to &lt;strong&gt;complete most of importCanonical.ts&lt;/strong&gt;! The core logic is written, and there are only a few small pieces left to polish.&lt;/p&gt;

&lt;p&gt;Because I was running on low energy, I talked things over with my mentors. We agreed to &lt;strong&gt;push the JSON Schema work to next week&lt;/strong&gt;. I’ll be combining the leftover tasks with my Week 5 goals, and I'm confident I can catch up!&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;(Due to my health, I also had to skip our weekly GSoC contributors' meeting this time around!)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🎉 The Blockade is Cleared&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Remember that annoying upstream &lt;strong&gt;bug in the V1 version&lt;/strong&gt; of CircuitVerse I mentioned in my previous updates? The one that was stopping me from submitting my code?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;It finally got fixed by the maintainers! 🥳&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As soon as the repository patch went live, I cleaned up my branches and &lt;strong&gt;opened the Pull Requests (PRs) for all the work I completed over the last few weeks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The PRs are now sitting with my &lt;strong&gt;mentors for review&lt;/strong&gt;, and I’m looking forward to getting their feedback, tweaking things based on their notes, and getting everything merged.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;Time to bounce back stronger for Week 5—let's get it! 🚀🔥&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>coding</category>
      <category>devjournal</category>
      <category>opensource</category>
      <category>typescript</category>
    </item>
    <item>
      <title>GSoC'26_Week3 : Subcircuits, Sorting &amp; Demo Day</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Mon, 15 Jun 2026 19:32:45 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc26-week-3-b1a</link>
      <guid>https://dev.to/harkeerat24/gsoc26-week-3-b1a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Week 3&lt;/strong&gt; of my Google Summer of Code 2026 coding period at CircuitVerse lasted from &lt;strong&gt;June 8th to June 14th&lt;/strong&gt;. This was a productive week! Let's break down exactly what went down! 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🏗️ Mastering Subcircuits with Topological Sorting&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My primary goal this week was to implement &lt;strong&gt;subcircuit support&lt;/strong&gt; in the canonical.ts file, which I successfully implemented!&lt;/p&gt;

&lt;p&gt;For example, if Circuit B uses Circuit A as a nested subcircuit component, Circuit A must be processed and loaded before Circuit B.&lt;/p&gt;

&lt;p&gt;To handle these nested dependencies deterministically, I introduced two key system updates:&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Kahn’s Algorithm for Topological Sorting&lt;/strong&gt;&lt;br&gt;
I implemented Kahn’s Algorithm to evaluate the &lt;strong&gt;structural dependency graph&lt;/strong&gt;. It calculates the incoming degrees of each circuit layout, processing zero-dependency blocks first to construct a perfectly ordered, linear topological array.&lt;/p&gt;

&lt;p&gt;If you want to know more about the Khan's Algorithm, you can explore &lt;a href="https://www.geeksforgeeks.org/dsa/topological-sorting-indegree-based-solution/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/dsa/topological-sorting-indegree-based-solution/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2️⃣ &lt;strong&gt;Circular Dependency Detection&lt;/strong&gt;&lt;br&gt;
What happens if a user accidentally makes Circuit A depend on Circuit B, while Circuit B simultaneously loops back to depend on Circuit A? Khan's algorithm made it very easy to detect these cycles!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I had &lt;strong&gt;studied&lt;/strong&gt; and experimented with topological graph sort algorithms during college, which made writing code for this week &lt;strong&gt;fun and interesting&lt;/strong&gt;!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;The canonical.ts can now generate deterministic canonical JSON for any valid layout. I could not be happier with the progress!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;📺 Demo Day&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This week I had my &lt;strong&gt;first Demo Day!&lt;/strong&gt; 💡&lt;/p&gt;

&lt;p&gt;This was a live session where &lt;strong&gt;all CircuitVerse GSoC contributors&lt;/strong&gt; stepped up to present their feature updates. I ran a live demo on the console by running the canonical.ts file, which generated the deterministic JSON successfully!&lt;/p&gt;

&lt;p&gt;It was incredibly rewarding to receive positive feedback from the team, and equally amazing to witness the progress being made by the other contributors.&lt;/p&gt;

&lt;p&gt;You can see the JSON in the image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99lkgp4zminh0aeygv34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99lkgp4zminh0aeygv34.png" alt="Canonical JSON generated successfully during my first CircuitVerse GSoC Demo Day" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🏀 Off-Duty: The Craziest Finals Games in NBA History!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you've been reading my updates, you know I’ve been completely locked into the &lt;strong&gt;2026 NBA Finals&lt;/strong&gt; matchup between the Knicks and the Spurs. This past week brought us three more games, and calling them "entertaining" is a massive understatement!🍿&lt;/p&gt;

&lt;p&gt;The headline story of the week has to be &lt;strong&gt;Game 4&lt;/strong&gt;. The &lt;strong&gt;Knicks were down by a mind-boggling 29 points&lt;/strong&gt; in the first half. What followed was absolute cinema. They launched a historic second-half comeback to scratch all the way back and &lt;strong&gt;win it 107-106&lt;/strong&gt;, marking the &lt;strong&gt;largest comeback victory in NBA Finals history! 🤯&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With yet another signature double-digit comeback under their belts in Game 5, &lt;strong&gt;Jalen Brunson dropped a masterclass 45 points&lt;/strong&gt; to lead the Knicks to a &lt;strong&gt;94-90 victory&lt;/strong&gt;, ending a legendary 53-year championship drought to &lt;strong&gt;win the title 4-1!&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The momentum is real, and I'm incredibly excited to keep pushing forward. Catch you next week! ⚡💻&lt;/em&gt;&lt;/p&gt;




</description>
      <category>gsoc</category>
      <category>opensource</category>
      <category>circuitverse</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>GSoC'26_Week2 : Scaling to Multi-Circuit Support</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Fri, 12 Jun 2026 20:18:20 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc26-week-2-177</link>
      <guid>https://dev.to/harkeerat24/gsoc26-week-2-177</guid>
      <description>&lt;p&gt;The second week of my Google Summer of Code 2026 coding period at CircuitVerse (&lt;strong&gt;June 1st to June 7th&lt;/strong&gt;) is officially in the books. This week was all about &lt;strong&gt;scaling up architectural ideas&lt;/strong&gt; and &lt;strong&gt;having some unexpected fun&lt;/strong&gt; during community hangouts.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🏗️ Scaling to Multi-Circuit Support&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This week, my main technical focus shifted toward implementing &lt;strong&gt;multi-circuit support&lt;/strong&gt; for our canonical JSON format. The core goal here is to ensure that the canonical representation remains completely &lt;strong&gt;deterministic even for complex projects containing multiple individual circuits&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🟢 The majority of the implementation was straightforward and easy&lt;/li&gt;
&lt;li&gt;🧠 Now, only the &lt;strong&gt;subcircuit dependency part&lt;/strong&gt; is left! It’s a beautifully complex problem that involves handling nested circuit hierarchies.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⏳** Navigating a Minor Pull Request Blocker**
&lt;/h2&gt;

&lt;p&gt;While the code is running great locally (in V0), I wasn't able to officially open a Pull Request in the V1 version this week.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;The Reason:&lt;/strong&gt; We ran into a few underlying issues with the V1 version of the system. I am currently waiting for the core maintainers to patch those upstream issues so the environment is stable. Once that’s cleared up, the PR is going straight up for review! 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🤝 GSoC Student Meeting&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I also attended our regular &lt;strong&gt;weekly GSoC student meeting&lt;/strong&gt;. It was a great space to &lt;strong&gt;share my progress&lt;/strong&gt; on the multi-circuit framework and see the incredible work the other contributors are pulling off.&lt;/p&gt;

&lt;p&gt;But the absolute highlight happened &lt;em&gt;after&lt;/em&gt; the official meeting wrapped up!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☕ Some of the mentors stuck around, and we ended up having an amazing, casual conversation. We talked about what everyone has been up to, shared personal stories, and walked away with some incredibly unique insights.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Honestly, I never thought meetings could be &lt;strong&gt;&lt;em&gt;this&lt;/em&gt; much fun&lt;/strong&gt;! The culture here is genuinely unmatched. 🩵&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🏀 Off-Duty: NBA Finals!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;2026 NBA Finals&lt;/strong&gt; are finally here, and it's a wild matchup between the &lt;strong&gt;New York Knicks&lt;/strong&gt; and the &lt;strong&gt;San Antonio Spurs!&lt;/strong&gt; 🤯&lt;/p&gt;

&lt;p&gt;As a basketball fan, the Finals are always the best time of the year. The first two games are already over, and the &lt;strong&gt;Knicks have taken a quick 2-0 lead!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Will the Spurs pull off a massive comeback, or are the Knicks going to run away with this? &lt;strong&gt;Let’s see what happens next! 🍿&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Final Reflections &amp;amp; Looking Ahead&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Week 2 was fantastic, let's see what the next week brings! Week 3 is going to be all about handling subcircuit hierarchies.🚀&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devjournal</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>GSoC'26_Week1 : Canonicalization, Community &amp; a Win</title>
      <dc:creator>Harkeerat Singh</dc:creator>
      <pubDate>Fri, 05 Jun 2026 21:01:21 +0000</pubDate>
      <link>https://dev.to/harkeerat24/gsoc26-week-1-gkd</link>
      <guid>https://dev.to/harkeerat24/gsoc26-week-1-gkd</guid>
      <description>&lt;p&gt;The &lt;strong&gt;first week&lt;/strong&gt; of my Google Summer of Code 2026 coding period at CircuitVerse ran from &lt;strong&gt;May 25th to May 31st&lt;/strong&gt;. It turned out to be an exciting mix of core development work, community activities, deep learning, and even a little bit of friendly competition!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🛠️ Getting Started on the Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After the intense discussions and planning sessions during the Community Bonding Period, I spent this week implementing many of the structural changes that had been finalised with my mentors.&lt;/p&gt;

&lt;p&gt;One of the key pillars of my project is generating a deterministic canonical JSON representation of digital circuits. During my initial proof-of-concept phase, I had implemented the core logic in a raw canonical.js file. However, after diving deep into the architectural standards of the project, we decided that the implementation should be &lt;strong&gt;migrated to TypeScript&lt;/strong&gt; to ensure long-term maintainability and codebase alignment.&lt;/p&gt;

&lt;p&gt;As a result, I completely rewrote the implementation in &lt;strong&gt;canonical.ts&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🧬 Building the Canonicalization Pipeline&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Beyond simply migrating the codebase, I worked extensively on implementing the main pipeline responsible for generating the canonical JSON output.&lt;/p&gt;

&lt;p&gt;This involved integrating the &lt;strong&gt;1-Dimensional Weisfeiler-Leman (1-WL)&lt;/strong&gt; graph algorithm into our component sorting pipeline. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🏆 CircuitVerse Repository Cleanup Contest&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Project work wasn't the only exciting part of the week! CircuitVerse organised a Repository Cleanup Contest, which was &lt;strong&gt;MERGATHONE&lt;/strong&gt;, where contributors competed to close as many issues and pull requests as possible across the entire GitHub ecosystem.&lt;/p&gt;

&lt;p&gt;I'm incredibly happy to share that my team secured &lt;strong&gt;1st place! 🎉&lt;/strong&gt;&lt;br&gt;
The contest was both highly productive and fun. As a bonus, we'll also be receiving exclusive &lt;strong&gt;CircuitVerse T-shirts&lt;/strong&gt; later this month! 👕&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🤝 GSoC Contributors Meetup&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We also held our official &lt;strong&gt;CircuitVerse GSoC 2026 contributors meetup&lt;/strong&gt; during the week. Each contributor shared updates about their ongoing work and talked about their progress.&lt;/p&gt;

&lt;p&gt;One thing I really appreciate about the CircuitVerse community is how &lt;strong&gt;welcoming and relaxed everyone is&lt;/strong&gt;. The meetings are highly productive while still maintaining a warm, friendly atmosphere, making it easy to engage in deep technical discussions.&lt;/p&gt;

&lt;p&gt;There was even a &lt;strong&gt;hilarious&lt;/strong&gt; moment during the meetup when contributors started guessing the &lt;strong&gt;age&lt;/strong&gt; of one of the &lt;strong&gt;organisation admins&lt;/strong&gt; (Aboo Bhaiyaa) before he joined the call. Somehow, I managed to &lt;strong&gt;guess it exactly right&lt;/strong&gt;, which felt like a small but &lt;strong&gt;satisfying victory&lt;/strong&gt;! 😄&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🔮 Reflections &amp;amp; What's Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Looking back, this first week had a little bit of everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📈 Significant progress on my core GSoC project&lt;br&gt;
🔄 Migration of core architecture from JavaScript to TypeScript&lt;br&gt;
🧠 Implementation of key topological canonicalization algorithms (1-WL)&lt;br&gt;
🥇 A successful (and victorious!) repository cleanup contest&lt;br&gt;
🌐 Awesome community interactions and contributor meetups&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm excited to continue building on this progress in the coming weeks and look forward to sharing more updates as the summer progresses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Excited for Week 2! 🚀🔥&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>google</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
