personal blog
git clone git://
Log | Files | Refs | README

commit 8331795401b1e5ee6b2caf35ba3922b23841335d
parent eccd36177e862703877efab0a7f7358da6ad60f7
Author: pyratebeard <>
Date:   Wed, 16 Nov 2022 23:38:23 +0000

Merge branch 'main' into as_a_matter_of_course

MMakefile | 3++-
Aentry/ | 47+++++++++++++++++++++++++++++++++++++++++++++++
Aentry/ | 28++++++++++++++++++++++++++++
Aentry/ | 139+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aentry/ | 11+++++++++++
Aentry/ | 16++++++++++++++++
Aentry/ | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dentry/ | 1-
Aimg/trigon-preview.png | 0
Mscripts/draft | 19+++++++++++++++----
Mscripts/publish | 30+++++++++++++++++++++++-------
Mstyle.css | 9+++++++--
12 files changed, 360 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,4 +1,5 @@ #TITLE := $(shell git branch --show-current) +RND := "" # # If the first argument is "draft" ifeq (draft,$(firstword $(MAKECMDGOALS))) @@ -34,7 +35,7 @@ prog: # ... .PHONY: draft preview publish draft : prog - scripts/draft $(DRAFT_ARGS) + scripts/draft $(DRAFT_ARGS) $(RND) preview : prog scripts/preview $(VIEW_ARGS) diff --git a/entry/ b/entry/ @@ -0,0 +1,47 @@ +## +The Munsters([TMDB]( is a prequel movie to the classic 60's sitcom, written and directed by Rob Zombie. + +#### synopsis +> Lily is a typical 150-year-old lovelorn vampire who's looking for the man of her nightmares -- until she lays her eyes on Herman, a 7-foot-tall green experiment with a heart of gold. It's love at first shock as these two ghouls fall fangs over feet for each other in a Transylvanian romance. Unfortunately, it's not all smooth sailing in the cemetery as Lily's father has other plans for his beloved daughter's future, and they don't involve her new bumbling beau. + +--- + +From the moment this movie was announced the fans were split. Not without reason, The Munsters is a much loved sitcom and not everybody is a fan of Rob Zombie, known for some pretty disturbing horror movies. + +I, however, am a fan of RZ. Both his music and his movies have been much loved for a couple of decades ever since I first heard _Dragula_ (yup, like the drag racer in the episode "Hot Rod Herman"). + +After the announcement I was excited, albeit with doubts. If anybody could do the show justice it has to be life long fan RZ. + +Seeing the cast announcements and the stills from filming got me quite enthused, so much effort went into costume and set design (and it was well worth it). + +Finally the movie was released. It took a couple of weeks before I could watch it because being an adult and a parent really eats into my media consuming time. + +When I did get time to watch it I enjoyed it, more than I thought but less than I hoped. + +From the very start the colour palette is vivid, for want of a better word. When I saw the trailer and images I was a bit put off but seeing the whole movie I actually liked it. RZ made it work really well with the story and about half way through I remember thinking how much I enjoyed the colour of the whole thing. + +I have since found out that the studio wouldn't let him do it in black & white so he went the complete opposite and saturated it with colour. + +The opening introduces us to Richard Brake's Dr Wolfgang and his assistant Floop played by Jorge Garcia. An okay start, but I felt the jokes landed a bit soft. The chemistry between these two in later scenes is very enjoyable though. + +The Count (not Grandpa, he has no Grandson yet) is the first of the main three we meet. I have to say, Daniel Roebuck did an excellent job. Probably my favourite of the three main cast. Not trying to copy Al Lewis, nevertheless bringing the same personality and humour to the character. + +Then we meet Igor, who is not a bat. Played by Sylvester McCoy and is as great as you would expect throughout the movie. + +Now Lily. Lily, Lily. I was dubious about Sherri Moon Zombie playing this character. I think she is good in RZ's other movies, but she was always playing original characters. With Lily, Yvonne De Carlo had set a pretty high bar. + +At first I was a bit meh about the character. My expectations were met. Over the course of the movie, however, I actually felt she did a decent job. After the first 20 minutes or so it felt like Sherri had found what she was going for and settled into the role which made it really easy to enjoy. + +Lily's first scene is on a date with Orlock, also played by Brake. An awesome character, looks as evil and nasty as possible yet is really goofy. Brake is an excellent actor. + +We are also introduced to Lester, Lily's scheming older brother, played by Tomas Boykin. I didn't care for the character in his first scene although his subsequent scenes were pretty good. + +A lot of well played, colourful characters are met throughout the movie including none other than Elvira herself, Cassandra Peterson, playing real estate agent Barbara Carr. + +The big one is of course Herman. I thought Jeff Daniel Phillips did a decent job with the mannerisms and that goofy laugh. The makeup was excellent as well. The only part that threw me was his voice. It sounded like Lonny Ross' character from 30 Rock, and as much as I tried that comparison could not be unheard. It did put me off a bit but his constant puns made up for it, some absolute gems in there. + +Despite the fact I didn't like Herman's voice, I want to watch it again to see if I can enjoy it more now that I will be expecting it. + +As with all of RZ's movies the soundtrack is solid. No surprise he has a good ear for music really. + +Overall it is a fun, family friendly, good movie. You certainly feel the passion from RZ, I think he did a good job at doing the characters justice while still bringing something original. diff --git a/entry/ b/entry/ @@ -0,0 +1,28 @@ +Recently I decided to try and reduce the amount of "doom scrolling" I was doing on my phone. + +While my desktop PC is still my main computing device it is inevitable that the computer I carry around in my pocket will get a high degree of use. The problem being that "use" was not particularly productive a lot of the time. + +Like most phone users it is all about apps. The main culprits in my case were [Boost]({target="_blank" rel="noreferrer"} for Reddit, [Twidere]({target="_blank" rel="noreferrer"} for Twitter, and [Fedilab]({target="_blank" rel="noreferrer"} for Mastodon. + +My Twitter usage had dropped dramatically since I started to focus more on Mastodon and the Fediverse. Getting rid of Twidere became even easier with [Mastodon Twitter Crossposter]({target="_blank" rel="noreferrer"}, which tweets my toots for me. + +Reddit had been my main weakness. My Reddit usage is mostly lurking in my favourite subs and checking the popular posts. The time I spent scrolling down and down kept increasing, I felt like there would be a good meme or post just a bit further down so I kept going. + +My most browsed subs were already in my RSS feed (more on this later) so I decided to remove Boost and rely on the website if I needed to spend time on Reddit. On my desktop this isn't too bad (long live!). On mobile the old view is unusable so the new style it is (although I wish they would remove the "This page looks better in the app" banner). + +Within days I found my time on Reddit dropped to practically nothing except for what I have in my RSS feed, which I only check on my desktop. + +Fedilab is staying for now, I find I am less likely to doom scroll on Mastodon. I check my timeline while only occasionally looking at the federated timeline. This may change as I spend more time on it, for now though I am happy with the amount of usage. + +## really simple syndication +RSS is great. In years gone the RSS icon seemed to be everywhere, these days it doesn't appear to be as popular. Thankfully it is still around. + +About two years ago I discovered that you can add ".rss" to any subreddit URL to get an RSS feed. For example, + +The same is true for Mastodon profiles, get my toots in your feed with + +Twitter is not as RSS friendly. As far as I know there is no Twitter native way to get feeds from profiles. Instead I use and add "/rss" to the URL, for example + +This has been part of my RSS setup for a long time, and it is enough for me to keep updated without falling into the endless darkness of the scroll. + +By removing these social apps from my phone and using RSS or the websites I have found myself looking at my phone less and less. When I do spend time on my phone it is for something more productive, like writing this blog post. I am sure there is some irony there. diff --git a/entry/ b/entry/ @@ -0,0 +1,139 @@ +## i'll be back(up) for breakfast + +Earlier this year I wrote about my [backup setup](20220414-speak_of_the_dedup.html) and recently I had to put it to the test. + +My PC is a tower that I have on a small stand next to my desk. In the past I had kept the case on my desk but it is rather large and dominates the space a bit too much. The other day my 1 year old toddled into the study and started pushing the power button on my PC, power cycling the machine a few times in quick succession. This was unknown to me until the next morning when I booted up my PC and noticed it was very sluggish and it crashed trying to open my browser. After it happened again I started digging through the logs and noticed some filesystem corruption. + +As I described in my backup setup post, I have a 3 disk RAID 5 array as my $HOME. Because of the size I only nightly backup important documents, etc. A full backup is done periodically to an external drive I keep in my bug out bag. Unfortunately I had not done a full back in a while, but I knew my nightly backups were good so nothing too important was lost. + +I had used [xfs]({target="_blank" rel="noreferrer"} on my $HOME, so I unmounted the device and started an `xfs_repair`. The repair tool very quickly got to Phase 3, showing the output +``` +Phase 3 - for each AG... + - scan and clear agi unlinked lists + - 09:50:01: scanning agi unlinked lists - 0 of 32 allocation groups done +``` + +The last line was repeated every 15 minutes, for over 36 hours, never changing from "0 allocation groups done". I don't think it was doing anything. Eventually I stopped it and ran the repair in check mode. This caused a segmentation fault at Phase 3. I tried again but got the same segfault. + +After a few days of digging around and trying different things I decided the effort wasn't worth it. Reluctantly I accepted my losses and started the recovery. + +Once the RAID array was reformatted I began the data copy from my external drive. This put me back to when it was last backed up. Then I could `rclone` my nightly backups from the last time it ran (before the corruption) and bring that data up to date. + +This got me to a relatively good position. Okay I had lost some random downloads and a little bit of code that hadn't been pushed to my git server, but nothing serious. It is a little disappointing though, my backup setup is not good enough. + +I would like to give [zfs]({target="_blank" rel="noreferrer"} a try, or even attempt a mini [ceph]({target="_blank" rel="noreferrer"} setup, but that would need some planning and some equipment purchases. I need something in the interim. + +An external drive was purchased, which now sits permanently plugged into my PC. Instead of using `dedup` again I opted for an alternative tool, deciding on [BorgBackup]({target="_blank" rel="noreferrer"}. + +After installing `borg` I initialised a new repo and kicked off a full backup +``` + ──── ─ borg init -e repokey /media/backup/borg-kinakuta + ──── ─ borg create -v --stats /media/backup/borg-kinakuta::$(date +%Y%m%d) $HOME +``` + +The first time this ran it froze my system after about an hour and a half. + +On the second attempt it did the same thing. This was frustrating, and looking at some help online there was indication of a bad disk. + +When I rebooted after the second freeze my system dropped into maintenance mode, unable to mount /home. I checked the RAID array and sure enough one of the disks was missing. I reassembled the array ignoring the faulty disk and got back up and running, then ordered another drive.. + +I decided to give `borg` another shot so kicked of the backup again. This time it succeeded. +``` + ──── ─ borg create -v --stats /media/backup/borg-kinakuta::$(date +%Y%m%d) $HOME +Enter passphrase for key /media/backup/borg-kinakuta: +Creating archive at "/media/backup/borg-kinakuta::20221023" +------------------------------------------------------------------------------ +Repository: /media/backup/borg-kinakuta +Archive name: 20221023 +Archive fingerprint: 125d8f26a952dadb0053e17c8c73bb70852f509c3db4b340021c99f5f8daa8ff +Time (start): Sun, 2022-10-23 10:58:05 +Time (end): Sun, 2022-10-23 20:34:51 +Duration: 9 hours 36 minutes 46.09 seconds +Number of files: 1343775 +Utilization of max. archive size: 0% +------------------------------------------------------------------------------ + Original size Compressed size Deduplicated size +This archive: 2.36 TB 2.18 TB 1.98 TB +All archives: 2.36 TB 2.18 TB 1.98 TB + + Unique chunks Total chunks +Chunk index: 1620226 2214299 +------------------------------------------------------------------------------ +``` + +Nine and a half hours was quicker than I was expecting. Over the next couple of days I ran backups each evening after I finished work. + +``` + ──── ─ borg create -v --stats /media/backup/borg-kinakuta::$(date +%Y%m%d) $HOME +Enter passphrase for key /media/backup/borg-kinakuta: +Creating archive at "/media/backup/borg-kinakuta::20221024" +------------------------------------------------------------------------------ +Repository: /media/backup/borg-kinakuta +Archive name: 20221024 +Archive fingerprint: ec9b9744bcc1baf896eb2b68c14278128688b2e4100172051bc839e57d02fd03 +Time (start): Mon, 2022-10-24 17:35:58 +Time (end): Mon, 2022-10-24 17:50:05 +Duration: 14 minutes 7.59 seconds +Number of files: 1348078 +Utilization of max. archive size: 0% +------------------------------------------------------------------------------ + Original size Compressed size Deduplicated size +This archive: 2.36 TB 2.18 TB 325.62 MB +All archives: 4.72 TB 4.37 TB 1.98 TB + + Unique chunks Total chunks +Chunk index: 1627368 4419526 +------------------------------------------------------------------------------ +``` + +``` + ──── ─ borg create -x -v --stats /media/backup/borg-kinakuta::$(date +%Y%m%d) $HOME +Enter passphrase for key /media/backup/borg-kinakuta: +Creating archive at "/media/backup/borg-kinakuta::20221025" +------------------------------------------------------------------------------ +Repository: /media/backup/borg-kinakuta +Archive name: 20221025 +Archive fingerprint: 2ff6f558ca5e93f1c0dbfce317deada9d522e5a43538c05f38dea560e110bf9f +Time (start): Tue, 2022-10-25 17:32:16 +Time (end): Tue, 2022-10-25 17:44:37 +Duration: 12 minutes 20.92 seconds +Number of files: 1202775 +Utilization of max. archive size: 0% +------------------------------------------------------------------------------ + Original size Compressed size Deduplicated size +This archive: 2.35 TB 2.18 TB 277.59 MB +All archives: 7.08 TB 6.55 TB 1.98 TB + + Unique chunks Total chunks +Chunk index: 1634630 6477362 +------------------------------------------------------------------------------ +``` + +Fourteen and twelve minutes to backup changes is great. I decided to leave it for two days and observe the time again. +``` +------------------------------------------------------------------------------ +Repository: /media/backup/borg-kinakuta +Archive name: 20221027 +Archive fingerprint: a3cdca656ee4ee62a31cc135f794ef7de71b62ce7246496908ae529356092b97 +Time (start): Thu, 2022-10-27 17:41:28 +Time (end): Thu, 2022-10-27 17:54:23 +Duration: 12 minutes 54.20 seconds +Number of files: 1208594 +Utilization of max. archive size: 0% +------------------------------------------------------------------------------ + Original size Compressed size Deduplicated size +This archive: 2.35 TB 2.18 TB 643.01 MB +All archives: 9.43 TB 8.72 TB 1.99 TB + + Unique chunks Total chunks +Chunk index: 1647966 8540968 +------------------------------------------------------------------------------ +``` + +Almost thirteen minutes for two days of changes, pretty good. + +I am really happy with these results from `borg`. When I get chance the next step is to play around with [borgmatic]({target="_blank" rel="noreferrer"} to automate the backups. + +Another full backup will still be done to the drive in my bug out bag, I just have to be better at doing it more regularly. At least now if I need to restore I will be able to recover all of $HOME and not only the important things. + +My PC has also been moved back onto the desk, away from little button pushers. diff --git a/entry/ b/entry/ @@ -0,0 +1,11 @@ +Fonts in the terminal are mostly personal preference. I have been using the same font for many years, [Tamzen font by Suraj N. Kurapati]({target="_blank" rel="noreferrer"}, which is a fork of the font I before that, [Tamsyn font by Scott Fial]({target="_blank" rel="noreferrer"}. + +Even after trying others over the years I always came back to Tamzen. One of my IRC buddies had created a couple of fonts, one of them I have been using a bit this week, [viscera]({target="_blank" rel="noreferrer"}. Feeling inspired I installed [gbdfed]({target="_blank" rel="noreferrer"} and started playing around. + +The font style started to look eldritch, so I lent into that and ended up with what I have named [trigon]({target="_blank" rel="noreferrer"}. + +![fontpreview](/img/trigon-preview.png#fitwidth) + +As this is my first font there is a limited character set, and only one size. You can download the [BDF file]( to try the font out yourself. + +Any suggestions or comments are welcome. You can find contact information on my [home page]( diff --git a/entry/ b/entry/ @@ -0,0 +1,16 @@ +## random.literature.recommendation +_Where Wizards Stay Up Late: The Origins of the Internet_ by Katie Hafner and Matthew Lyon. + +#### blurb +> Twenty-five years ago, it didn't exist. Today, sixty million people worldwide are surfing the Net. _Where Wizards Stay Up Late_ is the exciting story of the pioneers responsible for creating the most talked-about, most influential, and most far-reaching communications breakthrough since the invention of the telephone. + In the 1960s, when computers were regarded as mere giant calculators, J.C.R. Licklider at MIT saw them as the ultimate communications devices. With Defense Department funds, a band of visionary computer whizzes he inspired began work on a nationwide, interlocking network of computers. Taking readers behind the scenes, _Where Wizards Stay Up Late_ captures the hard work, genius, and happy accidents of their daring, stunningly successful venture. + +--- + +This book is a must read for anyone curious about the history of computing, hardware and software hackers, or pretty much anybody with an interest in technology. + +The blow by blow account of crazy ideas and sheer determination is documented expertly by Hafner and Lyon. + +Doing what many considered to be the impossible, building a network of computers changed human history forever. I, like countless others, use the internet everyday and yet I still marvel at its very existence. Reading this book gave me a greater appreciation for the technology we have become so reliant on. + +I cannot recommend this book enough. diff --git a/entry/ b/entry/ @@ -0,0 +1,72 @@ +Git [hooks]({target="_blank" rel="noreferrer"} are often overlooked or underused. They can be very useful, and even used as a rudimentary CI/CD workflow. + +While these tips can work for any repo, this could be viewed as an expansion on my [tech_grimoire](20220525-tech_grimoire.html){target="_blank" rel="noreferrer"} post. + +For note taking I make use of the [VimWiki]({target="_blank" rel="noreferrer"} plugin to Vim. My wiki directory is a git repository, which is then cloned on to one of my servers and using [Gollum]({target="_blank" rel="noreferrer"} is available as a website. + +This has worked well for years, but one thing I have not been good at is committing and pushing changes straight away. In order to improve my workflow I make use of two git hooks, one in the local repo and one in the remote bare repo. + +Git hooks are scripts which can be run at various times in a git workflow. When they run is based on the name of the script. + +If you look in the .git/hooks directory of a repo you should see some sample scripts. + +``` +──── ─ ls -1 .git/hooks +applypatch-msg.sample +commit-msg.sample +fsmonitor-watchman.sample +post-update.sample +pre-applypatch.sample +pre-commit.sample +pre-merge-commit.sample +pre-push.sample +pre-rebase.sample +pre-receive.sample +prepare-commit-msg.sample +push-to-checkout.sample +update.sample +``` + +For my wiki I make of the `post-commit` hook. +``` +#!/bin/sh +git push origin master +``` + +That's it. As soon as I make a commit the master branch is automatically pushed. + +This works but I wanted to go one step further, automatically adding changed files and making the commit. The `prepare-commit-msg` hook is useful when you want to populate the commit message with something, but I couldn't figure out an easy way to do what I wanted with hooks. + +In the end I used a command in my ~/.vimrc +``` +set :Gac git commit -a -m "updates" +``` + +Now, when I have finished updating my wiki I incant +``` +:Gac +``` + +and the updates will be committed and pushed, albeit with a generic commit message. + +Once the changes are pushed to my git server they hit another hook, `post-receive`. +``` +#!/bin/sh +ssh wikiserver "cd /grimoire ; git pull" +``` + +When the remote bare repo receives any updates the hook will perform a `git pull` of my wiki on the server I host it on, causing my Gollum page to be updated. + +The final thing I have done is to change the hooks directory in my local repo. With the default dir, .git/hooks, nothing can be tracked by git. + +Instead I created a directory in the repo, .githooks and put my `post-commit` hook there. This way it can be tracked in the repo. + +An update to the config is required so git knows where the hooks are +``` +git config core.hooksPath .githooks +``` +*Note: this option was introduced in got v2.9, so make sure you have that version or higher* + +As far as I am aware there is no way to track hooks in a remote bare repo. If you know of a way I would be interested to hear about it. + +Who needs a convoluted CI/CD pipeline when a couple of one line scripts will do? Typing `:Gac` is easy enough that my wiki should now stay up to date. diff --git a/entry/ b/entry/ @@ -1 +0,0 @@ -this is a test diff --git a/img/trigon-preview.png b/img/trigon-preview.png Binary files differ. diff --git a/scripts/draft b/scripts/draft @@ -2,12 +2,23 @@ # use arg as title and set post file path TITLE=$1 -POST="entry/${TITLE}.md" +RND=$2 + +if [ "$RND" = "mov" ] || [ "$RND" = "lit" ] ; then + POST="entry/rnd.${RND}.rec:_${TITLE}.md" +else + POST="entry/${TITLE}.md" +fi # checkout the correct branch -git branch | grep ${TITLE} && \ - git checkout -q ${TITLE} || \ - $(git checkout -q main && git checkout -q -b ${TITLE}) || exit 1 +if [ "$RND" = "mov" ] || [ "$RND" = "lit" ] ; then + git checkout -q rnd.${RND}.rec + git merge main +else + git branch | grep ${TITLE} && \ + git checkout -q ${TITLE} || \ + $(git checkout -q main && git checkout -q -b ${TITLE}) || exit 1 +fi # if post file does not exist yet touch it [ -f "${POST}" ] || touch "${POST}" diff --git a/scripts/publish b/scripts/publish @@ -3,17 +3,29 @@ # use arg as title and set post file path # set published file path with date TITLE=$1 -POST="entry/${TITLE}.md" -PUBLISH="entry/$(date +%Y%m%d)-${TITLE}.md" -LINK="$(date +%Y%m%d)-${TITLE}.html" +RND=$2 + +if [ "$RND" = "mov" ] || [ "$RND" = "lit" ] ; then + POST="entry/rnd.${RND}.rec:_${TITLE}.md" + PUBLISH="entry/$(date +%Y%m%d)-rnd.${RND}.rec:_${TITLE}.md" + LINK="$(date +%Y%m%d)-rnd.${RND}.rec:_${TITLE}.html" +else + POST="entry/${TITLE}.md" + PUBLISH="entry/$(date +%Y%m%d)-${TITLE}.md" + LINK="$(date +%Y%m%d)-${TITLE}.html" +fi # toot command path TOOT="$HOME/src/warez/toot/bin/toot" # checkout the correct branch -git branch | grep ${TITLE} && \ - git checkout ${TITLE} || \ - git checkout -b ${TITLE} +if [ "$RND" = "mov" ] || [ "$RND" = "lit" ] ; then + git checkout -q rnd.${RND}.rec +else + git branch | grep ${TITLE} && \ + git checkout -q ${TITLE} || \ + exit 1 +fi # rename post to set date git mv "${POST}" "${PUBLISH}" @@ -23,7 +35,11 @@ git commit -S -m "publish ${TITLE}" # checkout main branch and merge published post git checkout main -git merge "${TITLE}" +if [ "$RND" = "mov" ] || [ "$RND" = "lit" ] ; then + git merge rnd.${RND}.rec +else + git merge "${TITLE}" +fi # push new post git push diff --git a/style.css b/style.css @@ -198,8 +198,13 @@ code { } .fitwidth { - width: 50%; - height: auto; + width: 50%; + height: auto; +} + +figcaption { + font-size: 0.8em; + opacity: 0.5; } hr {