tyler

星期二 08 晚上 九月 23o 2025

Bytes: Mediabunny and McDonald's WiFi

Bytes: Mediabunny and McDonald's WiFi

Cool Bits logo

Cool Bits

  1. Cloudflare just announced Cap’n Web, a new RPC system for browsers and web servers in pure TypeScript with no schemas. It doesn’t taste quite as sweet as Cap’n Crunch Oops All Berries, but at least it won’t cut up the roof of your mouth as much.

  2. Dex Horthy wrote about getting AI to work in complex codebases, beyond just asking Claude to “make no mistakes this time.”

  3. Jeff Escalante wrote this comprehensive guide to authentication security in web applications for the Clerk blog. It shows the top auth vulnerabilities being exposed by attackers and how to fix them in your app before something bad happens. [sponsored]

  4. Piotr Grabowski created CompileBench to see if AI can compile 22-year-old code.

  5. Tane Piper wrote this meditation on NPM supply chain attacks. But we’re gonna need you to meditate a little harder, Tane, because we are getting absolutely rekt out here.

  6. CodeRabbit just launched CodeRabbit CLI, which gives you senior-level code reviews in your terminal and acts as a quality gate for all the code that Claude, Codex, and Gemini write for you. [sponsored]

  7. Chander Ramesh wrote about how and why his team at Motion are moving off of TypeScript and starting a blood feud with Anders Hejlsberg (jk).

  8. Simona Cotin wrote about how Angular is embracing AI for next-gen apps

  9. Datadog’s Front-end Developer Kit gives you instant access to their best practices guide for testing and monitoring, a solutions brief on how to catch issues earlier, and lots more resources. [sponsored]

  10. Ghostty creator, Mitchell Hashimoto wrote about how Nosferatu libghostty is coming.

  11. Addy Osmani wrote this deep dive on how modern browsers work

  12. Speaking of which, Safari 26.0 just came out with 75 new features, 3 deprecations, and 171 other improvements. Your move, Arc Browser Jira Browser.


Pop Quiz logo

Pop Quiz: Answer

function p1() {
  return new Promise((resolve, reject) => {
    setTimeout(() => reject("Error in p1"), 1000);
  }).catch((error) => {
    console.error(error);
  })
}

function p2() {
  return new Promise((resolve) => {
    setTimeout(() => resolve("p2 resolved"), 1000);
  });
}

function pAll() {
  Promise.all([p2(), p1()])
    .then((results) => {
      console.log("All data resolved:", results);
    })
    .catch((error) => {
      console.error("Error resolving data:", error);
    });
}

pAll();

First, Error in p1 is logged, then [ 'p2 resolved', undefined ] is logged. Since p1 catches the rejection, it doesn’t propagate to the Promise.all catch handler allowing p2 to resolve. But, since p1 doesn’t return anything, its result is undefined.

Bytes

Want us to say nice things

about your company?

Sponsor Bytes

or share it

Built with ❤️ by ui.dev

50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101

发布者