<?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: jackomosh</title>
    <description>The latest articles on DEV Community by jackomosh (@jackomosh).</description>
    <link>https://dev.to/jackomosh</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%2F713167%2F2aaa927d-2e50-44ee-ac73-19008f31b61f.png</url>
      <title>DEV Community: jackomosh</title>
      <link>https://dev.to/jackomosh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jackomosh"/>
    <language>en</language>
    <item>
      <title>Go for Frontend Developers: Building Instant API Endpoints</title>
      <dc:creator>jackomosh</dc:creator>
      <pubDate>Mon, 14 Sep 2026 09:01:20 +0000</pubDate>
      <link>https://dev.to/jackomosh/go-for-frontend-developers-building-instant-api-endpoints-38d</link>
      <guid>https://dev.to/jackomosh/go-for-frontend-developers-building-instant-api-endpoints-38d</guid>
      <description>&lt;p&gt;When you first start out in frontend development, it is easy to think that User Experience (UX) is entirely about what happens inside the browser. You focus on smooth CSS transitions, pixel-perfect layouts, and fast React components. But eventually, you build a feature that feels laggy, even though your JavaScript code is totally fine. &lt;/p&gt;

&lt;p&gt;The problem usually isn't your frontend code. It's the time your application spends waiting for the backend to reply.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Backend Black Box
&lt;/h3&gt;

&lt;p&gt;For many junior frontend developers, the backend feels like a distant black box. You send an HTTP request using &lt;code&gt;fetch()&lt;/code&gt;, wait a moment, and hope JSON data comes back. But if that API endpoint takes half a second to respond every time a user clicks a button, your interface will feel heavy and unresponsive. &lt;/p&gt;

&lt;p&gt;No amount of beautiful CSS can fix an app that constantly makes the user wait. Speed is a feature, and backend latency directly ruins frontend UX.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Learning a Bit of Go Helps You
&lt;/h3&gt;

&lt;p&gt;This is where Go (or Golang) enters the picture. Go is a programming language built by Google specifically to be fast, simple, and efficient. You don't need to become a full-time backend engineer, but understanding why Go is so popular for APIs will instantly make you a better frontend developer.&lt;/p&gt;

&lt;p&gt;Here is what Go teaches you about building better user experiences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sub-Millisecond Speed:&lt;/strong&gt; Go compiles directly into machine code. It can handle incoming requests in a tiny fraction of a millisecond, meaning your UI gets its data back almost instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight Payloads:&lt;/strong&gt; Go encourages simple, clean data structures. When you see how backend languages format data, you start asking for smaller, leaner JSON payloads instead of massive objects that slow down browser rendering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrency Made Easy:&lt;/strong&gt; Go can handle thousands of users making requests at the exact same time without slowing down. This means your UI stays fast even during high traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Junior to Senior Shift
&lt;/h3&gt;

&lt;p&gt;As a junior developer, it's normal to focus only on your immediate codebase. But moving toward a senior mindset means seeing the whole picture. When you understand how lightweight backends work, you can talk to backend teams more effectively, help debug slow network requests, and design interfaces that account for real-world API performance.&lt;/p&gt;

&lt;p&gt;Next time your app feels slow, look past your JavaScript components and check the network tab. Learning even the basics of a fast backend language like Go will help you build web applications that feel truly instant.&lt;/p&gt;

</description>
      <category>go</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>backend</category>
    </item>
    <item>
      <title>Which one? Loading Spinners vs Skeleton Screen vs Blank Page</title>
      <dc:creator>jackomosh</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:58:12 +0000</pubDate>
      <link>https://dev.to/jackomosh/which-one-loading-spinners-vs-skeleton-screen-vs-blank-page-4p75</link>
      <guid>https://dev.to/jackomosh/which-one-loading-spinners-vs-skeleton-screen-vs-blank-page-4p75</guid>
      <description>&lt;p&gt;When I first started out as a full stack developer, my go-to pattern for asynchronous data loading was simple: render a blank screen with a spinning wheel in the center until the API responded. It got the job done technically, but from a product perspective, it felt clunky and slow. &lt;/p&gt;

&lt;p&gt;Eventually, I realized why: &lt;strong&gt;a loading spinner explicitly draws the user's focus to the wait time itself.&lt;/strong&gt; It creates a focal point around the delay, making seconds feel noticeably longer. &lt;/p&gt;

&lt;p&gt;Designing for speed is now a core requirement of good user experience. While developers can't always control network latency or server performance, we &lt;em&gt;can&lt;/em&gt; shape perceived load times. This is why I choose skeleton screens over traditional loading indicators.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I Choose Skeleton Screens Over Spinners
&lt;/h3&gt;

&lt;p&gt;As a developer focused on user experience, my goal is to reduce friction at every interaction point. I switched to skeleton screens for three main reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;They Lower Perceived Wait Time:&lt;/strong&gt; Research shows that users perceive a page as loading faster when they see a layout wireframe taking shape rather than a looping spinner on a blank canvas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They Eliminate Cumulative Layout Shift (CLS):&lt;/strong&gt; A major problem with spinners is that once data arrives, elements suddenly pop into place, pushing content down and annoying the user. A skeleton screen reserves the exact vertical and horizontal space beforehand, ensuring a stable visual anchor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They Direct Attention to the Content, Not the Delay:&lt;/strong&gt; Instead of staring at an abstract circle spinning in isolation, the user's brain starts scanning the skeleton layout, mentally preparing for where text, avatars, and cards will appear.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  What Exactly Is a Skeleton Screen?
&lt;/h3&gt;

&lt;p&gt;A skeleton screen is a low-fidelity UI mockup that displays mock visual shapes in place of content while data loads in the background. It isn't just an aesthetic trick; it serves four distinct structural functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Communicates System Activity:&lt;/strong&gt; Confirms to the user that their request was received and processing is actively happening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sets Clear Expectations:&lt;/strong&gt; Gives a visual preview of what type of content is about to appear (e.g., a feed list vs. a media gallery).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Builds Product Trust:&lt;/strong&gt; Prevents users from assuming the application has frozen or crashed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduces Cognitive Load:&lt;/strong&gt; Pre-structures the page so the user doesn't have to re-orient themselves when the actual data renders.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  The 3 Core Types of Skeleton Screens
&lt;/h3&gt;

&lt;p&gt;Depending on the type of content your application delivers, skeleton patterns generally fall into three categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Classic Content Wireframes:&lt;/strong&gt; The most common approach, using static grey shapes that mirror paragraph lines, profile avatars, or card containers. Platforms like LinkedIn, YouTube, and Slack rely heavily on these to soften the impact of payload fetches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animated Shimmer Patterns:&lt;/strong&gt; Static boxes can still feel frozen if an API call takes longer than expected. Adding a subtle, left-to-right light sweep or a gentle pulse effect visually signals ongoing background progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dominant Color Placeholders:&lt;/strong&gt; Popular on visual-heavy platforms like Pinterest or Unsplash. Instead of neutral grey boxes, the UI renders solid blocks matching the dominant background color of the incoming image, creating a seamless visual transition as media assets stream in.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Junior vs. Senior Perspective: Knowing When NOT to Use Skeletons
&lt;/h3&gt;

&lt;p&gt;Choosing the right UX pattern means understanding its limitations. A senior engineering perspective recognizes that skeleton screens are not a universal fix.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Best UI Pattern&lt;/th&gt;
&lt;th&gt;Why?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Fetching (1s to 3s)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Skeleton Screen&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ideal window for managing perceived speed and layout stability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Instant Actions (&amp;lt; 300ms)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No Indicator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Showing a skeleton for a fraction of a second creates jarring visual flickering.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Video Buffering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Centered Spinner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spinners remain the established universal pattern for media playback pause states.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Long Operations (Uploads, Exports)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Progress Bar&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex or long-running tasks require explicit status indicators (e.g., "Exporting 45%...").&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  My Final Verdict
&lt;/h3&gt;

&lt;p&gt;Skeleton screens are a powerful UX optimization tool, but they aren't a substitute for actual backend performance tuning or lazy-loading strategies. However, when applied intentionally to content-rich dashboards, feeds, and cards, they bridge the gap between technical execution and a smooth, thoughtful user experience, reduce perceived load time because the user's brain prepares for the layout before the data arrives. Next time you build a dashboard, swap out that spinner for an inline skeleton.&lt;/p&gt;

&lt;p&gt;I would love to hear your thoughts on this 🤔&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>css</category>
      <category>ux</category>
    </item>
    <item>
      <title>Hello World! My First Post as a Software Developer 🚀</title>
      <dc:creator>jackomosh</dc:creator>
      <pubDate>Tue, 14 Jul 2026 13:30:26 +0000</pubDate>
      <link>https://dev.to/jackomosh/hello-world-my-first-post-as-a-software-developer-52h4</link>
      <guid>https://dev.to/jackomosh/hello-world-my-first-post-as-a-software-developer-52h4</guid>
      <description>&lt;h2&gt;
  
  
  Hello, DEV Community! 👋
&lt;/h2&gt;

&lt;p&gt;After spending a lot of time reading incredible articles on this platform, learning from all of you, and troubleshooting bugs late into the night, I’ve finally decided to take the plunge. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is officially my first post as a software developer!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Starting a career in tech is an incredible, challenging, and endlessly exciting journey. It’s a world of constant learning, occasional imposter syndrome, and that unmatched feeling of pure joy when a complex piece of code finally works. &lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ My Developer Toolkit
&lt;/h2&gt;

&lt;p&gt;Over the course of my journey, I've fallen in love with building things for the web. Here are some of the technologies I enjoy working with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Frontend:&lt;/strong&gt; HTML5, CSS3, and JavaScript (making things look good and feel interactive).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Backend &amp;amp; Scripting:&lt;/strong&gt; Working with languages like PHP, Go, and Python to handle the heavy lifting.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Interests:&lt;/strong&gt; Building clean user interfaces, working on backend logic, and figuring out how to make different systems talk to each other smoothly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Why I’m Writing on DEV
&lt;/h2&gt;

&lt;p&gt;They say the best way to learn is to teach, and the best way to grow is to share. I’m here to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Document my journey:&lt;/strong&gt; Share the challenges I run into and how I solve them (so future-me and other developers don't have to suffer through the same bugs!).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Give back:&lt;/strong&gt; Contribute to the developer community that has helped me countless times when I was stuck.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Connect:&lt;/strong&gt; Meet other developers, exchange ideas, and collaborate on cool projects.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  📫 Let's Connect!
&lt;/h2&gt;

&lt;p&gt;I’m incredibly excited to be part of this community. Whether you're a seasoned senior developer, a fellow beginner, or just someone who loves tech:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;What was the very first programming language you learned?&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;What’s one piece of advice you wish you had when you started out?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment below and say hi—I’d love to connect with you! &lt;/p&gt;

&lt;p&gt;Keep coding,&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>career</category>
      <category>introduction</category>
    </item>
  </channel>
</rss>
