Roasting our 2024 Predictions

Issue #352.December 19, 2024.2 Minute read.
Bytes

Today’s issue: Ru Paul’s pragmatic drag (and drop), React’s sweet suspense, and the UI library that preserves my skin’s natural sheen.

Welcome to #352.


Eyeballs logo

The Main Thing

The Penguin from Batman standing in the snow

Old Man Winter coming to remind me of my freezing cold JavaScript takes

Roasting our 2024 Predictions

I just ask you to remember two things as we grade the predictions we made back in January: 1) nobody’s perfect, and 2) this newsletter is free. Let’s dive in.

Prediction #1: Bun achieves their goal of becoming the default JavaScript runtime.

Grade: C-. This definitely didn’t come true in 2024, but I refuse to give this an outright F, because I don’t think we were completely wrong with this take, just early. At least that’s what I’m telling myself about this Bun prediction… and the $50k I put into Hawk Tuah Coin last month.

Prediction #2: More than three of your favorite OSS/devtool startups will die.

Grade: A. Higher interest rates, AI shockwaves, and “having no idea how to make money” made this a tough year for many once-promising devtool startups. Thankfully, big tech companies like Shopify, Cloudflare, and Vercel were able to give some folks a soft-ish landing (unless you were an employee, lol).

Prediction #3: AI will replace no-code/low-code tools.

Grade: B+. Replit, bolt.new, v0, other AI platforms are making it easier than ever to whip up apps and dashboards – but we’re still not quite to the point where it’s replaced every low-code tool out there. But according to Satya Nadella’s highly biased opinion, every SaaS app will be replaced soon – so stay tuned.

Prediction #4: Netlify gets acquired by GoDaddy

Grade: F. After multiple rounds of layoffs last year, it looked like Netlify’s best days were in the rear-view mirror. But in an unlikely turn of events, they won back many in the open-source community in 2024 and are welcoming the ▲ haters with open arms. We should’ve remembered to NBAB – Never Bet Against Biilmann.

Prediction #5: Everyone will actually figure out how to build apps with RSC.

Grade: D. To be fair, we anticipated that React 19 would ship before December 5th, but we should’ve known better. And even though it feels like all the cool kids on Twitter Mastodon Bluesky have been using RSC forever with Next.js, they still have a long way to go to reach mainstream adoption.

Prediction #6: React Forget will not ship.

Grade: A+. I’ve made a lot of money betting on slow React releases on Polymarket over the years – which is why I should’ve known better with my RSC prediction, smh.

Prediction #7: No one will figure out what “Local First” actually means.

Grade A. But it’s provocative. It gets the people going.

Prediction #8: 2024 is the year of Linux on the Desktop data on the edge.

Grade B. Instead of seeing developers moving their databases to the edge, they moved their servers back to us-east-1. But despite this trend, edge databases like Turso and Cloudflare D1 saw significant growth – so we’ll take partial credit with a solid B grade.

Bottom Line: Overall, I give us an A for effort, a B- for accuracy, and a “Needs Improvement” for classroom behavior. See you next year 🫡.

        

QA Wolf logo

Our Friends
(With Benefits)

BMO from Adventure Time looking sad and saying, this is probably bad, huh?

When you realize your team spends 30% of their time waiting to deploy

QA Wolf saves teams $10K per engineer *per month*

And unlike most JavaScript benchmarks, that’s not just a cherry-picked stat – it’s the average savings for all QA Wolf customers in 2024.

Here’s how they do it:

  • 5x faster impact – Their AI-native platform allows them to create, maintain, and run Playwright tests 5x faster than anyone else.

  • 15-minute QA cycles – They provide the infrastructure to run 100% of your test suite in parallel, so your team can test constantly and deploy continuously.

  • Pass/fail results in 5 minutes – Their parallel run infrastructure lets your engineers spend more time building product and less time waiting around.

Get a personalized demo to see how much productivity they could unlock for your team.


Spot the Bug logo

Spot the Bug

Sponsored by Shopify

Shopify has dubbed its Winter ’25 Edition as boring, but it’s not what you think. Edition is focused solely on improving existing products for developers, and the landing page is worth checking out.

const mockAPIData = {
  items: [
    { id: 1, price: 100 },
    { id: 2, price: 200 }
  ]
};

class DataCache {
  constructor() {
    this.cache = new Map();
  }

  getData(key) {
    if (!this.cache.has(key)) {
      this.cache.set(key, mockAPIData);
    }
    return this.cache.get(key);
  }

  calculateTotal(data) {
    data.items.forEach(item => {
      item.price = item.price * 1.2;
    });
    return data;
  }
}

const cache = new DataCache();
const data = cache.getData('products');
const withTax = cache.calculateTotal(data);
console.log('Before tax calculation:', data.items[0].price);
console.log('With tax:', withTax.items[0].price);

Cool Bits logo

Cool Bits

  1. Microsoft just announced that they’re fusing GitHub Copilot with VS Code and offering a new free plan. Thank you for saving my life, VS GitCode HubPilot.

  2. MindStudio created a platform for building and deploying serverless AI functions that would be very difficult/impossible to write with code. They just launched a new feature that lets you auto-generate entire AI workflows from a text prompt – you just tell it what you want the AI worker to do, and it builds all the inputs, functions, and integrations for you. Their demo video on YouTube is pretty mind-blowing. [sponsored]

  3. The team behind Radix, MUI, and Floating UI just released Base UI, an unstyled React component library for building accessible user interfaces. Not to be confused with Baste UI – a library that reminds me to regularly bathe myself in turkey drippings to preserve my skin’s natural sheen.

  4. Tom MacWright wrote about using Val Town to chart dependency bloat.

  5. Adam Argyle wrote a CSS Wishlist for 2025. It’s full of good stuff, but considering the fact that we’re already drowning in new CSS features we barely know how to use, this feels like Dudley Dursley asking for “more presents than last year.”

  6. Incogni is offering 58% off their annual plans with coupon code BYTES. It scrubs your personal data from the web and removes your sensitive information from all broker types, including those tricky People Search Sites. [sponsored]

  7. Pragmatic Drag and Drop is a low level drag-and-drop toolchain for any tech stack. Not to be confused with Ru Paul’s new show, Pragmatic Drag, where the queens all wear comfortable heels and understated makeup.

  8. The MoonBit language just announced that their MoonBit compiler is now open source and available on GitHub.

  9. Joeri Sebrechts wrote about Sweet Suspense in React.

  10. Convex for Startups is a new program that lets you apply to get up to 1 year free of Convex Professional, plus a bunch of other perks. Their all-in-one backend platform gives you everything you need to go from idea to product in weeks, which is why hundreds of the fastest-growing startups already use it. [sponsored]

  11. Jason Bradberry wrote an article called Why I’m excited about text-box-trim as a designer.

  12. Maxwell Neely-Cohen wrote a cool article on a fancy Harvard website that tries to answer the question, If you had to store something for 100 years, how would you do it? Two words: Baste UI.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Shopify

The calculateTotal method mutates the reference to the original data. This means that the original data is modified in place, which can lead to unexpected behavior. To fix this, you should create a new object in the calculateTotal method and return that instead of modifying the original data. Here’s the corrected code:

const mockAPIData = {
  items: [
    { id: 1, price: 100 },
    { id: 2, price: 200 }
  ]
};

class DataCache {
  constructor() {
    this.cache = new Map();
  }

  getData(key) {
    if (!this.cache.has(key)) {
      this.cache.set(key, mockAPIData);
    }
    return this.cache.get(key);
  }

  calculateTotal(data) {
    const newData = {
      items: data.items.map(item => ({
        ...item,
        price: item.price * 1.2
      }))
    };
    return newData;
  }
}

const cache = new DataCache();
const data = cache.getData('products');
const withTax = cache.calculateTotal(data);
console.log('Before tax calculation:', data.items[0].price);
console.log('With tax:', withTax.items[0].price);