Posts tagged "geekery"
I love reading. I’ve been a voracious reader since I first learned to read, and while I sometimes lack the time to indulge my reading habit as much as I would like, I read at least a few pages of a book almost every day. I don’t really mind how I read. I love the experience of reading a paper book, but we don’t live in a large house, and as Mr. Bsag is as voracious a reader as I am (and also loathe to sell or give away books once he has read them), our shelves are seriously overflowing. For that reason, I have had a Kindle for many years, and use that for reading ‘standard’ books, in other words, ones without interesting illustrations or layout.
My Kindle was starting to struggle to hold a charge, and despite the fact that I have bought plenty of books in Amazon’s ecosystem, I really wanted to escape the grip of Amazon, and also start borrowing books from the library using Libby. After reading a lot of reviews, I bought a Kobo Libra 2. In short, I love it, and it has seriously boosted the amount of books I am reading.
Remember when I was tweaking the layout of my Nine keyboard? Well, the keyboard rabbit hole called to me again, and — long story short — I built and am using a new keyboard: the TOTEM by GEIGEIGEIST. Oops.
I’ve recently started using the Merlin Bird ID iOS app produced by The Cornell Lab, and I can’t stop raving about how amazing it is.
I’ve made quite a few changes recently to my terminal/command line set up, and come across some interesting tools, so I thought it would be worth writing a quick update post.
Now that I have settled in to using my Nine keyboard (see Part one and Part two), I have been thinking about small tweaks to the layout. I think that you need to use a layout for a reasonable amount of time before you figure out what really works and does not work for you. In my case, I wanted to rethink the one-shot aspects of the second alpha layer.
There are many things that I enjoy about both Emacs and Vim, and I have used both for extended periods. I remain resolutely neutral in the Editor Wars! Most recently, I have been an enthusiastic Emacs user. I used to use
org-mode for planning and managing my tasks, but I moved back to Things for that a while ago for pragmatic reasons, and let Emacs deal with all my other plain text needs. However, I kept a very minimal Neovim setup in my Nix configuration that I would use for quick edits to files in iTerm.
Perhaps I’m on one of my periodic ‘minimalist’ adventures (which would seem to be borne out by my keyboard choice), but Emacs has recently felt a bit much to me, and made me curious about the current state of the art in Neovim.
When I wrote about my Nine keyboard, I mentioned that I would write about the process of designing a case for it in a second part. I have had some time over the holidays to clean up the KiCad files and write a build guide, and I have now published both the repository for the keyboard and case and the firmware, as well as building up the case. I’m really happy with the way it all turned out!
Remember when I said that I was going to try to tweak Ben Vallack’s Piano keyboard design to fit my hands and use case better? Well, I’ve done it, and am typing this article on it right now!
Before I get to the details, in the interests of full transparency I need to tell you that PCBWay got in contact with me (after I had started designing the board) and offered to sponsor me. I do get similar offers from time to time from all sorts of companies, but very rarely take them up. However, I felt fine about accepting this sponsorship as a) I had ordered the PCBs for the Piano from them (paying for them myself), and was very impressed with their service and the quality of the boards, and therefore b) I had already decided that I was going to order boards in matte black and gold ENIG finish for this keyboard from them before they made the sponsorship offer. The arrangement is that they paid the cost of producing the boards plus shipping, and in return I would write an honest review of their product and service.
So without further ado, here it is. Introducing the Nine keyboard…
Sometimes milestones pass you by. I had a really busy teaching Semester this Autumn, so it only recently dawned on me that I had completely missed this blog’s 20th anniversary back in October (my first post was on 11 October, 2002). Still, better late than never to celebrate, eh? Since I love a bit of analysis, I’ve had a look at what 20 years of articles looks like.
I can’t believe how long it has been since I last posted. I have to say that it has been a very tough few months. At times I have to admit that I have found it hard to hold things together, and I have been constantly exhausted, with no energy left over after the cycle of work, eat, sleep (a bit), repeat. Thankfully things are easing a little now, and I am beginning to look forward to a break over Christmas.
Now that I’ve got the energy back for writing, I wanted to post about my latest keyboard adventures: meet The Piano, designed by Ben Vallack.
If you have (or make) a keyboard which is fully programmable, it’s likely that
you will spend a lot of time messing about with programming it: not because you
need to, but just because you can. My little Ferris Sweep has been through
several iterations of layouts this year. I know me, so I would bet no money at
all on this being true, but I think that I might be getting close to the perfect
layout for me with this keyboard. In the process, I have also stopped using
in Emacs in favour of the delightful meow.
I realised a couple of weeks ago that this blog will turn 20 years old this October, so I thought it might be time for a belated Spring clean of the styling.
Remember when I played about with installing NixOS on an old MacBook Air? Recently, I decided that I would have a go at using Nix as a package manager on an ordinary macOS machine, in much the same way as using homebrew to install software, but more declarative and (hopefully) more reproducible. You may also recall that I tried this before with — shall we say — mixed results. Here’s how things went this time.
I find it hard to resist an interesting fountain pen. I can’t remember where I saw them reviewed, but my interest was piqued by Gravitas Pens, and specifically by their range of pocket pens. As I got some generous gifts of money for my birthday a few months ago, I decided to buy one, and — spoiler alert! — I love it.
Since I last wrote, I have been busy tinkering with the layout for my Ferris Sweep in spare moments.
As Jane Austen might have written (had she been a geek with a keyboard obsession), it is a truth universally acknowledged that a person in possession of keyboard they have built will soon want to build another. Having built three Corne keyboards (two from conventional PCB kits, and one handwired), I was keen to try a different style. I definitely wanted a split, ortholinear keyboard, and one that supported Kailh Choc key switches.
It will surprise no-one (least of all me) that I am back in the arms of Doom Emacs again (not for the first time), after playing around for a while with a configuration built from scratch. It was a really fun experiment again, and I had a chance to play around with some of the packages that weren’t (at the time) included in Doom Emacs. Once again, I learned a bit more about configuring packages, and also thought about what features I really need. It is tempting with Doom to just enable all the things. That isn’t a bad approach exactly, but it does make it more difficult to figure out where there are conflicts and inevitably it can make things a bit slower.
It seems that building keyboards is addictive. After my first attempt, I made another, this time a version with LED lighting. At least, that was the plan. While the soldering for the keyboard itself went smoothly, soldering the LEDs (SK6812MINI 3228 LEDs) was enormously frustrating. These LEDs have tiny contact pads on the back of the unit, so to solder them into the openings in the PCB so that they shine through the switches, you are supposed to create solder bridges from the back of the LED to the PCB.
I’ve been here before, but I find myself back here again. I think that many people who start off with one of the big frameworks (like Spacemacs or Doom Emacs) eventually circle around to thinking, “hey, why don’t I just build my own Emacs config that includes the best bits of Spacemacs/Doom?”. Usually, that is followed some time later (as happened in my case last time), by the realization that those frameworks are really well crafted, and getting anything like that degree of polish and sleekness yourself is very difficult without basically replicating the entirety of those projects. However, I’m playing with configuring from scratch again, just for kicks.
I mentioned in my previous post that one of the reasons I decided to build my Corne keyboard was to make it easier to learn stenography with Plover. Why would I want to learn stenography? Well, part of an honest answer would be that it seemed interesting, and I enjoy learning new things, but I was also motivated by the idea that I might be able (in time) to substantially increase my typing speed, while typing in a more ergonomic way.
I managed to build my own keyboard!
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 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.
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.
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.
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 of project)!
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
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.
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.
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.
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.
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.
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.
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).