shay2000Alternative / The Independent
Alternative designs
A journal of useful software / ShayRepository edition · 12 Sept 2026

The Independent.

The brief / small tools, specific annoyances

Built because the thing didn't quite exist yet.

macOS menu-bar utilities, self-hosted services, and research tooling. Everything here is public, deliberately small, and built to solve a real problem.

In focus / Swift · AppKit · IOKit · Menu bar

Watt is it?

The honest wattage number, in your menu bar.

Most chargers report what they are rated for. macOS repeats that number. Nobody tells you what is actually crossing the cable.

Inside the build →

The useful things.

All 13 tracked builds →
01 / Original work

Watt is it?

The honest wattage number, in your menu bar.

Most chargers report what they are rated for. macOS repeats that number. Nobody tells you what is actually crossing the cable.

Swift / AppKit / IOKit / Menu bar

02 / Original work

PodcastSync

YouTube channels as a podcast feed on your own Wi-Fi.

Podcast clients only understand one thing: an RSS feed with enclosure links. PodcastSync makes a YouTube channel look like exactly that, served from your own machine.

Python / Swift / yt-dlp / ffmpeg / SQLite

03 / Original work

LumaControl

Display control for current macOS, including the brightness macOS hides.

LumaControl started as a fork of MonitorControl and became its own project, with a focus on current macOS releases, a native-feeling interface, and display-control ideas upstream had not taken on.

Swift / AppKit / DDC/CI / Sparkle / CI

04 / Original work

Zotero AI

AI summaries for Zotero that show you the payload before they send it.

The default shape of an AI feature is a button that quietly ships your document to a server. The default shape of a research workflow is a folder of unpublished drafts and embargoed data.

JavaScript / Zotero 9+ / Python (build) / Keychain

05 / Fork / maintained

FlipOff

A $3,500 split-flap board, emulated in a browser tab.

Real split-flap boards cost thousands. FlipOff turns any television or monitor into one, and it is a single index.html with no build step and no dependencies.

JavaScript / CSS 3D / Web Audio / No build step

06 / Original work

TreeSpace

What's eating your disk, without the ceremony.

A minimal native SwiftUI app that answers one question: what is taking up the space? Expandable size-sorted tree, totals grouped by file extension, and a duplicate finder — all readable end to end and yours to hack on.

Swift / SwiftUI / CryptoKit / SwiftPM

07 / Original work

METAR Translator

METAR Viewer is a Windows application that translates raw METAR Data into a more "human-friendly" format. FOR FLIGHT SIM ONLY

METAR Viewer fetches and decodes aviation weather reports (METARs) into plain English. Search by ICAO code, IATA code, airport name, or even a common misspelling, and get wind, visibility, cloud layers, temperature, altimeter, present weather, and flight category back in a readable form. Simulation and hobby use only; not for real-world aviation or weather decisions.

C# / JavaScript / Python

Public repository record

Work, day by day.

14 Sept 2025 – 12 Sept 2026 · 569 sampled commits

2025-09-14: 7 sampled commits2025-09-15: 0 sampled commits2025-09-16: 0 sampled commits2025-09-17: 2 sampled commits2025-09-18: 0 sampled commits2025-09-19: 0 sampled commits2025-09-20: 0 sampled commits2025-09-21: 0 sampled commits2025-09-22: 0 sampled commits2025-09-23: 0 sampled commits2025-09-24: 0 sampled commits2025-09-25: 0 sampled commits2025-09-26: 0 sampled commits2025-09-27: 0 sampled commits2025-09-28: 0 sampled commits2025-09-29: 0 sampled commits2025-09-30: 0 sampled commits2025-10-01: 0 sampled commits2025-10-02: 0 sampled commits2025-10-03: 0 sampled commits2025-10-04: 0 sampled commits2025-10-05: 0 sampled commits2025-10-06: 0 sampled commits2025-10-07: 0 sampled commits2025-10-08: 0 sampled commits2025-10-09: 0 sampled commits2025-10-10: 0 sampled commits2025-10-11: 0 sampled commits2025-10-12: 0 sampled commits2025-10-13: 0 sampled commits2025-10-14: 0 sampled commits2025-10-15: 0 sampled commits2025-10-16: 0 sampled commits2025-10-17: 0 sampled commits2025-10-18: 1 sampled commits2025-10-19: 0 sampled commits2025-10-20: 7 sampled commits2025-10-21: 0 sampled commits2025-10-22: 0 sampled commits2025-10-23: 0 sampled commits2025-10-24: 0 sampled commits2025-10-25: 0 sampled commits2025-10-26: 0 sampled commits2025-10-27: 0 sampled commits2025-10-28: 0 sampled commits2025-10-29: 0 sampled commits2025-10-30: 0 sampled commits2025-10-31: 0 sampled commits2025-11-01: 0 sampled commits2025-11-02: 0 sampled commits2025-11-03: 0 sampled commits2025-11-04: 0 sampled commits2025-11-05: 0 sampled commits2025-11-06: 0 sampled commits2025-11-07: 0 sampled commits2025-11-08: 0 sampled commits2025-11-09: 0 sampled commits2025-11-10: 0 sampled commits2025-11-11: 0 sampled commits2025-11-12: 0 sampled commits2025-11-13: 0 sampled commits2025-11-14: 0 sampled commits2025-11-15: 0 sampled commits2025-11-16: 3 sampled commits2025-11-17: 0 sampled commits2025-11-18: 0 sampled commits2025-11-19: 0 sampled commits2025-11-20: 0 sampled commits2025-11-21: 0 sampled commits2025-11-22: 0 sampled commits2025-11-23: 0 sampled commits2025-11-24: 0 sampled commits2025-11-25: 0 sampled commits2025-11-26: 0 sampled commits2025-11-27: 0 sampled commits2025-11-28: 0 sampled commits2025-11-29: 0 sampled commits2025-11-30: 0 sampled commits2025-12-01: 0 sampled commits2025-12-02: 0 sampled commits2025-12-03: 0 sampled commits2025-12-04: 1 sampled commits2025-12-05: 0 sampled commits2025-12-06: 0 sampled commits2025-12-07: 0 sampled commits2025-12-08: 0 sampled commits2025-12-09: 0 sampled commits2025-12-10: 0 sampled commits2025-12-11: 0 sampled commits2025-12-12: 0 sampled commits2025-12-13: 0 sampled commits2025-12-14: 0 sampled commits2025-12-15: 0 sampled commits2025-12-16: 0 sampled commits2025-12-17: 0 sampled commits2025-12-18: 1 sampled commits2025-12-19: 0 sampled commits2025-12-20: 0 sampled commits2025-12-21: 0 sampled commits2025-12-22: 0 sampled commits2025-12-23: 1 sampled commits2025-12-24: 1 sampled commits2025-12-25: 0 sampled commits2025-12-26: 0 sampled commits2025-12-27: 0 sampled commits2025-12-28: 0 sampled commits2025-12-29: 1 sampled commits2025-12-30: 0 sampled commits2025-12-31: 0 sampled commits2026-01-01: 0 sampled commits2026-01-02: 0 sampled commits2026-01-03: 0 sampled commits2026-01-04: 1 sampled commits2026-01-05: 0 sampled commits2026-01-06: 0 sampled commits2026-01-07: 0 sampled commits2026-01-08: 0 sampled commits2026-01-09: 3 sampled commits2026-01-10: 2 sampled commits2026-01-11: 0 sampled commits2026-01-12: 1 sampled commits2026-01-13: 0 sampled commits2026-01-14: 0 sampled commits2026-01-15: 1 sampled commits2026-01-16: 0 sampled commits2026-01-17: 0 sampled commits2026-01-18: 0 sampled commits2026-01-19: 0 sampled commits2026-01-20: 5 sampled commits2026-01-21: 3 sampled commits2026-01-22: 4 sampled commits2026-01-23: 8 sampled commits2026-01-24: 6 sampled commits2026-01-25: 0 sampled commits2026-01-26: 4 sampled commits2026-01-27: 10 sampled commits2026-01-28: 0 sampled commits2026-01-29: 1 sampled commits2026-01-30: 3 sampled commits2026-01-31: 0 sampled commits2026-02-01: 6 sampled commits2026-02-02: 0 sampled commits2026-02-03: 2 sampled commits2026-02-04: 14 sampled commits2026-02-05: 0 sampled commits2026-02-06: 0 sampled commits2026-02-07: 0 sampled commits2026-02-08: 0 sampled commits2026-02-09: 1 sampled commits2026-02-10: 0 sampled commits2026-02-11: 1 sampled commits2026-02-12: 7 sampled commits2026-02-13: 3 sampled commits2026-02-14: 4 sampled commits2026-02-15: 8 sampled commits2026-02-16: 0 sampled commits2026-02-17: 1 sampled commits2026-02-18: 11 sampled commits2026-02-19: 5 sampled commits2026-02-20: 0 sampled commits2026-02-21: 1 sampled commits2026-02-22: 0 sampled commits2026-02-23: 0 sampled commits2026-02-24: 0 sampled commits2026-02-25: 0 sampled commits2026-02-26: 4 sampled commits2026-02-27: 2 sampled commits2026-02-28: 10 sampled commits2026-03-01: 0 sampled commits2026-03-02: 0 sampled commits2026-03-03: 0 sampled commits2026-03-04: 0 sampled commits2026-03-05: 0 sampled commits2026-03-06: 0 sampled commits2026-03-07: 0 sampled commits2026-03-08: 1 sampled commits2026-03-09: 1 sampled commits2026-03-10: 0 sampled commits2026-03-11: 0 sampled commits2026-03-12: 0 sampled commits2026-03-13: 0 sampled commits2026-03-14: 0 sampled commits2026-03-15: 0 sampled commits2026-03-16: 0 sampled commits2026-03-17: 0 sampled commits2026-03-18: 0 sampled commits2026-03-19: 0 sampled commits2026-03-20: 0 sampled commits2026-03-21: 0 sampled commits2026-03-22: 0 sampled commits2026-03-23: 1 sampled commits2026-03-24: 0 sampled commits2026-03-25: 0 sampled commits2026-03-26: 1 sampled commits2026-03-27: 0 sampled commits2026-03-28: 20 sampled commits2026-03-29: 1 sampled commits2026-03-30: 0 sampled commits2026-03-31: 2 sampled commits2026-04-01: 0 sampled commits2026-04-02: 0 sampled commits2026-04-03: 0 sampled commits2026-04-04: 2 sampled commits2026-04-05: 1 sampled commits2026-04-06: 10 sampled commits2026-04-07: 0 sampled commits2026-04-08: 3 sampled commits2026-04-09: 0 sampled commits2026-04-10: 0 sampled commits2026-04-11: 0 sampled commits2026-04-12: 0 sampled commits2026-04-13: 2 sampled commits2026-04-14: 0 sampled commits2026-04-15: 0 sampled commits2026-04-16: 0 sampled commits2026-04-17: 0 sampled commits2026-04-18: 0 sampled commits2026-04-19: 1 sampled commits2026-04-20: 0 sampled commits2026-04-21: 0 sampled commits2026-04-22: 0 sampled commits2026-04-23: 0 sampled commits2026-04-24: 0 sampled commits2026-04-25: 0 sampled commits2026-04-26: 0 sampled commits2026-04-27: 1 sampled commits2026-04-28: 5 sampled commits2026-04-29: 0 sampled commits2026-04-30: 0 sampled commits2026-05-01: 0 sampled commits2026-05-02: 0 sampled commits2026-05-03: 0 sampled commits2026-05-04: 0 sampled commits2026-05-05: 0 sampled commits2026-05-06: 0 sampled commits2026-05-07: 0 sampled commits2026-05-08: 0 sampled commits2026-05-09: 0 sampled commits2026-05-10: 0 sampled commits2026-05-11: 0 sampled commits2026-05-12: 0 sampled commits2026-05-13: 0 sampled commits2026-05-14: 5 sampled commits2026-05-15: 0 sampled commits2026-05-16: 0 sampled commits2026-05-17: 0 sampled commits2026-05-18: 0 sampled commits2026-05-19: 0 sampled commits2026-05-20: 0 sampled commits2026-05-21: 0 sampled commits2026-05-22: 0 sampled commits2026-05-23: 0 sampled commits2026-05-24: 0 sampled commits2026-05-25: 0 sampled commits2026-05-26: 0 sampled commits2026-05-27: 0 sampled commits2026-05-28: 0 sampled commits2026-05-29: 0 sampled commits2026-05-30: 0 sampled commits2026-05-31: 0 sampled commits2026-06-01: 0 sampled commits2026-06-02: 0 sampled commits2026-06-03: 0 sampled commits2026-06-04: 0 sampled commits2026-06-05: 0 sampled commits2026-06-06: 0 sampled commits2026-06-07: 0 sampled commits2026-06-08: 0 sampled commits2026-06-09: 0 sampled commits2026-06-10: 0 sampled commits2026-06-11: 0 sampled commits2026-06-12: 0 sampled commits2026-06-13: 0 sampled commits2026-06-14: 0 sampled commits2026-06-15: 0 sampled commits2026-06-16: 0 sampled commits2026-06-17: 0 sampled commits2026-06-18: 0 sampled commits2026-06-19: 0 sampled commits2026-06-20: 0 sampled commits2026-06-21: 0 sampled commits2026-06-22: 0 sampled commits2026-06-23: 0 sampled commits2026-06-24: 0 sampled commits2026-06-25: 0 sampled commits2026-06-26: 0 sampled commits2026-06-27: 0 sampled commits2026-06-28: 0 sampled commits2026-06-29: 0 sampled commits2026-06-30: 0 sampled commits2026-07-01: 0 sampled commits2026-07-02: 0 sampled commits2026-07-03: 0 sampled commits2026-07-04: 0 sampled commits2026-07-05: 0 sampled commits2026-07-06: 0 sampled commits2026-07-07: 0 sampled commits2026-07-08: 0 sampled commits2026-07-09: 0 sampled commits2026-07-10: 0 sampled commits2026-07-11: 0 sampled commits2026-07-12: 0 sampled commits2026-07-13: 0 sampled commits2026-07-14: 0 sampled commits2026-07-15: 0 sampled commits2026-07-16: 0 sampled commits2026-07-17: 0 sampled commits2026-07-18: 0 sampled commits2026-07-19: 0 sampled commits2026-07-20: 0 sampled commits2026-07-21: 2 sampled commits2026-07-22: 8 sampled commits2026-07-23: 2 sampled commits2026-07-24: 8 sampled commits2026-07-25: 2 sampled commits2026-07-26: 0 sampled commits2026-07-27: 3 sampled commits2026-07-28: 30 sampled commits2026-07-29: 20 sampled commits2026-07-30: 17 sampled commits2026-07-31: 2 sampled commits2026-08-01: 1 sampled commits2026-08-02: 0 sampled commits2026-08-03: 13 sampled commits2026-08-04: 8 sampled commits2026-08-05: 11 sampled commits2026-08-06: 2 sampled commits2026-08-07: 10 sampled commits2026-08-08: 1 sampled commits2026-08-09: 12 sampled commits2026-08-10: 2 sampled commits2026-08-11: 13 sampled commits2026-08-12: 2 sampled commits2026-08-13: 0 sampled commits2026-08-14: 10 sampled commits2026-08-15: 2 sampled commits2026-08-16: 0 sampled commits2026-08-17: 0 sampled commits2026-08-18: 13 sampled commits2026-08-19: 5 sampled commits2026-08-20: 17 sampled commits2026-08-21: 15 sampled commits2026-08-22: 11 sampled commits2026-08-23: 3 sampled commits2026-08-24: 0 sampled commits2026-08-25: 0 sampled commits2026-08-26: 0 sampled commits2026-08-27: 0 sampled commits2026-08-28: 0 sampled commits2026-08-29: 0 sampled commits2026-08-30: 0 sampled commits2026-08-31: 9 sampled commits2026-09-01: 1 sampled commits2026-09-02: 13 sampled commits2026-09-03: 3 sampled commits2026-09-04: 8 sampled commits2026-09-05: 4 sampled commits2026-09-06: 0 sampled commits2026-09-07: 0 sampled commits2026-09-08: 0 sampled commits2026-09-09: 0 sampled commits2026-09-10: 20 sampled commits2026-09-11: 18 sampled commits2026-09-12: 34 sampled commits
14 Sept 2025Less More12 Sept 2026

Frozen at the GitHub snapshot of 12 Sept 2026. Sampled repository commits, including fork history; not a complete contribution graph or a measure of personal output.

Read the monthly totals
Sept 2025
9
Oct 2025
8
Nov 2025
3
Dec 2025
5
Jan 2026
52
Feb 2026
80
Mar 2026
27
Apr 2026
25
May 2026
5
Jun 2026
0
Jul 2026
94
Aug 2026
160
Sept 2026
101
Archive, not scoreboard

660 commits in the full saved sample; 8 original and 5 forked repositories. The chart above covers its labelled period only.

Material composition

Written in.

Share of code bytes across tracked repositories, including forks. Snapshot: 12 Sept 2026. Not time spent or proficiency.

  1. JavaScript48.5%
  2. Fluent20.1%
  3. C++16.4%
  4. Swift2.8%
  5. Python2.8%
  6. HTML1.9%
  7. SCSS1.8%
Remaining 19 languages
NSIS
1.2%
C#
1.1%
TypeScript
1.1%
Shell
1.1%
CSS
0.7%
Perl
0.2%
C
0.1%
XSLT
0.1%
Java
0.1%
PHP
<0.1%
Lua
<0.1%
Objective-C
<0.1%
Makefile
<0.1%
Batchfile
<0.1%
Rich Text Format
<0.1%
Dockerfile
<0.1%
PowerShell
<0.1%
VBScript
<0.1%
Nix
<0.1%

Dispatches & field notes.

Writing archive →

23 Aug 2026

Modelling a split-flap display in the browser

A real split-flap display has no pixels. It has a stack of physical cards on a spindle, and a cell can only ever show the card currently at the front. To get from A to B, the mechanism does not fade or slide — it flips forward through every card in between.

Read the full essay →

14 Aug 2026

AI summaries that ask permission first

The default shape of an AI feature is a button that silently ships your document to a server. The default shape of a research workflow is a folder full of unpublished drafts, embargoed data, and things covered by an ethics approval.

Read the full essay →

Independently built.
Openly shared.