Newsletter - April 2024

This month, I'm talking about GitHub Copilot Workspaces, React Server Components, Thoughtworks Technology Radar, and more!

Newsletter - April 2024

GitHub Copilot Workspace

This is the closest thing to the future of software development that I've seen so far. It looks like GitHub may have nailed the balance between letting AI accomplish tasks while still allowing room for human intervention and creativity. GitHub, and by extension Microsoft, is building a powerhouse of developer tools based on AI.

GitHub Copilot Workspace: Welcome to the Copilot-native developer environment
We’re redefining the developer environment with GitHub Copilot Workspace - where any developer can go from idea, to code, to software all in natural language.

CSS in React Server Components

This article will expand your understanding of RSCs and how current CSS frameworks fit in. Before reading this article, I had heard that existing frameworks like MUI (big fan) would need to do a major overhaul in order to support RSCs, but I didn't really understand why. Now I do! Josh Comeau puts out great content, and this is no different.

CSS in React Server Components
You can’t make an omelette without cracking a few eggs, and when the core React team unveiled their vision for the future of React, some of my favourite libraries got scrambled 😅. In this blog post, we’re going to explore the compatibility issues between React Server Components and CSS-in-JS libraries like styled-components. You’ll understand what the issue is, what the options are, and what’s on the horizon.

Thoughtworks Technology Radar

The Technology Radar by Thoughtworks is a must read in my opinion. It's extremely well organized and thought through. You can use it to quickly get up to speed on the latest techniques and tools in the industry. Not surprisingly, AI and LLMs are the major trends in this issue, but a Hold on "Web components for SSR web apps" also caught my eye. I'm not 100% sure this would include React Server Components since they're not called out by name, but it would seem teams at Thoughtworks are expressing caution here.

Technology Radar | An opinionated guide to today’s technology landscape | Thoughtworks
The Technology Radar is an opinionated guide to today’s technology landscape. Read the latest here.

Stop Going to the Cloud and Getting Scammed

This article serves as a solid reminder that most apps don't need the infinite web scale offered by AWS and other major cloud providers. You can go very far with a single server.

Stop going to the cloud and getting scammed. $200 infra to serve your startup till 100k monthly users in 15 minutes. Self-hosted Postgres, caddyserver and docker-compose FTW.
An example of how you can save money, simplify your architecture and speed up the development by going back to the basics and ditching the cloud, kubernetes and whatnot.

Effect

This TypeScript library went viral on X for a couple of days last week. There was a fair amount of criticism, but I am eager to try this one out. The core value prop is around explicit error catching, which would be a huge win for most TypeScript projects in my opinion. (Edit: The actual core value prop is to write production grade TypeScript. Explicit error catching is the feature that has most caught my eye) The drawback is the large API surface area that can take over your app and make future breaking changes difficult to manage.

Effect – The best way to build robust apps in TypeScript
Effect is a powerful TypeScript library designed to help developers easily create complex, synchronous, and asynchronous programs.
DevTools Tips & Tricks
Front-end developers spend a significant amount of time working inside the browser’s DevTools. Likely just as much as they spend time writing code in the code editor. However, most developers barel…
React Server Components in a Nutshell
Paul Scanlon uses Waku to show how RSCs give React developers access to asynchronous server-side requests and data at the component level.
Why you need a “WTF Notebook”
There’s a very specific reputation I want to have on a team: “Nat helps me solve my problems. Nat get things I care about done.”
Make invalid states unrepresentable
“Type-driven development”
TypeScript: Branded Types 🔧
How to brand TypeScript types for norminal typing