I write my software in Odin, as it is my favorite openly available language, but jai is also great.
I currently use Focus Editor.
It’s been great to put away the heavy tooling, and actually practice the simple art of writing software.
The common CSV sound report sucks.
This fixes them.
Normal CSV sound reports are bad. They need to be converted with ugly and slow spreadsheet software, they’ll easily end up with completely wrong information, they’re simply not a good format for looking at the data. I wanted to deliver something better to my clients. Better Report will generate better reports as HTML files directly from the WAV files or from CSV files you’ve already generated. These have a very nice suite of quality-of-life improvements, and are much easier to read and generate.
Here’s an example report generated directly from the WAV files, no CSV.
(The MacOS version is coming very, very soon.)
If you want to deliver your clients that extra premium branded experience, and make sure they notice who delivered them all that good sound,
I can make you a version that puts your logo in the corner of the sound report, as a link to your website, and make the reports’ color scheme match your brand.
If you’re interested in this bespoke service, email me.
DaVinci Resolve is an absolute pain for generating proxies. Adobe Media Encoder has tonnes of memory leaks, will crash overnight, and mismatch the number of audio channels between proxy and original media.
Sparkburst Proxy doesn’t have these problems. Not out yet. Work in progress.
Defy gravity as you boost, score and battle your friends for robotic Wheely Ball supremacy.
This is a game a couple of friends and I made. It’s sort of like a 2D Rocket League. Set in the high-tech future where China has taken over everything, you control a Segway-like robot that can jump and rocket boost around, trying to score goals on your friends.
It’s programmed in Jonathan Blow’s new language, without a game engine, featuring custom physics by Sam H. Smith, custom networking, all handwritten with love.
This tool counts hours in ics files.
I’ve only tested it on ics files from Proton Calendar.
I track a lot of my freelance hours directly in my calendar.
With this you can simply call statics Projectname -i 2025-05, and it will fetch all your hours on Projectname via a saved calendar sharing link and count all your hours for May 2025.
This thing has and will continue to save me many hours.
Running statics -h yields:
statICS by Sander J. Skjegstad
Usage:
statics path/to/file.ics path/to/another_file.ics [FLAGS]
Flags:
-t To: Filter up to and NOT including a specific time.
-f From: Filter from and including a specific time.
-i In: Filter to inside a specific year, month, etc.
-s Substring: Case sensitive filter based on event names.
-a Alias: Save an ICS URL to fetch via internet.
-v Verbose: Prints more info.
-h Help: Show this screen.
Filter syntax:
Filters currently only filter based on the event start time.
Specify only as much as you want to filter by.
YYYY-MM-DD-Hr-Mn
-t 2015-12-31-12-45 will not count anything from that point and out.
-i 2018-12 will only count things within December of 2018.
Alias syntax:
-a Project https://example.org/project.ics
This will save the URL under the alias Project.
Later you can then specify Project instead of a path/to/a_file.ics,
and it will fetch the ICS from the web via the saved link.
The URL and latest ICS from it will be stored next to the executable.
Depending on OS, be careful about special characters like / escaping.
Invoicing for Norwegian film workers, made chill.
I stole that slogan from openpilot.
The rules put forth by the Norwegian film union are needlessly complicated, and calculating what you should invoice takes too much damn work. It should be automated. So I automated it.
You tell it the hours you worked, and it tells you the amount you should invoice. It even gives you a cute copy-paste-able receipt, listing the hours.
Right now, it only uses the ruleset for advertisement and short-term work, and if you give it really wacky lunch hours, it’s buggy. I’m working on a complete rewrite in odin, with GUI. This is an older CLI C++ verison. It works well. I use it all the time. However, better things are coming.
Downloads: Linux, MacOS-x86, Termux, Win32, Win64
Dead simple program for timetracking that doesn’t waste system resources. Every minute it records a timestamp and the active window’s title into a text file under a folder named “timetracks” next to the exe. It makes a new file for each day. If you don’t use the keyboard or mouse for 2 minutes it will start writing AFK in the timestamp.
[16:59] timetrack (Documents\Programming\timetrack) - File Pilot v0.6.5
[17:00] main.jai • timetrack • timetrack - Focus
[17:01] main.jai • timetrack • timetrack - Focus
[17:02 AFK] main.jai • timetrack • timetrack - Focus
[17:03 AFK] main.jai • timetrack • timetrack - Focus
[17:04 AFK] main.jai • timetrack • timetrack - Focus
[17:05] 2026-01-20.txt - Notepad
[17:06] logs (Documents\Programming\timetrack\logs) - File Pilot v0.6.5
[17:07] main.jai • timetrack • timetrack - Focus
[17:08] timetrack (Documents\Programming\timetrack) - File Pilot v0.6.5
[17:09] main.jai • timetrack • timetrack - Focus
[17:10] module.jai • timetrack/modules/My_File • timetrack - Focus
0.2 MB of RAM, and 0% CPU usage.
Downloads: Windows
A tiny tool I wrote because I needed to test float accuracy. Maybe you’ll find it useful.
~$ floatback 435922.553 d
435922.5530000000144354999
You can pick between float, double and long double float sizes, by writing f, d or ld.
Downloads: Linux, MacOS-x86, Termux, Win32, Win64