Stacks on Stacks on Stacks

Issue #92.March 21, 2022.2 Minute read.

This week, we’ve got new hope for my Google Glass app, using TypeScript to build backends, and Soulja Boy deep cuts from the Remix team.

Welcome to #92.

sad guy on beach

How are we supposed to fit all that code in this sandbox?

CodeSandbox is coming for that SaaS cash

Quick, without cheating: How many CodeSandboxes were created in 2021?

If you guessed 12 million, you are correct! And if you really knew that off the top of your head, your name probably rhymes with Clives clan Cloorne.

CodeSandbox is one of those cool stories of a small side project turning into a legit business, and they just announced plans for a new product — CodeSandbox Projects.

The goal of Projects is to help developers use the CodeSandbox platform for “bigger, more complex projects and bigger teams.” Or in other words, “to help CodeSandbox get more of those sweet enterprise SaaS dollars.”

But hey, as there’s a solid free tier for me to mooch off, I’m all for it. The product itself looks pretty compelling:

  • Every git branch is backed by a URL, so you can share it with a link. When you open a link, it spins up a new dev environment for you in a few seconds — without putting you through config hell 🙏

  • This lets you share a running version of your branch to anyone you give access to. They can contribute from there by pressing “Fork.”

  • It also comes with a new VSCode Extension that lets you collaborate live with others on CodeSandbox directly from VSCode.

Bottom Line: My side project is also just a few steps away from becoming a legit business like CodeSandbox. I just need to convince 12 million people to do 3 things: 1) download my AR app for Google Glass that lets you play Guitar Hero by tracking your eye movements, 2) actually buy a Google Glass, and 3) start thinking Guitar Hero is cool again.

Jeopardy answer of what is pain

Building notifications from scratch. [sponsored]

Courier’s new API saved me from my PM

You know that one person on your team who loves building complex notification systems?

Of course you don’t.

That’s because notifications have become a special kind of hell with tons of different platforms to worry about — email, SMS, chat, web and mobile push, Slack and more.

That’s what makes Courier’s simple API so powerful. It’s a one-stop shop for all notification platforms — so you can use the same API call to send your users an email, an SMS, a Slack message, or a push notification.

And their new Courier Elemental update gives you a JSON-based syntax to easily customize the design and content for each platform you send messages to.

This makes designing the actual notifications a lot less tedious, and it lets you create more dynamic notifications like magic login links and location based alerts.

So tell your PM to go as crazy as they want with notifications, because Courier’s got your back.

Check it out and get 10,000 free sends a month.

Patrick Star as a Sheriff

There’s a new server sheriff in town

ChiselStrike lets you build backends with TypeScript

Remember how 20 years ago, you were considered an “experienced full-stack developer” if you spent a few weeks teaching yourself HTML, JavaScript, and MySQL?

Well, ChiselStrike is bringing that same energy back to the modern web. They just announced a new, open-source serverless platform and their first trick? Allowing you to create a RESTful backend simply by creating a TypeScript definition.

So get ready to tell that pretentious-ponytailed backend architect at your company that there’s a new server sheriff in town.

Here’s how it works:

You create a Model (/models/User.ts)

import { ChiselEntity } from "@chiselstrike/api"

export class User extends ChiselEntity {
  username: string;
  email: string;
  city: string;
  age: number;

Then you add a file to your endpoints directory (endpoints/user.ts).

import { User } from "../models/User"
export default User.crud('user');

And that’s it. ChiselStrike then generates that endpoint for you - no database setup, no database connections, no compliance worries, no queries, just API. It’s 🪄 magic, but in the best way.

Bottom Line: Can’t wait to see the look on my wife’s face when she sees that huge “My husband is a full-stack developer” bumper sticker that I put on the back of her car for her birthday. You’ve gotta do the little things to keep that spark alive.

🔬 Spot the Bug — Sponsored by PostHog

PostHog is an open-source product analytics suite you can self-host. Heatmaps, Recordings, Funnels and more — all in a platform where you can build your own TypeScript plugins!

function getRandomChoice (array) {
  return array[Math.floor((Math.random() * array.length) + 1)]

getRandomChoice(["jersey mikes", "firehouse", "subway"])

Cool Bits

  1. The Remix team is tired of you not knowing how to set up a Redis cache, so they just released Stacks — a collection of pre-built, production ready templates. In the most brilliant marketing campaign we’ve seen, they put those VC bucks to work in a 🔥 new collab with an up and coming rapper - Introducing Stacks on Stacks on Stacks.

  2. BeJS Conf is happening in Belgium on May 13th, and they’ve got a ton of cool speakers from the TC39 Committee and core team members of trendy JS frameworks. Plus, Brussels is pretty incredible in the Spring (or so I’m told). [sponsored]

  3. Igor Minar wrote a great blog post on his recent move to Cloudflare, after 12 years of working on web infrastructure and Angular at Google.

  4. Solito is a new library that unites React Native with Next.js and finally gives the people what they want.

  5. Twitter just released a Twitter API SDK for TypeScript. No word yet on if you can use it to set up a backend, but we’re cautiously optimistic.

  6. Ryan Carniato wrote about The Return of Server Side Routing. It’s a lot like The Return of the King — except for all the hobbits, orcs, and allusions to WWII.

  7. Ladle is a new alternative to Storybook for testing React components that’s based on Vite and claims to be a lot faster — kind of like how a ladle is a much faster tool for serving soup than a regular spoon? LGTM.

  8. Alex Kondov wrote a book-length article called Tao of Node — Design, Architecture & Best Practices. When he wrote Tao of React last year, we offered to become his book publisher for a very reasonable 85% commission of all lifetime sales. Still waiting for an email reply, Alex.

🔬 Spot the Bug Solution — Sponsored by PostHog

By adding 1 to the result of Math.random() * array.length, it will always be greater than 1 which means the first element in the array (jersey mikes) will never be chosen.

function getRandomChoice (array) {
  return array[Math.floor((Math.random() * array.length))]

getRandomChoice(["jersey mikes", "firehouse", "subway"])