![]() Today, we’ve got a live-action version of Vampires Don’t Wear Polka Dots, disgraced stage magicians, and my adrenal glands working overtime. Welcome to #138. You can read this on the web here. ![]() The Main Thing![]() I'm gonna come at you like a spider monkey Expo 47 gets down and dirtyI retired from building mobile apps for the same reason I retired from volunteering at the Southern Utah Center for Gastrointestinal Diseases: they weren’t paying me enough to deal with all that mess. But some developers are still out there fighting the good mobile fight — even if that means dealing with multiple codebases, multiple app stores, and all the jank that comes with trying to build native(ish) experiences for dozens of different device types. But hey, someone needs to make sure my kid can play Subway Surfers while Dad doomscrolls Twitter, so thank you for your service. Expo (aka the Next.js of React Native) has been been working to make mobile dev less painful for over six years now — and they just released a major SDK update that looks like a big step forward (we hope 🙏). Quick review: Expo is the name of both a framework and the company behind it (not confusing at all). Expo-the-company has services that automate the build process and App Store submission process. Expo-the-framework is an SDK for React Native that brings essential features like routing and cross-platform modules for interacting with things like the device’s camera, sensors, and contact list. At this point, it’s basically the default way to use React Native. Here’s what’s new and exciting in Expo 47:
Bottom Line: Much like Next.js for React, Expo increasingly looks like the future of React Native. And this release *might* be enough to tempt me out of my mobile dev retirement.
![]() Our Friends |
![]() | Senior or Staff Front-end Engineer | ||
| |||
Close.com is looking for an experienced React developer to help design and implement major user-facing features. Close is a 100% globally distributed team of 65 happy people, dedicated to building a product our customers love. |
![]() | Senior Full Stack Engineer | |||
| ||||
Motion is looking for experienced TypeScript engineers to build the next generation of productivity tools. You'll inform key frontend architectural decisions that help Motion scale the next 2 order of magnitudes, create delightful user-facing features, and improve application performance. We are an ambitious team of 15 people distributed remotely across North America. |
![]() | Cloud Architect | |||
| ||||
Capco is the largest financial services consulting firm in the world, and they're looking for an experienced cloud engineer to lead new projects for their clients, which ranges from FinTech companies to global banks. | ||||
Powered By: |
![]() | Lead Technical Architect | ||
| |||
The UK Home Office is looking for an experienced engineer to help define, own, and contribute to its technical roadmap and strategy as they build applications and services used by the UK government and its citizens. | |||
Powered By: |
![]() | Software Engineer - Frontend | |||
| ||||
As a frontend engineer at Phantom, you’ll help create delightful user experiences, contribute to cross-platform client infrastructure, and craft web3 developer SDKs for Phantom's crypto wallet that's used by millions. |
They made this free white paper about how to track DORA metrics accurately, so you can improve your team’s efficiency without making them hate you.
Shout out to MapleLead for this one. What gets logged?
let i = 0
function x() {
i++
return 10
}
i += x()
console.log(i) // ?
Cloudflare just announced the Workers Browser Rendering API, which means you can now run Puppeteer on CF workers (previously impossible because of size and other limitations). Cloudflare Conf is pumping out these new product announcements faster than my adrenal gland was pumping out stress hormones when I accidentally locked myself inside that tiny bathroom at a rest stop somewhere off I-80.
CarbonQA provides QA services geared for dev teams. They’ll break your code repeatedly — but the good news is that you’ll never have to waste time on testing again. They work in your tools, talk with your team on Slack, and let your devs be devs. [sponsored]
Meta just open-sourced Sapling, a Git-compatible source control client made specifically for the chunkiest of all monorepos. If you work in a codebase that’s large enough to need this, you have my thoughts and prayers.
Speaking of chunky monorepos, Narwhal (the company behind Nx) just raised $8.6m in seed funding. Some might scoff at the idea of naming a devtool company after one of the most bloated and blubbery animals in the sea, but once again, we are talking about monorepos here. So it makes sense.
There’s a brand new Next.js TypeScript Language Server Plugin that will make your life a lot easier if you ❤️ Next and TypeScript. If you don’t love those things, then you don’t have to use it. You don’t even need to rant on Mastodon Twitter about why you don’t love them. It is not required.
Dominik wrote about his experience working with Zustand (the React state management library, not the disgraced former magician).
Lee Robinson made this 6-minute video on how to use the new and improved font optimization in Next.js 13. For the first 30 seconds, I thought this video was an ad for Google Glass because 1) this is my first time seeing Lee in glasses, and 2) Lee looks suspiciously similar to the wearable tech models Google used back in mid-2010s.
ArrowJS is an experimental library that brings observable data and reactive DOM rendering to vanilla JavaScript. Still not quite as exciting as my own version of an experimental, real-life library, where we’ll combine a public library with a Bailey School Kids-themed escape room. One room based on Vampires Don’t Wear Polka Dots, another one based on Skeletons Don’t Play the Tuba, and so on — until you get through all 80+ books and rooms. We’re still looking for a few investors (and one very large library), so hit me up if you know anyone who’s interested in the future of childhood education.
let i = 0
function x() {
i++
return 10
}
i += x()
console.log(i) // ?
The answer is 10
. Here’s how it works.
For clarity, we can refactor i += x()
to be i = i + x()
. From there, the interpreter begins evaluating our code. Before it evaluates the function invocation, it seems that i
evaluates to 0
, so now our code is i = 0 + x()
. The invocation of x
returns 10
, so now it’s i = 0 + 10
, which gives us i = 10
.
Note that if you swap the order of i
and x()
like i = x() + i
you get a different value - 🫂.