Commit 138e34b097
Verified · cmc
Layout: unified · split
content/blog/2026-07-21-skunkyart-fork.org added +55
| @@ -0,0 +1,55 @@ | |||
| 1 | #+date: [2026-07-21 Tue] | ||
| 2 | #+title: Forking SkunkyArt | ||
| 3 | #+description: Announcing my fork of SkunkyArt, an alternative privacy frontend for DeviantArt, now maintained under Zero Labs. | ||
| 4 | #+slug: skunkyart-fork | ||
| 5 | #+filetags: :development:self-hosting: | ||
| 6 | |||
| 7 | * SkunkyArt | ||
| 8 | |||
| 9 | I've forked [[https://git.macaw.me/skunky/SkunkyArt][SkunkyArt]], an alternative privacy frontend for DeviantArt that works | ||
| 10 | entirely without JavaScript, over to the [[https://github.com/zerolabsco][Zero Labs]] organization on GitHub. | ||
| 11 | |||
| 12 | ** Project Links | ||
| 13 | |||
| 14 | - [[https://github.com/zerolabsco/skunky-art][Source]] | ||
| 15 | - [[https://github.com/zerolabsco/skunky-art/blob/master/INSTANCES.md][Instances]] | ||
| 16 | - [[https://github.com/zerolabsco/skunky-art/issues][Issues]] | ||
| 17 | |||
| 18 | ** Why Fork? | ||
| 19 | |||
| 20 | I didn't fork this project just for fun. At the time I found it, the upstream | ||
| 21 | repository hadn't been updated in over a year, carried a number of unresolved | ||
| 22 | bugs, and every instance on its public list was a dead link. Rather than let a | ||
| 23 | genuinely useful privacy frontend rot, I decided to pick it up and keep it | ||
| 24 | maintained. | ||
| 25 | |||
| 26 | ** What's Changed So Far | ||
| 27 | |||
| 28 | The fork is already a handful of releases ahead of upstream. Highlights so far: | ||
| 29 | |||
| 30 | - *Security & hardening*: fixed a forged-subdomain bypass in the media proxy, | ||
| 31 | hardened the HTTP transport, server timeouts, and panic paths, and tightened | ||
| 32 | the random-art retry loop. | ||
| 33 | - *Bug fixes*: restored media serving, corrected the cache max-size conversion, | ||
| 34 | fixed the build on macOS, and cleaned up various smaller issues. | ||
| 35 | - *Dependencies*: migrated to a maintained fork of the underlying DeviantArt API | ||
| 36 | library, [[https://github.com/zerolabsco/devianter][devianter]], and bumped long-stale dependencies (with Dependabot | ||
| 37 | keeping them current going forward). | ||
| 38 | - *Distribution*: prebuilt multi-arch Docker images (=linux/amd64= and =linux/arm64=) | ||
| 39 | are now published to GHCR on every release tag: | ||
| 40 | |||
| 41 | #+begin_src sh | ||
| 42 | docker pull ghcr.io/zerolabsco/skunky-art:latest | ||
| 43 | #+end_src | ||
| 44 | |||
| 45 | - *Tooling*: added CI, golangci-lint, and outbound request throttling for | ||
| 46 | DeviantArt. | ||
| 47 | |||
| 48 | * Run an Instance! | ||
| 49 | |||
| 50 | Since all of the previously listed instances are gone, the instance list is | ||
| 51 | starting fresh. If you'd like to host one, the [[https://github.com/zerolabsco/skunky-art][README]] covers setup — including a | ||
| 52 | Docker Compose example (plus an optional VPN egress variant) — and you can add | ||
| 53 | your instance to the list with a quick PR or issue. | ||
| 54 | |||
| 55 | As always, bug reports and contributions are welcome. | ||
content/blog/2026-07-25-app-store-small-wins.org added +56
| @@ -0,0 +1,56 @@ | |||
| 1 | #+date: [2026-07-25 Sat 12:00:00] | ||
| 2 | #+title: Small Wins on the App Store | ||
| 3 | #+description: My first tips and 5-star ratings on the iOS apps I built for fun and open-sourced. | ||
| 4 | #+slug: app-store-small-wins | ||
| 5 | #+filetags: :development:ios: | ||
| 6 | |||
| 7 | I wanted to briefly share a couple achievements I've experienced lately from | ||
| 8 | the apps I've published on the iOS app store. | ||
| 9 | |||
| 10 | If you're new to my blog: I'm not a full-time developer and don't do this for a | ||
| 11 | living. I develop sites, apps, etc. for fun as a hobby. I open-source everything | ||
| 12 | I create so others can share or fork as they please, and I've never even | ||
| 13 | included a tip option (until now - that iOS developer subscription is | ||
| 14 | expensive!). | ||
| 15 | |||
| 16 | * My Apps | ||
| 17 | |||
| 18 | However, I've launched a few apps on the Apple app store in the last year: | ||
| 19 | - [[https://apps.apple.com/us/app/domaindig/id6760368004][DomainDig]] ([[https://github.com/zerolabsco/domain-dig][Source]]) - A domain inspection toolkit for DNS, SSL, ports, etc. | ||
| 20 | - [[https://apps.apple.com/us/app/hutch-for-sourcehut/id6760742299][Hutch for Sourcehut]] ([[https://github.com/zerolabsco/hutch][Source]]) - A mobile client for SourceHut. | ||
| 21 | - [[https://apps.apple.com/us/app/daybyday-learn/id6760321939][DayByDay]] ([[https://github.com/zerolabsco/daybyday][Source]]) - A children's app to learn various topics through | ||
| 22 | voice-enabled learning cards. | ||
| 23 | |||
| 24 | I didn't expect anyone to really use these and I don't promote my apps anywhere. | ||
| 25 | |||
| 26 | I created DayByDay for my daughter, as a flashcard-style app that would be easy | ||
| 27 | for her to use and something we could do together in the small moments of the | ||
| 28 | day. | ||
| 29 | |||
| 30 | I created Hutch because I wanted a faster way to use SourceHut on the go, | ||
| 31 | especially since I use private mode in Safari and am constantly logged out of my | ||
| 32 | accounts. Hutch lets me read my mailing lists, manage tickets, and run builds | ||
| 33 | wherever I want. | ||
| 34 | |||
| 35 | Finally, I created DomainDig because I was lamenting the updates Njalla made to | ||
| 36 | their [[https://check.njal.la/dns/][DNS Checker]] - it used to be a plain text page and is now wrapped in | ||
| 37 | Njalla's branding and lacks some info I want when looking into a domain. | ||
| 38 | |||
| 39 | * My Achievements | ||
| 40 | |||
| 41 | I'm proud to announce two (baby-sized) achievements I didn't expect to happen: | ||
| 42 | |||
| 43 | 1. I received my first two tips through the Hutch app! For a few dollars, two | ||
| 44 | people have made my whole month. It's extremely satisfying to know someone | ||
| 45 | used the app and found it valuable enough to voluntarily send some money my | ||
| 46 | way. | ||
| 47 | 2. I received two 5-star ratings on the DomainDig app. Again, such a pleasure to | ||
| 48 | know people do appreciate the value that the app brings. | ||
| 49 | |||
| 50 | I'm not going to pretend two tips and two ratings will change anything. I'll | ||
| 51 | keep building these apps in the small moments the same way I always have, | ||
| 52 | because that's the part I actually enjoy. But it's a nice reminder that "nobody | ||
| 53 | will use this" isn't always true. Sometimes a stranger finds the thing you made | ||
| 54 | for yourself and gets something out of it too. | ||
| 55 | |||
| 56 | So, to the four of you: thank you. You made my month. | ||