RSSAmplifier

Blog

Chris Dickinson

neversaw.usRSS feed ↗47 posts

Latest posts

you have to know what to wish for

you have to know what to wish for Last month, someone high up at $dayjob said that we should treat any line of code written by hand as a failure. This hit me like a ton of bricks, to be honest. What does it mean to be a software engineer without writing code? Is this the end of software engineering? Let’s define terms. Programming is theory building , as Peter Naur remarked. The job of the…

testing, one two

testing your patience Welcome back to the last blog at the end of software engineering. Pull up a stool. I’m here to give you my take on testing. Wait, wait, don’t go. I promise, it’s worth reading. I typed these words by hand. Why would testing be an important topic now, of all times, especially considering how many of us are likely using tools to generate our test suites and those same tools to…

"The Economics of Programming Languages - Evan Czaplicki"

Evan Czaplicki, creator of Elm, lays out a compelling explanation for the economics of programming languages: what work goes into creating a new language and ecosystem? How is that paid for? By whom and for what purposes? You should watch it. I want to add something about the corporate languages he lists under “rewarding talent.” In particular, Evan points out both Dart and Golang as the result of…

Understanding Wasm, Part 3: You Are Here

Understanding Wasm Part 3: You Are Here (This is part 3 of a series. See part 1, “Virtualization” and part 2, “Whence Wasm” .) If WASM+WASI existed in 2008, we wouldn’t have needed to create Docker. That’s how important it is. WebAssembly on the server is the future of computing. A standardized system interface was the missing link. Let’s hope WASI is up to the task! Solomon Hykes via twitter When…

Understanding Wasm, Part 3: A System Interface

Understanding WASM Part 3: A Virtual System (This is part 3 of a series. See part 1, “Virtualization” and part 2, “Whence WASM” .) It’s not enough for a virtual architecture, like WebAssembly, to be portable across physical processors: after all, if that’s all it could do we’d be limited to calculating numbers. Chris Lattner’s “Low-level Virtual Architecture” established a handy rubric that we’ve…

Understanding Wasm, Part 2: Whence Wasm

Understanding Wasm Part 2: Whence Wasm “Write once, run anywhere” is a great sales pitch. It grabs your attention. It’s pithy! It invites the reader to fill in the blanks of “who is writing what, where is it going, and how does it get there” with the answer that most appeals to them. This was Java’s sales pitch. WebAssembly seems to have the same goal. Given that Java still exists, why do we need…

GUARDA COME DONDOLO / Edouardo Vianello

A little 1960’s Italian pop music to kick off the weekend.

understanding wasm pt 2: whence wasm

understanding wasm part 2: whence wasm “Write once, run anywhere” is a great sales pitch. It grabs your attention. It’s pithy! It invites the reader to fill in the blanks of “who is writing what, where is it going, and how does it get there” with the answer that most appeals to them. This was Java’s sales pitch. WebAssembly seems to have the same goal. Given that Java still exists, why do we need…

Anxiety Groove | Louie Zong

Louie Zong is a heckin’ treasure. There’s a huge list of his stuff I want to link you to but I’m going to hold off on that. He makes music, cartoons, 3d art, videos, teaching content, the list goes on. Having just got back from being social for several days in a row, including a (lovely) wedding reception near Mt. Hood, it perfectly captures how I feel. “Glad you guys are having fun! I’m gonna…

Plain Text Journaling · peppe.rs

This is really quite similar to my neovim notetaking setup , with a bit more structure. I particularly enjoyed their vim-specific improvements, like using iabbrev to shorten common words (like todo and done to · and × , respectively) and formatprg for automatic todo sorting. And using syntax highlighting was a beautiful detail. (I’m filing these away as todo list items for myself, to be honest.)…

Understanding Wasm, Part 1: Virtualization

Understanding Wasm Part 1: Virtualization So, this all started when I tried to answer a colleague’s question about “what makes WebAssembly (Wasm) different from the Java Virtual Machine (JVM)?” They were particularly interested in parsing out Wasm’s goals as they overlapped and differed from the historical goals of the JVM ( “write once, run anywhere” ). Further, they were curious about the…

A Mirror for Rust: Compile-Time Reflection Report - Shepherd's Oasis

A long read, but a good read. Covers the use of syn and reflect in the Rust ecosystem, what those tools are in reaction to, and the limits of that pattern. Proposes a compile-time reflection system with low- and mid-level APIs that would (in theory) allow Rust to get away from the widespread peer dependency on serde . Linked terms include: SFINAE dtolnay’s reflect crate dtolnay’s syn crate bevy’s…

In defense of blub studies | benkuhn.net

This post talks about the importance of schlepping through the details of the tools you’re working with. As you can probably guess, I love it. It really rings true for me: the times I have learned the most as a programmer are the times I explicitly said “heck it, I’m going to write my own ORM / template language / implementation of the deflate algorithm.” Or “I’m going to learn how…

6.6

This used to be my go-to “I am entirely burnt out and I give up” song. (It’s maybe alarming that I had a “go-to” song for that? Hm, hm.) I’m happy to report that I play it a LOT LESS these days than I used to, but whoo.

Dead 80's | Mrs. Magician

“On new year’s eve, I met a girl / she scared all my friends and then she showed me a whole new world” Love this track just for that line. Oh, and the easy nihilism and jangly guitars.

Don't Try | Radioactivity | Dirtnap Records

I didn’t come by this track honestly! This popped up on Shanti (or Kevin?)’s Spotify playlist while they were driving Krysten and I around Palm Springs in a rental car. I’ve been in a strange state of mind for a while: I’m starting to physically feel older, my job (at the time) wasn’t really working out, and, to be frank, folks: my brain just no good no more. Years of pandemic and years of being…

JAPANTHER - FIRST OF ALL | JAPANTHER | Seayou Records

Man. What a great “I’m incredibly frustrated” song. And at the same time, I wish it wasn’t on repeat for me? At least it dispaced 6.6 for me.

Never Again | Thin Lips

“Raw and powerful”, unrequited love, alliteration. It just sounds like being in your early twenties. At least, it sounds like being in my early twenties. Or how I wanted my early twenties to sound when I was in my early twenties? I don’t know. I’m in my late thirties as I write this. I can barely believe I used to stay out past midnight.

Nostalgia of Island | Tatsuro Yamashita

Got this from one action button video or another. I feel like I should have more to say about this, but… yanno, some music just takes you somewhere. I’m happy I went on this trip.

Simulation Swarm | Big Thief

What a big, warm, sad sound.

Something About Lemons | Chumped

I am an ABSOLUTE SUCKER for any song about it being hard to get out of a town that folks stay in. I think about Lawrence KS in those terms a lot, though in practice most folks I know had already moved out of there before me.

x-post: LARPing a Gossip Protocol about Reality

This was originally posted on my Cohost account ; I’ve reposted it here for posterity. LARPing a Gossip Protocol about Reality I’ve edited and re-edited this and I don’t feel super comfortable sharing it but I need it out of my head sooner rather than later. I need that brain space back. And besides, I want to move on to post things that aren’t about other social network platforms on this social…

"The UNIX Programming Environment", reviewed

Why should you read 1984’s “The UNIX Programming Environment” thirty-eight years after it was first published? Why did I read this book? (Well, I am an unrepentant fan of bash.) Is it even relevant anymore? (Yes.) Why should you read it? In order to understand where we’re going as an art, it’s important to know where we came from. It’s 2022 and I still SSH to boxes, edit files using vim, and write…

(2019) Keynote: The Path to Components - Luke Wagner, Distinguished Engineer, Fastly - YouTube

One of the best explainers on the state of WASI/WIT/WASM components I’ve seen. This is part of an interesting trend: the industry is starting to revisit bedrock abstractions. Systemd started doing this with single-machine process management, Kubernetes did it with cluster management, Aurae is starting to look into what it looks like for larger clusters. At the same time that we’re having…

IPv6 Internet Is Broken

Fascinating stuff. I’ve spent half of this year picking up the rudiments of network engineering, and it’s absolutely fascinating to me that IPv6 attempts to return to the “end to end” principle we lost with IPv4 NAT. (Peering disputes around IPv6 are only tangentially related to this, of course, but two neurons grazed past each other when I read this.) Of note (for me) are the other links on this…

Refactoring Is Not Just Clickbait - Kevlin Henney - NDC Oslo 2022

Great talk; I especially enjoyed his “three axes” approach to describing changes to programs. He also mentions Herbert Simon, whose writing on systems I am now enjoying.

Running LXD Containers in Macpine

This is pretty rad. I ended up wanting to ssh directly into my containers; in order to do this I had to edit /etc/ssh/sshd_config on the macpine box (using alpine ssh lxd .) AllowTcpForwarding yes # change this from "no" to "yes" in /etc/ssh/sshd_config After running /etc/init.d/ssh reload , I was able to use the macpine LXD VM as an ssh jumpbox (via…

So you're Staff+ ... now what?

This is one of the most useful talks I’ve seen. I acted as a principal engineer at Eaze for a little over a year; early on I struggled with the role because it wasn’t clear how involved I should get with the various teams I floated between. Sabrina Leandro outlines a great way to build accountability for yourself that empowers you to work directly in different codebases while also giving yourself…

The Continuity of Splines - YouTube

What a presentation! I only took calculus up to “engineering calc 2” level in college, which leaves off approximately where this picks up – that is, calculus for parametric equations. That is to say, just when math starts to get really interesting, if you’re into gamedev.

The Rust Programming Language for Game Tooling

It’s great to see Rust adoption at game studios. I appreciated the link to gimli and iced . His recommendation to start building rust in a contained fashion – in a corner of the codebase – matches my experience at Eaze. I definitely did the same there: starting small, nerd-sniping a colleague with a standalone CLI tool, then rolling it out to more and more developers. Also, he mentions that his…

toast - crates.io: Rust Package Registry

Another super-useful tool from Kevin’s menagerie of good Rust links. This allows easy cross-compilation using containers.

Watchexec

Wow, this is great. I’m using it already to power my link dump parser.

Color Studies

Color Studies TKTK After the last post, I want to back away from tech for a bit, so I’m writing about color palettes today. I used Colormind to derive palettes from images that resonated with me. sonic cd: stardust speedway zone I’m kicking things off with a bunch of 16-bit Sonic screenshots. It’s probably no surprise that I love the art direction of this series; it’s one of the first things I…

The Canvas Cares Not

The Canvas Cares Not Computers don’t care how programs are structured. Businesses don’t care how systems are architected. The canvas does not care how paint is applied. Software engineering is an art. Software engineering is also a culture of artists; despite that, we recoil at being called “artists.” Art has no right answers: a work of art means something different to everyone who receives it.…

SSH to Cloud Managed Servers

Using ProxyCommand to SSH to Cloud Managed Servers Problem Statement Given: You have a series of server instances: something like an AWS Autoscaling Group (or “ASG”). These groups are named in a regular pattern: environment-service . You don’t necessarily have a stable set of IP addresses to SSH into. Your instances are attached to a private network. You have a well-known bastion server with SSH…

My Note-Taking Setup

My Notetaking Setup A quick update today because this tweet reminded me that I wanted to talk briefly about my notetaking setup. I recently streamlined my notetaking tools after living with them for about two years(!) The problem statement I started from is: I primarily work in a terminal with a vim session inside, I have two laptops across which I wish to share notes, I experience process as…

the case for bash

The Case For Bash esac Friends, coders, I come not to praise bash, but to contextualize it. Bash is oft-maligned: you hear it sneered at in sentences like “our continuous integration pipeline is just a pile of bash scripts .” It is commonly regarded as unintelligible and thus unmaintainable. The pile of bash scripts are the toxic byproduct of an infrastructure team understaffed, pressed for time,…

context

I’ve heard it said that coding, as a skill, rewards those who have a high tolerance for remembering lots of trivia. Trivia, here, means “knowledge divorced from context”. That is, the sort of thing you’d hear in a bar trivia game, such as “what year was Waterloo?” or “what are the names of the active volcanoes around Portland?” The observation is funny in a useful way: it subverts the image of…

Deploying at Eaze

Deploying at Eaze Late January 2020 was a bummer . In the wake of some pretty dire cuts , ceejbot and I found ourselves the sole custodians of Eaze’s infrastructure. I remember looking at the scope of problem ahead of us and asking myself “what am I giving up doing now because I am taking on this work?” Our first task: deploy a newly written identity verification service for trust & safety. One…

What happened to July?

July is over. We’re already seven days into August. Time sure does fly when you’re quarantining, I guess. So what happened? Well, between these two points, the feds were in Portland, OR., where I live. Work on the Rust rewrite of our delivery system began in earnest. I started helping with Orogene, another JavaScript package manager. I finished Zelda (again.) I picked up Ghost of Tsushima, which…

PLAN update

Vacation is over! I’ve been back for about three days now. I ended up writing a WASM text format (or “WAT”) parser in Rust over vacation, in between watching movies projected on the side of my garage, replaying Zelda: BOTW, and barbequeing . My intention was to build a tiny language runtime targeting WASM, as frequent readers will recall . I didn’t quite get the parser done in that time, but I got…

Career Progression

Career Progression A few days ago, I was promoted to Principal Engineer at $dayjob . While I feel grateful for the recognition, I have to admit I’m a bit of a skeptic when it comes to career ladders and titles. People aren’t comparable, nor are their talents or knowledge. Attempts to reduce a group of humans to points on a number line erase a lot of individual strengths. On the other hand, titles…

PLAN update

I’m coming up on a chunk of vacation, and I’d like to work on a technical project during that time. I have a couple of plates already spinning; Boltzmann documentation, for example. The itch(es) I’d like to scratch are: Parsing in Rust, possibly using pest or nom . Learning more about WASM and WASI, possibly using them as a language compile target. Revisiting control flow graph generation of JS in…

Boltzmann & Nostalgia

Right now I’m writing templating middleware for Boltzmann (a JS framework.) Three years ago around this time, I was writing something similar for Spife (another JS framework) while waiting in the Oakland airport for my flight back to Portland. I was entirely drained from another NPM all-hands experience, and I kept staring out the windows at planes landing and taxiing to gates. It was in the…

Watching: The Forgotten Art of Structured Programming

This talk is a gold mine: Impress your friends by casually using “afferent” and “efferent” in conversation Don’t miss “Reach for the banana, get the gorilla”, which might be my new favorite turn of phrase. (Immediately applicable, too: at $dayjob today, we’re porting a Wordpress server to the new Terraform-based infrastructure setup. We only use Wordpress for its WYSIWYG editor!) Discover the one…

a statement of intent

I’m building a new blog. It’s been 3 months since the start of quarantine. Neighbors are in the streets protesting police brutality against Black people. And I’m building a blog. (I would be remiss not to say this: Black lives matter . Defund the police. Dismantle white supremacy.) Why am I doing this? Why now? Partly to self soothe, partly because I want to build a habit I can be proud of a few…

x-post: adding promise support to Node.js

This was originally posted on my Medium account ; I’ve reposted it here for posterity. Adding Promise Support to Node.js Core Two Sundays ago, I opened a pull request to the nodejs/node repository introducing support for Promises. There’s been a lot of discussion since that point, with over 400 comments in the main thread alone. Several discussions have split into other issues. This post will…