Pop Quiz

Issue #138.November 21, 2022.2 Minute read.

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.

Eyeballs logo

The Main Thing

Kid in goggles playing in mud

I'm gonna come at you like a spider monkey

Expo 47 gets down and dirty

I 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:

  • File Based Routing: Trying to implement cross-platform routing is usually a recipe for chaos and destruction. But Expo 47 brings the FBR magic we’ve seen in web platforms like Next to mobile.

  • Native Modules API: Expo has a new API that makes it easy for h4rdc0r3 mobile engineers to create native modules using languages like Swift (iOS) or Kotlin (Android) that work seamlessly with React Native.

  • Hermes By Default: React Native’s new JavaScript engine improves cold start times by over 50%. Not to be confused with “Herpes by default”, which is what you can expect if you attend an FTX company retreat in the Bahamas.

  • Concurrent React: Expo 47 brings React 18 and the concurrent features of React to your mobile app, making it the “real React 18 release” part 2 (for mobile this time).

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.


FusionAuth Logo

Our Friends
(With Benefits)

A skeleton admiring the clothes of medieval person

"You built all of this in an hour? Incredible."

FusionAuth is the holy grail

Trying to build authentication from scratch is like trying to hold in diarrhea while meeting your future in-laws — it’s painful, complicated, and you’re one wrong step away from a complete disaster.

That’s why we’re huge fans of FusionAuth.

They’re a complete auth solution that takes care of all the gross stuff like SSO, MFA, WebAuthn, user management, and security — and if you don’t know what one or more of these things are… you probably need it.

Their Free Community version is surprisingly robust (no credit card, no limits, and it’s free forever if you self host 🙏). That makes it great to learn with or use for side projects, but it also has a pretty seamless integration process for existing apps.

And if you ever get stuck, you can call their support line and talk to an actual engineer who really knows auth — instead of just typing your questions into a support chat box that no one will read (like some other auth companies I know).

Check it out and never worry about auth again.

The Job Board Logo

The Job Board

Senior or Staff Front-end Engineer
100% Remote

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
Remote friendly

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
US-based Remote

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: hackajob logo

Lead Technical Architect
Application Infrastructure

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: hackajob logo

Software Engineer - Frontend
React + TS

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.

Pop Quiz logo

Pop Quiz

Sponsored by Sleuth

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() {
  return 10

i += x()

console.log(i) // ?

Cool Bits logo

Cool Bits

  1. 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.

  2. 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]

  3. 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.

  4. 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.

  5. 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.

  6. Dominik wrote about his experience working with Zustand (the React state management library, not the disgraced former magician).

  7. 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.

  8. 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.

Pop Quiz logo

Pop Quiz: Answer

Sponsored by Sleuth

let i = 0

function x() {
  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 - 🫂.