Deno's Dilemma

Issue #166.March 2, 2023.2 Minute read.
Bytes

Today’s issue: TLC’s new JavaScript dating show, innovative pasta variations, and why you don’t need a build step.

Also, congrats to James S. for winning React Data Grid’s MacBook Pro Giveaway. There are 150,000+ of you who read this so odds are there are more than one “James S”. If you happen to be a James S. who didn’t get an email from us, we think you’re still a winner, just not of a MBP 🫶.


Eyeballs logo

The Main Thing

Screenshot of the Mom dinosaur from The Land Before Time literally dying

Deno stans when they see it added package.json support

Deno’s Dilemma

On the outside, everything’s been going great for Deno. They’ve got over 250k monthly active users, they’ve raised $26 million from some big-name VC’s, and they’re shipping new releases with even more regularity than I felt after that prune juice cleanse.

But on the inside, there’s a battle raging over Deno’s soul. Ok that might be a little dramatic, but the division all stems from one question: How much should Deno embrace its demons (Node and npm)?

Most of the Deno die-hards would probably say, “Not at all.” And that makes sense, considering Deno’s original pitch was to leverage Web-standard APIs (instead of Node’s non-standard APIs) and to be secure by default (unlike the npm ecosystem).

But after a few years, the Deno team discovered that network effects remain undefeated — most mainstream developers simply won’t use Deno if it doesn’t support npm packages and Node modules. So in an effort to expand the Deno tent, the team chose to go back to its roots and embrace its anagrammatic sister runtime.

Here’s a quick timeline of how it happened:

  • August 2022: Deno made the big announcement that it was working on Node and npm compatibility. They acknowledged that not all Deno users would be happy about this, but shared that they felt it was the best thing for the runtime as a whole.

  • November 2022: Deno announced stabilized npm compatibility, which let users import over 1.3 million npm modules into Deno. And in January, they released support for built-in Node modules. They claim to do both in a way that’s more secure and still prioritizes ES Modules and Web-standard APIs.

  • Last week: Deno released v1.31 with package.json support. This allows Deno to automatically discover package.json in your codebase and use it to install and resolve dependencies. It also makes it easier to migrate existing Node projects to Deno. Many hardcore Deno stans were… not thrilled about this.

Bottom Line: There’s always growing pains when something you love makes tradeoffs to increase its mainstream appeal — whether that’s OSS or early 2000’s Green Day. Will Deno’s big changes pay off with a big bump in adoption? Stay tuned.

        

Retool logo

Our Friends
(With Benefits)

Patrick Starr with a trophy on his head

When you get promoted for saving your team 3 weeks of engineering time.

Retool can help you build legit business software now

Want to know the fastest way to become an L7 engineer?

Get staffed on some business-critical software projects at your job… then use Retool to build everything 10x faster than normal. Repeat this until you’re making $500k at Google.

And this might actually be possible, because of how they keep beefing up the functionality of their platform. Check out what some of the best engineering teams in the world have built with Retool lately:

  • Brex and Plaid used it to build software that underwrites loans, measures risk, and investigates fraud.

  • DoorDash and ShipBob are using it to build back-office apps for sales and support teams.

  • Amazon and Peloton used it to build software that manages returns, promos, inventory, and GDPR compliance.

What could you build? Try it out for free to find out.


Tip logo

The Tip

Sponsored by QA Wolf

They’ll get you 80% automated end-to-end test coverage in 4 months and keep you there, so you’ll never have to worry about testing again.

Real devs know that centering a div is easy, but what makes even the most senior developers cry - that random overflowing element that makes the whole page scroll horizontally.

How could you find that element? Answer below.


Cool Bits logo

Cool Bits

  1. Ryan Carniato wrote about The Evolution of Signals in JavaScript. At this point, signals are becoming so trendy that I’m just waiting for TLC to make a JavaScript-themed dating show called Mixed Signals.

  2. Want to get compliant with security frameworks like SOC 2 and HIPAA? It usually takes months, but Secureframe automated the whole process to make it quick and painless for you. Yay, software. [sponsored]

  3. Remix v1.14 just launched with Hot Module Replacement and Hot Data Revalidation (a new term they’re using to refer to HMR for data loaders).

  4. Emil Widlund created nodl, a new framework for creating visual Node graphs — not a new type of pasta.

  5. John DeWyze wrote about The 25% Rule for Tackling Technical Debt that his team follows at Shopify. It’s like Google’s 20% rule, but instead of working on something fun, you’re refactoring nasty old code.

  6. Tldraw just released Signia, a scalable signals library for TypeScript. This all reminds me of something my life coach told me once. If you’re socializing and you run out of things to say, remember “STST” – Signals, Type Safety, or Tailwind. Never fails.

  7. Jhey Tompkins from the Chrome team wrote about how you can Tether elements to each other with CSS anchor positioning.

  8. Andy Jiang wrote an article on the Deno blog called You Don’t Need a Build Step. Ok, but then when else would I have time to work on this script for the Mixed Signals pilot episode?


Tip logo

The Tip

Sponsored by QA Wolf

Your first thought might be to use the timeless classic border hack.

* {
  border: 1px solid red;
}

But before you burn your eyeballs out, there is an easier way – with the POWER OF JAVASCRIPT. Just open up the browser’s console and run the following snippet.

document.querySelectorAll("*").forEach(el => {
  if(el.offsetWidth > document.documentElement.offsetWidth) {
    console.log(el);
  }
})

If an element on the page is wider than the document, it’ll get logged to the console.

Bonus:

Most browsers allow you to right click on the elements that were printed to the console and scroll them into view. Unfortunately, you still have to fix the issue, but at least you’re one step closer to the solution.