RSSAmplifier

Blog

Winny's Blog

Recent content on Winny's Blog

blog.winny.techRSS feed ↗68 posts

Latest posts

Comfy text editing with line spacing™

This is an Emacs carnival post for 2026.
Sometimes it’s the little things that make a substantial cumulative impact on computing satisfaction.
I’ve set up both my terminal emulator and graphical Emacs with added line spacing. Absolute bliss. It’s like a quiet, undisturbed pond at dusk. Less busy, less rough.
Seeing is believing. On the left is with (setq-default…

Finish: 72 hours no LLM/AI

ChatGPT is full of shit and that’s okay.
I wish I had something profound to say, but it wasn’t a big deal. It did take nine drafts, a hardware failure with multiple SSD swaps, and five thousand words to work out how to say “🤷 no biggie”.
When I began using ChatGPT I recognized it could become unavailable like any other internet service does. Outages happen,…

Start: 72 hours no LLM/AI

I am curious how LLM/AI has affected my cognition and behaviors. Many animals learn to adapt pretty quickly; humans are no different. I’m pretty sure there’s going to be some adaptations found in my own behavior. Here’s the pocket notebook for my experiment.
Figure 1: AI Free 72 pocket notebook
In this notebook I’ll write down every question I had for AI, every urge…

There is no Clean Room

There was a significant mixup in communicating the boundaries for OCC 2026. I believed there were no rules, because it is what the event text said. It turns out there was an unwritten norm of no AI or LLM usage.
Bummer!
Moving on, I’ll be doing my own thing and not participating in OCC.
Technology is not a purist activity to me. The lines blur. The way we interact with technology…

OCC 2026 - Wee Pivot and distraction

I cloned my Debian 13 libvirt template VM and named the clone “occ”. This’ll be where I run weird OBD-II code without careful analysis.
You see, I decided to pivot away from SocketCAN/raw CAN and toward ELM327-based OBD-II diagnostics. Seems a bit easier to accomplish within the timebox. Besides, this way I can run ELM327-emulator in the VM, and run the DOS QEMU guest nested…

OCC 2026 Plan: CAN Bus and DOS?

The Old Computer Challenge started last Sunday. Have been real busy so all I’ve done so far is brainstorming ideas and research. If I had infinite time, I’d consider OpenVMS + CAN bus silliness. CAN bus, a.k.a. controller area network, is used to interconnect bits and pieces of car electronics. (Imagine plugging OpenVMS into your car for diagnostics!) Buuuut, OpenVMS has been hamstrung…

Racket Yet Vexes Me

By a guest automaton. Written by ChatGPT in a mock-medieval style.
FYI: Every post on blog.winny.tech which has AI content carries a madewithai tag.
Read on: Racket Yet Vexes Me Long ago, Winston wrote that Racket frustrated him. Years passed. The code slept. The ache endured.
A small pull request came to `toml-racket`: inspect, test, merge.
Yet Racket took toll.
The maintainer…

Am I going to keep blogging?

GitLab emailed me about a failed Let’s Encrypt renewal. Had to press the Retry button to encourage GitLab’s LE stack to do its thing. This has happened a couple times but not a big deal. It reminded me to check up on my winny.tech GitLab namespace and see what my last post was all back on October 12, 2025. 8½ months ago.
I’ve been focused on keeping the proverbial boat…

Some usecases for GNU Units

As a studious GNU Units user, I have a small body of notes documenting various ways to perform calculations with unit conversions. Here are a few select ways that I found use of GNU units.
But first, a word about using GNU Units GNU Units is a powerful, free calculator that performs unit conversions for you. Please check out the examples on GNU Units’ homepage to see what it is capable…

Python 3.14 - Changes to look for

Python 3.14 was released today and I caught myself reading the Python 3.14 release notes so figured I’d type up what changes caught my eye.
Installing Python There are probably better ways to do this. I opted to manually build and install Python 3.14:
./configure --prefix=$HOME/python3.14 && make -j && make install export PATH='$HOME/python3.14/bin:$PATH' which python3 # Should print…

Debian Package Stats using Sqlite

I am curious regarding how many packages existed on my system. Then I got to wondering how many are Google projects? How many are Apache projects? Are all packages fully installed?
Get a list of packages into sqlite First, one needs to create the sqlite3 file. The following bash script generates a .csv file with a header (that’s the echo command on the third line) and a dpkg-query…

Obscure Emacs Package: ssh-config-mode

There’s this cool blog-o-sphere Emacs party going on, with September’s theme of everything about obscure packages. And woops, I’m a day late to the party, so here goes nothing. The idea is to post a weird package that you use but is sort of obscure!
M-x winny/visit-configuration RET and I’ve selected uhhh…
ssh-config-mode ssh-config-mode Syntax highlighting…

Update on my Racket exit

Figure 1: Blasting off from planet Racket to other planets. Thanks ChatGPT.
It’s been almost two years since I took a public step away from the Racket diaspora. I’m writing this post to air out how my Racket projects have gone since then. I believe, as of now, I have zero Racket codebases to maintain — hooray!
I want to show how to handle old codebases. Let’s…

10PRINT inspired "Snowcrash" in Emacs

The sky above the port was the color of television, turned to a dead channel.
— Opening paragraph from William Gibson’s Neuromancer.
So I thought to myself, why not write a screensaver for Emacs? Enter snowcrash.el. It’s not on MELPA or anything, but it does live on GitHub within my Emacs configuration repository.
M-x snowcrash RET looks like this:
It’s fun…

Emacs: Edit as root using sudo-edit

Figure 1: sudo plus emacs
Emacs offers TRAMP as a way to edit files over ssh or as a different user. Combine with sudo-edit for easy superuser edits. VSCode has a feature reminiscent of TRAMP called Remote Development using SSH.
At the time, I didn’t know of M-x sudo-edit so I wrote my own implementation. It sucked, didn’t work on chained TRAMP connections (e.g. ssh then edit…

My 2024 in Review

Figure 1: Biked & camped 100 miles (160 km) from Milwaukee to Manitowoc in 36 hours
It’s been a tumultuous year. It took a multitude of drafts to complete this short piece. I felt demoralized when authoring this post. Then I reviewed my 2023 in review post and it put my frustration in perspective: Life is pain and joy. It’s an undulation of anguish one day, blissful peace the next.

Browser Bits

All the browser userscripts that I’ve been using were scattered across a multitude of pastebin links and git repositories. It became a bit of effort to track them down to re-install in Greasemonkey (Firefox) or Tampermonkey (Chrome) with the time expended searching exceeding the time saved using my extensions. No beuno.
Enter Browser Bits: a curation of userscripts. (See…

Advent of Code 2024

Every December since 2015, Advent of Code publishes a Christmas Advent calendar loaded to the brim with challenging programming quibbles and trials. Advent of code can be solved in any programming environment, from Microsoft Excel to Rust, if you can write it, you can use it. In fact, my 2020 Advent of Code “challenge” (or “theme”) was a different language every day. Nope,…

Shellcheck and Emacs

Previously I introduced the reader to ShellCheck. In this post I detail how I use Flycheck in Emacs and offer an Emacs function to automatically suppress Shellcheck errors at the current line.
I’m an avid Emacs user and it follows that I’ve set up editor customization to exude the most from ShellCheck. If you, dear reader, are not an Emacs user, I cannot help you! Please, for the…

I hope you use ShellCheck

In this post I hope to convince the reader on the merits of ShellCheck. Stay tuned for more posts about using ShellCheck.
On Shellscripting Shell scripting is a of passion of mine. Preferably Bash (here’s a guide). (POSIX sh a.k.a. Bourne shell works too, albeit with more effort thanks to diminished versatility when compared to Bash.) The shell scripting language family has many warts as…

Update the NAS to 24.05

Turns out my NAS is vulnerable to the SSH vulnerability which allows anyone to log into your host with enough time, guaranteed. Dubbed regreSSHion (CVE-2024-6387), it affects a host of different OpenSSH version ranges. If one has OpenSSH 9.8p1 or later, one is totally fine.
Unfortunately, the NAS is still on NixOS 23.11. The NAS remains on NixOS, but all my other devices have been migrated off…

CPUID instruction and table

Here’s a few notes on CPUID and /proc/cpuinfo. I made a table for quick reference.
What is CPUID? On x86 and amd64 CPUs, there is a large swathe of differences in features available to the software. Some CPUs ship with AES encryption support, others ship with virtualization support, almost all ship with a collection of SIMD (single instruction multiple data) instructions. The name of the…

paste.winny.tech (Sillypaste) is dead

What’s worse than a fire on a boat? A fire aboard an air balloon. Rip my fly.io app.
Affected Apps:
sillypaste-db A server hosting some of your apps has suffered irreparable hardware damage. Please migrate your Fly Machines to other hosts and restore volumes from any backups.
All good things come to an end, including this pastebin project. If I find myself using it again, I may…

Test your backups

Figure 1: John from USA - CC-BY-2.0
Watch out, things break, stuff catches fire. Let’s talk about backups.
Last post, I stated that I’m going to switch focus away from NixOS commentary. This is still the plan. Today, I am still committed to NixOS thanks to technical debt created - migrations aren’t for free. Until then, enjoy my NixOS posting :).
Last fall, I wanted…

Another NixOS 23.11 upgrade gotcha

Figure 1: The laptop that was having a bad day with NixOS 23.11
More upgrade gotchas. Shucks. If everything goes well, this will be my last NixOS post. Read on to understand my frustration just a little bit more.
My main laptop is a Lenovo Ideapad Flex 5 — simple and cheap device. The keyboard stopped working in the early boot after upgrading to 23.11. The impact: I need to a USB…

Multiple arguments in shebang

Figure 1: Jamian · CC BY 3.0 Deed (link)
A frequent quip of the unix-beard is shebangs cannot contain multiple command-line arguments. Let’s break it down and see where this assumption no longer holds true.
What is a Shebang? The shebang is the line at the beginning scripts such as Python and Shell scripts that instructs the OS how to execute the script. Looks something like…

Upgrading my Workstation to NixOS 23.11

Figure 1: Official image for 23.11
Upgrading my workstation to 23.11 wasn’t as simple as I was hoping. Ran into a few issues.
Performing the upgrade I’m using a flake, so all I should have to run is:
# First edit flake.nix so it points to release-23.11. nix flake update nixos-rebuild boot --flake .# (Then systemctl reboot into the new generation that includes a new…

My 2023 in review

Figure 1: Dietmar Rabich CC BY-SA 4.0 (link)
Things that I achieved this year.
Exercise. I was going 3 times a week to the gym. Now I’m working out at home about once a week. A no-processed-foods diet. Occasional respite from some health issues. I’m not dieing so that’s pretty cool. Remained self-employed. Even after many project transitions including firing a toxic…

Sway review

Hello, my name is Winny and welcome to my honest review of Sway, a i3wm compatible Wayland compositor. Its primary appeal is a compositor experience that is easy to install, and familiar to i3 users. For my usage, it is one of the few compositors flexible enough to deploy on older hardware.
Startup Sway does require a bit of effort and time to get it in a usable state from the stock…

Nix / NixOS misconceptions

I’ve been using Nix for a year now. It’s been going fairly well, by the way. Here are some misconceptions I’ve had to overcome to become a more productive Nixer.
False: You can’t deploy Nix software to Docker or Kubernetes False. If you can push to a docker registry such as docker.io, you can deploy to Docker or Kubernetes using Nix.
You can use…

Racket frustrates me

2024-07-06 I’ve archived this post Looking for the post Racket frustrates me? You can read the original post on The Internet Archive’s Wayback Machine.
Why archive this post? It’s been about a year since I published this post and since realized something: I don’t have any skin in the game anymore. My workflow is now 100% Racket free. It no longer matters to me if Racket…

My first game jam

Source lives here. Play it here.
In a joint effort, Aliasing and myself have created a novel top-down action rogue-lite for the 2023 Spring Lisp Game Jam. Aliasing is an experienced game dev so in a way, I was along for the ride. Still, I managed to contribute some game mechanics, features, unit testing, CI/CD that deploys to super-rogue.workinprogress.top on every commit. This was a fun…

Sillypaste migrated to fly.io

I’ve been operating Sillypaste (source code) - a simple Django pastebin created for dogfooding. In this post I hope to capture some of the painpoints of working with Django, Python, Heroku, and the migration to fly.io.
Ever since Heroku sold its soul to SalesForce its been on the decline. Customer service is worse than ever, giving wonderful canned responses to most questions. It used to…

Pre-commit in GitHub Actions & GitLab CI

Figure 1: Pre-commit running within GitLab CI
I’ve been using pre-commit as my tool to set up hooks to run when I commit to Git. It helps me catch gotchas such as fixing line endings, fixing whitespace, refusing to commit on linter errors, and so on. Often, I’ve noticed with working on teams is it’s fairly easy for a new contributor to forget to set up pre-commit on their…

Can 4GiB meet your needs in 2023?

Figure 1: your computer on low memory
TL;DR: yes. You can throw more swap at most processes and it’ll eventually finish… Eventually.
Last year I warranty-ed a Dell XPS 13 with 32 GiB of RAM, all specced out. Sidenote: I wouldn’t recommend the Dell XPS 13, at least in 4K. The laptop gets anywhere from 1-3 hours of real world usage and gets hot as most Macbooks. The Dell…

New computer checklist

Here’s a small outline of how I validate used computers as “usable” and “in working condition”. My hope is these steps help computer users spot “lemons” - machines that shouldn’t be depended on because they don’t work all the time.
Basics Before stress testing or examining SMART data, consider the following checklist:
Turn it on and…

Large, Static Website hosting with AWS and Let's Encrypt managed with Terraform

I had a need to host image galleries online. I researched the cost structures of a few providers, then settled on AWS S3 storage and AWS Cloudfront CDN. The twist is I have all the cloud configuration managed in Terraform, so it’s easy to recreate the same sort of setup for various projects.
Hosting provider cost structure After reviewing the bandwidth limits for a static website with a…

#lang tinybasic

For the Lang Party Summer 2022, I wrote a BASIC interpreter. It took a bit of mental gymnastics and learning on my part. In this post I hope to share some of the experience in implementing this interpreter. For the curious, the code lives on GitHub.
Figure 1: A TinyBASIC session in Cool Retro Term
Try it out! Want to try it out? Run raco pkg install --auto tinybasic to install it.

NixOS Migration

Recently I have begun migrating my workstation and laptop from Gentoo to NixOS. There are a great deal of tradeoffs between the two operating systems. Before going into the details, consider where I’m coming from and why I moved away from Gentoo below.
Why was I running Gentoo on workstations?? This is my heuristic for a good operating system:
The Distro must provide facility to…

Racket on Digital Ocean App Platform

Digital Ocean’s App Platform works fairly well with Racket. To activate this service, create a git repository with a Dockerfile in it. Your app will be ran as a container built from the Dockerfile and hosted by Digital Ocean. It appears this platform handles load balancing and scaling. These are good value prospects when considering hosting on this platform.
If you wish to use a custom…

Auto-rip Music CDs

Awhile back I found a stack of audio CDs I wished to digitize. It’s a bit of work to do the following steps quickly and while doing other more cerebral work:
Open the disc tray Insert the disc Wait a few seconds for the disc to be detected by the OS Kick off abcde to rip the CD. Repeat ad infinitum. The solution is to streamline the workflow:
Open the disc tray (first time only)…

Set up a Private GitLab Runner on Alpine Linux

GitLab has recently locked down the accessibility to free CI/CD minutes. You now need to provide a Credit Card to prove you’re a human. Apparently cryptofriends were using the CI/CD minutes to mine for cryptocurrencies. Huh… if I had lesser ethics I’d probably do the same thing! Kind of brilliant to be honest. Anyway, the end result is if you want users to contribute to your…

Migrating from Emacs 26 to Emacs 27 on Gentoo

Figure 1: Behold! Emacs 27!
When upgrading to Emacs 27 there were quite a few weird things I had to address.
My Emacs is installed via Gentoo Portage. The USE flags I have set (to enable/disable features at build time) essentially configure my Emacs to be like Lucid Emacs builds. Here’s the USE flags:
Xaw3d acl alsa athena cairo dbus dynamic-loading gif gmp gui imagemagick…

Using an old Supermicro IPMI to configure broken networking

The goal of this post is to demonstrate the usefulness of IPMI even in hobbyist or personal use. Anything that means less touching physical machines to power cycle them, or fix network misconfigurations, can save a lot of time.
I had broken my NAS’s networking by adding a bridge and attaching the existing ethernet device to it. I forgot to configure the ethernet device to not try to…

No need to reinstall your OS

A fantastic “feature” of Linux, BSD, and even Windows 10 is you don’t really need to reinstall to migrate an installation to a new computer. A common misunderstanding is if you get a new PC, you must use the new OS install, or install a new copy of your OS. If you’re intending on replacing an existing PC (and disposing of or re-purposing the old one), there is probably no…

Freenode is dead, long live Freenode!

Note: this is my OWN opinion and not representative of any community entity. This is a summary of what I’ve experienced since the Freenode takeover.
(The new Freenode is Libera.chat.)
Drama? I prefer to not take sides in online drama, but I feel like I have to err on the side of not-nuking-and-paving IRC channels that have existed for decades.
Here’s the summary of…

Moving blog to ox-hugo

It’s refresh time! Since January 2019 I’ve been blogging on this website and it’s been a rewarding experience. I originally researched many blogging solutions that involved using Emacs Org mode. I settled with org-static-blog and it worked pretty well for the most part. It gave just enough structure and mechanism to enable me to work on authoring content without dealing with the…

Snarf YouTube videos off gather.town

Gather.town is a very cool virtual conference platform. You pick an avatar, can voice chat, video chat, and watch presentations all while standing around in a virtual 2D space. A conference which I attended recently had all the talks pre-recorded and played back at live-time. This worked very well because the presenters would take their time and provide the best possible content. Within the…

Some tips when copying, recovering disks

I seem to have a lot of suggestions to share with friends about managing disks on a linux livecd. Here are some of the tips I’d like to share. See the table of contents above for a breakdown of the topics discussed.
Some disk related topics are out of scope for this article, as they deserve their own blog post. The topics not covered include partitioning, setting up a boot loader, using…

You want sudo -i or su -

You want to use sudo -i or su - to log into root. sudo su anything is superfluous, because you probably should be using sudo -i or sudo -s, which are roughly equivalent, depending if you want to simulate a login (su - or sudo -i) or not (su or sudo -s).1
When to use su -? You want to log into root using the root password. Typically you must be in the wheel group (check your PAM configuration).

Winny's Blog · RSS Amplifier