<?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: Aasif Ashraf</title>
    <description>The latest articles on DEV Community by Aasif Ashraf (@aasifashraf).</description>
    <link>https://dev.to/aasifashraf</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%2F3754292%2Fee7a6915-92c4-4c2b-b4cc-be40b0131128.jpg</url>
      <title>DEV Community: Aasif Ashraf</title>
      <link>https://dev.to/aasifashraf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aasifashraf"/>
    <language>en</language>
    <item>
      <title>My 14-Year-Old Self Built a Pen-and-Paper Cipher (And Locked Me Out 14 Years Later)</title>
      <dc:creator>Aasif Ashraf</dc:creator>
      <pubDate>Thu, 16 Jul 2026 07:13:43 +0000</pubDate>
      <link>https://dev.to/aasifashraf/my-14-year-old-self-built-a-pen-and-paper-cipher-and-locked-me-out-14-years-later-55lh</link>
      <guid>https://dev.to/aasifashraf/my-14-year-old-self-built-a-pen-and-paper-cipher-and-locked-me-out-14-years-later-55lh</guid>
      <description>&lt;p&gt;Orignal Post : aasifashraf.dev/blogs&lt;/p&gt;

&lt;p&gt;As developers, we spend a lot of time thinking about encryption, secure authentication, and algorithmic logic. But recently I stumbled across a piece of paper from 2012 that reminded me I have been overengineering security systems since I was 14 years old.&lt;/p&gt;

&lt;p&gt;I found an old handwritten note labeled “My E-mail Password.” It wasn’t a password. It was a full-blown cryptographic escape room. Back then, living in Jammu &amp;amp; Kashmir when the internet had barely arrived and most calls still went through a landline, a personal email felt like owning a small piece of the future. I was terrified of forgetting the password, but writing it in plain text felt wrong, so I built this instead. It was so complex that today, 14 years later, I could not fully decode it myself.&lt;/p&gt;

&lt;p&gt;Press enter or click to view image in full size&lt;/p&gt;

&lt;p&gt;Here is a breakdown of the analog encryption algorithm my teenage brain invented. What makes it interesting is that none of it is throwaway: every string, number, and grid cell is live data, and the password only appears once you make all the layers interact.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Mathematical Key
At the bottom-right of the page sat a math problem: kx(x-2)+6=0. To even begin, you had to solve this quadratic for the case where the roots are equal, which gives k=6. That number 6 was the master pointer for the rest of the sheet, selecting which line the assembly would anchor on.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Become a Medium member&lt;br&gt;
math&lt;/p&gt;

&lt;p&gt;kx(x-2) + 6 = 0&lt;br&gt;
=&amp;gt; k·x^2 - 2k·x + 6 = 0&lt;/p&gt;

&lt;p&gt;equal roots  =&amp;gt;  discriminant = 0&lt;br&gt;
(2k)^2 - 4·k·6 = 0&lt;br&gt;
4k^2 - 24k = 0&lt;br&gt;
4k(k - 6) = 0&lt;br&gt;
=&amp;gt; k = 6   (the master pointer)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Eight Working Fragments&lt;br&gt;
The top-left held eight complex, scrambled password-like strings. The trap: if someone solved the key and guessed the 6th string was the password, they would fail. The real password was never written on any single line. It was fractured into pieces, a word, a date-like number run, and symbols, and those pieces were distributed across all eight strings at once. Every line carried a real part; none of them was a throwaway decoy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Relational Cipher Matrix&lt;br&gt;
This is where it got out of hand. The right side of the page added three interacting parts under the instruction “Nm thn elp” (Number, then elp):&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A list of nine long numeric strings: a key stream that dictated reading order.&lt;br&gt;
A 5x5 substitution matrix of letter pairs, labeled ‘elp’.&lt;br&gt;
A set of (x, y) coordinates, plus an assembly sequence that fixed the final order.&lt;br&gt;
To reassemble the password you cross-referenced the key stream against the coordinates, ran the result through the 5x5 matrix, and pulled characters out of the eight strings in exactly the right order. Get one step wrong and you got noise. Get every step right and the password fell out.&lt;/p&gt;

&lt;p&gt;This is precisely why engineers do not roll their own crypto. A homemade scheme feels unbreakable because you hold the trick in your head. The moment that memory fades, it is unbreakable even to you, which is the opposite of what a security system is for.&lt;/p&gt;

&lt;p&gt;The Verdict&lt;br&gt;
I might not remember the exact final execution step today, but I remember it worked perfectly back then. It kept everyone out, and it let me in. Looking at this sheet is a humbling reminder of where my developer journey actually started: before I could write code, I was already writing analog algorithms.&lt;/p&gt;

&lt;p&gt;I have always loved building complex systems, even when that meant making it absurdly hard just to check my own email. The instinct to protect information came years before the knowledge of how to do it properly, and closing that gap is a good description of what learning to be an engineer really is.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>devjournal</category>
      <category>security</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>I Built My Developer Portfolio Using Next.js</title>
      <dc:creator>Aasif Ashraf</dc:creator>
      <pubDate>Wed, 08 Apr 2026 15:46:41 +0000</pubDate>
      <link>https://dev.to/aasifashraf/i-built-my-developer-portfolio-using-nextjs-55e3</link>
      <guid>https://dev.to/aasifashraf/i-built-my-developer-portfolio-using-nextjs-55e3</guid>
      <description>&lt;p&gt;I Built My Developer Portfolio Using Next.js (100 Lighthouse Score)&lt;/p&gt;

&lt;p&gt;I recently built and deployed my personal portfolio using Next.js, focusing on performance, clean UI, and best practices. One of my main goals was to create a fast and accessible experience — and I managed to achieve a perfect 100 score across all Lighthouse metrics.&lt;/p&gt;

&lt;p&gt;In this project, I focused on:&lt;/p&gt;

&lt;p&gt;Optimized performance and SEO&lt;br&gt;
Clean and minimal UI/UX&lt;br&gt;
Scalable and production-ready structure&lt;/p&gt;

&lt;p&gt;I’d really appreciate any feedback from the community — especially on design, structure, or anything I can improve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aasifashraf.dev/" rel="noopener noreferrer"&gt;https://aasifashraf.dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built My Developer Portfolio Using Next.js (100 Lighthouse Score)

I recently built and deployed my personal portfolio using Next.js, focusing on performance, clean UI, and best practices. One of my main goals was to create a fast and accessible exper</title>
      <dc:creator>Aasif Ashraf</dc:creator>
      <pubDate>Tue, 07 Apr 2026 15:19:55 +0000</pubDate>
      <link>https://dev.to/aasifashraf/i-built-my-developer-portfolio-using-nextjs-100-lighthouse-score-i-recently-built-and-43je</link>
      <guid>https://dev.to/aasifashraf/i-built-my-developer-portfolio-using-nextjs-100-lighthouse-score-i-recently-built-and-43je</guid>
      <description></description>
    </item>
    <item>
      <title>I Built a Production-Ready Express.js Backend Scaffolder and It Reached 1,500 Downloads in 2 Days</title>
      <dc:creator>Aasif Ashraf</dc:creator>
      <pubDate>Mon, 02 Mar 2026 06:02:45 +0000</pubDate>
      <link>https://dev.to/aasifashraf/i-built-a-production-ready-expressjs-backend-scaffolder-and-it-reached-1500-downloads-in-2-days-416o</link>
      <guid>https://dev.to/aasifashraf/i-built-a-production-ready-expressjs-backend-scaffolder-and-it-reached-1500-downloads-in-2-days-416o</guid>
      <description>&lt;p&gt;Starting a new Node.js and Express project should feel exciting.&lt;/p&gt;

&lt;p&gt;For me, it usually started the same way rewriting the exact same setup every time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure Express&lt;/li&gt;
&lt;li&gt;Set up CORS&lt;/li&gt;
&lt;li&gt;Add dotenv&lt;/li&gt;
&lt;li&gt;Write global error handling&lt;/li&gt;
&lt;li&gt;Organize folders&lt;/li&gt;
&lt;li&gt;Standardize API responses&lt;/li&gt;
&lt;li&gt;Configure middleware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this work is difficult. It’s just repetitive.&lt;/p&gt;

&lt;p&gt;After doing this across multiple projects, I realized I was spending more time rebuilding structure than actually solving problems. So I decided to automate it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;create-express-kickstart&lt;/strong&gt;, a CLI tool that scaffolds a production-ready Express backend with sensible defaults and a clean structure.&lt;/p&gt;

&lt;p&gt;The goal wasn’t to replace Express or introduce another framework.&lt;/p&gt;

&lt;p&gt;It was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Start from a solid baseline and focus on building features instead of rewriting boilerplate.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-express-kickstart@latest my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within seconds, you get a structured backend ready to build on.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Sets Up
&lt;/h2&gt;

&lt;p&gt;Out of the box, the project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean and scalable folder structure&lt;/li&gt;
&lt;li&gt;Centralized error handling&lt;/li&gt;
&lt;li&gt;Middleware configuration&lt;/li&gt;
&lt;li&gt;Environment setup using &lt;code&gt;.env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;CORS configuration&lt;/li&gt;
&lt;li&gt;Standardized API response patterns&lt;/li&gt;
&lt;li&gt;Organized routing structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s essentially the setup I found myself recreating manually for every project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;Many tutorials focus on getting Express running quickly, which is great for learning.&lt;/p&gt;

&lt;p&gt;But real projects usually need more structure almost immediately.&lt;/p&gt;

&lt;p&gt;I wanted a starting point that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feels close to something you could actually deploy&lt;/li&gt;
&lt;li&gt;Encourages consistency across projects&lt;/li&gt;
&lt;li&gt;Remains simple without unnecessary abstraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, a backend I wouldn’t dread inheriting six months later.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Early Response
&lt;/h2&gt;

&lt;p&gt;After publishing it to npm, the package crossed around &lt;strong&gt;1,500 downloads in two days&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I understand npm downloads aren’t perfect metrics. They can include CI installs and automated pulls.&lt;/p&gt;

&lt;p&gt;Still, seeing people try it, discuss it, and give feedback was encouraging — especially as a first public package.&lt;/p&gt;




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

&lt;p&gt;Publishing something publicly feels very different from building it privately.&lt;/p&gt;

&lt;p&gt;A few takeaways:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Practical tools resonate
&lt;/h3&gt;

&lt;p&gt;Developers appreciate solutions that remove repetitive work.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Feedback comes quickly
&lt;/h3&gt;

&lt;p&gt;Some people were supportive. Some were skeptical. That’s part of open source.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Shipping matters more than perfection
&lt;/h3&gt;

&lt;p&gt;I considered waiting until it felt more complete. I’m glad I didn’t.&lt;/p&gt;




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

&lt;p&gt;I’m continuing to improve it based on feedback.&lt;/p&gt;

&lt;p&gt;Some things I’m exploring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optional database integrations&lt;/li&gt;
&lt;li&gt;Authentication starter modules&lt;/li&gt;
&lt;li&gt;Better CLI customization&lt;/li&gt;
&lt;li&gt;Optional testing setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have suggestions or think something important is missing, I’d genuinely like to hear them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Links
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/aasifashraf/create-express-kickstart" rel="noopener noreferrer"&gt;https://github.com/aasifashraf/create-express-kickstart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm Package:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/create-express-kickstart" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/create-express-kickstart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>node</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
