ben vogt
filters:
files
gif
html
jpg
md
photos
png
tags:
writing
code
log
javascript
spreadsheets
notes
swift
design
birds
zig
projects
status-update
git
go
excel
sqlite
sql
postgres
makefile
typescript
java
antlr
snippets
dart
ui
workspace
other
psql
testing
ci
docker
ops
rust
css
lists
python
data-science
game
ide
kinect
about:
about
A code to code by
More than a mantra, less than a manifesto, better than an encyclopedia of docs. A minimal set of rules for writing code.
Log
Small notes of what I'm working on.
Project constant.ts files are bad
A utils file actually serves a purpose, a constants file does not.
Resume
Senior/staff engineer seeking interesting problems to solve.
About
Life, work, contact info, and so on.
Spreadsheets and similar tools
I 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 grammars
A 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 2023
Here's what I've been doing in May.
Status update - April 2023
What I've been up to in April.
Git static site generator tool
Simple static html site generator for multiple git repos.
Excel pivot cache madness
An archaic and terrible corner of Excel: the pivot cache.
SQLite notes
Some personal notes on SQLite.
Postgres notes
Personal notes on Postgres.
Makefile notes
Just some useful notes on Makefiles.
Docs, tests, design, and RFCs
RFCs, designs, tests, and documentation can tell you when you're getting it right.
F7 spreadsheet engine
F7 is a spreadsheet engine that can parse and run formulas like a spreadsheet.
Quick XLSX automation
Cheap and easy way to run XLSX files with containers and LibreOffice.
Custom scrollbars in Flutter
Building custom scrollbars in Flutter with Dart.
Simple Typescript performance functions
Simple functions and annotations to add to other functions to monitor performance.
A poem made by searching for "can always" in my programming notes
A poem made by searching for 'can always' in my programming notes
Designing and building a couch
Here are some pictures of the design and build, which was in total around 80 hours.
Status update - November 2021
An update for the month of November
Excel and beyond
The good, the bad, and the ugly of Excel.
Status update - October 2021
October updates and more.
Status update - September 2021
Here's a little of what I've been up to in September.
Status update - August 2021
Going 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 queries
Use 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 code
Abstraction and factoring aren't super helpful when you're writing tests.
Running CI tests with two steps
Testing 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-subtyping
Getting closer to treating enum variants like types through the use of simple generative macros.
Writing on a single-purpose device
Two 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 design
Elmore Leonard's 'Ten Rules For Writing', roughly applied to design.
Notes from 'Programming Rust' book
Just some from the 'Programming Rust' O'Reilly book.
CSS For range highlighting
Highlighting elements using CSS only.
Spreadsheet grid design
Improving 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 interfaces
You 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 list
A list of stuff about spreadsheets.
Acoustic fingerprinting television
Let'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-spreadsheet
Added 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 javascript
The 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 Spreadsheets
Stumbling 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 generation
Using procedural algorithms to generate terrain maps.
From IDE to binary writing Go in InteliJ
Getting 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 app
An 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 editor
Hexagonal tiles that you can edit like a voxel-explorer game.
Live special effects for theatre performance with the Kinect
Shakespeare'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.