Open source is part of my day-to-day work: maintaining my own tools, trying them in practice, and contributing improvements upstream. Early experiments and visualizations live in Labs.

My largest ongoing personal open-source project is the environment I work in. These dotfiles bring together Neovim, tmux, zsh, terminal tools, and coding-agent configuration across macOS and Linux.

I keep improving the small things that shape a working day: finding information, moving between sessions, carrying configuration between machines, and giving agents consistent instructions. A Makefile installs the configuration and converges the tools toward the setup I use.

This is an opinionated personal environment. Read the installation steps and scripts before applying it to your own machine.

Documentation · Installation guide · Source on GitHub

A Lua client for sending Zellij actions over Unix sockets, with the full generated protobuf contract. I extracted it from my dotfiles so other Neovim integrations can reuse the transport while keeping their own session discovery and navigation policy.

Requests are asynchronous and do not start a process for each action. Cancellation and timeouts preserve uncertain outcomes; the client never automatically replays a mutation. Compatibility is pinned to the Zellij runtime revision documented by the package.

Client documentation · Source and installation

How do you give a coding agent useful design boundaries—and check whether its UI stays within them?

Viewrule combines written design rules with executable browser checks for layout, density, context, and accessibility. It captures both page overviews and native-scale detail so large screens do not conceal small defects. Agents receive findings tied to the rules; human feedback helps refine the constraints.

It includes a CLI and a Claude Code plugin. This website uses it to check its rendered pages. Passing those checks means the configured constraints passed; it does not establish that a design is good or automate every accessibility judgment.

Source and installation · Releases · Why feedback matters

Wirelit generates an API reference that documents the typed RPC contract and its HTTP/JSON representation together. Protobuf descriptors supply the service signatures, linked message types, field details, and comments; curated examples show the actual wire format.

The output is ordinary MDX for Astro Starlight. Generated reference pages sit alongside authored application guides, sharing navigation, search, and styling. Wirelit’s own documentation demonstrates this with a complex sample schema and executable curl, TypeScript, and Go examples.

All four RPC shapes have reference pages; runnable examples currently cover unary and server-streaming methods.

Documentation and live example · Source and installation · Sample schema

GitHub activity

GitHub contributions over the last year2025-11-09 to 2026-11-11. Each square is one day, from top to bottom within each week. Brighter squares indicate more contributions as categorized by GitHub. Monthly totals follow.2025-11-09: 72 contributions2025-11-10: 79 contributions2025-11-11: 65 contributions2025-11-12: 76 contributions2025-11-13: 98 contributions2025-11-14: 69 contributions2025-11-15: 54 contributions2025-11-16: 126 contributions2025-11-17: 153 contributions2025-11-18: 140 contributions2025-11-19: 158 contributions2025-11-20: 141 contributions2025-11-21: 177 contributions2025-11-22: 214 contributions2025-11-23: 278 contributions2025-11-24: 166 contributions2025-11-25: 245 contributions2025-11-26: 457 contributions2025-11-27: 102 contributions2025-11-28: 193 contributions2025-11-29: 347 contributions2025-11-30: 145 contributions2025-12-01: 117 contributions2025-12-02: 91 contributions2025-12-03: 113 contributions2025-12-04: 80 contributions2025-12-05: 31 contributions2025-12-06: 0 contributions2025-12-07: 32 contributions2025-12-08: 21 contributions2025-12-09: 9 contributions2025-12-10: 31 contributions2025-12-11: 17 contributions2025-12-12: 16 contributions2025-12-13: 15 contributions2025-12-14: 10 contributions2025-12-15: 0 contributions2025-12-16: 5 contributions2025-12-17: 0 contributions2025-12-18: 10 contributions2025-12-19: 23 contributions2025-12-20: 31 contributions2025-12-21: 1 contributions2025-12-22: 23 contributions2025-12-23: 51 contributions2025-12-24: 0 contributions2025-12-25: 0 contributions2025-12-26: 4 contributions2025-12-27: 0 contributions2025-12-28: 15 contributions2025-12-29: 0 contributions2025-12-30: 4 contributions2025-12-31: 4 contributions2026-01-01: 0 contributions2026-01-02: 0 contributions2026-01-03: 10 contributions2026-01-04: 20 contributions2026-01-05: 1 contributions2026-01-06: 3 contributions2026-01-07: 2 contributions2026-01-08: 5 contributions2026-01-09: 12 contributions2026-01-10: 12 contributions2026-01-11: 0 contributions2026-01-12: 2 contributions2026-01-13: 2 contributions2026-01-14: 6 contributions2026-01-15: 8 contributions2026-01-16: 2 contributions2026-01-17: 1 contributions2026-01-18: 12 contributions2026-01-19: 8 contributions2026-01-20: 14 contributions2026-01-21: 27 contributions2026-01-22: 55 contributions2026-01-23: 16 contributions2026-01-24: 7 contributions2026-01-25: 0 contributions2026-01-26: 15 contributions2026-01-27: 29 contributions2026-01-28: 18 contributions2026-01-29: 8 contributions2026-01-30: 17 contributions2026-01-31: 10 contributions2026-02-01: 8 contributions2026-02-02: 35 contributions2026-02-03: 55 contributions2026-02-04: 3 contributions2026-02-05: 3 contributions2026-02-06: 1 contributions2026-02-07: 2 contributions2026-02-08: 9 contributions2026-02-09: 0 contributions2026-02-10: 0 contributions2026-02-11: 8 contributions2026-02-12: 9 contributions2026-02-13: 8 contributions2026-02-14: 56 contributions2026-02-15: 44 contributions2026-02-16: 49 contributions2026-02-17: 33 contributions2026-02-18: 85 contributions2026-02-19: 6 contributions2026-02-20: 16 contributions2026-02-21: 35 contributions2026-02-22: 15 contributions2026-02-23: 23 contributions2026-02-24: 7 contributions2026-02-25: 43 contributions2026-02-26: 51 contributions2026-02-27: 16 contributions2026-02-28: 0 contributions2026-03-01: 38 contributions2026-03-02: 25 contributions2026-03-03: 42 contributions2026-03-04: 53 contributions2026-03-05: 18 contributions2026-03-06: 33 contributions2026-03-07: 23 contributions2026-03-08: 38 contributions2026-03-09: 27 contributions2026-03-10: 36 contributions2026-03-11: 38 contributions2026-03-12: 26 contributions2026-03-13: 15 contributions2026-03-14: 21 contributions2026-03-15: 7 contributions2026-03-16: 10 contributions2026-03-17: 2 contributions2026-03-18: 20 contributions2026-03-19: 4 contributions2026-03-20: 2 contributions2026-03-21: 21 contributions2026-03-22: 6 contributions2026-03-23: 0 contributions2026-03-24: 2 contributions2026-03-25: 4 contributions2026-03-26: 4 contributions2026-03-27: 3 contributions2026-03-28: 26 contributions2026-03-29: 7 contributions2026-03-30: 7 contributions2026-03-31: 6 contributions2026-04-01: 12 contributions2026-04-02: 3 contributions2026-04-03: 6 contributions2026-04-04: 0 contributions2026-04-05: 9 contributions2026-04-06: 11 contributions2026-04-07: 10 contributions2026-04-08: 6 contributions2026-04-09: 10 contributions2026-04-10: 19 contributions2026-04-11: 13 contributions2026-04-12: 19 contributions2026-04-13: 15 contributions2026-04-14: 64 contributions2026-04-15: 65 contributions2026-04-16: 0 contributions2026-04-17: 2 contributions2026-04-18: 1 contributions2026-04-19: 10 contributions2026-04-20: 35 contributions2026-04-21: 25 contributions2026-04-22: 31 contributions2026-04-23: 24 contributions2026-04-24: 42 contributions2026-04-25: 14 contributions2026-04-26: 31 contributions2026-04-27: 25 contributions2026-04-28: 13 contributions2026-04-29: 22 contributions2026-04-30: 10 contributions2026-05-01: 2 contributions2026-05-02: 18 contributions2026-05-03: 49 contributions2026-05-04: 105 contributions2026-05-05: 72 contributions2026-05-06: 104 contributions2026-05-07: 125 contributions2026-05-08: 109 contributions2026-05-09: 58 contributions2026-05-10: 24 contributions2026-05-11: 80 contributions2026-05-12: 112 contributions2026-05-13: 89 contributions2026-05-14: 38 contributions2026-05-15: 84 contributions2026-05-16: 6 contributions2026-05-17: 15 contributions2026-05-18: 47 contributions2026-05-19: 45 contributions2026-05-20: 35 contributions2026-05-21: 21 contributions2026-05-22: 49 contributions2026-05-23: 21 contributions2026-05-24: 59 contributions2026-05-25: 25 contributions2026-05-26: 34 contributions2026-05-27: 31 contributions2026-05-28: 37 contributions2026-05-29: 29 contributions2026-05-30: 25 contributions2026-05-31: 17 contributions2026-06-01: 22 contributions2026-06-02: 19 contributions2026-06-03: 26 contributions2026-06-04: 23 contributions2026-06-05: 41 contributions2026-06-06: 20 contributions2026-06-07: 40 contributions2026-06-08: 28 contributions2026-06-09: 36 contributions2026-06-10: 35 contributions2026-06-11: 34 contributions2026-06-12: 45 contributions2026-06-13: 7 contributions2026-06-14: 46 contributions2026-06-15: 18 contributions2026-06-16: 15 contributions2026-06-17: 7 contributions2026-06-18: 49 contributions2026-06-19: 29 contributions2026-06-20: 17 contributions2026-06-21: 1 contributions2026-06-22: 11 contributions2026-06-23: 8 contributions2026-06-24: 1 contributions2026-06-25: 16 contributions2026-06-26: 18 contributions2026-06-27: 15 contributions2026-06-28: 30 contributions2026-06-29: 28 contributions2026-06-30: 19 contributions2026-07-01: 19 contributions2026-07-02: 9 contributions2026-07-03: 6 contributions2026-07-04: 7 contributions2026-07-05: 5 contributions2026-07-06: 20 contributions2026-07-07: 12 contributions2026-07-08: 61 contributions2026-07-09: 100 contributions2026-07-10: 57 contributions2026-07-11: 13 contributions2026-07-12: 10 contributions2026-07-13: 14 contributions2026-07-14: 12 contributions2026-07-15: 71 contributions2026-07-16: 50 contributions2026-07-17: 80 contributions2026-07-18: 18 contributions2026-07-19: 11 contributions2026-07-20: 22 contributions2026-07-21: 10 contributions2026-07-22: 0 contributions2026-07-23: 0 contributions2026-07-24: 6 contributions2026-07-25: 9 contributions2026-07-26: 0 contributions2026-07-27: 54 contributions2026-07-28: 57 contributions2026-07-29: 33 contributions2026-07-30: 56 contributions2026-07-31: 30 contributions2026-08-01: 1 contributions2026-08-02: 23 contributions2026-08-03: 47 contributions2026-08-04: 21 contributions2026-08-05: 37 contributions2026-08-06: 73 contributions2026-08-07: 93 contributions2026-08-08: 4 contributions2026-08-09: 65 contributions2026-08-10: 18 contributions2026-08-11: 7 contributions2026-08-12: 38 contributions2026-08-13: 93 contributions2026-08-14: 127 contributions2026-08-15: 58 contributions2026-08-16: 149 contributions2026-08-17: 131 contributions2026-08-18: 31 contributions2026-08-19: 117 contributions2026-08-20: 156 contributions2026-08-21: 110 contributions2026-08-22: 0 contributions2026-08-23: 33 contributions2026-08-24: 39 contributions2026-08-25: 38 contributions2026-08-26: 100 contributions2026-08-27: 204 contributions2026-08-28: 128 contributions2026-08-29: 93 contributions2026-08-30: 108 contributions2026-08-31: 110 contributions2026-09-01: 112 contributions2026-09-02: 23 contributions2026-09-03: 118 contributions2026-09-04: 89 contributions2026-09-05: 90 contributions2026-09-06: 211 contributions2026-09-07: 202 contributions2026-09-08: 160 contributions2026-09-09: 168 contributions2026-09-10: 253 contributions2026-09-11: 250 contributions2026-09-12: 50 contributions2026-09-13: 77 contributions2026-09-14: 152 contributions2026-09-15: 156 contributions2026-09-16: 142 contributions2026-09-17: 164 contributions2026-09-18: 256 contributions2026-09-19: 107 contributions2026-09-20: 168 contributions2026-09-21: 184 contributions2026-09-22: 197 contributions2026-09-23: 138 contributions2026-09-24: 255 contributions2026-09-25: 223 contributions2026-09-26: 310 contributions2026-09-27: 63 contributions2026-09-28: 58 contributions2026-09-29: 50 contributions2026-09-30: 70 contributions2026-10-01: 90 contributions2026-10-02: 184 contributions2026-10-03: 39 contributions2026-10-04: 29 contributions2026-10-05: 4 contributions2026-10-06: 116 contributions2026-10-07: 85 contributions2026-10-08: 145 contributions2026-10-09: 193 contributions2026-10-10: 212 contributions2026-10-11: 151 contributions2026-10-12: 84 contributions2026-10-13: 105 contributions2026-10-14: 99 contributions2026-10-15: 148 contributions2026-10-16: 78 contributions2026-10-17: 24 contributions2026-10-18: 29 contributions2026-10-19: 89 contributions2026-10-20: 39 contributions2026-10-21: 96 contributions2026-10-22: 63 contributions2026-10-23: 65 contributions2026-10-24: 32 contributions2026-10-25: 45 contributions2026-10-26: 200 contributions2026-10-27: 167 contributions2026-10-28: 87 contributions2026-10-29: 83 contributions2026-10-30: 124 contributions2026-10-31: 125 contributions2026-11-01: 137 contributions2026-11-02: 152 contributions2026-11-03: 161 contributions2026-11-04: 117 contributions2026-11-05: 119 contributions2026-11-06: 174 contributions2026-11-07: 143 contributions2026-11-08: 108 contributions2026-11-09: 115 contributions2026-11-10: 122 contributions2026-11-11: 43 contributions
GitHub contributions over the last 13 weeks2026-08-16 to 2026-11-11. Each square is one day, from top to bottom within each week. Brighter squares indicate more contributions as categorized by GitHub. Monthly totals follow.2026-08-16: 149 contributions2026-08-17: 131 contributions2026-08-18: 31 contributions2026-08-19: 117 contributions2026-08-20: 156 contributions2026-08-21: 110 contributions2026-08-22: 0 contributions2026-08-23: 33 contributions2026-08-24: 39 contributions2026-08-25: 38 contributions2026-08-26: 100 contributions2026-08-27: 204 contributions2026-08-28: 128 contributions2026-08-29: 93 contributions2026-08-30: 108 contributions2026-08-31: 110 contributions2026-09-01: 112 contributions2026-09-02: 23 contributions2026-09-03: 118 contributions2026-09-04: 89 contributions2026-09-05: 90 contributions2026-09-06: 211 contributions2026-09-07: 202 contributions2026-09-08: 160 contributions2026-09-09: 168 contributions2026-09-10: 253 contributions2026-09-11: 250 contributions2026-09-12: 50 contributions2026-09-13: 77 contributions2026-09-14: 152 contributions2026-09-15: 156 contributions2026-09-16: 142 contributions2026-09-17: 164 contributions2026-09-18: 256 contributions2026-09-19: 107 contributions2026-09-20: 168 contributions2026-09-21: 184 contributions2026-09-22: 197 contributions2026-09-23: 138 contributions2026-09-24: 255 contributions2026-09-25: 223 contributions2026-09-26: 310 contributions2026-09-27: 63 contributions2026-09-28: 58 contributions2026-09-29: 50 contributions2026-09-30: 70 contributions2026-10-01: 90 contributions2026-10-02: 184 contributions2026-10-03: 39 contributions2026-10-04: 29 contributions2026-10-05: 4 contributions2026-10-06: 116 contributions2026-10-07: 85 contributions2026-10-08: 145 contributions2026-10-09: 193 contributions2026-10-10: 212 contributions2026-10-11: 151 contributions2026-10-12: 84 contributions2026-10-13: 105 contributions2026-10-14: 99 contributions2026-10-15: 148 contributions2026-10-16: 78 contributions2026-10-17: 24 contributions2026-10-18: 29 contributions2026-10-19: 89 contributions2026-10-20: 39 contributions2026-10-21: 96 contributions2026-10-22: 63 contributions2026-10-23: 65 contributions2026-10-24: 32 contributions2026-10-25: 45 contributions2026-10-26: 200 contributions2026-10-27: 167 contributions2026-10-28: 87 contributions2026-10-29: 83 contributions2026-10-30: 124 contributions2026-10-31: 125 contributions2026-11-01: 137 contributions2026-11-02: 152 contributions2026-11-03: 161 contributions2026-11-04: 117 contributions2026-11-05: 119 contributions2026-11-06: 174 contributions2026-11-07: 143 contributions2026-11-08: 108 contributions2026-11-09: 115 contributions2026-11-10: 122 contributions2026-11-11: 43 contributions
Last yearLast 13 weeks · Less More

20,652 contributions across November 9, 2025 – November 11, 2026. Retrieved November 11, 2026.

Publicly visible GitHub profile activity, which can include anonymized private contributions. Counts show activity, not impact.

Monthly contribution totals
MonthContributions
November 20253,555
December 2025754
January 2026322
February 2026620
March 2026564
April 2026547
May 20261,565
June 2026704
July 2026852
August 20262,252
September 20264,496
October 20263,030
November 20261,391

First and last months may be partial.

View current activity on GitHub · What GitHub counts

Selected open-source contributions

Selected changes to tools I use, alongside earlier foundational work. Dates indicate when changes landed upstream, not ongoing maintainership or release availability.

bqls

Merged

Added type details to completions and richer field and table hovers in this BigQuery language server. Fixed completion panics on unfinished queries and false diagnostics for timestamp parameters in snapshot queries.

Typed completions and query diagnostics

hotreload.nvim

Merged

Replaced interval polling with filesystem-event watchers and limited watching to visible buffers in this Neovim plugin.

File-watching improvements

focus.nvim

Applied upstream

Added terminal-size thresholds that choose equal-sized Neovim splits on larger terminals and give the focused window more space on smaller ones. The maintainer applied the change directly with my authorship preserved; the pull request was closed rather than merged.

Adaptive split sizing

Original pull request

umya-spreadsheet

Merged

Made the defined-name setter public so dependent Rust crates can create and rename Excel-style named ranges.

Public named-range API

copilot-api

Merged

Preserved Anthropic thinking content as text when translating messages to the OpenAI-compatible API, fixing malformed requests that returned HTTP 400 errors.

Thinking-block translation fix

jnv

Merged

Added configuration-file support for custom keybindings and styles, using the XDG configuration-directory conventions.

Configuration-file support

Sinatra

Merged

Changed default parameter escaping in the bundled rack-protection integration and added a regression test. Both changes were merged upstream.

Parameter-escaping fix

Regression test

fog-aws

Earlier foundational work

I helped get fog-aws started: a Ruby library for working with Amazon Web Services, usable on its own or through Fog. The project lists me as an author alongside Wesley Beary. My involvement was in its early development; I have contributed little in recent years.

Project authorship

Contribution history

I also support Neovim through recurring donations.