The Data Issue

Issue #267.February 29, 2024.2 Minute read.
Bytes

We just got the results back from the State of Data 2024 survey, and Directus gave us permission to tear them apart discuss them respectfully in today’s issue.

Who’s Directus? They’re the open-source backend platform (25k GitHub stars) who put the survey together. If you were lucky enough to win one of the prizes for completing the survey, they’ll email you directly.

We’re also covering the JS runtime mascot royal rumble, MarioKart in the browser, and a new video series that won’t ruin your childhood.

Welcome to #267.


Eyeballs logo

The Main Thing

Woody from Toy Story riding on Bullseye the horse

Me racing to tell everyone I know that SQL is making a comeback

How JavaScript developers work with data

For eons, humans have looked up at the stars and asked themselves universal questions like, Are we alone in the universe? Does free will actually exist? What database do most JavaScript developers use in production?

I’m told that the best way to get answers to those first two is by experimenting with DMT. But unfortunately, getting answers to that last question isn’t so simple.

That’s why Directus created this State of Data survey a couple months ago — because they (along with us) were curious about how professional JavaScript developers are working with data in 2024. So without further ado, let’s dive into our top five takeaways from the survey:

1. Postgres wins the popularity contest. Currently used by over 63% of respondents, Postgres ran away with the title of DB Homecoming Queen, edging out second-place MySQL (47%) by a wide margin. When you think about Postgres’ vibrant ecosystem of extensions, active open source community, and first-class JSON support, it makes sense to see how the JS community has fully embraced it.

2. Developers like their data relational. Over 57% of respondents expressed a preference for relational DBs, and the only NoSQL DBs to crack the top 10 were MongoDB (3rd), Redis (4th), ElasticSearch (9th) and DynamoDB (10th). Unless you’re Amazon trying to squeeze every ounce of performance out of your database on Prime Day, the upfront costs of designing the optimal data model for NoSQL make relational DBs look a lot more attractive.

3. Everyone needs a database, but no one wants to manage them. Rather than run their own DB servers, developers are overwhelmingly opting for solutions hosted by AWS, GCP, or service providers like Supabase or PlanetScale. It turns out that no one wants to deal with the problems that come with maintaining their own databases, and we don’t blame you.

4. REST is back, baby. Let’s be honest, it never really left, but for a while, the JS community flirted with GraphQL or with running their “realtime” database directly from their client side code. But it now feels like we’ve traveled through the full midwit meme and landed right back at wrapping our DBs with a RESTful API, as 94% of respondents selected it as their preferred way to work with APIs.

5. Developers don’t really care about cost. CFOs are clenching their cheeks reading this, but most developers don’t view cost as a primary factor when choosing a database hosting solution (shocking, I know). It turns out that developers tend to be a lot more concerned with performance, reliability, and ease of use — at least until they get promoted to the VP level and their bonus gets tied to cost savings 😭.

Bottom Line: You might see some slightly different answers here if you polled an audience of pure-play backend developers. But as JavaScript continues to eat the world, the lines between frontend, backend, and fullstack are looking blurrier than ever — so it’s even more interesting (imo) to see what tools non-traditional backend developers prefer to use in 2024.

If you want more interesting insights, we’ll post a link to the full survey results when they’re publicly available next week.

        

Multiple logo

Our Friends
(With Benefits)

People bowing to Mulan

When you show your team how to do load testing straight from the CLI

Multiple lets you load test anything in 10 minutes

And you can do it all with JavaScript, npm packages — or the brand-new Multiple CLI. Here’s how:

  • Use the CLI to create, run, and debug load tests, and get results from the command line (see the docs)

  • Test any stack - like HTTP, WebSockets, GraphQL, GRPC, Kafka, auth, and more

  • Track performance across builds to stop slow code from shipping

Multiple made a big splash when it first launched (front page of Hacker News), because developers loved its JavaScript-centric approach to load testing. And this new CLI should take things to the next level.

Download the CLI from npm to try it out for free — and never worry about outages or cloud cost spikes again.


Spot the Bug logo

Spot the Bug

Spot the Bug — Sponsored by Callstack

They just released the 2024 version of their free Ultimate Guide to React Native Optimization ebook that’s written by top RN experts and covers everything you need to know about RN performance.

function getId(user, fallback) {
  return user && user.id ?? fallback;
}

Cool Bits logo

Cool Bits

  1. 100 Apps in 100 Hours is a cool video series where Bryant Gillespie tries to rebuild popular apps like Airbnb and Doordash in under an hour. And unlike the new live-action Avatar the Last Airbender on Netflix, it won’t ruin your childhood.

  2. Parcel v2.12.0 adds support for macros, which let you generate code at build time using regular JavaScript functions. It also comes with better CSS bundling support, improved performance, and a new online REPL.

  3. Alex Lunakepio is an absolute mad lad who created Mario-Kart-3.js — an open-source, 3D version of Mario-Kart built with React that runs entirely in the browser.

  4. Coherence created a Platform-as-a-Service with automated environments and pipelines that let you easily deploy and scale your cloud infrastructure using AWS or GCP. It gives you a similar experience to platforms like Vercel and Heroku, but much more flexible and with no vendor lock-in. [sponsored]

  5. David Bushell wrote about his First impressions of jsr, after he was blessed enough to be invited off the waitlist to try Deno’s new package manager, which features TypeScript support and npm compatibility.

  6. directus.pizza is a live instance of the Directus platform for you to try to break play with. You can also poke around their GitHub repo to see if it really is worth the 25k stars.

  7. Sarah Gooding wrote about how OpenJS formed a new industry group to improve JS package metadata interoperability. The group is called the Package Metadata Interoperability Collab Space, or PMICS for short. If you have a hard time remembering that, just think of how your PM always gives you the ick.

  8. Eric Simons wrote about how he spent way too much time creating this Self-rendering t-shirt, where the StackBlitz lightning bolt logo on the shirt is constructed with *actually valid* JavaScript code that’s the source code of the image itself. [sponsored]

  9. TkDodo wrote about Avoiding Hydration Mismatches with useSyncExternalStore.

  10. Deno shared their 2024 roadmap, and I was surprised to see that they had to push back the fight between their dino mascot and Node’s rocket turtle mascot to next year. I guess we’ll have to wait a little longer for the Runtime Mascot Royal Rumble.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Callstack

The ?? operator has higher precedence than the && operator. This means that the expression user && user.id ?? fallback is equivalent to user && (user.id ?? fallback). This is not what we want. We want to return fallback if user is null or undefined, and user.id otherwise.

To fix this, we need to use parentheses to change the order of evaluation:

function getId(user, fallback) {
  return (user && user.id) ?? fallback;
}

or even better, just use optional chaining:

function getId(user, fallback) {
  return user?.id ?? fallback;
}

one question interview logo

One Question Interview

Why do you think we’re currently seeing a transition from NoSQL back to SQL, and do you think this trend will continue into the future?

In one word: reliability. Not in the “the DB doesn’t crash” sense, but that you know what you’re getting. Obviously that goes beyond the obvious “knowing the structure of the data”, but more so that SQL is standardized and has been proven over decades. Engineers know it well, it’s fully documented, and there are many flavors available (distributed, edge, Aurora, etc) to support most use cases. In the end, I just don’t think many large enterprises moved fast enough to significantly switch to NoSQL… and now that the initial wave has subsided, they’re opting to stay on SQL due to its vast resources and number of developers available.

– Benjamin Haynes, Directus Founder & CEO