<?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: Stephen O.</title>
    <description>The latest articles on Forem by Stephen O. (@don_mizzy).</description>
    <link>https://forem.com/don_mizzy</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%2F1247537%2F6775dd2d-4125-43ba-b424-2ac71bf4c470.jpg</url>
      <title>Forem: Stephen O.</title>
      <link>https://forem.com/don_mizzy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/don_mizzy"/>
    <language>en</language>
    <item>
      <title>The Day Our Search Engine Learned Palindromes</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Mon, 09 Mar 2026 18:11:04 +0000</pubDate>
      <link>https://forem.com/don_mizzy/the-day-our-search-engine-learned-palindromes-487p</link>
      <guid>https://forem.com/don_mizzy/the-day-our-search-engine-learned-palindromes-487p</guid>
      <description>&lt;p&gt;The problem started with a message that looked harmless.&lt;/p&gt;

&lt;p&gt;Arman opened Slack one morning and saw a notification from the support channel:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;User report:&lt;/strong&gt; “Search feels… weird.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was it.&lt;/p&gt;

&lt;p&gt;No bug report. No screenshots. Just &lt;em&gt;weird&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Arman sighed and opened the site. The search bar sat at the top of the page like it always had. Clean, simple, waiting patiently.&lt;/p&gt;

&lt;p&gt;He typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Results appeared instantly.&lt;/p&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;Then he typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Also fine.&lt;/p&gt;

&lt;p&gt;Then he typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;api&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The results were… odd.&lt;/p&gt;

&lt;p&gt;The first result was &lt;strong&gt;“April 2016 Release Notes.”&lt;/strong&gt;&lt;br&gt;
The second was &lt;strong&gt;“Office Parking Policy.”&lt;/strong&gt;&lt;br&gt;
The third was a page titled &lt;strong&gt;“How to Brew Coffee in the Break Room.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arman frowned.&lt;/p&gt;

&lt;p&gt;“Interesting priorities.”&lt;/p&gt;

&lt;p&gt;He tried another search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;login&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Top result: &lt;strong&gt;“Company Picnic Photos.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now he was intrigued.&lt;/p&gt;



&lt;p&gt;The search system itself was simple. A small service indexed content from the database and ranked results based on relevance. It had worked perfectly for years.&lt;/p&gt;

&lt;p&gt;So something had changed.&lt;/p&gt;

&lt;p&gt;He opened the search service repository and checked recent commits. One stood out immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;commit message:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;improve search ranking&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The author was Nina, one of the newer developers.&lt;/p&gt;

&lt;p&gt;Arman opened the diff.&lt;/p&gt;

&lt;p&gt;At first it looked reasonable. The ranking formula had been adjusted to weigh different factors: title matches, keyword frequency, page popularity.&lt;/p&gt;

&lt;p&gt;Then he reached the bottom of the file.&lt;/p&gt;

&lt;p&gt;There was a new rule.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He nodded slowly.&lt;/p&gt;

&lt;p&gt;“Fair enough.”&lt;/p&gt;

&lt;p&gt;Then he saw the line directly below it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;reverse&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arman blinked.&lt;/p&gt;

&lt;p&gt;“Why… reversed?”&lt;/p&gt;

&lt;p&gt;He scrolled further.&lt;/p&gt;

&lt;p&gt;There was a comment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// helps catch creative user searches &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He leaned back.&lt;/p&gt;

&lt;p&gt;“Creative.”&lt;/p&gt;

&lt;p&gt;To test it, he typed something unusual into the search bar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;level&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The results looked normal.&lt;/p&gt;

&lt;p&gt;Then he tried something else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;desserts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first result was a page titled &lt;strong&gt;“Stressed Deployment Guide.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arman stared at the screen.&lt;/p&gt;

&lt;p&gt;“Wait.”&lt;/p&gt;

&lt;p&gt;He typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;stressed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Top result: &lt;strong&gt;“Desserts Menu.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He rubbed his forehead.&lt;/p&gt;

&lt;p&gt;The search engine wasn’t just matching the query—it was also matching the &lt;strong&gt;reversed query&lt;/strong&gt; against every piece of content. Any word that happened to be a reverse of something else would suddenly become highly relevant.&lt;/p&gt;

&lt;p&gt;It explained everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;stressed → desserts&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;drawer → reward&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;live → evil&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The search system had accidentally become a &lt;strong&gt;palindrome detective&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But the real problem was scale.&lt;/p&gt;

&lt;p&gt;The site contained thousands of pages. Every query now triggered &lt;strong&gt;double the text scans&lt;/strong&gt;, checking both the original string and its reversed version against huge blocks of content.&lt;/p&gt;

&lt;p&gt;Arman opened the performance metrics.&lt;/p&gt;

&lt;p&gt;Search queries were taking three times longer than before.&lt;/p&gt;

&lt;p&gt;He tested something else.&lt;/p&gt;

&lt;p&gt;In the search bar he typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;god&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The top result appeared instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Dog Adoption Policy.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arman stared at the screen for a moment.&lt;/p&gt;

&lt;p&gt;Then he opened the code again and removed the reversed-search logic.&lt;/p&gt;

&lt;p&gt;He pushed the fix and redeployed.&lt;/p&gt;

&lt;p&gt;Within seconds, the search results returned to normal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;api&lt;/strong&gt; returned API documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;login&lt;/strong&gt; returned authentication pages.&lt;/p&gt;

&lt;p&gt;Coffee guides returned only when someone actually searched for coffee.&lt;/p&gt;

&lt;p&gt;He posted the resolution in the dev channel.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Root cause:&lt;/strong&gt; search engine was ranking reversed queries as highly relevant.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A minute later Nina replied.&lt;/p&gt;

&lt;p&gt;“Oh yeah! I added that.”&lt;/p&gt;

&lt;p&gt;Arman waited.&lt;/p&gt;

&lt;p&gt;Another message appeared.&lt;/p&gt;

&lt;p&gt;“I read somewhere that users search in unpredictable ways.”&lt;/p&gt;

&lt;p&gt;Arman leaned back in his chair.&lt;/p&gt;

&lt;p&gt;“That is technically true.”&lt;/p&gt;

&lt;p&gt;She replied with a thinking emoji.&lt;/p&gt;

&lt;p&gt;“So… keep it?”&lt;/p&gt;

&lt;p&gt;Arman looked at the deployment logs, the restored performance graphs, and the search results that once again made sense.&lt;/p&gt;

&lt;p&gt;He typed one final message.&lt;/p&gt;

&lt;p&gt;“No.”&lt;/p&gt;

&lt;p&gt;Across the system, search quietly returned to its old, boring behavior.&lt;/p&gt;

&lt;p&gt;And somewhere deep in the Git history, Nina’s comment remained:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// helps catch creative user searches &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a brief moment in time, the company’s search engine had been able to find &lt;strong&gt;desserts when you searched for stress&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And honestly, Arman thought, "that part wasn’t entirely wrong". 🍰💻&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>The One-Millisecond Update That Almost Melted Production</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Mon, 09 Mar 2026 08:21:41 +0000</pubDate>
      <link>https://forem.com/don_mizzy/the-one-millisecond-update-that-almost-melted-production-13l0</link>
      <guid>https://forem.com/don_mizzy/the-one-millisecond-update-that-almost-melted-production-13l0</guid>
      <description>&lt;p&gt;The alert came in at 2:13 a.m.&lt;/p&gt;

&lt;p&gt;Arman’s phone buzzed on the nightstand with the familiar, unwelcome vibration that every developer learns to dread. The message was short and blunt:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production CPU usage: 96%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He squinted at the screen. “That’s… not great.”&lt;/p&gt;

&lt;p&gt;Five minutes later he was at his desk, hoodie half-zipped, staring at the monitoring dashboard like it had personally betrayed him. The graphs looked like mountains. CPU spikes everywhere. Memory climbing. Request latency stretching into the seconds.&lt;/p&gt;

&lt;p&gt;The strange part was the traffic.&lt;/p&gt;

&lt;p&gt;There wasn’t any.&lt;/p&gt;

&lt;p&gt;The site had maybe twelve active users.&lt;/p&gt;

&lt;p&gt;“Twelve people,” Arman said quietly, “should not require the power output of a small power plant.”&lt;/p&gt;

&lt;p&gt;He opened the logs.&lt;/p&gt;

&lt;p&gt;They weren’t helpful. Requests looked normal. No infinite loops in the backend. No database explosions. No obvious culprits.&lt;/p&gt;

&lt;p&gt;Then he noticed something strange in the browser performance tab.&lt;/p&gt;

&lt;p&gt;The frontend CPU usage was also sky-high.&lt;/p&gt;

&lt;p&gt;That narrowed things down.&lt;/p&gt;

&lt;p&gt;“Alright,” he muttered, opening the codebase. “Which one of you did something clever?”&lt;/p&gt;

&lt;p&gt;The recent commits were small: a few CSS tweaks, a dependency update, and one innocent-looking message from a teammate named Kevin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;commit message:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;improved date formatting&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Arman sighed. “Kevin…”&lt;/p&gt;

&lt;p&gt;He opened the diff.&lt;/p&gt;

&lt;p&gt;The change was tiny. Just a utility function used across the app to display timestamps more nicely.&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;formatTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;formatTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[data-time]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;formatTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;time&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arman blinked.&lt;/p&gt;

&lt;p&gt;“Interval… one?”&lt;/p&gt;

&lt;p&gt;He counted the zeros again.&lt;/p&gt;

&lt;p&gt;One millisecond.&lt;/p&gt;

&lt;p&gt;The script was scanning the entire DOM &lt;strong&gt;one thousand times per second&lt;/strong&gt; looking for timestamps to update.&lt;/p&gt;

&lt;p&gt;And the page had a lot of timestamps.&lt;/p&gt;

&lt;p&gt;Comments. Logs. Notifications. Chat messages. Audit history. Admin panels. Tooltips.&lt;/p&gt;

&lt;p&gt;Arman opened the page and ran a quick check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[data-time]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The console returned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3,842&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;His laptop fan spun up immediately as the script started running.&lt;/p&gt;

&lt;p&gt;The math settled in slowly.&lt;/p&gt;

&lt;p&gt;Every millisecond the browser was scanning almost four thousand elements. That meant nearly &lt;strong&gt;four million DOM operations every second&lt;/strong&gt;. Across every open tab. Across every user session.&lt;/p&gt;

&lt;p&gt;Arman leaned back in his chair.&lt;/p&gt;

&lt;p&gt;“That would do it.”&lt;/p&gt;

&lt;p&gt;But something still bothered him.&lt;/p&gt;

&lt;p&gt;The commit message said &lt;strong&gt;“improved date formatting.”&lt;/strong&gt; Updating timestamps every millisecond was… excessive. Even by Kevin standards.&lt;/p&gt;

&lt;p&gt;He opened Slack and searched for the conversation around the change.&lt;/p&gt;

&lt;p&gt;Eventually he found it.&lt;/p&gt;

&lt;p&gt;Kevin had asked a simple question earlier that day:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do we make timestamps update in real time?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone had replied:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just use setInterval.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kevin had done exactly that.&lt;/p&gt;

&lt;p&gt;Technically, the timestamps &lt;strong&gt;were&lt;/strong&gt; updating in real time now. Extremely real time. Aggressively real time.&lt;/p&gt;

&lt;p&gt;Arman changed the interval from &lt;strong&gt;1&lt;/strong&gt; to &lt;strong&gt;60000&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One minute.&lt;/p&gt;

&lt;p&gt;He deployed the fix.&lt;/p&gt;

&lt;p&gt;Within seconds the monitoring dashboard relaxed. CPU usage dropped from the red zone to something normal. The graphs slowly flattened like a storm passing out to sea.&lt;/p&gt;

&lt;p&gt;He posted the resolution in the incident channel:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Root cause:&lt;/strong&gt; Timestamp updater running every 1ms across thousands of elements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kevin responded almost immediately.&lt;/p&gt;

&lt;p&gt;“Wait, is that bad?”&lt;/p&gt;

&lt;p&gt;Arman stared at the message for a moment.&lt;/p&gt;

&lt;p&gt;Then he replied:&lt;/p&gt;

&lt;p&gt;“Only if you like electricity.”&lt;/p&gt;

&lt;p&gt;A few seconds later Kevin answered again.&lt;/p&gt;

&lt;p&gt;“Oh. I thought lower numbers were faster.”&lt;/p&gt;

&lt;p&gt;Arman leaned back, closed the incident dashboard, and took a sip of cold coffee.&lt;/p&gt;

&lt;p&gt;Somewhere in the codebase, the timestamps were still updating. Calmly now. Once per minute. The servers were quiet again, the fans had stopped screaming, and the infrastructure bill had likely dropped by several dollars per hour.&lt;/p&gt;

&lt;p&gt;All because someone wanted the time to be &lt;em&gt;a little more accurate&lt;/em&gt;. ⏱️💻&lt;/p&gt;

&lt;p&gt;And from that day forward, every developer on the team learned an important lesson:&lt;/p&gt;

&lt;p&gt;When someone says &lt;strong&gt;“real time,”&lt;/strong&gt; it’s always worth asking &lt;em&gt;how real&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Developer Who Tried to Outsmart a Button</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Sun, 01 Mar 2026 23:00:10 +0000</pubDate>
      <link>https://forem.com/don_mizzy/the-developer-who-tried-to-outsmart-a-button-2lom</link>
      <guid>https://forem.com/don_mizzy/the-developer-who-tried-to-outsmart-a-button-2lom</guid>
      <description>&lt;p&gt;There was once a developer named Daniel who believed two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Every problem had a logical solution.&lt;/li&gt;
&lt;li&gt;No button should take more than one click.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;He was wrong about the second one.&lt;/p&gt;




&lt;p&gt;Daniel worked in a quiet co-working space at the edge of the city. He wasn’t the loud type. No “10x developer” tweets. No dramatic keyboard smashing. Just headphones, a hoodie, and a browser tab count that would frighten normal people.&lt;/p&gt;

&lt;p&gt;He had been building a small productivity app in &lt;strong&gt;React&lt;/strong&gt; for months. Not because it would make him rich. Not because investors were chasing him.&lt;/p&gt;

&lt;p&gt;But because of a button.&lt;/p&gt;

&lt;p&gt;A simple button labeled:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Start.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The feature sounded harmless. Click the button, start a session timer. That’s it.&lt;/p&gt;

&lt;p&gt;But Daniel wasn’t built for “that’s it.”&lt;/p&gt;




&lt;h3&gt;
  
  
  The First Version
&lt;/h3&gt;

&lt;p&gt;The first version worked. It started the timer. It updated state. It rendered beautifully.&lt;/p&gt;

&lt;p&gt;But it felt… ordinary.&lt;/p&gt;

&lt;p&gt;So Daniel refactored it.&lt;/p&gt;

&lt;p&gt;He extracted the timer logic into a custom hook. Then he optimized re-renders. Then he introduced memoization. Then lazy loading. Then suspense boundaries.&lt;/p&gt;

&lt;p&gt;Now the button didn’t just start a timer.&lt;/p&gt;

&lt;p&gt;It mounted conditionally. It animated with purpose. It respected accessibility rules. It synchronized with local storage. It persisted across tabs.&lt;/p&gt;

&lt;p&gt;The button had evolved.&lt;/p&gt;

&lt;p&gt;Daniel had not slept properly in three days.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Glitch
&lt;/h3&gt;

&lt;p&gt;One evening, after deploying what he considered the cleanest implementation of his career, Daniel noticed something strange.&lt;/p&gt;

&lt;p&gt;When the button was clicked exactly at 59.9 seconds of a previous session ending — in a specific browser — on low battery mode — the timer flickered.&lt;/p&gt;

&lt;p&gt;It lasted less than 200 milliseconds.&lt;/p&gt;

&lt;p&gt;No one would notice.&lt;/p&gt;

&lt;p&gt;No one except Daniel.&lt;/p&gt;

&lt;p&gt;He stared at the screen.&lt;/p&gt;

&lt;p&gt;The flicker stared back.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Spiral
&lt;/h3&gt;

&lt;p&gt;This is where most developers would say, “It’s fine.”&lt;/p&gt;

&lt;p&gt;Daniel did not say that.&lt;/p&gt;

&lt;p&gt;He opened DevTools.&lt;br&gt;
He profiled performance.&lt;br&gt;
He stepped through renders like a detective reviewing security footage.&lt;/p&gt;

&lt;p&gt;He discovered something beautiful and terrible:&lt;/p&gt;

&lt;p&gt;The flicker wasn’t a bug.&lt;/p&gt;

&lt;p&gt;It was a race condition between state reconciliation and an animation frame callback.&lt;/p&gt;

&lt;p&gt;It was technically correct behavior.&lt;/p&gt;

&lt;p&gt;But emotionally unacceptable.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Rewrite
&lt;/h3&gt;

&lt;p&gt;Daniel deleted 312 lines of code.&lt;/p&gt;

&lt;p&gt;He replaced them with 97 better ones.&lt;/p&gt;

&lt;p&gt;He removed clever abstractions. He simplified state. He trusted the browser more. He trusted himself less.&lt;/p&gt;

&lt;p&gt;When he was done, the button felt lighter.&lt;/p&gt;

&lt;p&gt;It clicked without drama. It started without flicker. It existed without ego.&lt;/p&gt;

&lt;p&gt;For the first time, Daniel leaned back and didn’t feel like he had conquered something.&lt;/p&gt;

&lt;p&gt;He felt like he had understood it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Twist
&lt;/h3&gt;

&lt;p&gt;A week later, a user emailed him:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I love the app. It feels calm. I don’t know why, but it just works.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Daniel smiled.&lt;/p&gt;

&lt;p&gt;They didn’t mention the timer.&lt;br&gt;
They didn’t mention performance.&lt;br&gt;
They didn’t mention architecture.&lt;/p&gt;

&lt;p&gt;They mentioned &lt;em&gt;feeling.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s when Daniel realized something most developers learn the hard way:&lt;/p&gt;

&lt;p&gt;Users don’t care about how smart your code is.&lt;br&gt;
They care about how invisible it is.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Lesson
&lt;/h3&gt;

&lt;p&gt;The best software isn’t loud.&lt;/p&gt;

&lt;p&gt;It doesn’t flex design patterns.&lt;br&gt;
It doesn’t show off optimizations.&lt;br&gt;
It doesn’t whisper, “Look how clever this is.”&lt;/p&gt;

&lt;p&gt;It disappears.&lt;/p&gt;

&lt;p&gt;And when it disappears perfectly — that’s when you know a developer obsessed over it.&lt;/p&gt;

&lt;p&gt;Somewhere, right now, there’s a developer staring at a button no one else will think twice about.&lt;/p&gt;

&lt;p&gt;And that might be the most beautiful thing about this industry.&lt;/p&gt;

&lt;p&gt;Because behind every effortless click…&lt;/p&gt;

&lt;p&gt;…there’s someone who refused to let it flicker.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>software</category>
      <category>frontend</category>
    </item>
    <item>
      <title>The Most Powerful Browser Feature Nobody Talks About: IndexedDB (and Why React Developers Should Care)</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Thu, 26 Feb 2026 09:28:30 +0000</pubDate>
      <link>https://forem.com/don_mizzy/the-most-powerful-browser-feature-nobody-talks-about-indexeddb-and-why-react-developers-should-4kgb</link>
      <guid>https://forem.com/don_mizzy/the-most-powerful-browser-feature-nobody-talks-about-indexeddb-and-why-react-developers-should-4kgb</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.amazonaws.com%2Fuploads%2Farticles%2Fy96j21jrm4ckelwaztkn.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%2Fy96j21jrm4ckelwaztkn.png" alt="indexDB and react or javascript" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
There is something strange about modern frontend development. We obsess over performance, caching strategies, server state, optimistic updates, and complex state management patterns. We install libraries to manage data flows elegantly. We debate React Query versus SWR. We architect scalable frontends. And yet, sitting quietly inside the browser, there is a built-in database that most of us barely touch.&lt;/p&gt;

&lt;p&gt;It’s called &lt;strong&gt;IndexedDB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And the silence around it is loud.&lt;/p&gt;

&lt;p&gt;Most React developers are comfortable with &lt;code&gt;localStorage&lt;/code&gt;. It’s simple. It’s familiar. It feels harmless. You stringify an object, store it, retrieve it, parse it, and move on. For small things — theme toggles, tokens, a few preferences — it works. But somewhere along the way, we started using it for things it was never designed to handle. Large datasets. Cached API responses. Draft systems. Offline data. And when it starts to feel clunky, we blame the browser instead of the tool we chose.&lt;/p&gt;

&lt;p&gt;The problem isn’t browser storage.&lt;/p&gt;

&lt;p&gt;The problem is that we keep reaching for the smallest hammer in the toolbox.&lt;/p&gt;

&lt;p&gt;IndexedDB is not new. It has been supported in modern browsers for years. It is asynchronous, non-blocking, and capable of storing large amounts of structured data. You can store objects directly. You can create indexes for fast querying. You can store blobs like images and files. In essence, it’s a lightweight NoSQL database living inside the user’s browser.&lt;/p&gt;

&lt;p&gt;And yet, most frontend conversations ignore it entirely.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because the native API feels intimidating. It uses events instead of simple promises. It requires understanding database versions and transactions. It feels verbose. Slightly old-school. A little uncomfortable. So instead of learning it, we avoid it. We reach for remote APIs for everything. We refetch constantly. We reload data that hasn’t changed. We build apps that break the moment the network disappears.&lt;/p&gt;

&lt;p&gt;We build modern apps with fragile foundations.&lt;/p&gt;

&lt;p&gt;This is where tools like localForage quietly change the story.&lt;/p&gt;

&lt;p&gt;localForage wraps IndexedDB with a simple, promise-based API. Instead of wrestling with database events, you write code that feels natural to a modern JavaScript developer. You store objects directly. You retrieve them asynchronously. You think in terms of data, not database mechanics. Under the hood, it uses IndexedDB when available and gracefully falls back when necessary. You get power without the ceremony.&lt;/p&gt;

&lt;p&gt;And once you start using it intentionally, something shifts in how you think about frontend architecture.&lt;/p&gt;

&lt;p&gt;Imagine a React dashboard that loads instantly because data is cached locally. Imagine a product catalog that remains browsable even when the internet connection drops. Imagine multi-step forms that never lose progress, no matter how many times the page refreshes. Imagine field agents entering reports offline and syncing automatically when connectivity returns.&lt;/p&gt;

&lt;p&gt;These are not exotic features. They are user expectations.&lt;/p&gt;

&lt;p&gt;IndexedDB makes them practical.&lt;/p&gt;

&lt;p&gt;As frontend developers, we often think in terms of “server state” and “client state.” But there’s a third category we rarely discuss: persistent client data. Not temporary React state. Not ephemeral cache. But durable, structured storage that survives refreshes and works offline. When you begin to treat the browser as a serious runtime environment — not just a rendering layer — IndexedDB starts to look less like an obscure API and more like essential infrastructure.&lt;/p&gt;

&lt;p&gt;This matters even more in regions where network stability is not guaranteed. An app that assumes perfect connectivity is an app that excludes users. Offline resilience is not a luxury feature. It is accessibility.&lt;/p&gt;

&lt;p&gt;There is also a performance conversation here. Every time we refetch large datasets unnecessarily, we introduce latency. Every unnecessary network call increases load times and server strain. IndexedDB allows you to cache intelligently, query locally, and synchronize in the background. The user experiences speed. The server experiences relief. The architecture becomes more thoughtful.&lt;/p&gt;

&lt;p&gt;Of course, IndexedDB is not a silver bullet. It is not meant for authentication secrets that require HTTP-only security. It is not necessary for tiny key-value preferences. But for structured data, offline systems, caching layers, draft persistence, media storage, and PWA functionality, it is significantly more capable than &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And perhaps the real question is this: why do we treat the browser like a fragile shell instead of a powerful platform?&lt;/p&gt;

&lt;p&gt;Modern browsers are incredibly capable environments. They support background sync, service workers, caching strategies, and embedded databases. Yet many of our apps still behave as if a refresh should wipe everything meaningful away.&lt;/p&gt;

&lt;p&gt;Maybe it’s time we rethink that.&lt;/p&gt;

&lt;p&gt;As React developers, we pride ourselves on building scalable, resilient interfaces. But resilience is not just about component design. It’s about data durability. It’s about respecting the user’s time. It’s about assuming that networks fail and designing accordingly.&lt;/p&gt;

&lt;p&gt;IndexedDB has been here all along.&lt;/p&gt;

&lt;p&gt;We just haven’t been talking about it.&lt;/p&gt;

&lt;p&gt;Perhaps we should.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Local Storage, Session Storage, and Cookies: Unique Guide</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Mon, 21 Jul 2025 23:28:46 +0000</pubDate>
      <link>https://forem.com/don_mizzy/local-storage-session-storage-and-cookies-unique-guide-4np2</link>
      <guid>https://forem.com/don_mizzy/local-storage-session-storage-and-cookies-unique-guide-4np2</guid>
      <description>&lt;p&gt;A buddy of mine asked me, "Aside database, are there other methods one can store data from the web". I gave him a response of course, and thought to render same knowlege to others hungry for such insight. So, here's one for all of you.&lt;/p&gt;

&lt;p&gt;When you're starting out in web development, you'll encounter three important ways to store data in the browser: Local storage, Session storage, and Cookies. These methods help websites remember information about you or your activity, creating a more personalized and seamless browsing experience. &lt;/p&gt;

&lt;p&gt;Although they are all storage methods, each serves distinct purposes and has unique characteristics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cookies: The Web's Original Memory System
&lt;/h2&gt;

&lt;p&gt;Cookies are the oldest and most widely recognized method of storing data in web browsers. Think of them as small digital notes that websites leave on your device. Each cookie is tiny, limited to about 4KB of data, which is roughly equivalent to a few paragraphs of text. What makes cookies special is that they're automatically sent back to the server with every request you make to the website. This two-way communication allows servers to maintain your login session or remember your preferences across different pages.&lt;/p&gt;

&lt;p&gt;Cookies come with expiration dates. Some might last just until you close your browser (session cookies), while others can persist for months or even years (persistent cookies). We software developers often use cookies for authentication, remembering login sessions, tracking user behavior, and personalizing content. For example, when a shopping site remembers items you've viewed or keeps you logged in between visits, it's typically using cookies to accomplish this.&lt;/p&gt;

&lt;p&gt;Here's a simple example of how cookies work in code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Setting a cookie that expires in one year
document.cookie = "user_theme=dark; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";

// Reading all cookies
console.log(document.cookie); // Outputs something like "user_theme=dark; session_id=abc123"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Session Storage: Temporary Memory for Single Browsing Sessions
&lt;/h2&gt;

&lt;p&gt;Session storage provides a more substantial storage solution (typically 5-10MB) that exists only for the duration of a single browser tab. Imagine it as a notepad that's available only while you're actively working in that specific tab - once you close the tab, all the notes disappear. &lt;br&gt;
This temporary nature makes session storage ideal for information that's only relevant during your current visit to a website.&lt;/p&gt;

&lt;p&gt;Unlike cookies, session storage data isn't automatically sent to the server, and it's isolated to the specific tab where it was created. This means if you open the same website in another tab, it won't have access to the session storage from your first tab. Developers commonly use session storage for temporarily saving form data, preserving application state, or storing other information that would be useful during the current session but doesn't need to persist long-term.&lt;/p&gt;

&lt;p&gt;Working with session storage is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Save data to sessionStorage
sessionStorage.setItem('unsaved_form_data', JSON.stringify(formInputs));

// Retrieve data later
const savedData = sessionStorage.getItem('unsaved_form_data');

// Clear specific data when no longer needed
sessionStorage.removeItem('unsaved_form_data');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Local Storage: Persistent Client-Side Storage
&lt;/h2&gt;

&lt;p&gt;Local storage offers a more permanent solution for storing data in the browser. With a similar capacity to session storage (typically 5-10MB), local storage persists even when you close your browser, restart your computer, or return to the site days later. &lt;br&gt;
You can think of it as a dedicated filing cabinet that the website can use on your device to store information indefinitely.&lt;/p&gt;

&lt;p&gt;This persistence makes local storage perfect for remembering user preferences like theme choices, saving application state between visits, or caching data to improve performance. &lt;/p&gt;

&lt;p&gt;Unlike cookies, local storage data isn't automatically sent to the server, which can be beneficial for reducing unnecessary network traffic. However, it's important to remember that users can clear this storage at any time, so critical data should still be saved server-side when needed.&lt;/p&gt;

&lt;p&gt;Here's how you might use local storage in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Store user preferences
localStorage.setItem('preferred_language', 'en-US');

// Retrieve the stored value
const languagePreference = localStorage.getItem('preferred_language');

// Remove a stored item
localStorage.removeItem('preferred_language');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;While these storage options seem similar, they serve different purposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cookies are the old reliable method that works everywhere but are limited&lt;/li&gt;
&lt;li&gt;Session storage is great for temporary, tab-specific data&lt;/li&gt;
&lt;li&gt;Local storage is your go-to for persistent client-side data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a developer not conversant with storage logics, start experimenting with these in small projects. You'll quickly get a feel for when each one is most appropriate!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why LCP and INP Matter for Every Developer</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Wed, 21 May 2025 12:42:12 +0000</pubDate>
      <link>https://forem.com/don_mizzy/why-lcp-and-inp-matter-for-every-developer-hk0</link>
      <guid>https://forem.com/don_mizzy/why-lcp-and-inp-matter-for-every-developer-hk0</guid>
      <description>&lt;p&gt;As a developer, you might focus on writing clean code and adding cool features. But have you ever thought about how fast your website actually feels to users? That's where LCP and INP come in - two simple but important metrics that measure real user experience.  &lt;/p&gt;

&lt;h3&gt;
  
  
  What is LCP? (Loading Speed)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;LCP (Largest Contentful Paint)&lt;/strong&gt; tracks how long it takes for the main content of your page to load. Imagine visiting a blog - LCP measures when the article title and first paragraph become visible.  &lt;/p&gt;

&lt;p&gt;A good LCP score is under 2.5 seconds. If it takes longer than 4 seconds, users will likely leave before seeing your content. The main culprits are usually large images, slow servers, or too much JavaScript blocking the page.  &lt;/p&gt;

&lt;h3&gt;
  
  
  What is INP? (Responsiveness)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt; measures how quickly your page responds when users click or tap something. It's the delay between clicking a button and seeing something happen.  &lt;/p&gt;

&lt;p&gt;For a smooth experience, INP should be under 200 milliseconds. Above 500ms, your site will feel sluggish and unresponsive. This often happens when there are too many JavaScript tasks running at once.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Why Should You Care?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Users leave slow sites&lt;/strong&gt; - Over half of visitors will abandon a page that takes more than 3 seconds to load
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google ranks faster sites higher&lt;/strong&gt; - These metrics directly affect your search rankings
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better user experience&lt;/strong&gt; - Fast sites keep people engaged and happy
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Easy Ways to Improve
&lt;/h3&gt;

&lt;p&gt;For LCP:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compress and properly size images (use WebP format)
&lt;/li&gt;
&lt;li&gt;Load important content first
&lt;/li&gt;
&lt;li&gt;Reduce unnecessary JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For INP:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid putting too many click handlers on elements
&lt;/li&gt;
&lt;li&gt;Show loading indicators immediately
&lt;/li&gt;
&lt;li&gt;Break up long JavaScript tasks
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to Check Your Scores&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;You don't need to be an expert to measure these:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Chrome DevTools (F12)
&lt;/li&gt;
&lt;li&gt;Go to the Lighthouse tab
&lt;/li&gt;
&lt;li&gt;Run an audit - it will show your LCP and INP scores
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Start Small&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;You don't need to optimize everything at once. Try fixing just one issue this week - maybe compress your largest image or simplify a button click handler. Small improvements add up!  &lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thought
&lt;/h3&gt;

&lt;p&gt;Building fast websites isn't just for experts. By paying attention to LCP and INP, you'll create better experiences for your users and stand out as a developer who cares about performance.  &lt;/p&gt;

&lt;p&gt;What's been your experience with website speed? Have you noticed any particularly fast or slow sites recently? Share your thoughts below! &lt;/p&gt;

</description>
      <category>beginnerfriendly</category>
      <category>codingtips</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>From Junior to Senior: Why Your Front-End Skills Need to Grow Beyond the Framework</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Thu, 15 May 2025 03:02:17 +0000</pubDate>
      <link>https://forem.com/don_mizzy/from-junior-to-senior-why-your-front-end-skills-need-to-grow-beyond-the-framework-16ng</link>
      <guid>https://forem.com/don_mizzy/from-junior-to-senior-why-your-front-end-skills-need-to-grow-beyond-the-framework-16ng</guid>
      <description>&lt;p&gt;A year ago, I thought mastering React and building cool UIs was enough to become a great front-end developer. Then I hit a wall—my apps were slow, debugging was painful, and I struggled to explain technical decisions even to myself.  &lt;/p&gt;

&lt;p&gt;That’s when I realized: &lt;strong&gt;Knowing your framework is just the beginning.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;If you’re like me—a software developer working on projects, exploring Github repos and cool stuffs—this post is for you. Here’s what I’ve learned about what it &lt;em&gt;really&lt;/em&gt; takes to level up as a front-end developer in 2025.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. The Hard Truth: Frameworks Are Just Tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I used to think:&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Learn React&lt;/strong&gt; → Get a job&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Master hooks&lt;/strong&gt; → Become a senior dev  &lt;/p&gt;

&lt;p&gt;But in real projects, nobody cares if you can write a &lt;code&gt;useEffect&lt;/code&gt; if:&lt;br&gt;&lt;br&gt;
❌ Your app crashes when the API fails&lt;br&gt;&lt;br&gt;
❌ Your loading states flicker because you didn’t optimize data fetching&lt;br&gt;&lt;br&gt;
❌ Your site is slow on mobile because you never checked Lighthouse  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What matters more:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Resilient code&lt;/strong&gt; (Error boundaries, loading states, fallbacks)&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Performance awareness&lt;/strong&gt; (Lazy loading, image optimization, bundle splitting)&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Debugging skills&lt;/strong&gt; (Chrome DevTools, network tab, error tracking)  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Action Step:&lt;/strong&gt; Open your portfolio in Chrome DevTools (&lt;code&gt;F12&lt;/code&gt;), go to the &lt;strong&gt;Lighthouse&lt;/strong&gt; tab, and run an audit. What’s the lowest score? Fix &lt;em&gt;one&lt;/em&gt; thing today.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. The Secret: Front-End Developers Need Back-End Awareness&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I avoided back-end concepts for years—until I realized how much it limited me.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; My portfolio fetches projects from GitHub. At first, it:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Loaded slowly&lt;/strong&gt; (No caching)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broke if GitHub’s API was down&lt;/strong&gt; (No error handling)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flashed empty states&lt;/strong&gt; (No skeleton loaders)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Basic API caching&lt;/strong&gt; (&lt;code&gt;localStorage&lt;/code&gt; or &lt;code&gt;sessionStorage&lt;/code&gt;)&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Error fallbacks&lt;/strong&gt; (Show a friendly message if fetch fails)&lt;br&gt;&lt;br&gt;
✔ &lt;strong&gt;Loading states&lt;/strong&gt; (Skeletons prevent layout shifts)  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; You don’t need to be a back-end expert—just understand enough to make your front-end &lt;em&gt;reliable&lt;/em&gt;.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. The Skills Nobody Talks About (But Everyone Needs)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The best developers I’ve met don’t just write code—they:&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Communicate clearly&lt;/strong&gt; (Explain tech decisions to non-devs)&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Write docs&lt;/strong&gt; (So others can use their code)&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Optimize for real users&lt;/strong&gt; (Not just their laptop)  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📌 Reality check:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can you explain &lt;em&gt;why&lt;/em&gt; you used &lt;code&gt;useMemo&lt;/code&gt; in a PR?
&lt;/li&gt;
&lt;li&gt;Does your GitHub repo have a &lt;strong&gt;README&lt;/strong&gt;?
&lt;/li&gt;
&lt;li&gt;Have you tested your site on a cheap Android phone?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🎯 Try this:&lt;/strong&gt; Pick &lt;em&gt;one&lt;/em&gt; project on GitHub and:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a better README
&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;TODO.md&lt;/code&gt; for future improvements
&lt;/li&gt;
&lt;li&gt;Test it on a slow 3G connection
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Your Next Steps (No Overwhelm)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You don’t need to learn everything at once. Start small:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improve one performance metric&lt;/strong&gt; (e.g., Lighthouse score)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn one back-end concept&lt;/strong&gt; (APIs, caching, auth)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communicate better&lt;/strong&gt; (Write docs, explain your code)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s &lt;em&gt;one&lt;/em&gt; non-framework skill that helped you?&lt;/strong&gt; Mine was learning basic caching to speed up my apps 🚀. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>career</category>
      <category>frontend</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Caffeine Chronicles: What Happens When a Developer is Always High on Coffee</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Wed, 14 May 2025 23:45:14 +0000</pubDate>
      <link>https://forem.com/don_mizzy/the-caffeine-chronicles-what-happens-when-a-developer-is-always-high-on-coffee-3omm</link>
      <guid>https://forem.com/don_mizzy/the-caffeine-chronicles-what-happens-when-a-developer-is-always-high-on-coffee-3omm</guid>
      <description>&lt;p&gt;As software developers, we’ve all been there—burning the midnight oil, debugging an elusive issue, or racing against a tight deadline. And what’s our trusty sidekick through it all? &lt;strong&gt;Caffeine&lt;/strong&gt;. Whether it’s coffee, energy drinks, or espresso shots, we rely on it to keep us sharp, alert, and (somewhat) functional.&lt;/p&gt;

&lt;p&gt;But what happens when a developer is constantly running on caffeine? Let’s dive into the highs, lows, and inevitable crashes of a life fueled by liquid productivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Productivity Illusion :
&lt;/h3&gt;

&lt;p&gt;That first cup of coffee in the morning feels like flipping a switch in your brain. Suddenly, complex algorithms make sense, your typing speed doubles, and you're convinced you can solve any problem thrown your way. This is the golden hour of caffeine—when everything clicks and you feel unstoppable.&lt;/p&gt;

&lt;p&gt;But here's the catch: this state is temporary, and the more you chase it, the harder it becomes to achieve. What started as one cup to kickstart your day soon becomes two, then three, until you're drinking coffee not to feel amazing, but just to feel normal. The crashes between doses grow more severe, leaving you in a fog where even simple tasks require monumental effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Sleep? What’s That?
&lt;/h3&gt;

&lt;p&gt;Caffeine's most insidious effect isn't what it does to your waking hours—it's what it steals from your rest. You might power through an all-nighter fueled by espresso shots, but your brain pays the price. Even if you manage to fall asleep, the quality of that sleep is shallow and unsatisfying.&lt;/p&gt;

&lt;p&gt;The next morning, you wake up feeling like you never slept at all, reaching automatically for the coffee pot to break the cycle. But with each passing day, the sleep debt grows larger, and no amount of caffeine can truly compensate for what you've lost. Your memory becomes spotty, your reactions slower, and your ability to learn new technologies suffers—all because your brain never gets the deep restoration it needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Anxiety &amp;amp; Decision Fatigue:
&lt;/h3&gt;

&lt;p&gt;There's a fine line between alert and anxious, and caffeine loves to dance on it. That same substance that helps you focus can also send your nervous system into overdrive. Suddenly, minor inconveniences feel like crises. A teammate's code review comment that would normally roll off your back now feels like a personal attack.&lt;/p&gt;

&lt;p&gt;Decision-making suffers too. What should be simple choices—like whether to use a map or forEach—become paralyzing debates. Your brain, already running at full throttle from constant stimulation, starts seeing complexity where none exists. The result? You waste precious mental energy on trivial matters while the important work piles up.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The Physical Toll:
&lt;/h3&gt;

&lt;p&gt;Your body wasn’t built to run on espresso forever. &lt;br&gt;
The jitters set in first—tiny tremors in your hands that make precise typing a challenge. Then comes the heartburn, the acid reflux, and the inevitable sprint to the bathroom because coffee is, well, efficient at moving things along. &lt;br&gt;
Dehydration sneaks up on you, too, leaving you with pounding headaches that no amount of caffeine can fix. And if you skip a dose? The withdrawal hits hard—brain fog, fatigue, and a crushing inability to focus, making you wonder how you ever coded without it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The Caffeine Crash &amp;amp; Burnout:
&lt;/h3&gt;

&lt;p&gt;Eventually, the bill comes due. You'll hit a point where no amount of caffeine can cut through the fog—you'll stare at your screen, watching the cursor blink, unable to form coherent thoughts about code that used to feel second nature. This isn't just tiredness; it's your brain finally refusing to cooperate with the artificial stimulation you've been forcing on it.&lt;/p&gt;

&lt;p&gt;Burnout creeps in quietly at first. Maybe you notice you're snapping at coworkers more often, or that tasks you used to enjoy now feel like unbearable chores. The worst part? When you try to cut back, the withdrawal hits hard—headaches, irritability, and crushing fatigue that makes you question how you ever functioned without caffeine in the first place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding Balance
&lt;/h3&gt;

&lt;p&gt;The solution isn't to quit caffeine entirely (let's be realistic), but to use it strategically. Try delaying your first cup until you've been awake for an hour—this helps prevent the afternoon crash. Stay hydrated, and when you feel a slump coming on, try a five-minute walk before reaching for another dose.&lt;/p&gt;

&lt;p&gt;Most importantly, respect your body's need for real rest. No amount of caffeine can replace proper sleep, regular meals, and occasional breaks. The best code you'll ever write comes from a rested mind—not just a caffeinated one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s your caffeine story?&lt;/strong&gt; Are you a disciplined sipper or a hopeless addict? Share your experiences below—we're all in this together. ☕💻&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>developerlife</category>
      <category>caffeine</category>
    </item>
    <item>
      <title>Nodemon running error fixed!</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Sat, 20 Apr 2024 20:28:27 +0000</pubDate>
      <link>https://forem.com/don_mizzy/nodemon-running-error-fixed-28l0</link>
      <guid>https://forem.com/don_mizzy/nodemon-running-error-fixed-28l0</guid>
      <description>&lt;p&gt;About a few days ago, I was working on my backend skills learning Nodejs and installed the common nodemon package that helps us automatically save our updated work in code and re-runs to log the new result in the terminal, only to experience a striking fault that shouldn’t have been.&lt;/p&gt;

&lt;p&gt;According to sources of tutorials and documentations, including nodemon documentation, states that the nodemon package is run as thus: &lt;code&gt;nodemon [your node app]&lt;/code&gt; in most cases the node app is usually the app.js or whatever file you declared your node code. But in this case "app.js" so,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nodemon app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Unfortunately, this command line doesn’t work as it should. Instead, this is the response error I get on the VSCode terminal.&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%2F5pipdhfiwtgozfd4fti6.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%2F5pipdhfiwtgozfd4fti6.png" alt=" " width="743" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been in this situation like me, It can be mind-wretching. You can try checking if the package is installed properly by typing &lt;code&gt;npm nodemon --version&lt;/code&gt; or &lt;code&gt;npm nodemon -v&lt;/code&gt; to check the version. &lt;br&gt;
StackOverflow and various YouTube tutorials may offer you solutions and ways to get this fixed. If you have tried all but to no avail, here is a help I can offer. &lt;/p&gt;

&lt;p&gt;Try typing &lt;code&gt;npx nodemon app&lt;/code&gt; into the command line and press “Enter”;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx nodemon app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should work;&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%2Fuwadoravhbt6p954bmsg.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%2Fuwadoravhbt6p954bmsg.png" alt=" " width="742" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Node Package eXecute once again proves to be useful in cases like this.&lt;/p&gt;

&lt;p&gt;NPX is simply an NPM package runner, a command line tool primarily used for executing Nodejs packages without installing them; comes automatically with NPM version 5.2. It simplifies the development process by allowing developers to test new packages and experiment with different package versions without cluttering their systems with too many installations.&lt;/p&gt;

&lt;p&gt;Lots of us are already familiar with this. A re-touch just for new developers encountering this command for the first time. NPM is used to download Javascript packages from Node Package Manager, and npx is used to execute JavaScript packages downloaded this way.&lt;/p&gt;

&lt;p&gt;Guys, the npx command did the magic for me.&lt;/p&gt;

&lt;p&gt;If you are using the gitbash terminal, the normal &lt;code&gt;nodemon app&lt;/code&gt; command should run efficiently in your system. But if you are experiencing a similar error, you can go ahead and try the &lt;code&gt;npx nodemon app&lt;/code&gt; command line.&lt;/p&gt;

&lt;p&gt;If this doesn’t solve your problem, I still suggest you revisit stackoverflow or ask a community of developers or a senior developer. &lt;br&gt;
&lt;strong&gt;I hope your nodemon running error problem get fixed&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>nodemon</category>
      <category>webdev</category>
      <category>backenddevelopment</category>
      <category>node</category>
    </item>
    <item>
      <title>What is the fate of technology 2024?</title>
      <dc:creator>Stephen O.</dc:creator>
      <pubDate>Sat, 06 Jan 2024 21:12:53 +0000</pubDate>
      <link>https://forem.com/don_mizzy/what-is-the-fate-of-technology-2024-3eel</link>
      <guid>https://forem.com/don_mizzy/what-is-the-fate-of-technology-2024-3eel</guid>
      <description>&lt;p&gt;The futuristic view of technological advancement is not negligible. Over the past few years, we’ve witnessed changes and ongoing processes to the very civilization geared towards the apex of tech. Although we cannot place our fingers to proclaim a definite outcome, the game of probability plays its role.&lt;/p&gt;

&lt;p&gt;For career-driven personalities in tech; AI has become a factor to contend with. Most YouTube channels have spoken on this crux, but, I think they’re missing out on some details. Irrespective of the massive layoffs in tech companies, there still will be the need for data engineers, software developers, cybersecurity engineers, etc. Maybe I should not have included this but I believe it’s worth saying; a lot of individuals have jumped into the learning of AI, with the conviction it’s the future (truly it is), I know certainly that not very many of them will see the end light of it. Troll me. You may come to realize that you are better off with your former job and even more fluid (except if you’re a workaholic). I am not saying venturing into AI is not worth it, subserviently, understanding the preliminary undertakings and probable shortcomings is very necessary. Can you handle it?&lt;/p&gt;

&lt;p&gt;Get skilled in multiple computer languages and become efficient with them. It will be a bonus to anyone who finds enough free time to indulge in this. Most companies are gearing towards including chatbots to help attend to customers and automate responses; not far-fetched to make most applications AI incentive and adaptable to provide contextual and predictive experiences for users. The need for companies to protect their big data due to scalability will be in high demand. For most of us into tech, you keep your eyes out for juicy offers. &lt;/p&gt;

&lt;p&gt;Expect jaw-dropping inventions in tech devices. Don’t act like you don’t know. A lot of us already have huge expectations in whatever tech brand you’ve picked interest in. 2023 was an eye-opener to how far tech can birth realistic inventiveness. So, it’s not odd that I added this to my list.&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%2Fpeqb8n1yz35hnbotg0d6.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%2Fpeqb8n1yz35hnbotg0d6.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New languages dominating the market. Over 2023 there has been a rise and fall in what programming language the tech community needs to operate extensively. However, there are two languages likely to scale up in use this year; &lt;strong&gt;Julia&lt;/strong&gt; and &lt;strong&gt;Elixir&lt;/strong&gt;. The work on Julia began way back in 2009 when &lt;strong&gt;Stefan Karpinski&lt;/strong&gt;, &lt;strong&gt;Viral B. Shah&lt;/strong&gt;, and &lt;strong&gt;Alan Edelman&lt;/strong&gt; decided to act, with the driven purpose of creating a language that’s both high-level and fast. It was first announced in 2012. Scientists use this language to quickly and easily develop data analysis and visualization tools, numerical solutions, and scientific computing applications. Python developers may find this a scandal, but data proves Julia to offer superior performance for numerical and scientific computing; with an inbuilt parallelism making it excellent for heavy computations. What’s your take on that?&lt;/p&gt;

&lt;p&gt;Elixir is a compiled language where optimizations are baked in before a server even starts. This architecture allows Elixir to perform faster than other conventional web development platforms like Ruby, Python, Node.js, and many others; as sources confirm. Created by &lt;strong&gt;Jose Valim&lt;/strong&gt; in 2012 as a research and development project inside Plataformatec. Stackoverflow even recognizes this language above objective-c in 2023 most popular technology languages.&lt;br&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%2Fiuk0a2zsbbtfhagajzn3.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%2Fiuk0a2zsbbtfhagajzn3.png" alt=" " width="554" height="60"&gt;&lt;/a&gt;&lt;br&gt;
There is so much to this that time limits me to discuss. However, being a javascript fan/developer I don’t feel a nudge.&lt;/p&gt;

&lt;p&gt;Remote and hybrid work models will become more prevalent. This is already supported by technologies that enable collaboration, and productivity across physical and digital spaces. A viable instance is the Metaverse interview between &lt;strong&gt;Mark Zuckerberg&lt;/strong&gt; (CEO of Meta) and &lt;strong&gt;Lex Fridman&lt;/strong&gt; (a podcaster) held on Thursday, September 28, 2023. &lt;em&gt;The first metaverse interview&lt;/em&gt;. This very method of work will probably touch all levels of workforce. Expect more of it.&lt;/p&gt;

&lt;p&gt;2024 is another year for serious modifications, springing opportunities in technology and software systems; Robotics, AI, space travel, etc. I for one hold a very stake in that. &lt;/p&gt;

&lt;p&gt;What do you think?!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
