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.Continue reading →
Posts tagged "geekery"
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.Continue reading →
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.Continue reading →
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 using org-roam and the related ecosystem of tools
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
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.Continue reading →
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 better.Continue reading →
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 QWERTY.Continue reading →
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!Continue reading →
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.Continue reading →
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 of project)!Continue reading →
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!Continue reading →
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.Continue reading →
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
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 only
org-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.Continue reading →
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 work.
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.Continue reading →
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.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.Continue reading →
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.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.Continue reading →
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.Continue reading →
Regular readers among you will know that if there’s an easy way to do it, or a difficult but deliciously geeky way to do it which involves substantial amounts of tinkering, I invariably prefer the latter. So you’ll appreciate that when a search for some tidbit of information about Pandoc turned up an article by Andrew Goldstone titled Easy Lecture Slides Made Difficult with Pandoc and Beamer (and its follow up, Programmatic Lecture Slides Made Even More Difficult with R Markdown), I smiled with recognition. It seems that Andrew and I are both connoisseurs of a geekily baroque workflow.
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.Continue reading →
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.Continue reading →
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).Continue reading →