Remeda

If you’re greenfielding a JavaScript application, I can’t recommend enough starting with Remeda. The main reason here is that unlike lodash, Remeda is composable and functional, but unlike something like Ramda, you aren’t forced to use data last all the time. In the same breath:

const items = [1, 2, 3];

const doubled = R.map(items, (x) => x * 2);
const doubleSquared = R.pipe(
  R.map((x) => x * 2),
  R.map((x) => x ** 2),
);

It makes functional programming practical in the semi-functional style that works really well in modern TypeScript.


obsidian-omnisearch

Omnisearch is a search engine that “just works”. It always instantly shows you the most relevant results, thanks to its smart weighting algorithm.

I’ve been taking more notes lately on pen and paper, partially because I got a very nice Memosyne notepad and fountain pen from Japan, but also because it’s easier for me to not feel distracted when I’m not using a keyboard.

But I also want to be able to index and search my notes. But I also don’t want to move off Obsidian (all of the AI note taking apps have yet to sway me, despite the Tana invitation collecting dust in my inbox). So I’m trying to find stuff that OCRs properly, or can use an LVM to clean it up for me.

I’ll post back about this if it’s lifechanging, but probably not. Let’s be real, it’ll probably just sit in my configuraiton for a while and be banally useful.


Egoless Engineering

Perfectly reasonable people thought that maybe we should put more of a wall between designers and the css source code. […] But instead a miracle happened. There was an inspired person who decided to do the opposite. They just yolo’d giving the designer the deploy keys. […] We spent our free time building everything we needed to in terms of monitoring, test suites, et cetera to make that safe for them to do. Everyone rejoiced and got shit done. Nothing bad happened.

When this talk was first shared with me, my mind was blown because everything I had ever heard about building an organization, was that we need people to respect their lanes and learn to communicate with each other. I don’t think that value is wrong (talking cross-functionally is important in almost any organization), but this talk blurred the lines for me between what is good communication, and what is building fiefdoms.

Make your discipline more accessible This should be part of your job!

I will say, the challenges here are really, really underemphasized. (Not to say it’s not worth it, of course, but that there’s more to it.) If I don’t have the right tooling needed, making a code change, ensuring it’s safe, and deploying it to production is barely safe for an engineer, now imagine someone without the skills to debug if the flow fails half the time.

Sometimes the walls come up because people want to perpetuate those little stupid fiefdoms, but sometimes it’s just because it’s the easiest thing to do, everything is on fire, and you don’t have the time.

(The perfect retort to that, which I believe, is if you set your team and processes up to be accessible from the start, it’s pretty cheap to maintain it, and people will even help you point out failures far sooner. Looked at this way, fiefdoms are organizational debt that can be paid down easily at the start, but not much later.)


Gleam, coming from Erlang

Most of my professional experience has been in Node, but it’s clear to me that despite working fantastically in practice, there’s so many limits to the event loop that make it really hard to write performant code correctly. I’d love an environment that combines the expressiveness of TypeScript/JavaScript with the concurrency of something like BEAM, and I’d love it to be mainstream.