<?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: Amine Fakiri</title>
    <description>The latest articles on DEV Community by Amine Fakiri (@scorixa).</description>
    <link>https://dev.to/scorixa</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%2F3963574%2Fc79df1eb-6fc8-4ded-9cdb-7f0a4d4c4f6d.png</url>
      <title>DEV Community: Amine Fakiri</title>
      <link>https://dev.to/scorixa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scorixa"/>
    <language>en</language>
    <item>
      <title>The vertex weld that silently broke every assembly I converted</title>
      <dc:creator>Amine Fakiri</dc:creator>
      <pubDate>Thu, 01 Oct 2026 14:02:08 +0000</pubDate>
      <link>https://dev.to/scorixa/the-vertex-weld-that-silently-broke-every-assembly-i-converted-2go6</link>
      <guid>https://dev.to/scorixa/the-vertex-weld-that-silently-broke-every-assembly-i-converted-2go6</guid>
      <description>&lt;p&gt;I build a 3D file conversion tool. Last week I spent two days chasing a bug where converting a CAD assembly produced a mesh that looked perfect and was quietly broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  The symptom
&lt;/h2&gt;

&lt;p&gt;A STEP assembly with 108 solids. The conversion completed. The preview rendered. Every part was visibly there — correct shape, correct position. Then the QA pass reported that several closed parts were non-manifold.&lt;/p&gt;

&lt;p&gt;That shouldn't be possible. A closed solid tessellates to a closed mesh. If it goes in watertight, it comes out watertight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Narrowing it down
&lt;/h2&gt;

&lt;p&gt;I instrumented each stage.&lt;/p&gt;

&lt;p&gt;All 108 solids were read from the STEP file without error. All 108 tessellated individually, each producing a closed, manifold mesh. Verified, one at a time.&lt;/p&gt;

&lt;p&gt;Then they were combined, and 84 triangles disappeared.&lt;/p&gt;

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

&lt;p&gt;After tessellating each solid, the pipeline welded coincident vertices — a standard cleanup step. Two vertices at the same position become one, which removes duplicates and shrinks the output.&lt;/p&gt;

&lt;p&gt;The problem is that it ran &lt;strong&gt;globally, across the whole assembly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Where two parts touch — a shaft in a bore, a plate against a plate — both solids have surfaces at the same coordinates. Those vertices are coincident, but they belong to different solids. Welding them merged the two surfaces into one, and the triangles describing the interface between the parts became degenerate and were dropped.&lt;/p&gt;

&lt;p&gt;84 triangles, every one of them an interface between two parts that were supposed to stay separate. Every solid that touched another came out with a hole where the contact had been.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's nasty
&lt;/h2&gt;

&lt;p&gt;Nothing errors. The geometry looks right in a viewer, because the holes are internal — at contact faces, hidden inside the model.&lt;/p&gt;

&lt;p&gt;You find out downstream. A slicer refuses the file, or a CAD package imports it as a surface body instead of a solid and every operation you reach for is greyed out.&lt;/p&gt;

&lt;p&gt;The fix was to keep per-solid topology separate: weld within a solid, never across. 108 solids in, 108 out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The second bug, which was worse
&lt;/h2&gt;

&lt;p&gt;While I was in there, I found the mesher was being called with the CPU count in the position where the relative deflection parameter belongs. Wrong argument, wrong slot. Parallel meshing was never actually enabled.&lt;/p&gt;

&lt;p&gt;That invalidated every performance measurement I'd taken up to that point. Once fixed, sewing on a large assembly went from 655 seconds to 28.&lt;/p&gt;

&lt;p&gt;The lesson I keep relearning: when a number looks wrong, check the call signature before you optimise anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means if you convert meshes
&lt;/h2&gt;

&lt;p&gt;If you're running any mesh converter over assemblies, the thing to check isn't whether the file opened. It's solid count in versus solid count out, and whether each solid is still closed.&lt;/p&gt;

&lt;p&gt;A converter reporting "done" is telling you it finished. Not that the result is usable.&lt;/p&gt;

&lt;p&gt;I ended up building that verification into my own tool because of this bug — it reports watertightness, manifold edges and solid count before you commit to anything (&lt;a href="https://stlfixtool.com" rel="noopener noreferrer"&gt;stlfixtool.com&lt;/a&gt;). But the check matters whatever you're using.&lt;br&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%2Fnfly75i9gu7oxubm3arq.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%2Fnfly75i9gu7oxubm3arq.PNG" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>debugging</category>
      <category>programming</category>
      <category>3dprinting</category>
    </item>
    <item>
      <title>I asked 12 AI engines if they knew my product. Only 5 did.</title>
      <dc:creator>Amine Fakiri</dc:creator>
      <pubDate>Tue, 02 Jun 2026 01:33:56 +0000</pubDate>
      <link>https://dev.to/scorixa/i-asked-12-ai-engines-if-they-knew-my-product-only-5-did-3eeb</link>
      <guid>https://dev.to/scorixa/i-asked-12-ai-engines-if-they-knew-my-product-only-5-did-3eeb</guid>
      <description>&lt;p&gt;Last week I did something a bit weird. I asked 12 different AI chatbots whether they knew my product exists.&lt;br&gt;
Some background. I run a small tool called SCORIXA. It scans a business's Google reviews and tells them roughly how much money they're losing every month because of the bad ones. Solo founder, pre-revenue, the usual grind.&lt;br&gt;
People keep saying AI search is the new SEO. Everyone's googling less and just asking ChatGPT "what's the best tool for X". So I wanted to know, in the most basic way possible, do these AI engines even know I'm here?&lt;br&gt;
So I opened ChatGPT, Gemini, Grok, Meta AI, Google's AI Mode, Claude, Perplexity, Copilot, DeepSeek, Kimi, Brave, and You.com, and I asked all of them the same questions. Stuff like "what is SCORIXA" and "what tools calculate revenue lost from bad reviews".&lt;br&gt;
This is not science. It's just me messing around for an afternoon. But the result was interesting enough that I wanted to write it down.&lt;br&gt;
5 of them knew the product. ChatGPT, Gemini, Grok, Meta AI, and Google's AI Mode. The other 7 had no clue. A couple of them even mixed my name up with a football stats thing and, weirdly, a type of volcanic rock. Cool.&lt;br&gt;
What stood out to me is the 5 that knew me all seem to pull a lot from Reddit and live web content. The ones that didn't lean more on older or narrower training data, and I just haven't earned enough mentions out there yet for them to have picked me up.&lt;br&gt;
A few things I took from it, if you're building something new:&lt;br&gt;
Reddit is doing more than I expected. The engines that knew me kept surfacing stuff that traced back to Reddit threads. Being genuinely active in the right communities seems to feed straight into this.&lt;br&gt;
Structured data actually helps. I added a Wikidata entry mostly so the AIs would stop confusing my brand with the rock and the football thing. Seems to help them tell you apart.&lt;br&gt;
It really is just citations again. The engines that didn't know me aren't broken. I just haven't been mentioned enough places yet. AI visibility is basically SEO wearing a new hat. Other people referencing you is still the whole game.&lt;br&gt;
If you're first in a niche, that's worth a lot. There's not much else for the models to learn from, so your early content shapes how they describe the whole category later.&lt;br&gt;
Anyway. If you've built something, try this yourself. Just ask the big AI engines about your product and your category and see what comes back. Took me 20 minutes and it was a pretty humbling little audit.&lt;br&gt;
If you're curious what the tool actually is, it's here: &lt;a href="https://scorixa.me" rel="noopener noreferrer"&gt;https://scorixa.me&lt;/a&gt;&lt;br&gt;
Question for anyone who's tried this. Are you also seeing Reddit weighted this heavily, or is that just my category?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
