CK knows Wayne

ErgoDox: after the re-learning

Published at by Christian Kruse, updated at
Filed under: ergodox, ergonomic, keyboard

Recently (well, kind of) I've been building an ErgoDox keyboard. It was the cheaper choice between an Maltron or Kinesis keyboard and since it is open (in the sense of open source) it also is the ethically better choice.

I've been touch typing in my own, self-made, grown 8 fingers system, which I learned by doing and never thought about it. To avoid RSI problems induced by this system I also switched to the Dvorak keyboard layout. So I had to completely re-learn typing and learn touch typing.

The first days were extremly frustrating. I went could turkey and I felt as if I was a rookie again. I had to re-learn especially keyboard shortcuts the hard way (by typing the wrong ones again and again). My productivity was at an all-time low, I barely managed to get a line of code written. Very soon it was obvious to me that this is not the way I would've been successful.

Thus I switched to a different learning strategy: I've been using the ErgoDox for an hour per day. After a few days I've been using it two hours a day, then three, then four and so on. This approach was much more promising, it wasn't so hard to sit through and I noticed real progress. And tadaa! Today was the first day where I've been using the ErgoDox the whole day and I didn't feel as if I've been driving with brakes.

Regarding my RSI (or something like that) symptons: I have to say, it seems to help. The last few days (except the weekend) my hands didn't hurt at all or just hurt a bit at the end of the working day. I don't know if it is the Dvorak keyboard layout or the ErgoDox or both, but I'm very happy and very relieved that it's helping!


Burp: bug in id generation

Published at by Christian Kruse, updated at
Filed under: bug, burp

I've had a bug in the ID generation for the RSS and Atom feeds. They're meant to be perma links in both feeds, but I messed it up, they've been just random strings. I fixed the bug, but as a side effect you might get already read entries as unread. Sorry for that!


<S-dead-diaeresis> is undefined

Published at by Christian Kruse, updated at
Filed under: emacs, gnome, linux

Recently I've been trying out GNOME3 on my workstation. While it is visually appealing to me (looks a lot like OS X) and the overall experience is, after some tweaking, ok for me I encountered a very specific problem: as a user of the us variant intl-altgr I wasn't able to input umlauts in Emacs as well as a few other apps. Emacs even gave me an error message: <S-dead-diaeresis> is undefined.

After searching the interwebs for a while I found an Ubuntu bug report stating that when setting XMODIFIERS to an empty value all works again. After trying I could confirm that. This I had a look at the unmodified value of this variable: its value was @im=ibus. This gave me the right keyword to search for: ibus. IBus (Intelligent Input Bus) is an open source input framework for Linux and Unix. It basically is an abstraction to enter „foreign characters.“

After reading that description it was clear to me that this was the reason for my problems. So I've been looking for how to disable IBus in GNOME and it turns out that there is a way to do this with this command:

$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false 

After restarting GNOME I now was able to enter my composed characters (such as umlauts) normally again.


Wanderlust: easily decrypt an inline-encrypted GPG/PGP message

Published at by Christian Kruse, updated at
Filed under: emacs, email, wanderlust

As I recently switched to Emacs, I noticed that there seems to be no easy way to decrypt an inline-encrypted message. You basically have to switch to the message buffer, select the encryption block and call (manually) wl-message-decrypt-pgp-nonmime. This makes sense as one can encrypt only parts (plural, yes – a message may contain multiple encrypted blocks) of the message. But the default case for me is that the whole message is encrypted. Thus I created a small snippet for exactly this task:

(defun ck-message-decrypt-pgp-nonmime()

  (if (and wl-message-buffer (get-buffer-window wl-message-buffer))
      (let ((start) (ends))
        (wl-summary-toggle-disp-msg 'on)
          (set-buffer wl-message-buffer)
          (goto-char (point-min))
          (re-search-forward "^-----BEGIN PGP MESSAGE-----$")
          (setq start (point))

          (goto-char (point-min))
          (re-search-forward "^-----END PGP MESSAGE-----$")
          (setq ends (point))

          (goto-char start)
          (set-mark-command nil)
          (goto-char ends)


    (message "no message to decrypt")))

(define-key wl-summary-mode-map (kbd "C-c d") 'ck-message-decrypt-pgp-nonmime)

This opens a message (if not yet opened), searches for the first PGP block, marks it and decrypts it.


Wanderlust: refile (move) to archive folder by year

Published at by Christian Kruse, updated at
Filed under: emacs, email, wanderlust

Since I recently switched to Emacs/Wanderlust for email, I've been looking for a solution to easily refile (move) a mail into an archive folder by year. For example, mails sent 2014 should be moved to Archive/2014. By default, this is not possible. But gladly we can enhance Emacs and accordingly Wanderlust as well by elisp. So I wrote a small defun to do exactly that:

(defun ck-refile-to-archive ()
  "Refile current message to archive folder"

  (let ((msg-num (wl-summary-message-number))
    (setq entity (elmo-message-entity wl-summary-buffer-elmo-folder msg-num))
    (setq msg-date (elmo-message-entity-field entity 'date))
    (setq msg-date (format-time-string "%Y" msg-date))

    (if (string-match "Termitel" (wl-summary-buffer-folder-name))
        (setq folder (concat ".Termitel/Archiv." msg-date))
      (setq folder (concat ".Defunct/Archiv." msg-date)))
    (wl-summary-refile (wl-summary-message-number) folder)
    (message "Refiled to %s" folder)))

This gets the message from the index, reads its date and refiles it to the Defunct/Archiv.2014 or Defunct/Archiv.2014 folder, depending on what account I am currently using: Defunct (private) or Termitel (work). Keep in mind that subfolders in IMAP are represented by dots, not slashes.


Moving email to Emacs: Wanderlust

Published at by Christian Kruse, updated at
Filed under: emacs, email

After round about 15 years of using Mutt (most of the time, it simply sucks less), Thunderbird (several interludes, the longest one lasting about 3 months) and K-Mail (never longer than two or three days, never got warm with that) I now switched my email reading and writing to Emacs/Wanderlust.

In my opinion most of the modern email clients are broken. They don't support real threading (see for example Apple Mail's conversation view — WTF, mail clients from the 80ties have been able to display mail threads properly), are terribly slow or are not convenient (for example, which mail client can be used with only the keyboard?). This is why I've been using Mutt the whole time.

I've never been a friend of the „do everything in Emacs“ front, but recently I've been reading a lot about why using Emacs for email is great. One of them is a tight integration into org-mode — org-mode is one of my most-often used Emacs packages. I use it for nearly everything regarding notes or time or time tracking in my live: todo tracking, project planning and tracking, tracking appointments, etc, pp. Simply everything. So a tight and good integration would be a big deal for me.

So I decided to give it a try. First I tried to use Gnus since this seems to be the first choice for most of the Emacs users. But I want to use isync/mbsync: this setup has proved its advantages so many times that I don't want to switch. The problem is, that Gnus has a terrible maildir implementation. Thus I decided to give the other choice when using Emacs for email a try: Wanderlust.

The first impression was pretty weird: setup was rather complicated, even more complicated than Mutt when I've been using it the first time. I had to set a load of variables and write some defuns until it worked like I'd like it to work. It is poorly documented in the setup and customization phase, you basically have to search the web for weblog entries and tutorials and/or read the souce code. On the other hand you can customize nearly everything, my current ~/.wl currently contains 236 lines. So you have to be enduring, but in the end it pays off.

The org-mode integration, on the other hand, is really great. I'm able to create entries attaching a link which I only have to visit to get a mime-view buffer with the email. Yay! Additionally you've got all the Emacs power when it gets to editing text — which isn't a real advantage since I've been using Emacs to compose mails with Mutt for ages.

But all in all it feels like the right decision to switch to Emacs for mails. I'm curious how it will work out in the future!


Awesome Emacs

Published at by Christian Kruse, updated at
Filed under: emacs

Awesome Emacs is „a community driven list of useful Emacs packages, libraries and others.“ I think this project is great, I already found two really neat packages through this! You might wannt to have a look at it if you are an Emacs user.


Gadgets for self-monitoring

Published at by Christian Kruse, updated at
Filed under: motivation, society

In the last few years one can clearly notice a trend to self-monitoring. Hart rate monitor watches are available for a few bucks, Nike's fuel band and the fitbit are a big success, apps for monitoring sport activities (e.g. runkeeper or runtastic) are available. Apple presented its health kit and Google's response Google Fit has been presented as well. I've been at the band waggon as well, I really liked tracking myself. I even tried out sleep monitoring, as offered by several mobile apps.

But honestly it just led to geeking about the measured stats. It didn't lead to more sports activities, the opposite was the fact: due to some obscure defiance-ish reasons I stopped doing sports. While originally sports was a good possibility to have some alone-time and clear my mind it mutated to some pressure-induced compulsion not only to do sports but also to be successful with it.

Thus I decided to stop monitoring myself completely (well, I do measure blood pressure regularly for health reasons: high blood pressure is a good indicator for a lot of diseases). And as a consequence of this, I now can go out with the dog for a long, fast walk or do some jogging or biking and get my mind clear again. This is really relieving.

By the way, I'm a regular reader of The Joy Of Tech and they seem to think about this similiar.


Emacs as a PostgreSQL client

Published at by Christian Kruse, updated at
Filed under: emacs, postgresql

Today I noticed that one can use Emacs as a client for SQL databases in general and as a PostgreSQL client in special. This is great news, as the CLI for all databases I regularly use suck. With Emacs I have all the tools handy I need: searching in the output, copy & paste, etc. In short: all the Emacs greatness I'm used to. You can even send a region or a complete buffer to the database!

Trường wrote a good post about this topic. Definitely a must-read for Emacs users!



Published at by Christian Kruse, updated at
Filed under: ergodox, ergonomic, keyboard

I struggle with RSI or tendinitis or something like that (never went to a doctor since there is no way to deal with it). That means that I quickly suffer pain in my hands when using standard keyboards. When using „ergonomic“ keyboards (the name is sometimes worth just a laughter) like the Microsoft Ergonomic 4000 keyboard it is ok most of the time, but when my hands are cold or when I work for a long time on the keybard the pain appears as well. Thus I've been looking for alternatives. While things like the Kinesis truely ergonomic keyboard and the Maltron keyboard may be good for my hands, the costs are really extensive. The Maltron keyboard is available for about 700€ and the Kinesis is available for about 400€ as well.

While I'm willing to spend that money to get less pain in my hands, I stumbled upon another alternative: the ErgoDox. This is an FOSS-Keyboard (meaning that the hardware layout as well as the firmware is available under a FOSS license), it is split (very good for the hands) and it has an ergonomic layout. And the best of all: it is available for round about 200€. Yay!

ErgoDox keyboard halfway finished

You can get it at Massdrop as a DIY kit.

ErgoDox keyboard halfway finished

Currently I use a QWERTY layout on it, but since I have to re-learn typing either way I think I will switch to DVORAK. According to Xah Lee DVORAK can weaken the impact of RSI symptoms a lot.

ErgoDox keyboard finished

I will report back as soon as I re-learned and have some experiences with it.