<?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: Sachin Kizhakkepurath</title>
    <description>The latest articles on DEV Community by Sachin Kizhakkepurath (@z4k7).</description>
    <link>https://dev.to/z4k7</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%2F2242214%2Fe07c8282-a239-4c24-84c0-c0622bd20953.jpeg</url>
      <title>DEV Community: Sachin Kizhakkepurath</title>
      <link>https://dev.to/z4k7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/z4k7"/>
    <language>en</language>
    <item>
      <title>I Got Tired of Manually Sizing Skeleton Loaders in Angular, So I Built a Directive for It</title>
      <dc:creator>Sachin Kizhakkepurath</dc:creator>
      <pubDate>Tue, 23 Jun 2026 02:47:08 +0000</pubDate>
      <link>https://dev.to/z4k7/i-got-tired-of-manually-sizing-skeleton-loaders-in-angular-so-i-built-a-directive-for-it-58n5</link>
      <guid>https://dev.to/z4k7/i-got-tired-of-manually-sizing-skeleton-loaders-in-angular-so-i-built-a-directive-for-it-58n5</guid>
      <description>&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%2Fagn9qyhrbwzg2fjn1uj9.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%2Fagn9qyhrbwzg2fjn1uj9.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
We've all been there.&lt;/p&gt;

&lt;p&gt;You're building a loading state for a page, and you decide to add skeleton loaders to improve the user experience.&lt;/p&gt;

&lt;p&gt;The implementation seems straightforward at first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"skeleton"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 300px; height: 40px;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you add another one.&lt;/p&gt;

&lt;p&gt;And another.&lt;/p&gt;

&lt;p&gt;Soon you're manually matching widths and heights to buttons, cards, profile sections, tables, and every other UI element in your application.&lt;/p&gt;

&lt;p&gt;The problem isn't that it's difficult.&lt;/p&gt;

&lt;p&gt;The problem is that it's repetitive.&lt;/p&gt;

&lt;p&gt;And repetitive problems usually deserve better solutions.&lt;/p&gt;

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

&lt;p&gt;While working on Angular applications, I kept asking myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why should I have to tell a skeleton loader how big it should be when the host element already knows its own dimensions?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of manually configuring every skeleton, what if the skeleton could simply adapt to the size of the element it replaces?&lt;/p&gt;

&lt;p&gt;That idea became &lt;strong&gt;skedapt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An Angular directive that automatically generates skeleton loaders based on the dimensions of the host element.&lt;/p&gt;

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

&lt;p&gt;Instead of creating separate skeleton components and manually managing dimensions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;[skedapt]=&lt;/span&gt;&lt;span class="s"&gt;"isLoading"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Content goes here
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When &lt;code&gt;isLoading&lt;/code&gt; is true, skedapt automatically generates a skeleton loader that matches the dimensions of the host element.&lt;/p&gt;

&lt;p&gt;No manual width.&lt;/p&gt;

&lt;p&gt;No manual height.&lt;/p&gt;

&lt;p&gt;No extra setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goals Behind the Package
&lt;/h2&gt;

&lt;p&gt;When building skedapt, I wanted it to be:&lt;/p&gt;

&lt;h3&gt;
  
  
  Zero Configuration
&lt;/h3&gt;

&lt;p&gt;Install it and start using it immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Host Element Adaptation
&lt;/h3&gt;

&lt;p&gt;The skeleton should automatically adapt to the element's size.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimal Boilerplate
&lt;/h3&gt;

&lt;p&gt;Developers shouldn't have to write extra CSS or duplicate layouts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Theme Friendly
&lt;/h3&gt;

&lt;p&gt;Support customization through CSS variables so applications can easily match their existing design systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in Shimmer Effect
&lt;/h3&gt;

&lt;p&gt;A loading state should look polished without requiring additional configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Challenges
&lt;/h2&gt;

&lt;p&gt;Building the package turned out to be a great learning experience.&lt;/p&gt;

&lt;p&gt;Some of the areas I explored included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular library development&lt;/li&gt;
&lt;li&gt;npm publishing workflows&lt;/li&gt;
&lt;li&gt;Runtime style injection&lt;/li&gt;
&lt;li&gt;Directive API design&lt;/li&gt;
&lt;li&gt;Theme-aware styling&lt;/li&gt;
&lt;li&gt;Reusable UI utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the most interesting parts was figuring out how to dynamically generate skeleton styles at runtime while keeping the developer experience simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;I originally built this to solve a problem for myself.&lt;/p&gt;

&lt;p&gt;But after using it across multiple projects, I realized other Angular developers might be dealing with the same frustration.&lt;/p&gt;

&lt;p&gt;Publishing it as an npm package felt like the natural next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;If you're interested in giving it a try:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/skedapt" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/skedapt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Add your repository link here)&lt;/p&gt;

&lt;p&gt;I'd love to hear feedback, suggestions, or ideas for future improvements.&lt;/p&gt;

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

&lt;p&gt;This is my first published npm package.&lt;/p&gt;

&lt;p&gt;It's a small project, but it represents something bigger for me.&lt;/p&gt;

&lt;p&gt;Not just writing code for applications.&lt;/p&gt;

&lt;p&gt;Building tools that help other developers write less code.&lt;/p&gt;

&lt;p&gt;And that's a journey I'm excited to continue.&lt;/p&gt;

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

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>npm</category>
    </item>
    <item>
      <title>After 3 months of AI doomscrolling, I realized most developers are worried about the wrong things.</title>
      <dc:creator>Sachin Kizhakkepurath</dc:creator>
      <pubDate>Mon, 01 Jun 2026 09:21:27 +0000</pubDate>
      <link>https://dev.to/z4k7/after-3-months-of-ai-doomscrolling-i-realized-most-developers-are-worried-about-the-wrong-things-2ag9</link>
      <guid>https://dev.to/z4k7/after-3-months-of-ai-doomscrolling-i-realized-most-developers-are-worried-about-the-wrong-things-2ag9</guid>
      <description>&lt;p&gt;For the last few months, I've been reading AI papers, watching demos, testing ChatGPT, Claude, Cursor, Copilot, and generally trying to figure out what AI actually means for developers.&lt;/p&gt;

&lt;p&gt;Like a lot of people, I started from a place of anxiety.&lt;/p&gt;

&lt;p&gt;Every week there seemed to be a new headline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI writes code&lt;/li&gt;
&lt;li&gt;AI builds apps&lt;/li&gt;
&lt;li&gt;AI replaces engineers&lt;/li&gt;
&lt;li&gt;One developer can now do the work of ten&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The more I dug into it, the more I noticed something interesting.&lt;/p&gt;

&lt;p&gt;AI is incredibly good at generating answers.&lt;/p&gt;

&lt;p&gt;It's much less good at figuring out what question should be asked in the first place.&lt;/p&gt;

&lt;p&gt;That's the part many discussions miss.&lt;/p&gt;

&lt;p&gt;In my day-to-day work, the hardest problems are rarely about writing code.&lt;/p&gt;

&lt;p&gt;They're usually things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding vague requirements&lt;/li&gt;
&lt;li&gt;Figuring out what stakeholders actually want&lt;/li&gt;
&lt;li&gt;Deciding between multiple imperfect solutions&lt;/li&gt;
&lt;li&gt;Navigating technical debt&lt;/li&gt;
&lt;li&gt;Balancing business constraints with engineering quality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are fundamentally context problems.&lt;/p&gt;

&lt;p&gt;AI can help with them, but it doesn't own them.&lt;/p&gt;

&lt;p&gt;Another thing I realized is that experienced developers often underestimate how much domain knowledge they've accumulated.&lt;/p&gt;

&lt;p&gt;When I look at a piece of code, I'm not just reading syntax.&lt;/p&gt;

&lt;p&gt;I'm thinking about maintainability, edge cases, customer impact, previous incidents, team conventions, performance tradeoffs, and future changes.&lt;/p&gt;

&lt;p&gt;A language model can generate code.&lt;/p&gt;

&lt;p&gt;It doesn't have years of accumulated context about why a particular decision matters.&lt;/p&gt;

&lt;p&gt;Ironically, AI has made me value human skills more, not less.&lt;/p&gt;

&lt;p&gt;Communication.&lt;/p&gt;

&lt;p&gt;Judgment.&lt;/p&gt;

&lt;p&gt;Problem framing.&lt;/p&gt;

&lt;p&gt;Understanding people.&lt;/p&gt;

&lt;p&gt;Those things have become more important because the mechanical part of coding is getting cheaper.&lt;/p&gt;

&lt;p&gt;My current view is that developers who learn to use AI effectively will probably become much more productive.&lt;/p&gt;

&lt;p&gt;But I don't think the biggest risk is AI replacing developers.&lt;/p&gt;

&lt;p&gt;I think the bigger risk is developers assuming that writing code was the entirety of their value.&lt;/p&gt;

&lt;p&gt;Curious how other people are thinking about this.&lt;/p&gt;

&lt;p&gt;Have AI tools changed your view of what makes a good developer?&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;p&gt;I eventually turned my research into a short ebook called &lt;strong&gt;From Fear to Fluent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you'd like a deeper dive into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How LLMs actually work&lt;/li&gt;
&lt;li&gt;What AI can and cannot replace&lt;/li&gt;
&lt;li&gt;Using AI as a pair programmer&lt;/li&gt;
&lt;li&gt;Future-proofing your career as a developer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check it out here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://z4kettan.gumroad.com/l/wrwiin" rel="noopener noreferrer"&gt;Get the ebook&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
    </item>
  </channel>
</rss>
