Recently, I moved this site (yes, this very one!) from Cloudflare Pages to Cloudflare Workers (on which more below).| R. W. Blickhan
Listen to the sound of falling rain.| R. W. Blickhan
I recently rewatched Alien for the first time since I was in high school.| R. W. Blickhan
The personal site of R. W. Blickhan| rwblickhan.org
I’ve always been a fan of cookies. Recently I’ve been making a twist on chocolate chip cookies that I call “cocktail cookies”. They don’t actually have alcohol, but they do have a couple cocktail-inspired twists.| R. W. Blickhan
For a few years now, I’ve primarily used fish shell on the command line, instead of the more standard bash or zsh. Fish cheekily refers to itself as “finally, a command line shell for the 90s”, but I’ve found it quite effective. Here’s a few reasons I use it.| R. W. Blickhan
A couple years ago, I started using Raycast, which quickly became indispensable. It started as, roughly, a replacement for macOS’ Spotlight or a modern version of Alfred, but has slowly grown more features over time. Here’s a few of the ways I use it.| R. W. Blickhan
Wading through a swamp of acronyms for neither fun nor profit| rwblickhan.org
About two years ago, I decided to learn how to cook. After much experimentation and reference to The Food Lab, here is what I learned about decent home cooking.| R. W. Blickhan
The personal site of R. W. Blickhan| rwblickhan.org
I am still here, waiting for the doorbell to ring.| R. W. Blickhan
There is a bridge with no end.| R. W. Blickhan
<!-- markdownlint-disable no-inline-html -->| R. W. Blickhan
<!-- markdownlint-disable no-inline-html -->| R. W. Blickhan
<!-- markdownlint-disable no-inline-html -->| R. W. Blickhan
When you are born, as the priests sprinkle water on your forehead, they pray that you will not lie.| R. W. Blickhan
Two ships there were| R. W. Blickhan
At night they rearrange the streets| R. W. Blickhan
Hold the glass in your hand| R. W. Blickhan
Somewhere a child is dreaming| R. W. Blickhan
I was recently trying to explain to someone why I feel the horror novel House of Leaves is particularly unique. It’s not just because of its metafictional structure — which is similar to for instance Pale Fire — but also because of the precise structure of its horror. To express this I came up with a little typology of horror.| R. W. Blickhan
I was recently thinking about what various authors are comparatively good at, and I realized most types of English prose in fiction can probably fit into a small number of categories. Here’s the broad categorization I came up with, with a running example.| R. W. Blickhan
Tea is a bush in the camellia family, specifically Camellia sinensis.| R. W. Blickhan
I enjoy reading a lot and usually read a book a week, so the following are my tips for those who are “book curious” or just want to recapture the feeling of staying up all night to finish a book in grade school.| R. W. Blickhan
Travel, like the discipline of anthropology, tends to “make the strange familiar and the familiar strange.” So here’s some strange things I noticed about Melbourne during a recent 10-day trip there.| R. W. Blickhan
Lately, I’ve been thinking about two thinking styles, which we could call analyzing and synthesizing. Analyzers think “cleverly” and make interpretive leaps without additional context, excelling at “pure” problem solving, while synthesizers absorb large amounts of information and combine it in novel ways.| R. W. Blickhan
The Prisoner’s Dilemma is often trotted out when discussing game theory, but in popular treatments I rarely see an explanation of why it’s important mathematically. Let’s change that 😃| R. W. Blickhan
Since 2020, I’ve been setting personal goals at the start of every year and tracking my progress against them throughout the year.| R. W. Blickhan
An overview of how this site was constructed (as of May 2022).| rwblickhan.org
Hey folks, in the spirit of “what’s in your bag,” I wanted to do a quick (and by quick I apparently mean 2,600+ word) overview of the tools I use every day outside of work. Most of these are (surprise, surprise) iOS apps.| R. W. Blickhan
Let’s check in on what my default apps are these days. I enjoyed this exercise two years ago, so let’s do it again!| R. W. Blickhan
Recently I built a site to do full-text search of links I’ve bookmarked. This article explains how it’s built and assumes some basic familiarity with JavaScript and web technologies generally. You can see the full code in the GitHub repo.| R. W. Blickhan
Table of Contents| R. W. Blickhan
I'm a heavy user of Obsidian, which comes with an extensive plugin system.| R. W. Blickhan
Table of Contents| R. W. Blickhan
I recently realized it’s been over 4 years since I last updated my resume (!). While trying to update it, I grew frustrated manually setting typography again and again in Pages, not to mention my inability to version-control it like a good little software engineer.| R. W. Blickhan
I use quite a few vim plugins, but most of them are relatively simple editing plugins that introduce new text objects or commands.| R. W. Blickhan
A few months back, I moved from a mobile engineering team to a fullstack web team.| R. W. Blickhan
Most vim commands take text objects. For instance, we can do diw for delete in word or daw for delete around word, which includes the delimiters as well. I use w pretty heavily to select alphanumeric words, but there's actually a lot of other useful options:| R. W. Blickhan
In vim, in addition to basic directional commands like h,j,k,l and word motions like w, there's a number of other useful text motions:| R. W. Blickhan
For larger devices, I wanted the header of this website to be sticky - it should follow you as you scroll down the page.| R. W. Blickhan
Yesterday I said that, when using a sticky header, there's no way to scroll to the correct position using only CSS. I should have known better than to trust ChatGPT or my Googling abilities!| R. W. Blickhan
I've got a search page, using Fuse.js to do searching on the client-side.| R. W. Blickhan
For my newsletter, I was curious what notes I had added to Obsidian in the last month.| R. W. Blickhan
When in normal mode in vim, you can use * to start searching forwards for the word underneath the cursor and # to search backwards.| R. W. Blickhan
vim has a built-in sorting function. Specify a range or a visual selection and run :sort in command mode to sort the given lines. You can also do things like:| R. W. Blickhan
You can use <C-a> and <C-x> (Ctrl-a and Ctrl-x) to increment or decrement a number under the cursor.| R. W. Blickhan
I'm working on a simple, language-agnostic linter called linty written in Rust.| R. W. Blickhan
How do you add a colored border with a corner radius to a view in SwiftUI?| R. W. Blickhan
Most vim actions allow a count. However, if you use absolute line numbers, you're left to calculate offsets by yourself;| R. W. Blickhan
Sometimes you want to specify an object literal in JavaScript that uses the value of a variable as a property name.| R. W. Blickhan
I'm building an iOS app for Askhole that shows a question out of a list of question.| R. W. Blickhan
Vim's search function when you press / defaults to case-sensitive, which I've always found pretty annoying.| R. W. Blickhan
A common pattern I follow in vim is yanking some text, then making a visual selection| R. W. Blickhan
vim has an abbreviation system:| R. W. Blickhan
The registers used for recording macros in vim are actually just the normal registers!| R. W. Blickhan
I really like the Command-K bar UI pattern - many apps these days, including VS Code and Obsidian,| R. W. Blickhan
I like to use tmux in the terminal, even in VS Code.| R. W. Blickhan
Yesterday I was having a browse around MDN to learn a bit more about CSS and I found out about the very useful adjacent sibling combinator!| R. W. Blickhan
I use Cloudflare Pages to build this site, and in particular I use the built-in GitHub integration because the build process is pretty simple (just run pnpm run build and you're golden).| R. W. Blickhan
JavaScript has a built-in arguments object in every function that lets you access the arguments passed to a function, even if the function doesn't have any listed parameters! (What. What.)| R. W. Blickhan
Cloudflare has an easy way to build simple APIs for otherwise-static sites running on Cloudflare Pages, which is what I use to host most of my sites.| R. W. Blickhan
fish shell has two built-in functions, nextd and prevd, that let you jump between recently visited directories in a stack-like manner.| R. W. Blickhan
fzf is one of my all-time favourite pieces of software;| R. W. Blickhan
Yesterday I ran into the no-case-declarations ESLint rule, which was very surprising to me!| R. W. Blickhan
If you've used JavaScript for more than about a week, you're probably familiar with template literals, as used for string interpolation:| R. W. Blickhan
Yesterday I was working with a Sqlite database and I wanted to call db.close() every time a particular class went out of scope. This is a pretty common pattern across programming languages - RAII via destructors in C++, with statements in Python, the Drop trait in Rust – so I was slightly surprised that JavaScript doesn’t have a similar pattern.| R. W. Blickhan
Recently for a Secret Project 🤫 I had a need to shuffle an array. Luckily I found the Fisher–Yates Shuffle, but I still needed to actually implement it in TypeScript. In particular, I was hoping for an immutable method on Array, similar to existing methods like toSorted(). In that case, I would be able to get an array of shuffled questions by calling questions.toShuffled().| R. W. Blickhan
Did you know you can add custom keyboard shortcuts for pretty much any app on macOS, not just VS Code or Obsidian or similar apps that let you customize internally?| R. W. Blickhan
Yesterday I wanted to look for a block of code in my dotfiles that I deleted a while ago. Turns out there’s an easy way to do that!| R. W. Blickhan
iTerm2 has a smart-selection feature| R. W. Blickhan
I always wanted to open URLs in the terminal from the command line.| R. W. Blickhan
Don't have an iPhone 15 with an Action Button™️? It turns out you can get something similar with an accessibility feature on all iPhones on iOS 14 or later.| R. W. Blickhan
Here's some works, fiction and non-fiction, related to consciousness, identity, and neurodiversity that I particularly appreciate.| R. W. Blickhan
Here's some works, primarily non-fiction, that I especially appreciate, related to the topics of cultural evolution, the cultural niche, technology from an anthropological perspective, design, and the birth of our current global monoculture, modernity.| R. W. Blickhan
This is an evergreen list of philosophical positions and beliefs I generally hold.| R. W. Blickhan
Butler’s novel [Parable of the Sower] is brutal and soaring. I guess there’s a word people sometimes use for that combination: biblical.| R. W. Blickhan
Table of Contents| R. W. Blickhan
Alternative title: cheap but lovely gifts for a surprise white elephant party.| R. W. Blickhan
Here are some folks working in the broader tools-for-thought / human-computer interaction / novel computing space that I like reading:| R. W. Blickhan
I recently turned 28. I started a silly tradition of forcing my friends to give n pieces of advice for their nth birthday, so, in that spirit, here’s 28 pieces of advice for my 28th birthday. They are presented in no particular order. Many may seem very specific, but most have a meta point that may or may not be spelled out 😉| R. W. Blickhan
Hello all, and welcome back to a new year and a new season of rwblog, née Applied Dilettantery. As a housekeeping note, I’ll no longer be keeping to a regular schedule, but instead send these out whenever I feel like it. I expect most issues to consist of short essays or observations, typically about what I’ve been reading or thinking about — similar to many of the previous formats, but probably quite a bit shorter.| R. W. Blickhan
Hello all and welcome back to rwblog. This time I’m revealing my top 10 books and top 5 films of 2022. I was intending to write longer essays for each of these over the holidays, but then it didn’t happen! Instead I just wrote up some quick notes for each of these, because I’d rather get this send out before we get too far into 2023. Sometimes the perfect really is the enemy of the good, or at least the productive.| R. W. Blickhan
Short missive tonight because it is my self-appointed NAprilWriMo. The count stands at 6,716 / 50,000. That means there won’t be much more than a few links I found interesting, sorry!| R. W. Blickhan
Apologies, this will once again be a short issue—pages don’t write themselves, and seeing as how we’re halfway through my (self-declared) NaSepWriMo, I just hit 22k words, which is just about on track. That said, I do have some small musings to share this week.| R. W. Blickhan
I have had a bad few weeks, I will not pretend otherwise.| R. W. Blickhan
Hello all! It’s that Sunday again—another weekend, another adventure in dilettantery. I do apologize for the length of the newsletter, this week and every week—I always expect it to be short, and then find I write 1,500 words easily.| R. W. Blickhan
Sherry’s new artwork on our wall.| R. W. Blickhan
Currently listening to: Endless Summer, Fennesz| R. W. Blickhan
Hello frens! I hope you are doing well during these rainy San Francisco days, or whatever the weather is like where you are.| R. W. Blickhan