ben vogt

filters:
tags:
about:
A code to code byMore than a mantra, less than a manifesto, better than an encyclopedia of docs. A minimal set of rules for writing code.LogSmall notes of what I'm working on.Project constant.ts files are badA utils file actually serves a purpose, a constants file does not.ResumeSenior/staff engineer seeking interesting problems to solve.AboutLife, work, contact info, and so on.Spreadsheets and similar toolsI tracked various spreadsheet software, services, products, and more for a couple years. Here are some of those notes.Building a music making app with Swift (Part 2 of N)A long overdue update on building a little beat making app with Swift and AudioKit. Chipping away here and there, and having fun with clip art.Zig GUI From Scratch (Part 1)A fun project to build a GUI in Zig, targeting WASM, macOS, Linux, and Windows.Quick tree-sitter grammarsA formula language that I wrote for a spreadsheet product called PT1 a couple years ago.Building a music making app with Swift (Part 1 of N)A little beat making app with Swift and AudioKit. Went from design to prototype in about a 10 hours of work, and about another 20 to get it to something a little more polished.Status update - May 2023Here's what I've been doing in May.Status update - April 2023What I've been up to in April.Git static site generator toolSimple static html site generator for multiple git repos.Excel pivot cache madnessAn archaic and terrible corner of Excel: the pivot cache.SQLite notesSome personal notes on SQLite.Postgres notesPersonal notes on Postgres.Makefile notesJust some useful notes on Makefiles.Docs, tests, design, and RFCsRFCs, designs, tests, and documentation can tell you when you're getting it right.F7 spreadsheet engineF7 is a spreadsheet engine that can parse and run formulas like a spreadsheet.Quick XLSX automationCheap and easy way to run XLSX files with containers and LibreOffice.Custom scrollbars in FlutterBuilding custom scrollbars in Flutter with Dart.Simple Typescript performance functionsSimple functions and annotations to add to other functions to monitor performance.A poem made by searching for "can always" in my programming notesA poem made by searching for 'can always' in my programming notesDesigning and building a couchHere are some pictures of the design and build, which was in total around 80 hours.Status update - November 2021An update for the month of NovemberExcel and beyondThe good, the bad, and the ugly of Excel.Status update - October 2021October updates and more.Status update - September 2021Here's a little of what I've been up to in September.Status update - August 2021Going to try something new. Just listing things that I learn each month. Not on any particular topic, just writing them down as I learn them.PSQL functions for simpler queriesUse custom PG functions to raise not-found, and permission-denied errors inside of Postgres to save the round-trip time for common auth-wrapped, and dependency-prefaced queries.Writing tests is different from writing codeAbstraction and factoring aren't super helpful when you're writing tests.Running CI tests with two stepsTesting software is hard, and writing YAML configs makes it harder. A simple two-step process makes it easier to reason about.Rust macro for enum variant pseudo-subtypingGetting closer to treating enum variants like types through the use of simple generative macros.Writing on a single-purpose deviceTwo months of using an AlphaSmart Neo2 - a 16-year-old, single-purpose word processor that costs about $40.Elmore Leonard's 'Ten Rules For Writing' for designElmore Leonard's 'Ten Rules For Writing', roughly applied to design.Notes from 'Programming Rust' bookJust some from the 'Programming Rust' O'Reilly book.CSS For range highlightingHighlighting elements using CSS only.Spreadsheet grid designImproving spreadsheet grid design by thinking of the grid as an item inside of a container, instead of a container with items.Review of spreadsheet user interfacesYou can find these images with a quick image search, but I wanted examples of each on one place so I can see the general UI patterns. What are the common elements that a user would see when using them? What do they have in common beyond the grid?Spreadsheet reading listA list of stuff about spreadsheets.Acoustic fingerprinting televisionLet's jump to the good stuff - How hard is it to create a program that can acoustic fingerprint a television show? Can we identify the playback position of a video based on audio tracks? For this blog post I'll use The Drew Carey Show, because it's the only show of which I have multiple seasons.1.0.1 Release of js-spreadsheetAdded 121 formulas, and fixed a few bugs, made Cells easier to handle, added support for scientific notation, clarified license, cleaned up parser a bit, added support for comma separated lists and much more.Building a spreadsheet with formulas in javascriptThe first crack at trying to write a spreadsheet engine in typescript & javascript. Parser and grammars were mostly written by hand or converted from other OSS, which made this a lot of fun to write, but probably filled with all sorts of errors.A guesser's guide to Google SpreadsheetsStumbling through types, formulas, and errors in Google Sheets. I wrote this long before I had a firm grasp of spreadsheets, and their inner-workings, so this might best be described as my interior monologue when trying to figure out how and why spreadsheets sometimes do weird and interesting things.Procedural terrain generationUsing procedural algorithms to generate terrain maps.From IDE to binary writing Go in InteliJGetting the plug-in right, and living in the IDE. This was written before Goland came out, but here for posterity.Captain's Log a timestamped note taking appAn electron app that uses a command-line like log to keep track of what you're doing and working on, saving it to a YAML file.Hexcraft: a Minecraft-like hexagonal tile editorHexagonal tiles that you can edit like a voxel-explorer game.Live special effects for theatre performance with the KinectShakespeare's Hamlet opens with a scene of two sentries discovering the Ghost of King Hamlet. More often than not, the part of the ghost is played by an actor in white makeup walking on stage to deliver his lines. I approached this project with the idea that through live motion capture and replay, theatre visual effects can serve to strengthen a performance, and breath new life to dead characters, even the ghosts.