In any organization or company, there are one-hundred things. Now, at any given moment, ten of those things are very important, thirty of those things are somewhat important, fifty are maybe a little nebulous as to their import. And then the last ten are largely inconsequential for the time being. You really only need consensus on the top ten. You need functional disagreement and maybe a little…
Facebook Marketplace first introduce the “ask if this is available” pre-filled message. Now they’ve introduced a setting so that listings can have AI respond to messages about availability. This feels like Product Manager KPI fraud… 08/02/2026 09:50AM The year is 2026 and if you’re writing something online, your goal is no longer to write something well. Your goal is…
I’ve often heard from engineers that it’s not our job to write code, it’s our job to solve business problems. When working for a company, I suppose that’s strictly true. But it’s also okay to like the many parts of your job that are involved in that goal, or are orthogonal to it. Once I heard someone even say it’s not your job to “solve business…
Maybe I’m just obtuse, but whenever I read an article from a company, or programmer, or really anyone talking about “best practices”, it always seems like the examples are either obvious, and therefore un-illustrative of best-practices, or non-specific, and difficult to tell if the best-practices actually solve for the problem. Best practices seem to range across three general…
I’m Ben Vogt and I’m a software engineer living in Chicago, IL. This site is where I write about programming and things I’ve built . Emails addressed to benjvogt@gmail.com are always welcome (though I would greatly appreciate it if you would write them by hand, not using generative AI.) My GitHub profile is github.com/vogtb .
At Replo, I was trying to get a handle on how to explain what we should and shouldn’t do. We had a really solid, very extensive, and well-written Notion section of our best practices for code, support process, and RFC, but it was, well, almost too verbose. I was trying to figure out a succinct way to say “here’s a rule that lets us work with fewer rules” or rather…
Glade is a cross-platform GUI library for Typescript that uses WebGPU to render apps at >60fps, for browsers and native macOS. Glade running side-by-side on native macOS (left) and in browser (right) Glade is basically a library for writing cross-platform graphical applications with TypeScript and JavaScript. It includes an application framework and component library (text, inputs, flexbox…
A couple days ago I made a simple POC of using Bun and OpenGL to create a native GUI application . I decided to go a little further and write a small cross-platform library so you can write fill OpenGL/WebGL apps including keyboard/mouse events. Demo of events pass-through. I called it Glade, and you can see it on GitHub: github.com/vogtb/glade-poc . (Glade is a backronym for GL-assisted drawing…
This is a minimal example of using Bun’s FFI module to render a GUI using GLFW and OpenGL2 . I’ve been keeping an eye on BunJS for a while now because if its ability to compile to single file executables. Given Bun’s recent acquisition, I though it’d be interesting to explore the possibilities of writing GUIs using typescript without the DOM. This is a very basic example of…
Some things seem like a good idea, but really aren’t. And even if you know it’s not a good idea, you can’t help but think, well, it’ll be fun at least. Or maybe it’s just me when I had the idea to use WebGPU + Dawn for this project. Previously: Zig GUI from scratch (part 1) Zig GUI from scratch (part 1) : In Part 1, we started building a cross-platform desktop GUI app…
As a way to get back into a language, I like to build spreadsheet engines. I’ve gotten pretty good at it, even if I’m always missing some little feature. There’s always something that doesn’t make the cut, like formats, array-format ranges, or multi-dimensional arrays. But it’s fun, and interesting, and it’s a neat way to brush up on a programming language, in…
The pattern of using a constants.ts is not a good one. The fact that a variable or some block of code is constant tells me nothing about its use. Is it configuration? Is it an environmental variable? Is it a magic number? Based on the name of the file, I couldn’t guess; it could be all of these or none of these. We should name files after what they do. queue.ts , config.ts , env.ts , main.ts…
This is a review of all relevant spreadsheet-like products, services, tools, and technologies, as well as blogs, articles, news, and notes related to spreadsheets. I started this back in 2017, and I haven’t updated to it in a year or two, but it’s fairly complete. Since I’ve shared it with friends and colleagues working on spreadsheet-like interfaces, I thought I’d share it…
A while ago I wrote “Building a music making app with Swift (part 1 of N)” and never really followed up. I’ve been chipping away at it every now and then when the mood strikes. So here’s a couple updates on it. A work in progress. Expanded idea with a better layout Scope-creep is real. But honestly, for a project like this, it’s only a problem if I’m not having…