# A.I. Tools & Projects

<span>I share exactly zero of these as public repos because I am embarrassed. And also </span>***who knows what PII lurks beneath the surface!***

# Case Study : ISP FUX - An ISP Monitor

I use a website calling [pinging.net](https://www.pinging.net/) when I am troubleshooting naughty ISP issues. It's a great website. But what's always bugged me is that I can't access it if I'm... offline. The trick is to load the website when you have internet and keep it running when you don't.

I also use a variety of Speed Test tools to check how my speeds are doing. If I'm paying for 1000 down, I want 1000 down when I'm wired to LAN (and close to 1000 down when I'm on WiFi that supports that speed).

I've never liked the way that Google's Speed Test is handled. Speedtest.net, while very accurate, has advertising that's annoying and that can contribute to your issues when you're debugging naughty internet.

Enter *<span style="text-decoration: underline;">**ISP FUX**</span>*, a tool I made in a <s>weekend</s> week and a half using Claude. The tool runs in the background and has a UI in your browser.

It monitors my pings over a custom interval.

It also has a Bandwidth Calculator to tell me how long something will take to download or upload based on my most recent tests (assuming whatever service I'm using can take advantage of the full bandwidth). I am frequently needing to calculate stuff like "it'll take 22 minutes to upload this 10 GB file" or whatever so this is very useful.

The Speed Test here took a bunch of time. Single tests vs. simultaneous tests. Where I'm running the test to/from. Etc! Each test runs three phases against Cloudflare's speed test infrastructure. **Ping** fires 5 small requests and takes the median round-trip time to filter out outliers.

**Download** opens parallel streams simultaneously, 2–10 depending on the file size you picked, across two independent sources (Cloudflare and Cachefly); the first 750ms of each stream is discarded to let TCP slow-start settle, then sustained throughput is measured on the remainder. If a source stalls for 4 seconds with no incoming bytes it's aborted and flagged. The headline download figure is the best result across both sources, not an average.

**Upload** works the same way, parallel streams of random bytes sent to Cloudflare's endpoint, warmup discarded, sustained rate reported. The whole test is run server-side by the Node process, so your browser's overhead doesn't affect the numbers, and results are stored locally in SQLite for correlation against your packet loss history.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/image.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/image.png)

Here's the ping history:

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/2T1image.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/2T1image.png)

Additionally, the tool tracks the history of all the pings and Speed Tests.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/j2cimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/j2cimage.png)

The Speed Tests will auto trigger tests either on a schedule and/or based on a failure trigger.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/IkWimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/IkWimage.png)

Per usual, I also have a changelog, as of this writing, it's at v0.0.32. That's a lot of effort for a tool to just keep tabs on a naughty ISP

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/Ezpimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/Ezpimage.png)

# Case Study : YT-DLP-IS-TOPS Streamin' Video Downloadin'

If you're like me, you've been using some version of **youtube-dl** for lat least a decade. You've also probably used it in bursts, for a specific project or thing, and then forgotten the structure, and then re-learned it. Over and over again! Youtube-dl eventually died and then rose from the ashes as yt-dlp. It's great!

You've also probably figured out a very specific use case that makes you a repeat customer. But typically it's that you need some clip that your client owns but lost and the best quality version that you can get immediately is on youtube (or vimeo).

Enter yt-dlp-is-tops, a UI for YT-DLP that allows you to do a lot of things, but doesn't have unnecessary bells and whistles. There are tons of tops (UIs) for yt-dlp, but I didn't like any of them hah.

I built this on and off over a few weeks with Claude.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/QT1image.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/QT1image.png)

yt-dlp-is-tops is a lightweight local web app (Node.js + Express, no framework) that wraps `yt-dlp` and `ffmpeg` in a clean browser UI, replacing the usual copy-paste terminal workflow for downloading video.

**Core workflow**

- Paste any URL → the app fetches full video metadata and all available formats via `yt-dlp --dump-json`
- A format table shows every stream (ID, extension, resolution, FPS, filesize, video/audio codecs, note), sorted best-first
- Click a row to download it, or select a video row + an audio row to MUX them — yt-dlp downloads both and ffmpeg merges them losslessly into an mp4

**Format &amp; metadata display**

- Video metadata block: title, uploader, duration, video ID, thumbnail
- "Gimme the best" checkbox auto-selects the top video + audio streams
- Best formats are auto-highlighted in the table
- Format IDs are shown and usable directly

**Download experience**

- Live streaming progress bar (parses `[download] X%` lines in real time)
- Collapsible verbose log below the progress bar
- Show in Finder button after download completes
- Download history with persistence across sessions

**Subtitle support**

- Subtitle track selection with options to embed subs into the file or download them as a separate file

**Auth support**

- Options for password-protected videos (username/password)

**Settings**

- Configurable default download folder or "ask every time" mode
- Accent color theme (CSS variable, applied globally via `theme.js`)

**Status bar**

- Shows yt-dlp and ffmpeg versions + whether Homebrew updates are available for each
- One-click upgrade for yt-dlp via the UI

Check out those pre-requisites!!! Awesome.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/e3rimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/e3rimage.png)

# Casestudy : Up-Scaling, Retouching, & Colorizing from a Bad Source

I wanted a high resolution version of this image and I wanted it to not look cursed or fucked.

*<span style="text-decoration: underline;">**This whole process took 6 hours and was hundreds of manual, human steps.**</span>* I only did a good job because I know the tools. People think - "these tools are shortcuts and they take the artistry out." Trust: it's still a lot of work, and it's very fun and rewarding if you're a fucking dork.

[![tour-de-france-1927.jpg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/tour-de-france-1927.jpg)](https://tech-almanac.org/uploads/images/gallery/2026-06/tour-de-france-1927.jpg)

Here are the details of the source image so I'd have something to go on.

[![Screenshot 2026-05-14 at 12.12.30 AM.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/screenshot-2026-05-14-at-12-12-30-am.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/screenshot-2026-05-14-at-12-12-30-am.png)

First, I researched some newer colorization tools. I tried ones I've used before and new ones, too. They all kinda sucked.

[![tour-de-france-1927_m8Q19__please_credit[palette.fm].jpg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/tour-de-france-1927-m8q19-please-creditpalette-fm.jpg)](https://tech-almanac.org/uploads/images/gallery/2026-06/tour-de-france-1927-m8q19-please-creditpalette-fm.jpg)

GPT did a decent job, but couldn't handle the fidelity / quality issues.

[![GPT-v1.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/gpt-v1.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/gpt-v1.png)

My attempt to improve this manually was good, but not great.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/eALimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/eALimage.png)

If you look carefully here, these dudes look like melting hunchbacks of Notre-Dame and their outfits have "complicated shirt" texturing. Yuck! Truly garbage-in / garbage out.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/Qkeimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/Qkeimage.png)

Then, I decided to go back to the source and repair/improve the image in black and white first - focusing on the details I could find, as well as utilizing the research on these cool guys who love cigarettes and biking. What teams they were on, what kind of day it was, etc, etc.

Best way to do that was to improve the image was to focus on regions. So I individually up-rezzed tons of sections. I used a prompt for each one based on what I could find out about each dude. Like these three guys, but for every single guy in the image. I used Gemini for this by the way. Pretty good.

<table border="1" class="align-center" id="bkmrk-that-stogie-looks-go" style="border-collapse: collapse; width: 100%; border-width: 0px;"><colgroup><col style="width: 33.333333%;"></col><col style="width: 33.333333%;"></col><col style="width: 33.333333%;"></col></colgroup><tbody><tr><td style="border-width: 0px;">[![LEFT.jpeg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/left.jpeg)](https://tech-almanac.org/uploads/images/gallery/2026-06/left.jpeg)

</td><td style="border-width: 0px;">[![MID-LEFT.jpeg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/mid-left.jpeg)](https://tech-almanac.org/uploads/images/gallery/2026-06/mid-left.jpeg)

That stogie looks good

</td><td style="border-width: 0px;">[![MID-RIGHT.jpeg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/mid-right.jpeg)](https://tech-almanac.org/uploads/images/gallery/2026-06/mid-right.jpeg)

This is maybe *a little too good* : as if Walker Evans happened to be in France for the 1927 tour (Walker would've been 24).

</td></tr></tbody></table>

Then I composited them together in Photoshop. BUENO!

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/VF5image.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/VF5image.png)

This is the original source btw. My version is a little too high-con, but NICE FRIGGIN WORK, me!

[![tour-de-france-1927-stage-7-oil-on-canvas-v0-040la01cyz0h1.jpeg.webp](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/tour-de-france-1927-stage-7-oil-on-canvas-v0-040la01cyz0h1-jpeg.webp)](https://tech-almanac.org/uploads/images/gallery/2026-06/tour-de-france-1927-stage-7-oil-on-canvas-v0-040la01cyz0h1-jpeg.webp)

Then, using my up-rez version, I used Gemini to color it (and feeding it prompt research from Claude). Not bad!

[![Gemini-v3.jpeg](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/gemini-v3.jpeg)](https://tech-almanac.org/uploads/images/gallery/2026-06/gemini-v3.jpeg)

Then I used Photoshop to extend the image so I could reframe it.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/wkvimage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/wkvimage.png)

Throw some grain on that bad boy, adjust the light levels, get rid of that Gemini logo

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/r3limage.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/r3limage.png)

Close to final version in-situ - I replaced the ground to warm up the image a bit and I embellished some color details because I wanted a little more going on.

[![image.png](https://tech-almanac.org/uploads/images/gallery/2026-06/scaled-1680-/BA9image.png)](https://tech-almanac.org/uploads/images/gallery/2026-06/BA9image.png)

10/10 would do this again

Tools used :

- GPT (for first attempts)
- Claude (for research)
- Gemini (for up-rez)
- Photoshop (for composite, color, image extension, stylization)