Ahh Christmas season is upon us and my favourite decoration is up! Merry Khanmas!
For anyone making use of my RSS feeds, I made some changes to simplify the template while making some content formatting changes (e.g. inlining the feature image at the start of longer articles/reviews). I’ve also limited the main feed to 25 posts instead of 50, which seemed excessive. While I tested with an offline reader, I can’t guarantee things won’t break, so if they do, please let me know!
Shout out to @marksuth@mastodon.social for picking up the torch on IndiePass and continuing to improve it! The fact that I can post to my own bespoke blog from my phone as easily as I can post to Mastodon is a testament to the power of the Indieweb and protocols over platforms.
First attempt at a little stuffy. A bit rough in spots and my joining is horrible but in the end it turned out alright!
Sock Knitting 101
Someone recently asked me for pointers to good sock knitting lessons. Not a pattern. Lessons on how to really grok knitting socks. So I decided to try throwing something together, specifically for how I approach toe-up socks! Warning, this is definitely a first draft, so it’s very possible I’ll come back and update this post to fix things up…
So, way back in the before time, I decided to attempt to knit a pair of socks. Not one to do things the normal way, I opted for the toe-up lessons from Denise Powell on the now defunct socknitters.com. The thing that really attracted me to toe-up was the idea that I could just try socks on as I went rather than trying to nail the sizing up front, something that, as a not very confident knitter, I didn’t think I had a hope in heck of getting right.
Now, many years later, I can’t imagine knitting socks any other way. Toe-up just feels inherently intuitive to me (though, admittedly, it isn’t without its downsides, as most patterns are set up for cuff-down socks, which means you’ve gotta do extra work to reverse them).
In part, I think this is because of Powell’s approach to teaching sock knitting, which did away with teaching the reader to follow a rote pattern, but instead focused on the structural elements of socks and how you knit each component. This gave the reader a much more fundamental understanding of sock construction, thereby helping the knitter build that necessary intuition that allows for later improvisation.
Well, I decided to take a crack at writing a new set of lessons inspired by Denise’s work and my own experiences both knitting socks and teaching others to do the same. I hope this is useful to aspiring sock knitters out there!
Continue reading...I warned you. Sock knitting blog. A repeat of the last pair but in a different colourway.
Apologies to anyone who follows me, but apparently this is now a sock knitting blog…
Review: Calamity
Review of Calamity (The Reckoners #3.0) by Brandon Sanderson (9780385743600)★★★
Apparently my new pattern is to read a whole series, then post a review only after the last book is done. So here I am, at it again, this time posting my thoughts about Brandon Sanderson’s The Reckoners, and the final book, Calamity.
When Calamity lit up the sky, the Epics were born. David’s fate has been tied to their villainy ever since that historic night. Steelheart killed his father. Firefight stole his heart. And now Regalia has turned Prof, his closest ally, into a dangerous enemy.
David knew Prof’s secret, and kept it even when Prof struggled to control the effects of his Epic powers. But facing Obliteration in Babilar was too much. Once the Reckoners’ leader, Prof has now embraced his Epic destiny. He’s disappeared into those murky shadows of menace Epics are infamous for the world over, and everyone knows there’s no turning back. . . .
But everyone is wrong. Redemption is possible for Epics—Megan proved it. They’re not lost. Not completely. And David is just about crazy enough to face down the most powerful High Epic of all to get his friend back. Or die trying.
First, a quick disclosure: while the book metadata I’ve included with this post implies I read this book, that is a lie! In fact, my wife and I listened to the audiobooks together, knocking down the first two during our trip to see the 2023 annular eclipse, and then finishing the last one in our livingroom.
Additionally, as I mentioned in the post summary, I didn’t get around to writing down my thoughts about the first two books as we finished them, so like my review of The Nexus trilogy, this review is based on my overall thoughts after finishing the last book, Calamity.
And since these reviews are mainly for Future Brett as he tries to remember what he thought about these books, I’ll just say: sorry buddy. I’ll do my best, here, but I make no guarantees.
Continue reading...Review: Apex
Review of Apex (The Nexus Trilogy #3.0) by Ramez Naam (9780857664020)★★★
This is short review of the whole Nexus trilogy by Ramez Naam, though given I didn’t get around to writing notes or reviews for the first two books, these are my reflections after finishing Apex.
Global unrest spreads through the US, China, and beyond. Secrets and lies set off shockwaves of anger, rippling from mind to mind. Riot police battle neurally-linked protestors. Armies are mobilized. Political orders fall. Nexus-driven revolution is in here.
Against this backdrop, a new breed of post-human children are growing into their powers. And a once-dead scientist, driven mad by her torture, is closing in on her plans to seize planet's electronic systems, and re-forge everything in her image.
A new Apex species is here. The world will never be the same.
Unlike my wife, writing reviews for books isn’t something I automatically think of doing. But I always regret not doing it because, years later, they help remind my poor, addled brain what I thought about a book or series. My memory, it’s not great!
So, here I am at the end of The Nexus Trilogy, and I’m gonna try to write a (brief? I dunno, we’ll see!) review of Apex particularly but the whole series in general. We’ll see how this goes.
Continue reading...Another sock done (first of a pair)! Like my last pair, these socks have a slip stitch bottom and then I added a 3x1 rib on the top and leg for a little stretch and texture. Meanwhile I finished the second toe, and I actually tried to make the stripes match this time….
I’ve been wanting to try a reinforced slip stitch bottom for a pair of socks for a while now, and after some experimentation I think I’ve got it! The result is thick and squishy and I hope quite durable.
Framework owners running Debian testing: if disable-while-typing is not working, I think this is because the libinput quirks file contains a bug and is using an old key.
In /usr/share/libinput/50-framework.quirks change:
AttrEventCodeDisable=BTN_RIGHT
to
AttrEventCode=-BTN_RIGHT
I can’t say this is definitely the culprit, but DWT is now working for me.
So if Ozempic reduces overall impulse consumption (food, smoking, gambling, etc), which therefore reduces a person’s individual carbon emissions due to their buying less, wasting less food, etc, does that increase the ESG rating of Novo Nordisk? Should they earn carbon offsets? Hmm…
Fun fact: while this may look like a single sock, it is in fact 2.5 socks. See, I finished the toe and foot up to the gusset, changed my mind on the design, ripped it out, started again, finished it, didn’t like the fit, then unravelled it and did it again. But it turned out great! Stay persistent, y’all, and never be afraid to rip a piece apart and start over.
After viewing the eclipse we made our way down to Cedar City and then struck out to hike Spring Creek Canyon, which was rumoured to be a stunning hike of a slot canyon in the area. And boy do I concur! Easily one of the most beautiful hikes I’ve done over the years.
Yup, we went on a road trip to Utah and watched the annular eclipse. And it was incredible! Though the photos are just okay. At the last minute I decided to take some pics with my phone through my telescope eyepiece and the results were… just okay. I can’t help but wonder if the eyepiece needed a little polishing…
Three months into my career break and a couple of observations: 1) I thought I might eventually get bored. I absolutely have not. 2) Time flies. Fast. 3) I was concerned about becoming disconnected from people but in some ways the opposite is true as I’m so much more flexible that I can meet people where/when they are. 4) I am absolutely not ready to go back to work yet…
KeepassXC + SSH
I use KeepassXC to store my SSH keys, and with a bit of configuration I can hit one hotkey to add a key to my agent, and then another hotkey to open my preferred shell ssh’ing to the target. Here’s how I do it!
I have maybe a dozen machines I need to connect to on a regular basis and rather than configuring a bunch of sessions in something like Remmina I’ve found KeepassXC can do everything I need to both manage keys and make it easy to launch sessions attaching to those hosts.
Basic key management with KeepassXC is pretty straight forward:
- Create an entry in KeepassXC for the host.
- Fire up ssh-keygen and generate a new private key for the target host using a randomly generated, secure password1.
- Add the new key as a file attachment to the Keepass entry.
- Set the ssh key for the Keepass entry to the attached file.
- Set the password for the entry to the password for the key.
- Set the URL for the entry to
ssh://[user]@[host][:optional port]
.
KeepassXC comes with built in ssh agent integration, so you can select an entry and press C-h to add the key to the agent. At this point you could just fire up a terminal and ssh to the host manually.
However, KeepassXC also lets you press C-S-u to open the configured URL for the entry using
xdg-open
. The trouble is, by default, “ssh://” URLs don’t do anything. However, this is solvable with just a little bit of work.Now, in my case, this is where jaro comes in.
Jaro is a highly flexible resource opener. You call it with a resource (e.g. a file name, URL, etc), and it’ll look into its list of configured associations and take some action.
In my case I set up a couple of associations as follows:
(assoc #:pattern "^ssh://((.*@)?(.*?)):([0-9]+)$" #:program "/path/to/kitty -o term=\"xterm-256color\" -o shell=\"/usr/bin/ssh -p %4 %1\"") (assoc #:pattern "^ssh://((.*@)?(.*?))$" #:program "/path/to/kitty -o term=\"xterm-256color\" -o shell=\"/usr/bin/ssh %1\"")
The first pattern matches ssh URLs that include a port, and the second matches URLs without one. The rules then fire up kitty with ssh as the shell connecting to the desired host and port.
Next, we create a
jaro.desktop
file:[Desktop Entry] Name=jaro GenericName=URL opener Terminal=false Exec=jaro %U Type=Application Categories=Utility;
And drop it into
.local/share/applications
.Finally, we add the following line to
.config/mimeapps.list
:x-scheme-handler/ssh=jaro.desktop
Now, upon pressing C-S-u, KeepassXC will use
xdg-open
to open the configuredssh://
URL, which, based onmimeapps.list
launches jaro, which then consults the configured associations and fires up ssh in my preferred terminal.I know this all sounds like a bit much, but I cannot tell you how incredibly convenient this is! Connecting to one of the many machines I admin is now a simple matter of opening KeepassXC, searching for the host name, selecting it and pressing C-h, C-S-u. Super handy!
-
And don’t forget to use a good, strong cipher. I’ve personally moved all my hosts to ed25519 ECC keys. ↩