Regular readers will know how much I enjoy a good tinker with my system. I have
been playing with Tiddlywiki recently, partly as a result of admiring Jack
Baty’s rudimentarylathe.wiki instance of Tiddlywiki, and partly because of Soren
Bjornstad’s Grok Tiddlywiki book, which I think I also found out about via Jack.
I had tried out Tiddlywiki before but never quite got it. Soren’s book helped me
to see how flexible it could be and how I might be able to use it in a similar
fashion to the way I have been using org-roam. While I still enjoy org-roam,
things feel (to me anyway) a bit up in the air with it at the moment, as there
are big changes coming in version 2 which will probably involve a bit of
backwards incompatibility. I couldn’t decide whether to wait to make the
changes, or transition to the new version now, and that indecision made me
reluctant to add to my collection of notes. In addition — for reasons too long
and boring to go into here — I have also moved (reluctantly) from Bookends to
Zotero. I like the flexibility that Zotero offers to those of us having to live
in a dual Word/Pandoc citations world, but I really miss Bookends’ speed and UI.
Anyway, this change in the tools I depend on left me with a puzzle: how could I
export references (with metadata) from Zotero to Tiddlywiki so that I could make
notes (known as ‘tiddlers’) on each journal article of interest? There’s a
vanishingly small possibility that anyone else might want to solve a similar
problem in exactly the same way as me, but in case anyone is curious, this is
how I made it work.
I might be terrible at learning human languages, but I really enjoy learning
programming languages. In my last post, I mentioned setting up Johnny.Decimal,
and that I was thinking of writing some tools to help me interact with the
system. I’m a dedicated Alfred user, and when I spotted a very nifty library
called awgo for writing Alfred workflows in Go, it seemed like the perfect
excuse to dip my toes in Go and learn another programming language. The result
after only a couple of weeks of tinkering in spare moments was this alfred-jd
workflow. I really like Go.
I’ve had a bit of an obsession with spring cleaning recently. I’ve tidied and
cleaned elements of our physical space (nothing makes you more aware of how much
junk you have accumulated than a period of lockdown), but I’ve also had
a ‘services and digital’ spring clean too. It has taken quite a bit of time, but
I do feel better for it.
When I’m working in Emacs, I like to have some visual separation between
different workspaces (which roughly equate to different projects). Previously, I
was using Doom Emacs’ workspaces feature, which uses persp-mode. My initial
reason for disabling workspaces was because I found that
projectile-switch-project didn’t work properly with it enabled, but I also
thought it would be interesting to see what I could set up using built-in Emacs
functions. What I ended up using was Emacs’ built-in tab-bar.
My Emacs tweaking tends to go in waves. I keep an eye on the Emacs subreddit and
the Doom Discord channel on a fairly regular basis, but I try not to jump on
every cool new package I see discussed there. Every now and again though, I see
something interesting which coincides with an itch to tinker with Emacs, and
away I go… This time, it was reading discussions about a constellation of
relatively new packages concerned with incrementally narrowing lists (and other
related functions) that caught my eye. This sounds very niche, but for many
people (me included) being presented with a list of things and being able to
type to incrementally narrow the list and then select something is a core part
of the Emacs UI. Since I use Doom, and it offers you an easy way to choose
either Ivy or Helm, I had been using Ivy, for the sake of easy configuration.
Both are fine packages, but having tried both, I preferred Ivy’s more minimal
interface, and the fact that it used the minibuffer rather than a buffer for
completions. However, it — and the related packages, Counsel and Swiper —
are somewhat complex and difficult to get to grips with. I was also not using
all the features that they provided, so was curious if I would enjoy using
something even simpler. That’s why I tried out Selectrum.
Regular readers will know that I am a big fan of Emacs and have been using it
for most of my writing, coding and task-related activity for quite a while now.
Emacs is famously able to handle just about any kind of function, many of which
can be handled within a single mode: Org mode. However, just because you can do
it in Emacs, it doesn’t mean that you necessarily should. For example, I tried
out managing my personal email in Emacs using mu4e, and while I really enjoyed
writing and managing email in Emacs, I found having to constantly open HTML
emails in some form of browser (inside Emacs or outside) a chore. So now I have
reverted back to Mailmate for my email needs and am very happy with it.
I had also been usingorg-roam and the related ecosystem of tools
(org-roam-bibtex and org-roam-server) to handle my work notes on journal
articles, books, and ideas arising from them. I absolutely loved the ease of
linking between ideas, and the graph view which helped me to see what kinds of
broader topics were emerging organically from my research. However, I found
myself having frequent problems with the database needing to be cleared and
rebuilt, and org-roam-bibtex-mode needing to be reloaded. This — I am certain
— is some quirk of my own setup and configuration. I was syncing the note
files via Dropbox and it is likely that this was causing issues. Whatever the
cause, I couldn’t seem to fix it properly, and so I started to look around for
alternatives outside of Emacs. Eventually, I settled on Obsidian.
I was thinking the other day that I am incredibly grateful that past me (back in
September last year, which seems about a decade ago) decided to take the plunge
and buy a proper sit-stand desk. Like many people, I’ve been basically living at
this desk for six months (though I’m very lucky to be able to work from
home), so it has been fantastic to have a good, ergonomic setup which allows me
to change position throughout the day. It doesn’t make endless Zoom meetings any
more bearable, but my body does thank me at the end of the day.
I’ve made a couple more tweaks recently to improve things further: I’ve added a
home-made desk shelf and a felt/cork keyboard mat.
Apparently — to quote The Byrds — ‘to everything there is a season, turn,
turn, turn’. Despite what I have written, I’ve gone back to Doom’s evil (i.e.
vim) bindings. As I thought about it more I realised that it made more sense to
go with the grain in Doom. Doom works perfectly fine with plain Emacs bindings
(if you tweak a little), but it is designed around evil-bindings, so you are
missing out on some well thought-out aspects of the configuration. You can, of
course, still use plain Emacs bindings in insert mode (which is often quite
useful), and you can switch to Emacs mode temporarily by using the binding C-z.
The two systems co-exist quite peacefully, so it is easy to use whatever
seems best in context. I have, for example, continued to use isearch rather than
vim-style search because I have found that I prefer it for simple searches.
However, for search and replace, I prefer the vim :%s/foo/bar/ command. That’s
no problem in Doom, and you can use either whenever you want.
A while ago I came across a link to a new CSS framework called Tailwind CSS.
What I read intrigued me. I’ve used a number of different frameworks to style
this site, including (most recently) Skeleton and also the Bourbon Sass toolset.
The tools certainly made styling the site how I wanted and also making it behave
nicely on different screen sizes easier than plain old CSS, but I still came up
against frustrating problems that I found hard to fix because I don’t understand
CSS in enough depth. Tailwind looked interesting, so I decided to give it a
whirl. When I redesigned my photography site, I used another framework
(Tachyons) with a similar rationale to Tailwind, but I like Tailwind much
Remember when I wrote about switching to the BEAKL15 layout, and an anonymous
commenter said that it would wreck my ability to type on a QWERTY layout
keyboard when I needed to do that? Well, it happened. The better I got at the
new layout, the worse I got at QWERTY. It got to the point where — if I needed
to just hop on my laptop keyboard for a moment — I was single-finger typing,
and having to hunt around for every letter. I’ve reluctantly reverted back to
One of the delightful and surprising things about Emacs, as you get to know it
better, is the depth of customisation which is available. Emacs can be a
completely different editor for different people and for different purposes.
Being able to tweak things on the fly and try them out before you commit to
them, or even as a temporary fix to solve the particular problem you have right
now, is empowering. The more you delve into it and try things out,
the better you understand what is possible and the more comfortable you get with
writing elisp. Recently I discovered the ‘advice’ system in Emacs, and now every
problem looks like a situation for some well-placed advice!
I don’t really know what I was thinking. It’s just that sometimes I get an
idea in my head and I run with it. I’m pretty sure that it is going to
be a good thing (or a very good thing) in the long run, but it has challenged my
poor old brain a good deal, I can tell you.
It started when I got one of the regular newsletters from ErgoDox, the makers of
my keyboard. They were featuring a ‘layout of the month’ produced by Graeme
Geldenhuys which used the BEAKL15 keyboard layout. I was intrigued. Typing has
felt much more comfortable since I got the ErgoDox, but there’s still plenty of
room for improvement as QWERTY still involves awkward reaches and an unbalanced
workload between the hands. Since I could just download and tweak Graeme’s layout to
try it, there was no reason not to, and so it began.
I learned recently that you can turn a Raspberry Pi into a networked DAC which
can act as a Roon endpoint. I’ve always wanted to play with a Raspberry Pi so it
seemed an ideal easy project to try it out, and also to replace the ageing
Squeezebox player which I currently use as a Roon endpoint. I ordered all the
bits and put it together on Sunday — it was fun and successful (the best kind
I was in the middle of the activity I’m about to describe below and listening to
the BBC Radio 4 programme A History of the World in 100 Objects about the
Olduvai stone chopping tool when I heard something that made me smile. Neil
MacGregor said something to the effect that one of the defining features of
humans is that we make things more complicated than they need to be. Busted!
I have been a DEVONthink user for a long time. I’m not sure exactly when I
started using it, but my records suggest that it was at least as far back
as 2006. For many years, it held all my documents, notes, links, manuals,
receipts and other random snippets. However, at some point, I needed to sync at
least some of my databases between computers and to my phone for mobile use. The
early iterations of syncing were a bit clunky and eventually I threw in the
towel and looked around for something else. I told myself that I didn’t need all
the bells and whistles of DEVONthink, and that anything into which I could throw
my documents and which would sync them quickly and reliably would do the job.
For a while, I used KeepIt (formerly, Together) which is a great and easy to use
application, but (for whatever reason) I didn’t add items to it very often, and
was increasingly finding myself in a situation where I couldn’t remember where I
had put that snippet of information I needed. To cut a long story short, I’m
back with DEVONthink Pro 3, and couldn’t be happier about it.
Emacs is really the gift that keeps giving. It has now been about 4 months since
I started using org-mode to manage all my todos, and it has been working
terrifically well for me. Despite having lots of different projects to juggle at
the moment, I continue to feel more or less on top of things — or at least, I
know how much stuff I haven’t been able to get to yet! The best thing about
Emacs and org-mode is that you can expand and develop your system as your
needs change. You don’t need to set up a complex system at the start, nor do you
need to make the whole system complex if only one part of it needs extra
structure. It’s all very flexible. I’ve made a couple of tweaks recently, and
also started adapting my system of keeping notes which I thought might be
interesting for other Emacs users and the Emacs-curious.
After I posted about using org-mode, Jack Baty wondered (somewhat
tongue-in-cheek) how I managed with keeping only some of my tasks in
org-mode. Actually, it wasn’t really a problem copying tasks across from
OmniFocus to enter into my journal entry for the day. However, I inevitably
started wondering whether I might be able to go the whole hog and use onlyorg-mode for tasks. Would I lose track of things? Could I capture tasks
efficiently when away from my computer before I forgot about them? Would the
world explode into chaos? Well, if you don’t feel like reading further, the
answers to those questions are No, Yes, and Quite Probably, But Not Because I’m
When there’s a problem to be solved, I often try to improvise a solution.
Generally, I think that’s a good thing: better to try to make something yourself
with resources you already have than to go out and buy something new. However,
sometimes it leads to wasting time setting something up and then living with a
solution that comes with too many compromises. I’ve been trying to sort out a
compact, ergonomic desk arrangement for my home office for quite some time. I
started with an Ergotron WorkFit arm (5 years ago), which worked well for me for
some time. It allowed me to sit or stand to work, changing quickly between them.
It bounced a bit, as I mentioned in my article, but I more or less got used to
that. However, over time, things changed. My ‘home office’ is a small room which
has to serve many purposes. As my sewing hobby has grown, my desk has to share
the space with sewing machines and a fold-up cutting table, and the Ergotron
WorkFit jutted out enough to cause an awkward obstruction. More
importantly, the arrangement meant that I couldn’t write (with a notebook and
pen) comfortably at the desk, as the arm covered most of the desk surface, and
using the metal base meant leaning uncomfortably over the keyboard support.
Finally, a variety of other changes to my working evironment meant that I
started to think about whether I could improvise something else myself.
I’ve been back a week from a work trip, and — as I often do after a busy
period — I’ve been taking stock of what I need to do next and refining my
systems a bit. Cynics might argue that this is either procrastination or yak
shaving (and they wouldn’t be entirely wrong), but when I have been at full
stretch at work I do find it helpful to have a period of sorting out the mess
that I had to let accumulate, to tie up loose ends and to plan the next bit of
I am spending more and more of my time in Emacs for all things, so I wanted to
refine both my agenda and journalling setup.
You might notice a bit of a change to the appearance of the pages around here.
I’ve changed the way that I define how the fonts are rendered, and in the
process I have switched the fonts that I use. I had used Typekit for about five
years, which enabled me to select from a range of fonts and then easily include
though it did generate a bit of overhead on page loading. Nevertheless, I was
quite happy with it. Then Adobe acquired Typekit and doubled the annual
subscription rate. There’s now no limitation on how many fonts you use, but
given that I only need a handful at most, that doesn’t work in my favour. So I
decided to ditch Typekit/Adobe Fonts and load some webfonts myself.
The inevitable wheel of Emacs life has circled back again, and — as the title
suggests — I have moved back to Doom Emacs. When I last wrote about my Emacs
configuration, I was trying to move away from frameworks (including Doom), and
to set up my own configuration from scratch. It was a really fun process, and I
think a necessary one for me to really understand how to configure and use
Emacs, and the way that all the moving parts fitted together. However, I have
recently overhauled my whole command line setup (again… more on this later),
so I got curious to try out Doom again. It was always a great project, but in
the time since I last used it Henrik Lissner has polished and improved it even
more to the point where it is a really fast, slick and easy to use framework.
As I mentioned in my previous post, I’ve been looking around for a replacement to Disqus for handling the comments on my blog. It’s a tricky thing to manage because I’ve got a bit archive of comments that I want to preserve. The system obviously needs to handle this static site, but also enable commenters to comment easily, without needing an account if they don’t want to create one.
I ended up coming across Commento, which seemed to fulfil all of those conditions.
Continue reading →
For much of the time that I’ve had a blog, I’ve kept a vague eye on its visitor numbers in one way or another. I’ve used a variety of different tracking methods from the no-longer-supported Mint, to Matomo (formerly Piwik), and the usual Google Analytics that everyone uses. I’ve always favoured simpler web analytics, as my needs are very simple, but those have been increasingly difficult to find. Since it opened to beta testers, I have been using Fathom Analytics, and I have been really happy with how it works.
I’ve got a new keyboard, and it’s a fabulous beast. Regular readers may remember that I have been using a Happy Hacking Keyboard Pro 2 (HHKB) for some time (about 6 years, as it turns out). That was my first mechanical keyboard since the days when mechanical keyboards were the only ones you could get. I’ve loved it to bits, but for the past few months I’ve been having pain and discomfort in my hands and wrists, and decided it might be time to look around for a more ergonomic replacement. After a lot of research and deliberation, I ended up getting an ErgoDox EZ. I’m still tweaking the configuration a bit, but I love it. It has already done wonders for both the comfort of my hands and my writing efficiency.
You know how it is when you take a quick look at a framework for organising your dotfiles, and end up installing and configuring a new Linux operating system on an old MacBook Air? No? Just me then.
It started innocuously enough. I’ve been really busy at work all summer, with lots of travelling, a lot of working weekends, and long hours. That hasn’t really left enough blocks of time for sewing projects, so I’ve been falling back on my other relaxation activity: pottering about with computers in odd moments.
Continue reading →
I’m not someone who sets about the house with a duster and mop when spring arrives, but I am a fan of having a spring clean of my text editing setup. Let’s face it, if you’ve read this blog for any length of time, you know full well that I need no excuse whatsoever to tinker with my setup. I’ve long since come to terms with the fact that I will probably never settle for good on the One True Text Editor. For one thing, I think there probably isn’t such a thing: I use a text editor for many different tasks, and in each of those I have different priorities for my working environment. It is also the case that editors are being improved all the time, so it is worth occasionally trying out (or re-visiting) and editor to see if it fits your needs better than your current system. With that in mind, I got the editor-tinkering itch recently, so I thought I’d write about about the changes I’ve made.
I’ve had an itch for a while to create my own photoblog site. Flickr is convenient, but it doesn’t feel like your own site, and you can’t style it the way you would like. I’ve tried other photo hosting options, but they have the same kinds of issues. Lately I’ve wanted to host my own stuff in my own way, using — as far as possible — simple frameworks that I understand and can maintain. I have been working on it for a while, but I’ve finally got my Hugo-based static photoblog setup to a presentable state, and made it public. Here’s how it works.
I’m a long-time user of Pandoc to produce most kinds of document, but this week I have been trying out a couple of linked systems — Pandocomatic and Scrivomatic — which aim to tidy up your Pandoc workflow, and make it quicker to produce the kinds of output you need.
As part of my move to simplify my hosting setup, I started experimenting with using Blot as a replacement for Tumblr to host my micro blog Slipstream. This is an amazing service which allows you to connect up a Dropbox folder, and then just throw files in that folder (Markdown, Plain text, images, and so on), and they will — apparently by magic — be turned into a nice looking website. It’s really fantastic. Since Dropbox folders are accessible to so many apps (both on the desktop and on iOS), this makes it really easy to post from anywhere, and also to automate cross posting. This is where Zapier comes in.
If you’re reading this, I’ve successfully managed to move this site from Linode to Netlify. Basically, I had heard quite a few people talking about Netlify, and got curious about it. It’s a specialist service allowing you to deploy static sites extremely easily by simply pushing a commit to one of the git hosting services (like Github or Bitbucket).