Software Engineer — Shelter Island, NY

Barnabas
Kendall

I design and build web applications, then write about the process — and about whatever else catches my attention.

> currently rebuilding this site_
Barnabas Kendall

The Blog

page 1 of 6
Writing

Just One Bite

A short parable about trust, taste, and the difference between a job and a craft.

There was once a small ship that sailed a steady, well-known coast. Aboard her were a captain, a first mate, and a cook.

The captain was a careful man. Each evening he sent for his plate and studied it like a chart: not enough salt here, too much butter there, cut the potatoes smaller next time. He had eaten the same handful of dishes for ten years and saw no reason a hundred more wouldn’t do just as well.

The first mate carried these instructions below deck, word for word, and brought them back the same way. He had served under the captain a long time and took quiet pride in knowing the man’s tastes before the man had to state them.

The cook did his best with what he was handed. He’d spent thirty years in kitchens before this ship, and most nights he could tell the dish being requested wasn’t really what the captain wanted, only what the captain knew how to ask for. But a cook cooks, so he cooked.

One evening he made something of his own, using spices from his personal collection. Nothing strange — no dish the captain couldn’t recognize the parts of, just put together with more care than usual, and a taste he was certain the man would like, if only he tried it.

The cook tries

He brought it to the first mate. “Take this up to him. Just one bite. He doesn’t have to keep it.”

The mate shook his head. “I know him. He doesn’t like surprises on his plate, and he likes even less finding out money is being wasted on ingredients he won’t eat. If he hates it, that’s on me.”

“He might love it.”

“He might. But I’m not going to be the one who finds out.” The mate paused, then added, “Also, I tasted it myself, in the galley. I’d have gone lighter on the thyme.”

“Then come taste it with him,” the cook said. “Let him decide, with both of us in the room.”

There was no room to be had, the mate said. Not this season.

So the dish was thrown overboard uneaten, and the cook returned to smaller potatoes and less seasoning. What stayed with him wasn’t the refusal — men refuse things — but the shrug underneath it, the sense that no one aboard found it strange for a man to eat the same bland dishes for ten years running and call it a decision rather than a habit he’d never once questioned. It was his ship, his plate, his right. The cook didn’t dispute that. He just found it a small and joyless way to eat.

At the next port, the cook came up from below and said he’d be leaving.

They were baffled. By their measure he’d done the job well — the plates came out, the crew ate, no one had gone hungry. “We don’t understand,” the mate said. “You’re good at this.”

“I know,” the cook said. “But you don’t want a cook. You want someone to combine what’s already been chosen, the way it’s always been combined. That’s honest work, and someone should do it. I just spent thirty years learning to be a chef — and a chef needs a kitchen where the only person who has to be talked into a new dish is the one eating it.”

He picked up his knives and went to go find a restaurant of his own.

The cook leaves

The Grug Brained Developer is a plea for humility over cleverness, dressed up as a caveman’s diary.

kottke.org is Jason Kottke’s long-running “liberal arts” blog, and it’s the direct inspiration for these short link posts — full posts below are still mine, but the little in-between notes are a Kottke move.

MapLibre GL JS is the open-source fork that kept vector-tile mapping alive after Mapbox GL JS went proprietary — worth a look if you, like me, have spent time elbow-deep in PostGIS.

VueSide Project

Cheaty Flashcards

My niece just finished the fourth grade and we were commiserating about learning multiplication tables. We thought, what if there was a game for learning math that let you cheat just a little bit so you don’t get too discouraged? Soon after, Cheaty Flashcards was born.

Cheaty Flashcards gameplay

Some of the tech choices I made are as follows. I reached for my favorite Vue + Vite combo and used the TypeScript starter. I styled it with Tailwind CSS and daisyUI, a great combination of sensible boilerplate and flexibility. Other dependencies include Unhead for dynamic page titles, Fontsource for the web font Fredoka, and unplugin-icons to embed Feather SVGs as components. The new-to-me library this time was howler.js for playing sound effects.

I pushed the app source code to a private GitHub repository. I’m using Cloudflare Pages as the host and tracking usage with Beam Analytics. The whole thing took only a few hours between idea and v1 on the web.

Some may see the above and bemoan the state of frontend development. “What ever happened to FTPing some static files to a shared web server?” they cry, yelling at the cloud. I’m tempted to agree, especially for a little free toy app. But, tooling like this brings the ability to build complexity and make changes rapidly. And personal projects like these are to me what practicing scales are to a musician.