Today’s issue: Blaming WebSockets for questionable life choices, discovering what a SPA is, and escaping data hell.
Welcome to #339.
As a code poet, I prefer to write my code by hand (in Notepad++)
It’s that time of year when the leaves are changing, the pumpkin spice is flowing, and the conferences are conferencing ✨.
But despite the dozens of keynotes, live demos, and thinly veiled marketing pitches, last week’s GitHub Universe is still generating a lot of buzz on Twitter, Bluesky, and the comment section of the NY Times cooking app (my personal fave).
That’s because GitHub Copilot used the conference to announce a bunch of game-changing new features that should help it evolve beyond the “fancy autocomplete” stage – and start fulfilling entire tasks across the whole GitHub platform.
Let’s check out the highlights:
Multi-file editing in VS Code – Copilot’s AI is now able to analyze and understand entire codebases and make changes to multiple files based on your prompts.
AI-assisted code reviews – Copilot can now comment on pull requests, suggest code changes, and even make updates to your code based on feedback. And if it can learn to drunk-argue with junior developers about semicolons at the team BBQ, my manager will be officially obsolete.
Choose your fighter model – Whether you’re a Claude Sonnet stan or an OpenAI o1 truther, you can now choose your own model for Copilot chat and toggle between them.
GitHub Spark – A new natural-language based toolchain and managed runtime environment for creating and deploying “micro apps.” It’s similar to other NL-based platforms like bolt.new and v0, but a lot more… micro?
Bottom Line: Even though it feels like a decade ago, it’s only been a couple years since GitHub Copilot first blew our minds with “T9 Word for developers.” The AI-assisted devtool space space has heated up a lot since then – but GitHub Copilot clearly isn’t going anywhere.
Trying to manually set up large-scale web scraping for your app
Their Web Scraper APIs get you access to structured web data from dozens of popular sites – so you’ll never get blocked or rate limited again.
Plus you’ll never have to worry about setting up proxy servers, headless browsers, or any other infra, because Bright Data handles it all for you.
Here’s how:
Their CAPTCHA auto-solvers, automated IP rotation, and residential proxies make sure you can always get the data you need.
Their infrastructure makes it easy to scale up, with access to 72 million real user IPs in 195 countries.
Their privacy practices comply with GDPR and all other data protection laws.
Take 10 min to try the Web Scraper API for free – and feel the power of being able to instantly get whatever data you want.
We are expert US-based consultants who have specialized in high-quality React Native development since 2015! Hire us to build, optimize, deploy, and support your React Native app.
function sumArgs() {
let sum = 0;
arguments.forEach((arg) => {
sum += arg;
});
return sum;
}
const result = sumArgs(1, 2, 3, 4, 5);
Jake Lazaroff dared to answer the one burning question all the pundits are asking after this election – What’s a Single Page App?
Oso is hosting a free deep dive on How Google handles Authorization at scale. You’ll learn how Google built its own relationship-based authorization system called Zanzibar, plus the key tradeoffs of building a system like this for your own application vs. using an Authorization as a Service like Oso. [sponsored]
Sunil Pai just released a new project called Shwarma, which he described as “a little evening spike.” But the last time he said that about one of his projects we ended up with a CSS-in-JS epidemic, so I’d approach with caution.
Nuxt just added support for rspack in v3.14, and Rust stans stay winning.
Sarah Guthals wrote this in-depth guide to debugging microservices and distributed systems for the Sentry blog. It explores why we’ve seen a shift from monolithic architectures to microservices, why it’s harder to debug microsystems, and how to do it better. [sponsored]
Ben Grant wrote a 2-part article on the Bun blog about how Bun supports V8 APIs without using the V8 engine.
Nikhil Suresh wrote a plea for help fun article called, Get me out of data hell. I’m pretty sure I saw Nate Silver wearing a t-shirt that said the exact same thing last week.
A Map of Sync shares what Sujay Jayakar learned from 10+ years of working on sync at Dropbox plus his current work to extend Convex’s sync engine for better offline support. [sponsored]
React Navigation 7.0 comes with a new static API that simplifies configuration and makes it easier to work with TypeScript and deep linking.
Elliot Levin wrote about how WebSockets cost his team $1m on their AWS bill. For the record, I would also like to blame WebSockets for the ~$1m bill I just racked up taking my family to Disneyland this week.
In JavaScript, arguments
is not an array, it is an “array-like object” 😅. Because it’s an iterable, you can use a for loop to iterate over it, but if you want to use array methods like forEach
, you need to convert it to an array first. There are a few different ways to do this.
function sumArgs() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
const result = sumArgs(1, 2, 3, 4, 5);
Or you can use the rest operator to get the arguments as an array:
function sumArgs(...args) {
let sum = 0;
args.forEach((arg) => {
sum += arg;
});
return sum;
}
const result = sumArgs(1, 2, 3, 4, 5);
Or you can use Array.from
to convert the arguments to an array:
function sumArgs() {
let sum = 0;
Array.from(arguments).forEach((arg) => {
sum += arg;
});
return sum;
}
const result = sumArgs(1, 2, 3, 4, 5);