Labnotes

Published

Weekend Reading — 👋 A quiet promotion

This week we email like a boss, find a true rockstar developer, converse with whales, and unredact Wikipedia.

Weekend Reading — 👋 A quiet promotion

HistoryMuppet


Tech Stuff

Use The Keyboard A collection of keyboard shortcuts for Mac apps, Windows programs, and a variety of websites. Easy to remember domain name.

preactjs/signals An easier way to do state management. Developed for Preact, and also available for React (at least for now):

At its core, a signal is an object with a .value property that holds some value. Accessing a signal's value property from within a component automatically updates that component when the value of that signal changes.

In addition to being straightforward and easy to write, this also ensures state updates stay fast regardless of how many components your app has.

Your style, our editor Vale is linter for human-readable text: Markdown docs, HTML pages, code comments, etc.

It can check for spelling, style, and readability, and used packaged and custom rules and vocabularies. Integrations for VS Code, Vim, Emacs, GitHub actions, basically anywhere you'd use a linter. Rough around the edges, but worth considering for your CD pipeline.

Hyper Fetch Is this the one client-side fetching library to rule them all?

It seems to have every feature under the sun: conditional queries, offline support, queueing and deduplication, caching with persistence, request cancellation, upload/download progress, etc.

It uses the builder/command pattern, to help build lightweight clients around the API/backend:

import { useSubmit, useFetch } from "@better-typed/react-hyper-fetch";
import { postUser, getUsers } from "server/auth";

// Submitting (mutation)
const { submit, submitting } = useSubmit(postUser.setData({ name: "John" }));
submit();

// Fetching
const { data, error, loading } = useFetch(getUsers);

You need a wiki Google Docs is good at document editing and word processing, as Google Drive is bad at organizing and finding anything.

This app turns your Google Drive folder into an easy-to-use UI: proper navigation on the left, and a document viewer on the right.

CSS container queries are finally here When you need HTML elements that respond to the container (not screen) size, without the complexity of calc/minmax/clamp hacks.

Currently supported in Chrome 105, coming up in Safari 16, and there's a 9kb polyfill you can use with other browsers.

Mailing Writing code that sends emails is hard. If you want responsive HTML emails, you need some smart templating to hide the HTML email pain away. And it takes a lot of preview/testing to get it right.

Mailing starts with MJML, an HTML-like language for generating responsive HTML emails. MJML handles the complexity of generating an HTML table only so you can display a centered image.

It uses mjml-react, which gives you a friendly JSX syntax, reusable components, typed properties, etc. Most important, JSX will escape attribute/text content for you.

For sending emails, Nodemailer, which I believe has integration to every major ESP.

That is all off-the-shelf, what Mailing adds is a local server (Next.js app) you use to preview email templates in desktop and mobile view, as raw HTML, and by sending to your email client.

In a sense, it's similar to Storybook but for React components that generate emails. Rough around the edges, but worth checking out.

Serverless Messaging: Latency Compared What's surprising here is that SQS is more reliable — persistent, endless retries, DLQ — than SNS, yet has lower latency. And if you put SQS in at-most-once, strict-order (FIFO) mode, it's still lower latency than the chaos that is SNS. So why not always SQS?

Ever wanted to know which serverless messaging system is fastest? I compared 12 common integration patterns and measured the latency for each.

Some results surprised me! For example Kinesis with Enhanced Fan-Out is 10x as fast as Kinesis without EFO.

Kevin Kuchta 🔥

My current challenge: delete 3,351,105 lambda functions from an old project. There is not, as far as I know, any way to bulk-delete them. Currently running basically a for-loop around the delete api call. Estimated completion time is about 6 days >.<

How does one get such a sizable collection of Lambda functions? By treating Lambda as a distributed database … of course … Building a url-shortener with Lambda — JUST Lambda:

And there it is: a url-shortener using only Lambda. We've abused AWS's api to make self-updating functions. We've flooded our AWS account with single-purpose functions whose output is hardcoded. We've used the wrongest possible tool to serve flat files, slowly.


Code and Such

Davis Blalock AI transforming texts into algorithms:

To teach models to program, you used to give them a natural language prompt. But recent work has shown that you can instead just show them a unit test and tell them to generate a program that satisfies it (a “programming puzzle”). This is way nicer because it’s simpler and you can just run the code to see if it works.

Imagine this scenario: you write all the tests, then turn it over to AI to write the implementation based on your tests.

All tests are green. Do you trust the code enough to deploy without review?

To make a change, you update the tests to describe the new expected behavior, and the AI changes the implementation.

If you never touch the code, do you care what it looks like (syntax, variable names, etc)?

daniel:// stenberg:// This is why we don't validate URLs with Regexp (or do we?)

"http://http://http://@http://http://?http://#http://"

is a legitimate URL

Webhooks.fyi This site documents some of the common webhooks patterns. Useful because there is no webhook standard, instead we got more variants than Starbucks drink combinations.

Daniel Feldman “exactly one person gets to call himself a rockstar developer”


Business Side

Matt Lerner “Brutal truth from a recruiter about Hiring a Head of Growth”

I would say less then 30% of senior marketing hires are even moderately successful in role. It's often not their fault, the company believes they're further ahead than they are, but in reality they're pre-product market fit, with some early validation and decent funding, so really the hire they need is a growth person (or even better, the Founder to internalise growth habits and behaviours). Or they hire big names from corporates with high expectations and they almost always fail to deliver because it's such a culture shock, not having that budget.


Machine Thinking

The Animal Translators Scientists are using machine learning to create a universal translator that can understand and maybe talk back to animals. I wonder what cats have to say about us hoomans?

Even more ambitious projects are underway — to create a comprehensive catalog of crow calls, map the syntax of sperm whales and even to build technologies that allow humans to talk back.

andreasjansson/stable-diffusion-animation Fascinating. If you can use Stable Diffusion to create an image from a prompt, what about generating an animation between two prompts?

Sedona Not wrong:

The reason people are getting increasingly frustrated with AI "artists" is that no, they AREN'T artists.

They're nightmare clients.

They tell the AI what they want, demand infinite revisions of it, and once finally satisfied, claim the work as their own.

Responding to recruiter emails with GPT-3 When you're overwhelmed by automated recruiter emails, why not automate the response?


Everything Else

aaron allison ”holy shit guys”

Serena 😭

My boss just gave me a "quiet promotion": I have many more responsibilities but my job title and pay stayed the same

Sean Thomason

Will I understand Charles III if I haven’t seen Charles I or II

Incunabula ”Zoom meeting, circa 1300.”

miranda

sometimes an album is good because it came out when i was 17

Elizabeth Kilcoyne Preach!

The whole point of me sending emails is so I can be finished sending the emails. If you respond to the emails I'm sending, I will never be finished sending the emails.

Redactle Unlimited I had too much fun playing this: guess the title of a random Wikipedia article by revealing the redacted words.

zoehong

I have this cute Patreon student and we don't know where the other one lives so they always sign off, "Have a great day or night," and it's my favorite thing.

Two horses having fun Literally rocking horses.

Cliff 🦖 Jerrison The "default dog":

I think it's really interesting that populations of feral dogs in different parts of the world have a tendency to converge on the same general appearance, and that appearance is nothing like a wolf. It's just, like, the Default Dog.

We Added 370 New Words to the Dictionary for September 2022 Merriam-Webster gets caught up on words like "dumbphone", "use case", "virtue signaling", "cringe" … "ICYMI".

Words We Need Now is a dictionary of words that don't exist (yet)

Oliver Darkshire I'm thinking this would be a fun to put on the back of a diner menu:

good morning
here is Potato, a one page RPG about being a halfling and trying to quietly enjoy your potatoes in a world that refuses to leave you alone

🔥 Looking for more? Subscribe to Weekend Reading.

Or grab the RSS feed