Apologies to anyone who follows me, but apparently this is now a sock knitting blog…
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. ↩
Victory is mine! These socks are my first completed knitting project since the Before Time, and you know what? I still got it.
Finally found time to build an expanded workbench in my garage (for the record, the top portion of the chop saw table on the right is an older project, it just used to sit on a pair of saw horses)! Now I just gotta get back to finishing that last sock…
So I went to the #Edmonton Expo this weekend and discovered Tee Turtle was there and selling this shirt. As you can imagine, it spoke to me…
So you don't want to be a manager
Early in my career the idea of moving from an IC role to management sounded crazy. But, one thing led to another and I found myself on the management path despite my best efforts to avoid it, and it turns out it can be pretty awesome!
Let’s face it, management is not seen by many as a sexy profession. Whether you’re reading Dilbert or watching Office Space or enjoying the first act of The Matrix, managers are depicted as universally incompetent, do-nothing overhead that only get in the way of the “real work”. And even if you recognize that this is just a stereotype and that strong management brings real value to the table, anyone paying attention will notice all of the crap they have to deal with, including hiring and firing, handling performance issues, and ultimately being accountable for their team’s effectiveness.
Who would want to be that person?
During the first ten-plus years of my career, certainly not me! Just let me code, maybe lead something with a few other sharp team members. Who would want to do anything else?
But then I was presented with an offer I couldn’t refuse: the opportunity to take the lead in building a new Product Management organization. And, of course, that meant not just managing the product but building a team and managing people.
And I was terrified.
Well, it turns out, for someone like me–and let me be very clear, here, this is not a career path for everyone–it couldn’t have been a better move.
Continue reading...Man, you can tell I’m rusty: It took me three tries and a lot of tinking before I remembered how to knit up a gusset properly…
Well, after a lengthy knitting hiatus, with the sabbatical upon me it’s time to get back to it! I’m hoping to get not one but two pairs of socks done for September, the first started recently the second that’s been sitting on needles for… two years…?
I have an old first gen Kindle PW that I jailbroke and had to fall back to after I dropped my more recent model (oops!)
On a lark I decided to put KOReader on the thing, and darn it, I wish I’d done it sooner. Setting aside all the fancy config settings, wireless Calibre connectivity is just crazy convenient. Should’ve done it sooner!
It goes to show how open devices can be better and have greater longevity. But, you know. Amazon.
Finally got around to playing Never Alone (thanks Steam Deck!) and while it’s not flawless (the platforming and controls are just a bit clumsy for my taste), its flaws are more than made up for by the story, the beauty of the artwork, and the cultural insights. It’s a remarkable example of games as art and absolutely worth playing. I’ll definitely be picking up the sequel when it comes along!
I’ve known about the Wilhelm Scream for years, but here a sound engineering describes the process of recovering sound effects from old tapes, including the full recording session of the famous Scream!
Re-reading “Product Leadership” by Banfield, Eriksson, and Walkingshaw, and I can’t figure out if I just unknowingly internalized a ton from my first reading years ago, or if I ended up learning all the same lessons, but after ten years in the role, it’s definitely been an object lesson in confirmation bias…
Another good piece that echoes something you regularly see: blaming cyclist and pedestrian deaths on the victims instead of cars and broken infrastructure. Protected bike lanes, slower traffic speeds, smaller roads. It’s not rocket science.
I haven’t played with linear algebra in a long time, and I won’t pretend to have followed this completely, but this post was very fun! Loved the writing style.
So, to ensure we didn’t bankrupt ourselves during my sabbatical, I realized I needed to get a better handle on our budget and stood up Firefly III. I gotta say, so far, not bad! I particularly love that it has an API with what looks like complete functionality coverage. Just a shame open banking basically doesn’t exist… getting complete transaction data has meant writing Tampermonkey scripts and pulling down data manually. Hard to believe it’s 2023 and that’s still a problem…
Love this piece about AI. It’s a nice, short little primer for the uninitiated.
Tour Alberta for Cancer 2023
Well, the 2023 tour is finally over, and after a couple of days of recovery, a post-ride post!
Well, after a challenging two days in some incredibly intense summer heat, we did it! Team INVIDI completed the 2023 Tour Alberta for Cancer cycling event. And I’m proud to say our team managed to raise another $8,915 dollars for the Alberta Cancer society, all thanks to our many (many!) generous donors who helped the overall campaign reach a whopping $5,560,000 raised, blowing the doors off the $5,000,000 goal that was set for this year.
Continue reading...