RSSAmplifier

Blog

Off by one

Longform thoughts of @_off_by_one

offbyone.usRSS feed ↗29 posts

Latest posts

Modeling a big spaghetti app

The problem # At work, we've been modularizing our old Rails monolith for the better part of 2 years. We've made a ton of progress and I've personally learned a lot. Unfortunately, it's been challenging to share details publicly because all the examples are closed source, and sensitive. If I wanted to write any open-source any visualization tooling, it'd be hard to test on anything resembling a…

Get shit done by warping friction-space

I have a process for making a codebase better over time, and it's so simple it could almost be a tweet: Make stuff that should be easy easy. Make stuff that should be hard hard. If my brain had telemetry, I think the CPU load while at work would look something like this. Noisy and spiky. The spikes are part of what people call "friction" at work. Friction isn't always bad, but usually it is. There…

We need to be the historians of our own software

Codebases are peculiar things. They’re accumulators of debt and investments, warts and jewels. Over time, all the decisions–conscious and unconscious–made by a rotating cast of characters sum up to the current state of your main branch, HEAD . The HEAD may change every few minutes, hours or days. But as long as your codebase is alive, it’s changing. While every codebase is in motion, some things…

Have a ball of mud? You need(ed) a map.

At work right now we’re currently working on modularizing our ~15 year old rails codebase. One conversation topic comes up frequently: is there ideal size range for a module? Should we make many small modules that are precise, or fewer course grained modules (or a mixture)? Should we have multiple tiers of nested modules? Maybe we should take some design inspiration from “the city”. Cities are big…

Nextty: a radically collaborative computing environment

I want to build a community computing platform. It's remote-friendly, but synchronous. It's orders of magnitude more immersive and cooperative than screen sharing. You could call it a chat app where you also write code... or a futuristic repl with your buddies. It's a computational space where you solve problems together. As people start working in this kind of environment, the lines between…

Elevators, Subways, and Rocket Launchers: The Unpredictable Path of Software Development

There's been plenty of ink spilled on the topic of what to call software engineers. Hackers? Coders? Developers? This semantic debate has been mostly boring to me until recently. It's hard to find one term to use to describe our job because our job can change so much from day to day. When you're building at scale, the job can superficially resemble classical engineering. You need to build a model…

WebReducer Update 3

It's been a little while since my last update on WebReducer. Let's just say I've had a lot going on 😅. Progress on WebReducer has continued in fits and starts none the less. I've been shockingly productive given how little time I've spent at the keyboard. During parental leave, I've treated this side project like many people would treat reading a book. When I have a few minutes, I pop it open.…

Reflections on babies and how they fuck up household supply chains

Having a child is a wonderful, life altering experience. It is profoundly fulfilling and changes you physically, cognitively, and emotionally. Someday maybe I'll have enough distance from it to have something more interesting to say about the emotional part of parenthood, but today is not that day. Today I'm talking about logistics. What they say is true: having kids is hard. It's hardest on the…

Lessons learned from a recent job search

Toward the end of 2021, I was one of the countless tech workers who left one job and took another. The process surprised me in a number of ways. I needed to update my priors about a few things, and by writing this, maybe I'll update yours too. First, I thought it would be easy [1] . My reasoning was as follows: I know how hard it is to hire great engineers I know I'm a good engineer.. Everyone's…

Things to consider before joining a bootcamp

Bootcamps, bootcamps, bootcamps... They're everywhere, and everyone has an opinion. On one end of the spectrum are the hard-skeptics. The hard-skeptics believe that bootcamps are selling snake oil–it's impossible to teach what they claim in 3 months. If you went to a bootcamp you were a victim. On the other end of the spectrum are the evangelists. In their view, the fact that software engineering…

Micro-business update: name change, software coming together

Hello! It's been about a week since I first wrote about working on Hook Web Reducer . I'm on vacation from work and have some time to invest in this, and a lot has changed. I'm getting closer and closer to shipping an MVP. That's the next milestone. The vision is also sharpening. Business updates # Name change # Something about HookReducer wasn't sitting quite right with me. I loved that I got the…

Work in progress: hookreducer.com

A dev tool that lets you setup an endpoint to accept webhooks super easily. It's an order of magnitude easier to get up and running, and covers edge cases so you don't have to worry about it. Additionally, you can capture a little piece of state with a JS reducer function. Think Webhook + Redux (if that analogy makes any sense to you). I've been a little quiet lately. In my hobby-time, I've been…

I returned my Remarkable2, here's why

I'm going through one of those moments in life where everything changes at once. As such, I've been deliberately trying to branch out into new tools and new ways of thinking. A month-or-so ago, I bought a Remarkable tablet. At this point in the article, everyone who's known me for a long time is in shock. I have comically bad handwriting. So bad that it has a diagnosis-- dysgraphia . I love typing…

Moving to a new job? You want a personal knowledge base

Disclaimer: this is not an ad for Obsidian. Onboarding to a new company is hard work. Keeping all the information straight is its own work stream that deserves thought and attention. Countless names, faces [1] , teams, initiatives, and acronyms fly by before noon. Believe me. I'm in the process right now. This week I landed on a system I'm pretty happy with. You're a knowledge worker. Build a…

Helping students with pair programming

I wrote an article about how to help a programming student get unstuck , in it, I offered to share my thoughts about how to help pairs of students get unstuck, and this is that article. If you haven't read the original, I'd suggest starting there, because many of the techniques that work on individuals also work on students who are pair programming. What is pair programming # For the purposes of…

Why is Excalidraw so fucking good?

Disclaimer: This may read like an ad. It's not. No one's paying me to say this, I just love this product. Excalidraw . Is. So. Good. Why? When you first open it, it looks kind of sloppy. It almost evokes Kidpix , or something. Let's dig into what makes it 👨‍🍳💋 from a product perspective. My threshold for trying new products is comically low. I'll try anything once. But, usually that's where it…

Semantic operation layer

The last couple of applications I’ve developed have eventually ended up craving a design pattern that I’m starting to call an “operation layer.” I've never fully realized it, but I think I'm onto something here. As with so many things, this may already exist in some form. If so, please tell me about it. What # Operations are units of action in your application. Your application doesn't do much of…

A word of caution on hiring rubrics

Engineers and businesspeople don’t always see eye to eye. One of the few things we truly have in common is an affinity for (or maybe an obsession with) the quantifiable. It’s no surprise, then, that many hiring processes are driven by rubrics. I’ve come to believe that—for all their benefits—hiring rubrics hurt organizations more than they help. This is especially true for small organizations.…

Zeke's new brand rollout

I'm pleased to announce today that I'm rolling out a new version of my personal brand, visual identity, and website. This is the culmination of a lot of work by my internal marketing function, and it's absolutely something to celebrate. New headshot # Old headshot from 2019 Today's new headshot from the inspired Be Nice Comic New logo and name # There was no logo or brand name off-by-one Brand new…

How to help a student get unstuck

When I was eight years old, I had a profound realization: once you know how to read, it’s impossible not to. If you see the letters c-h-a-i-r in sequence, your mind conjures sit-able 4-legged furniture. You don’t choose to read or not read, you just do it. And it’s impossible to understand what it’s like not to be able to read. The same principle applies when learning how to code. Once you…

Cost of computing

Before we talk about the cost of computing, let's talk about the cost of computers. I did a comical estimation with Claude on the cost (in todays dollars) for the CPU time that would have been required to load a web page in 1960 if the web had existed. It was $3,800. Today the same web page can be rendered for $0.00000006. 1957 : The first municipal computer (Norwich, UK). Just one of 21 cabinets…

Playing with Hilbert

Credit: Playing with Hilbert by Zeke Nierenberg

Using Vega Lite to explore chemistry

Check out this post on Observable

Pandemic writing practice

Living through a pandemic is rough. I've been thinking about how I spend a lot of time consuming content. After work, I sit on the couch and look at netflix, tiktok, twitter... I refresh the new york times and washington post. I look at hackernews. I'm chasing that dopamine hit. The brain is a plastic organ, changing over time in response to stimulation. I really enjoy when I'm thinking actively.…

Offer scorecard

Link to model: model discussed in talk

We have coding in schools backwards

To hell with the job market: Kids should code because it helps them think. The premise was simple. In 2013, If you can code, you'll be able to do things no one else can - be a wizard, or a rockstar. Different strokes for different folks - the point is Zuck can't hire enough engineers, so he really needs you to get started quickly. I have to admit, I was into it. I learned to code as a kid. I…

Sequelize ERD

ERD diagrams can be awesome. They visualize the relational graph of your application's data model. If your app is small enough, they can be a great piece of documentation. But, it can be hard to keep them up to date. That's why I made SequelizeERD. If you use Sequelize , plug it into SequelizeERD and you'll automatically generate diagrams in whatever format you'd like. Installation # You don't…

Await... async

Div III: Empowerment software

The following is a summary of my 2013 senior thesis at Hampshire college. Many of the themes I identified at the time still resonate with me, so I decided to include it in my blog. Some of it I roll my eyes at, but that's OK. Introduction # Picking a Div III My Div III started twelve months ago. I was looking for a large-scale project to create or join. I was considering a lab-based biology…