<?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: Adil Raxiq</title>
    <description>The latest articles on DEV Community by Adil Raxiq (@adil_raxiq_d6b4d8714f9fe0).</description>
    <link>https://dev.to/adil_raxiq_d6b4d8714f9fe0</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%2F4015061%2F844b8e96-990a-40ed-919c-c53b1a48daf9.jpg</url>
      <title>DEV Community: Adil Raxiq</title>
      <link>https://dev.to/adil_raxiq_d6b4d8714f9fe0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adil_raxiq_d6b4d8714f9fe0"/>
    <language>en</language>
    <item>
      <title>I Built a Windows 95-Style Developer Portfolio with Next.js 15</title>
      <dc:creator>Adil Raxiq</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:00:43 +0000</pubDate>
      <link>https://dev.to/adil_raxiq_d6b4d8714f9fe0/i-built-a-windows-95-style-developer-portfolio-with-nextjs-15-2bf2</link>
      <guid>https://dev.to/adil_raxiq_d6b4d8714f9fe0/i-built-a-windows-95-style-developer-portfolio-with-nextjs-15-2bf2</guid>
      <description>&lt;h2&gt;
  
  
  Why a Windows 95 Portfolio?
&lt;/h2&gt;

&lt;p&gt;Most developer portfolios look the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero section&lt;/li&gt;
&lt;li&gt;About me&lt;/li&gt;
&lt;li&gt;Projects grid&lt;/li&gt;
&lt;li&gt;Contact form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something different. Something people actually remember.&lt;/p&gt;

&lt;p&gt;So I built a portfolio that looks and feels like a classic Windows 95 desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Looks Like
&lt;/h2&gt;

&lt;p&gt;When you visit the site, you see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A teal desktop background (just like Windows 95)&lt;/li&gt;
&lt;li&gt;Clickable icons for Projects, Writing, Contact&lt;/li&gt;
&lt;li&gt;A boot animation that says "System booting..."&lt;/li&gt;
&lt;li&gt;Draggable, resizable windows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; — App Router, Server Components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; — All styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; — Animations and transitions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; — Type safety&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Boot Animation
&lt;/h3&gt;

&lt;p&gt;When the page loads, it shows a retro boot screen before revealing the desktop. This sets the mood immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Desktop Icons
&lt;/h3&gt;

&lt;p&gt;Each icon (Projects, Writing, Contact) opens a window when clicked — just like real Windows 95.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Draggable Windows
&lt;/h3&gt;

&lt;p&gt;Windows can be dragged around the screen using Framer Motion's drag constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Blog Section
&lt;/h3&gt;

&lt;p&gt;I added a writing section where I publish articles about Flutter, Django, and AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Contact Form
&lt;/h3&gt;

&lt;p&gt;A working contact form so people can reach out directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Animations matter&lt;/strong&gt; — The boot screen alone makes the site memorable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints are creative&lt;/strong&gt; — Sticking to a Windows 95 theme forced me to be creative with limited elements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; — Even with animations, the site scores 100 on Lighthouse SEO&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Live Demo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://adilportfolio-tawny.vercel.app" rel="noopener noreferrer"&gt;https://adilportfolio-tawny.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;The project is built with Next.js 15 and is deployed on Vercel.&lt;/p&gt;




&lt;p&gt;Thanks for reading! If you have any questions about the implementation, feel free to ask in the comments.&lt;/p&gt;

&lt;h1&gt;
  
  
  portfolio #nextjs #tailwindcss #webdev
&lt;/h1&gt;

</description>
      <category>portfolio</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Trust Gap in Threat Intelligence: Why Your Feeds Are Lying to You</title>
      <dc:creator>Adil Raxiq</dc:creator>
      <pubDate>Sat, 04 Jul 2026 12:58:05 +0000</pubDate>
      <link>https://dev.to/adil_raxiq_d6b4d8714f9fe0/the-trust-gap-in-threat-intelligence-why-your-feeds-are-lying-to-you-31bm</link>
      <guid>https://dev.to/adil_raxiq_d6b4d8714f9fe0/the-trust-gap-in-threat-intelligence-why-your-feeds-are-lying-to-you-31bm</guid>
      <description>&lt;h1&gt;
  
  
  The Trust Gap in Threat Intelligence: Why Your Feeds Are Lying to You
&lt;/h1&gt;

&lt;p&gt;Every SOC has lived this scenario: an alert fires overnight, tied to an indicator pulled from a feed nobody on the team can fully account for. The analyst on call has two choices — chase it down at 3 AM, or gamble that it's noise. Neither option is good, and the reason isn't the alert. It's that the intelligence behind it was never trustworthy to begin with.&lt;/p&gt;

&lt;h2&gt;
  
  
  We Solved Format. We Didn't Solve Trust
&lt;/h2&gt;

&lt;p&gt;The industry has spent a decade converging on how to &lt;em&gt;move&lt;/em&gt; threat intelligence: STIX, TAXII, MISP, OpenCTI, and — inevitably — the vendor CSV that still lands in someone's inbox. That standardization work mattered. But it solved interoperability, not credibility. Somewhere between ingestion and action, the questions that actually determine whether an indicator deserves a response get lost:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who originally reported this indicator?&lt;/li&gt;
&lt;li&gt;Has it changed since it entered our pipeline?&lt;/li&gt;
&lt;li&gt;Does this source have a track record worth trusting?&lt;/li&gt;
&lt;li&gt;Has it been independently corroborated?&lt;/li&gt;
&lt;li&gt;Is it even still relevant, or has it quietly expired?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without answers, security teams are left making binary decisions — block or allow — on intelligence that was never scored, verified, or contextualized in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost of Ungraded Intelligence
&lt;/h2&gt;

&lt;p&gt;Treating every IOC as equally credible produces two failure modes, and both are expensive. Over-alerting burns analyst time on indicators that never should have triggered a response. Under-alerting lets real threats blend into the noise. In practice, most organizations get both at once: enough false positives to cause alert fatigue, and enough unverified low-quality intel to leave real risk unaddressed.&lt;/p&gt;

&lt;p&gt;One security team estimated that over 40% of their automated alerts were ultimately dismissed as false positives — after already consuming analyst hours, triggering escalation workflows, and pulling people into response meetings that didn't need to happen. At scale, across tools and teams, ungraded intelligence isn't a minor inefficiency. It's a recurring cost that compounds every day the problem goes unaddressed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rethinking the Pipeline: Provenance and Trust as First-Class Data
&lt;/h2&gt;

&lt;p&gt;The fix isn't another normalization layer. It's treating every indicator the way an investigator treats evidence — with a documented chain of custody and a defensible reason for acting on it.&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%2Fu0b417syncnekr9xxvh5.jpeg" 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%2Fu0b417syncnekr9xxvh5.jpeg" alt=" " width="799" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Normalize without erasing origin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every incoming feed still gets converted to a common schema (STIX 2.1), but the source metadata isn't discarded in the process. The pipeline retains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The original format and provider identity&lt;/li&gt;
&lt;li&gt;Schema validation results at ingestion&lt;/li&gt;
&lt;li&gt;The specific mapping decisions made during transformation&lt;/li&gt;
&lt;li&gt;That feed's historical accuracy and failure rate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An indicator isn't simply "added" to the system — it arrives with a record of how it got there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Replace binary trust with a trust score&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than an allow/block decision, each indicator is scored using a model (in this case, XGBoost) trained on signals that actually predict reliability:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What it tells you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Source reputation&lt;/td&gt;
&lt;td&gt;Has this feed been accurate historically?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Corroboration count&lt;/td&gt;
&lt;td&gt;Has this indicator been independently reported elsewhere?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sighting frequency&lt;/td&gt;
&lt;td&gt;Is this indicator currently active or stale?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timeliness decay&lt;/td&gt;
&lt;td&gt;How much has confidence decayed since first sighting?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pattern anomalies&lt;/td&gt;
&lt;td&gt;Does this indicator resemble known synthetic or low-quality data?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The resulting score routes the indicator: high-confidence scores support automated action, mid-range scores route to analyst review, and low-confidence scores are suppressed until corroborated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Make tampering provable, not just theoretically prevented&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the one place a permissioned ledger earns its keep — not for decentralization as an ideology, but for a narrow, practical guarantee: proving that provenance metadata hasn't been silently altered after the fact. Each indicator's provenance record is hashed and committed to a permissioned ledger. No raw intelligence is exposed publicly, there's no token or coin involved, and the only goal is non-repudiation — an auditable answer to "has this record been changed since it was logged?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Beyond One Pipeline
&lt;/h2&gt;

&lt;p&gt;The underlying claim is simple: threat intelligence that can't explain itself isn't actionable, no matter how fast it moves or how well-formatted it is. A provenance-aware, trust-scored approach doesn't just reduce false positives — it gives every automated action a defensible audit trail, which matters as much to compliance and incident post-mortems as it does to the analyst on call.&lt;/p&gt;

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

&lt;p&gt;This is a project in progress, and it's being built in the open. Upcoming milestones include a live trust-score visualizer for IOCs, a demo of the metadata-preserving feed normalizer, trust-decay curves benchmarked across real sample feeds, and a walkthrough of the ledger-backed audit trail.&lt;/p&gt;

&lt;p&gt;Code releases are planned within the year — the repo is open now for anyone who wants to follow the build or weigh in early: &lt;strong&gt;github.com/greykaizen/ThreatChain&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;Two questions for anyone who's dealt with this problem directly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What metadata do you most often lose during feed ingestion — and wish you hadn't?&lt;/li&gt;
&lt;li&gt;Where would you set the line for auto-blocking on a 0–100 trust score?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you work with threat intel pipelines, have signals you think should factor into a trust score, or can contribute anonymized feed telemetry, open an issue on the repo. This is the kind of problem that only gets solved with input from people actually running SOCs.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
