<?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>Forem: infinull</title>
    <description>The latest articles on Forem by infinull (@infinull).</description>
    <link>https://forem.com/infinull</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3654251%2F4a59a8d4-469f-4be9-b5b9-5fcfc195479f.png</url>
      <title>Forem: infinull</title>
      <link>https://forem.com/infinull</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/infinull"/>
    <language>en</language>
    <item>
      <title>My Hot Take On The Leetcode Obsession</title>
      <dc:creator>infinull</dc:creator>
      <pubDate>Sun, 15 Mar 2026 06:05:28 +0000</pubDate>
      <link>https://forem.com/infinull/my-hot-take-on-the-leetcode-obsession-3d2o</link>
      <guid>https://forem.com/infinull/my-hot-take-on-the-leetcode-obsession-3d2o</guid>
      <description>&lt;p&gt;Can we talk about leetcode for a minute?&lt;/p&gt;

&lt;p&gt;Seriously, What the hell are we spending our time on?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With the LeetCode Grind
&lt;/h2&gt;

&lt;p&gt;Give any LeetCode problem to an AI, and it can solve it in a couple of minutes.&lt;/p&gt;

&lt;p&gt;If that’s the reality now, &lt;strong&gt;why are we still grinding hundreds or thousands of problems?&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.amazonaws.com%2Fuploads%2Farticles%2F7omcmkrz1sg1b3pu3pf7.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%2F7omcmkrz1sg1b3pu3pf7.png" alt="leetcode-meme-01.png" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Honestly, I’m bored of solving the same patterns again and again. People talk about “mastering” problems, but the truth is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nobody remembers how to solve every problem they solved months ago&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unless you’re an AI… or an Asian. (those guys are just on another level)&lt;/p&gt;

&lt;p&gt;It’s not even a &lt;strong&gt;skill issue&lt;/strong&gt;. A lot of these problems require remembering subtle tricks or patterns. When you grind them repeatedly, you’re not really learning - You’re &lt;strong&gt;memorizing nuances&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Real problem solving requires &lt;strong&gt;time to analyze and think&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But grinding 1000+ problems forces you to &lt;strong&gt;recall patterns, not think&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  We're Solving The Wrong Problems
&lt;/h2&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%2Fa8r2ehamo9pyjyulk3o4.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%2Fa8r2ehamo9pyjyulk3o4.png" alt="computers-are-cool-meme.png" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look around you&lt;/p&gt;

&lt;p&gt;There's so much more interesting stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning Linux&lt;/li&gt;
&lt;li&gt;Understanding how OS works&lt;/li&gt;
&lt;li&gt;Exploring AI, MCP, Orchestration&lt;/li&gt;
&lt;li&gt;Diving into awesome Open Source Projects &lt;/li&gt;
&lt;li&gt;Contributing to Open Source&lt;/li&gt;
&lt;li&gt;Building Automations&lt;/li&gt;
&lt;li&gt;Learning how to scale real apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's an entire universe of things that are actually interesting and useful.&lt;/p&gt;

&lt;p&gt;And more importantly, there are &lt;strong&gt;real, unsolved problems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Meanwhile we’re spending hours mastering interview puzzles. &lt;strong&gt;Not one, not two, but thousands.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  But Recruiters Care About It, Right?
&lt;/h2&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%2Foau158amubaoac8y1498.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%2Foau158amubaoac8y1498.png" alt="interview-scenario-leetcode-meme.png" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah, sure. Many companies still use DSA interviews.&lt;/p&gt;

&lt;p&gt;But honestly, what sounds cooler?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solving &lt;strong&gt;3000+ LeetCode problems&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Or running &lt;strong&gt;Arch Linux&lt;/strong&gt;, automating stuffs, building stuff, and having a crazy Neovim setup?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One is grinding puzzles.&lt;/p&gt;

&lt;p&gt;The other is &lt;strong&gt;building and understanding real systems&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reason I Got Into Computers
&lt;/h2&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%2Fraw.githubusercontent.com%2Ftheinfinull%2Fportfolio%2Frefs%2Fheads%2Fmain%2Fsrc%2Fcontent%2Fblog%2Fhot-take-on-leetcode%2F.%2Fassets%2Fmy-first-laptop.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%2Fraw.githubusercontent.com%2Ftheinfinull%2Fportfolio%2Frefs%2Fheads%2Fmain%2Fsrc%2Fcontent%2Fblog%2Fhot-take-on-leetcode%2F.%2Fassets%2Fmy-first-laptop.jpg" alt="my-first-laptop.jpg" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was excited about computers in my childhood, not because it would get me a job and pay well. I did, because it was fascinating, exciting and FUN.&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%2Fraw.githubusercontent.com%2Ftheinfinull%2Fportfolio%2Frefs%2Fheads%2Fmain%2Fsrc%2Fcontent%2Fblog%2Fhot-take-on-leetcode%2F.%2Fassets%2Fthe-fun-part-of-computers.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%2Fraw.githubusercontent.com%2Ftheinfinull%2Fportfolio%2Frefs%2Fheads%2Fmain%2Fsrc%2Fcontent%2Fblog%2Fhot-take-on-leetcode%2F.%2Fassets%2Fthe-fun-part-of-computers.jpg" alt="the-fun-part-of-computers.jpg" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Playing GTA Vice City, Doom was fun.&lt;/li&gt;
&lt;li&gt;Setting cool wallpapers and screensavers in your old windows laptop was fun.&lt;/li&gt;
&lt;li&gt;Opening the terminal for the first time was fun.&lt;/li&gt;
&lt;li&gt;Writing your own tiny C++ programs in Turbo C that did some basic math and feeling ridiculously proud that it worked was fun.&lt;/li&gt;
&lt;li&gt;Building your first little tool, like a GPA calculator cause you needed it, was fun.&lt;/li&gt;
&lt;li&gt;Watching your site go live and refreshing the page 10 times, just to see it worked, was fun.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Computers were -- and still are -- fun.&lt;/p&gt;

&lt;p&gt;The fun wasn’t in chasing optimization tricks or memorizing patterns.&lt;/p&gt;

&lt;p&gt;Leetcode is not fun &lt;br&gt;
(Atleast, not for me)&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better Way To Look At This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learning DSA Matters, But grinding 1000 problems Does Not&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s be clear about one thing: &lt;strong&gt;DSA is important.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stuff like &lt;code&gt;Trees&lt;/code&gt;, &lt;code&gt;Graphs&lt;/code&gt;, &lt;code&gt;Recursion&lt;/code&gt;, &lt;code&gt;Hash maps&lt;/code&gt;, &lt;code&gt;Linked lists&lt;/code&gt; are fundamental ideas in computer science, They show up everywhere. &lt;/p&gt;

&lt;p&gt;Learning them is absolutely worth your time.&lt;/p&gt;

&lt;p&gt;But there’s a big difference between &lt;strong&gt;learning something new&lt;/strong&gt; and &lt;strong&gt;grinding same pattern again and again&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Solve a few problems to understand how these structures work. &lt;/p&gt;

&lt;p&gt;That's valuable.&lt;/p&gt;

&lt;p&gt;What isn’t valuable is solving &lt;strong&gt;hundreds or thousands of problems just to memorize patterns&lt;/strong&gt; for interviews.&lt;/p&gt;

&lt;p&gt;There are amazing competitive programming platforms like Codeforces, CodeChef, AtCoder.&lt;/p&gt;

&lt;p&gt;If you enjoy competitive programming, go all in. Compete, Solve, Climb the rankings,  become a Grandmaster or something.&lt;/p&gt;

&lt;p&gt;But doing it not because it's fun, but &lt;strong&gt;only because companies demand it&lt;/strong&gt; is where things become messed up.&lt;/p&gt;

&lt;h2&gt;
  
  
  So Leetcode is the problem, Right?
&lt;/h2&gt;

&lt;p&gt;The problem isn’t even LeetCode itself.&lt;/p&gt;

&lt;p&gt;The problem is the &lt;strong&gt;culture we built around it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The culture where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Solve the &lt;strong&gt;Top 100 FAANG Repeated Questions&lt;/strong&gt;”&lt;/li&gt;
&lt;li&gt;“Comment CheatSheet to Get 2026 FAANG CheatSheet”&lt;/li&gt;
&lt;li&gt;“Memorize these patterns and you'll crack any interview”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;somehow became the holy grail of becoming a good engineer. &lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;And honestly, the problem isn’t the platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem is us.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We turned interview puzzles into the ultimate benchmark of engineering ability.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Personally, I’d take &lt;strong&gt;real system knowledge&lt;/strong&gt; over a &lt;strong&gt;3000+ LeetCode badge on LinkedIn&lt;/strong&gt; any day.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I did waste my time on this for a long time.&lt;/p&gt;

&lt;p&gt;Following a DSA sheet. Solving every problem. Taking notes. Then coming back after a month to solve them again.&lt;/p&gt;

&lt;p&gt;But recently, I met some cool people doing things I actually found exciting. They knew a lot of stuff about systems. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;running their own homelabs&lt;/li&gt;
&lt;li&gt;customizing Linux setups&lt;/li&gt;
&lt;li&gt;contributing to open source&lt;/li&gt;
&lt;li&gt;understanding how systems really work
All the stuff I always wanted to explore.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yet I kept pushing those things aside because &lt;em&gt;“I should probably solve a few more LeetCode problems first.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Looking back, that was probably the wrong priority.&lt;/p&gt;

&lt;p&gt;This post is mostly a reminder to myself that:&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%2Fh4zzkxy0enuwfl6hj0fg.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%2Fh4zzkxy0enuwfl6hj0fg.png" alt="red-bill-blue-pill-meme.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have two choices&lt;/p&gt;

&lt;p&gt;Follow the boring manual and be the 1001st guy, who did the same thing successfully.&lt;/p&gt;

&lt;p&gt;Or take a leap of faith on what your heart says. Because in the end, all that really matters is that you had fun along the way.&lt;/p&gt;

&lt;p&gt;Have fun.&lt;/p&gt;

</description>
      <category>thoughts</category>
      <category>leetcode</category>
    </item>
    <item>
      <title>The Skill of Reading Code</title>
      <dc:creator>infinull</dc:creator>
      <pubDate>Sun, 25 Jan 2026 13:03:02 +0000</pubDate>
      <link>https://forem.com/infinull/the-skill-of-reading-code-3ah6</link>
      <guid>https://forem.com/infinull/the-skill-of-reading-code-3ah6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A developer's job is 90% reading code and 10% writing it.&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.amazonaws.com%2Fuploads%2Farticles%2Fijf1i0uckc68k9sv5ah9.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%2Fijf1i0uckc68k9sv5ah9.png" alt="reading-code-meme.png" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost every course found online, or taught in university is about writing code.  Clean code, best practices, class design patterns. All good stuff. But in reality we spend a huge chunk of our time in reading someone else's code, which is often neither clean nor documented.&lt;/p&gt;

&lt;p&gt;Reading code isn't like reading a book, you go line by line, drop a single bookmark, and continue where you left off the next day. NO! It's messy, non-linear and you gotta load the entire flow into your mind. &lt;/p&gt;

&lt;p&gt;I wanna quote the term &lt;strong&gt;Mind Map&lt;/strong&gt; here. Imagine exploring a new city, you start somewhere, walk through a couple of streets, visit some important places &lt;strong&gt;the Supermarket&lt;/strong&gt;, &lt;strong&gt;the Restaurant&lt;/strong&gt;. Slowly build your own map. You don't know every street, but you know the places that matter. Some roads are familiar, some are just &lt;em&gt;“I know it's around here”&lt;/em&gt;, rest you ignore.&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%2Fqi8ljv3bfurnnhj4eul0.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.amazonaws.com%2Fuploads%2Farticles%2Fqi8ljv3bfurnnhj4eul0.jpg" alt="mind-map.jpg" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading code is just like that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Reading Code Feels Hard?
&lt;/h2&gt;

&lt;p&gt;Think of our brain like a RAM. &lt;/p&gt;

&lt;p&gt;Every new file, every function forces you to load context into your brain. Not only that, you're required to also understand the code's intent by looking at variable names like &lt;code&gt;data&lt;/code&gt;, &lt;code&gt;data_cleaned&lt;/code&gt;, &lt;code&gt;data_cleaned_final&lt;/code&gt; and functions like &lt;code&gt;process()&lt;/code&gt;, &lt;code&gt;preProcess()&lt;/code&gt;, &lt;code&gt;validate()&lt;/code&gt; and god knows what. &lt;/p&gt;

&lt;p&gt;So now your brain isn’t just storing context. It’s resolving stuff like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Is &lt;code&gt;process()&lt;/code&gt; the main logic or a helper?”&lt;/li&gt;
&lt;li&gt;“Why is &lt;code&gt;data_cleaned_final&lt;/code&gt; still being modified?”&lt;/li&gt;
&lt;li&gt;“Which of these functions actually does the important thing?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, it’s no longer just a &lt;strong&gt;Memory problem&lt;/strong&gt;. It’s a &lt;strong&gt;CPU problem&lt;/strong&gt; too.&lt;/p&gt;

&lt;p&gt;Reading code isn’t free. It’s &lt;strong&gt;Computationally Expensive&lt;/strong&gt;. And requires some patience&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;And this is where rewriting it &lt;strong&gt;from scratch&lt;/strong&gt; starts to feel like a better idea. (or is it?)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pros of Being Better at Reading Code&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Makes you better at your 9-to-5 job
&lt;/h3&gt;

&lt;p&gt;New project, new team, new repo - the fastest way to become useful isn't writing features. It's understanding flow.&lt;/p&gt;

&lt;p&gt;Take a bugfix, for example, Your ability to write the perfect fix is secondary. What matters more is how fast you find the point of failure once the bug is discovered. That means loading context faster into your brain, identifying critical data from noisy logs, and tracing the buggy path through the codebase without getting lost.&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%2Fiwsoyia8rxs3hx0uqsdc.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%2Fiwsoyia8rxs3hx0uqsdc.png" alt="mike-fixing-bugs-meme.png" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same goes when you're building a new feature. You’re not starting from a blank file. You’re navigating an existing system. Understanding edge cases, knowing which parts will be affected, and spotting where changes &lt;em&gt;should&lt;/em&gt; happen versus where they &lt;em&gt;merely could&lt;/em&gt; happen.&lt;/p&gt;

&lt;p&gt;Nobody knows everything when they start. The real difference is how fast you can read and update your brain with the provided information, and update it as you go.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Changed Writing Code. Not Understanding It
&lt;/h3&gt;

&lt;p&gt;I’ll argue that &lt;strong&gt;Reading code is a mandatory skill in the AI era&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We now have vibe-coding tools which can spit out huge amount of code in seconds. Right now you can one-shot an entire full-stack app with a decent prompt. On the surface, it looks like the problem of &lt;em&gt;producing&lt;/em&gt; code is solved.&lt;/p&gt;

&lt;p&gt;It isn't&lt;/p&gt;

&lt;p&gt;AI didn't remove the need to understand code - it multiplied it. The &lt;strong&gt;Feeback Loop&lt;/strong&gt; is the real bottleneck.&lt;/p&gt;

&lt;p&gt;Every generated slop still needs to be read, reviewed, trimmed and given a feedback for update. If you can scan code quickly, spot bugs, notice repeated patterns, and identify unnecessary abstractions, you can make decisions faster - and faster decisions lead to better prompts, better iterations, and better code.&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%2Fkskcwf2yortv6ew227s7.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%2Fkskcwf2yortv6ew227s7.png" alt="vibe-debugging-meme.png" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Until AI can fully understand your intent, or we invent a way to absorb massive codebases instantly - &lt;strong&gt;Reading code remains non-negotiable&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  So How Do We Improve It?
&lt;/h2&gt;

&lt;p&gt;Here's a few tips I learnt along the way, which helped me a lot&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Better Syntax Highlighting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use a good theme.&lt;/strong&gt; It sounds like beginner advice, but it makes a real difference when reading code. Code is a mix of classes, variables, keywords, strings, and expressions - and your theme should help you distinguish these at a single glance, not make everything look the same for the sake of a “hacker vibe.”&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%2Fzfoqd8l5ss5hfrdkbuso.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%2Fzfoqd8l5ss5hfrdkbuso.png" alt="syntax-highlighting-better-vs-worse.png" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency matters too.&lt;/strong&gt; Using one information-rich theme across all your tools reduces cognitive friction and helps your brain build familiarity faster. Personally, I find VS Code’s default theme surprisingly well-balanced and use it in IntelliJ and Neovim as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Use Every Context Available
&lt;/h3&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%2F2n5m5jg4dm5ilwulfjya.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%2F2n5m5jg4dm5ilwulfjya.png" alt="handshake-reading-code-meme.png" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code you're reading is just the final snapshot. If your goal is just to understand the current behavior, that’s often enough. But if you’re trying to answer questions like - &lt;strong&gt;how a bug happened&lt;/strong&gt;, &lt;strong&gt;why a flawed change was approved&lt;/strong&gt;, or &lt;strong&gt;how it even reached production&lt;/strong&gt;- the code alone won’t cut it. You need more data. You need &lt;strong&gt;context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Start with &lt;strong&gt;Git History&lt;/strong&gt;. Commit messages often contain intent, trade-offs, and time pressure. They explain why something changed, not just what changed.&lt;/p&gt;

&lt;p&gt;Move on to &lt;strong&gt;Pull requests (PRs) and Merge requests (MRs)&lt;/strong&gt; which contain even more info.  Discussions, Rejected ideas, and edge cases that shaped the final code. Many confusing bugs make perfect sense once you read the conversation around them.&lt;/p&gt;

&lt;p&gt;When needed skim tickets, design notes - even outdated ones, because they reveal assumptions the code was built on.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Know your tool
&lt;/h3&gt;

&lt;p&gt;Modern IDEs aren't just for improving writing code - they're powerful navigation tools too. Use the built-in features to improve your code reading.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Find Usages&lt;/strong&gt; and &lt;strong&gt;Find References&lt;/strong&gt; to understand how a piece of code is used in the codebase&lt;/li&gt;
&lt;li&gt;Visualize File history &amp;amp; Blame to understand how code evolved&lt;/li&gt;
&lt;li&gt;Collapse / Expand code to see file structure at a glance&lt;/li&gt;
&lt;li&gt;Use Zen mode to remove distractions and maximize code focus when reading&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.amazonaws.com%2Fuploads%2Farticles%2Fqnmxokd208tvbhhy30oe.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%2Fqnmxokd208tvbhhy30oe.png" alt="zen-mode.png" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Annotate the code
&lt;/h3&gt;

&lt;p&gt;Reading code is a &lt;em&gt;process&lt;/em&gt;. You don’t sit down, read top-to-bottom, and walk away enlightened. You forget. You come back. You lose context after a tea break. Or worse - after a weekend.&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%2Fl02zyi9g6roo7ohnv86a.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%2Fl02zyi9g6roo7ohnv86a.png" alt="annotate-code.png" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's why annotation matters.&lt;/p&gt;

&lt;p&gt;Write things down. Mark things (bookmark) in IDE. Leave breadcrumbs for your future self.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;pen and paper&lt;/strong&gt; to jot down important flows, assumptions, and "ohh, i see" stuff.&lt;/p&gt;

&lt;p&gt;Inside your IDE, bookmarks and pins are insanely effective. They save minutes every time you jump back to a specific piece of code&lt;/p&gt;

&lt;p&gt;Days later, you reopen the file, see the note, and instantly know where you were, even after a sudden meeting or a bit of small talk.&lt;/p&gt;

&lt;p&gt;Personally I use a mix of both, bookmarking references in IDE rather than writing them in note. I pin important files instead of maintaining a separate "remember this later" list. For understanding flow, drawings beat text every time - whether it’s a quick sketch on paper or a rough board in Excalidraw or Obsidian Canvas.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Try not to judge the code, but learn from it
&lt;/h3&gt;

&lt;p&gt;This is the last and most important one.&lt;/p&gt;

&lt;p&gt;Judging code too early blocks understanding. The moment you label something as “bad” or “messy”, your brain stops exploring and starts resisting. 9 out of 10 times, the mess has it's reasons. And you usually uncover those reasons only by reading through it.&lt;/p&gt;

&lt;p&gt;Reading messy code is valuable too. It shows you what not to do, which cases cause bugs and where assumptions may break. &lt;/p&gt;

&lt;p&gt;Starting from scratch isn’t always the right move&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rename before refactoring&lt;/li&gt;
&lt;li&gt;Delete only after you know why it exists&lt;/li&gt;
&lt;li&gt;Rewrite only when you can clearly explain why the current version fails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few minutes spent humbly reading the code often saves hours of confusion, frustration, and unnecessary reimplementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;Reading code isn’t a secondary skill. &lt;strong&gt;It is the job&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So don't rush past reading. Every minute spent forming the mind map, saves hours of wrong implementation later.&lt;/p&gt;

&lt;p&gt;Hope it helps!&lt;/p&gt;

</description>
      <category>tips</category>
      <category>softwareengineering</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The First Commit</title>
      <dc:creator>infinull</dc:creator>
      <pubDate>Tue, 13 Jan 2026 03:52:54 +0000</pubDate>
      <link>https://forem.com/infinull/the-first-commit-4lbm</link>
      <guid>https://forem.com/infinull/the-first-commit-4lbm</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Hey everyone, I'm Infinull, a Software Developer. If you're curious to know more about me, you can find that &lt;a href="https://theinfinull.com/about" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I've decided to give blogging a shot.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In my day-to-day life, there a lot of stuff which I stumble across. This blog is a place to capture a few of them and make it public. The entire motive is to share stuff that might actually help somebody out there. (or atleast make em laugh)&lt;/p&gt;

&lt;h1&gt;
  
  
  The (Un)Plan
&lt;/h1&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%2Fk6rm9ysfhfbc8rq5a7or.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%2Fk6rm9ysfhfbc8rq5a7or.png" alt="no-plan.png" width="526" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I honestly have no idea how this will evolve over time. It might change shape, tone or direction - and that's okay. What I do know is that I'd rather build, break and learn stuff in public than let it sit in a private draft forever. Whether it's a weird bug that ruined my sleep, a tool which saved me hours, or a random project idea which never saw the light of day - If i feel like sharing it, It'll be here.&lt;/p&gt;

&lt;p&gt;No promises, no plans, just a developer sharing some stuff.&lt;/p&gt;

&lt;h1&gt;
  
  
  Outro
&lt;/h1&gt;

&lt;p&gt;So yeah - Welcome. Stick around, explore, and hopefully you'll find some cool stuff here. If you wanna know the entire backstory behind the blog, kindly checkout &lt;a href="https://theinfinull.com/blog/story-behind-this-blog" rel="noopener noreferrer"&gt;this one&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay tuned. See ya around 👋🏻&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>story</category>
    </item>
    <item>
      <title>How I Built My Own Blog - And You Can Too</title>
      <dc:creator>infinull</dc:creator>
      <pubDate>Tue, 13 Jan 2026 03:48:54 +0000</pubDate>
      <link>https://forem.com/infinull/how-i-built-my-own-blog-and-you-can-too-42o1</link>
      <guid>https://forem.com/infinull/how-i-built-my-own-blog-and-you-can-too-42o1</guid>
      <description>&lt;h2&gt;
  
  
  How it all started
&lt;/h2&gt;

&lt;p&gt;You know that feeling when you find something so cool, you have to tell someone? That was me a few weeks back. My first instinct? grab a few screenshots, head straight to Linkedin and hit post.&lt;/p&gt;

&lt;p&gt;But something felt off. The post went live, got a few likes, and then... it disappeared into the endless scroll. That's when it hit me: what was I really trying to achieve here? A LinkedIn post has a shelf life of about 24 hours before it becomes digital dust. If someone needed this information next week, next month, or next year, how would they find it? The answer was clear: they wouldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Search For Something Better
&lt;/h2&gt;

&lt;p&gt;After days of hopping between platforms, I realized I needed something structured, flexible, and more findable in this vast internet. I started where everyone does - popular blogging platforms. They were polished, powerful, easy to use, packed with features like SEO optimization, clean typography and much more.&lt;/p&gt;

&lt;p&gt;Some of the hosted solution I found are : &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; / &lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; / &lt;a href="https://hashnode.com/" rel="noopener noreferrer"&gt;Hashnode&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.amazonaws.com%2Fuploads%2Farticles%2Fc5u5ouilxmydqb2crba2.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%2Fc5u5ouilxmydqb2crba2.png" alt="hashnode-devto-medium.png" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are some really awesome sites, but they all felt kinda same, polished, yet not personal. So somewhere along the way, I stopped chasing &lt;strong&gt;The Best Blog&lt;/strong&gt; 🏆, I just wanted &lt;strong&gt;my&lt;/strong&gt; blog, even if it was a simple one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Astro
&lt;/h2&gt;

&lt;p&gt;I explored a few self-hostable options like &lt;a href="https://ghost.org/" rel="noopener noreferrer"&gt;Ghost&lt;/a&gt;, &lt;a href="https://wordpress.com/blog/" rel="noopener noreferrer"&gt;WordPress&lt;/a&gt; and a whole world of static site generators like &lt;a href="https://jekyllrb.com/" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt;, &lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;Hugo&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.amazonaws.com%2Fuploads%2Farticles%2F9z2fk2sim1g2usmojysf.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%2F9z2fk2sim1g2usmojysf.png" alt="wordpress-ghost-meme.png" width="800" height="422"&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.amazonaws.com%2Fuploads%2Farticles%2Ftfonm6a2hxxfmq6v9dyi.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%2Ftfonm6a2hxxfmq6v9dyi.png" alt="jekyll-hugo-meme.png" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ghost and Wordpress are powerful and feature packed - but heavy for my use case. &lt;/p&gt;

&lt;p&gt;Jekyll &amp;amp; Hugo were tempting, fast and popular - but unfamiliar (Ruby &amp;amp; Go). That meant an extra learning curve I wasn't ready to climb.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ℹ️ Honestly, they’re excellent tools, but they didn’t quite fit what I needed for this one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After a long search, I stumbled upon &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; - a modern static site framework that generates content directly from Markdown files, which I thought was super cool, since I was already using &lt;a&gt;Obsidian&lt;/a&gt; (that’s a story for another blog 😅). I was impressed right away.&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%2Fbmi6m6w4t4g0eup67gg8.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%2Fbmi6m6w4t4g0eup67gg8.png" alt="astro-meme.png" width="800" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While digging deeper into Astro-based blogging setups, I found an awesome repo &lt;a href="https://github.com/jktrn/astro-erudite" rel="noopener noreferrer"&gt;astro-erudite&lt;/a&gt; which was opinionated - but in a good way. Clean structure, sensible defaults, and just enough constraints to keep things elegant. I liked it immediately and started tinkering with it.&lt;/p&gt;

&lt;p&gt;After a few sleepless nights, I'd shaped it to fit my own needs - learning Tailwind and Astro along the way.&lt;/p&gt;

&lt;p&gt;And here it is: my own blog and portfolio, built exactly the way I wanted. &lt;a href="https://theinfinull.com/" rel="noopener noreferrer"&gt;Live Here!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Your Own Blog
&lt;/h2&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%2Frjokfi9q5vgepw5bc44e.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%2Frjokfi9q5vgepw5bc44e.png" alt="buil-blog-banner.png" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Honestly, as I'm a backend guy and wanted a fast solution, so I picked this template as a good starting point. If you’re thinking about building your own site, here’s a no-nonsense path that works well:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Decide your goal
&lt;/h3&gt;

&lt;p&gt;Blog? Portfolio? Both? Don't over-scope it - Be clear on what you want.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Pick a starting point
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Use a template if you wanna move fast (like me)&lt;/li&gt;
&lt;li&gt;Build one from scratch, if you enjoy design and setup&lt;/li&gt;
&lt;li&gt;Use a CMS if writing is your only priority
### 3. Choose a stack you're comfortable with
Familiar tools reduce friction. Static generators like &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;&lt;strong&gt;Astro&lt;/strong&gt;&lt;/a&gt; are a great balance between flexibility and simplicity.
### 4. Write in Markdown
It’s portable, future-proof, and keeps content separate from presentation. 
### 5. Iterate Slowly
Add features only when you feel the need. &lt;strong&gt;A plain site you ship today is better than a perfect one running in your localhost.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How (and Where) to Host It?
&lt;/h2&gt;

&lt;p&gt;Once your site is ready, the next big question is: &lt;strong&gt;where does it live?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For now, I went with &lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt;&lt;/a&gt;. It’s fast, generous with its free tier, and removes almost all the friction from deploying a static site. Push to Git, and your site is live—no servers, no maintenance, no stress. &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%2Fe1ksf9hqirigib3mkajc.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%2Fe1ksf9hqirigib3mkajc.png" alt="cloudflare-cdn-meme.png" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a bonus, it had excellent support with Astro, making the whole build-and-deploy flow feel effortless. &lt;/p&gt;

&lt;p&gt;Here are a few alternate options :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; - Great dev experience, free tier&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; - Easy deployment, free tier available&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pages.github.com/" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt; - Free for public repos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosting&lt;/strong&gt; - Full control (Planning to move here soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The good news? For a personal blog or portfolio, &lt;strong&gt;any of these free tiers are more than enough&lt;/strong&gt;. Pick the one that helps you get online fastest - you can always switch later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;So yeah, finally here's the first version after a few sleepless nights and a plenty of tinkering.&lt;/p&gt;

&lt;p&gt;It's not perfect and it doesn't has to be. It's &lt;strong&gt;mine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you find some bugs here and there, kindly drop an email to &lt;a href="mailto:theinfinull@gmail.com"&gt;theinfinull@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;❗ If you're thinking about starting your own blog, just do it. Pick a template, customize it, deploy it, and start writing. The best time to start was yesterday, the second best time is now. ☺️&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for reading this!&lt;/p&gt;

</description>
      <category>astro</category>
      <category>blogging</category>
      <category>staticsites</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
