the darnedest thing is written and designed by Steven Hum with the following..

production environment


the darnedest thing

comments processing

  • Ruby Mail library
  • Gmail spam filtering

web server

hosting services

Other tools used to construct this site can be found here.

keyboard layouts

are a primary subject of interest on this site. Writing and caring about the tools to do so seem to go hand in hand.

The current daily driver being used to compose these blog entries can be found in daily beakl.


the current dotfiles containing the sources, configuration files and scripts described in the various articles can be found here.

To avoid an unnecessarily large download including all historical commits, pull only the latest repository files with..

git clone --depth 1

»»  about

monday, 14 march 2016

it’s a slow and methodical process. Step by step, extending an already feature rich window manager, molding it to one’s will. Fixing corner cases that invariably pop up over extended usage. Then adding visual flair with ricing scripts to enhance the user experience and keep it fresh.

Distraction free plugins for vim complete my particular setup which is now complemented by an artful desktop. Time to return to the other threads on this site which were always the original intent of this hardware (keyboard and layouts) and software detour to create a publishing environment..

comment ?


monday, 10 may 2021

i have been living with my mock up of a monospaced Atkinson Hyperlegible font now for some weeks. First, by simply substituting the Iosevka character variants that most closely matched their Hyperlegible counterparts, then a much lengthier concerted effort to tailor their individual shapes as closely as possible – the ascenders and descenders, their heights and roundness.

The end result has been quite satisfying and has exceeded all my expectations and, until an official monospaced font variant is released, if ever, will remain the default font for my development and writing environment for the foreseeable future. It’s that delicious – okay, i am a font nutter.

But it did not remain solely on my Linux desktops for long..



i had tried previous versions of Iosevka on my Kindle Oasis but found the half cell width of my coding oriented fonts.. well, flatly technical looking and not engaging for immersive reading. What a change this font presents with its extended width!

Tiempos Text and the Atkinson Hyperlegible fonts still remain my all time favourite serif and sans serif fonts on the Kindle. But these past weeks i have found myself continually returning to this monospaced font.

There is no doubt the Atkinson font is the easiest on the eyes. It imparts the sensation that it is making one read faster (whether you intend to or not!), like running down an incline effortlessly. But this monospaced variant has a charm that is very visually pleasing to my eyes – the fixed cell width giving the letters a uniform geometric presentation.

With a monospaced font one would expect to lose significant word density on the page but this is easily rectified with its incredible legibility at even the smallest font sizes, a trait it holds in common with the Atkinson font. Of course, if you prefer your reading material fully justified, then proportional fonts are the way to go.

But if you have a fondness for typewriters and old manuscripts – i am dating myself here – and left justification, or simply are drawn to fonts that breathe on a page with a subtle airiness around the characters and words, then this may be right up your alley. And with the right line spacing and margins, it feels very much like reading the “draft” of a novel – part of the allure, no doubt, that keeps me returning to it.

font weight

after some time with “Monolegible” on the Kindle, i decided i preferred the “book” weight of the font. It was possible to more closely match the contrast level of the Atkinson Hyperlegible font, the original “regular” font being either a shade lighter or darker on my Oasis – yes, i am that anal, but it also just felt a touch better which should be no surprise from its heritage. Unfortunately there is no means to customize the boldness increments as there is the font sizes to get a match.

Copying over the “book” weights of the font are easy enough, however, their font names effectively disable the “bold” fonts – their being associated with the “regular” and “italic” font names. Enter ttx to convert fonts to XML and back..

fonts='*-book *-bookitalic *-bold *-bolditalic' for i in $fonts ;do file=$i.ttf ttx $file done sed -i -e 's/iosevka Book Version/iosevka Regular Version/' \ -e 's/iosevka[ -]Book/iosevka/' \ -e 's/Book/Regular/' \ *-book.ttx sed -i -e 's/iosevka Book Italic Version/iosevka Italic Version/' \ -e 's/iosevka[ -]Book/iosevka/' \ -e 's/Book Italic/Italic/' \ *-bookitalic.ttx for i in $fonts ;do file=$i.ttx ttx $file done

and rename the “book” fonts as “regular” and “italic” to inherit the “bold” font references.

character tweaks

the capital M of the book weight appears heavier (to my eyes at least) than the remaining character set – this is purely an optical illusion particular to the flat-bottom M and its narrow spacing between the vertical and angled strokes, despite having the same stroke width as the other characters.

Replacing the book weighted character with its “regular” weighted version – and its ever so slightly thinner stroke width – gives its strokes more breathing room to create the balanced contrast (illusion) on the e-ink page..

echo " Open(\$2); Select(0u004d); Copy(); Open(\$1); Select(0u004d); Paste(); Generate(\$1); " >/tmp/fontforge.script for i in *book*#1.ttf ;do ditto M $i case $i in *italic*) file=*-italic.ttf ;; * ) file=*regular.ttf ;; esac fontforge --script /tmp/fontforge.script $i $file done

Did i mention anal somewhere?

The final adjustment replaces the standard Em dash which closely resembles the Dash due to the fixed width constraint of the monospaced font with the broken or (single character faux) 2 Em dash..

echo " Open(\$1); Select(0u268b); Copy(); Select(0u2014); Paste(); Generate(\$1); " >/tmp/fontforge.script for i in *#1.ttf ;do ditto emdash $i fontforge --script /tmp/fontforge.script $i done

And voila! A font i find myself reading with more and more.

During the hunt for a matching lower case tailed q to match the Atkinson Hyperlegible font, the author of Iosevka stated that “Iosevka is NOT a typeface targeting dyslexia, low-vision legibility, or anti-tampering”. Despite that claim and Iosevka’s focus as perhaps the most powerful coding font platform there is, i think Iosevka manages to address those issues as well as any monospaced font can with the character variants it provides..

Producing IMO a most beautiful monospaced font for both coding, writing and.. reading.


font and FONT_RAMP
font tweaks

comment ?

split chords

monday, 10 may 2021

waiting on 15g springs for the Splitography, porting the chorded home row layout to it was inevitable as i further explore this minimal finger travel layout approach and the power of DennyTom’s chording engine.

While my own QMK libraries have been refactored over time to facilitate usage across the several keyboard types i use, i can say unequivocally that the json file parsing approach taken by DennyTom is vastly preferred with its table driven specification eliminating almost all of the keyboard layer and custom keycode C language code whilst improving the readability of the layout design and rendering much easier maintenance. Simply brilliant.

In this particular configuration, the Splitography’s steno number row has been relegated to just that function – those keys are available for a myriad of applications, i just don’t have a use case need for them outside of steno. So the bottom two rows, just like in steno (and the Georgi), it is.

The primary difference lies in the four steno thumb keys (to the Georgi’s six), requiring chording of the keys to allow the same number of thumb layers – a minor change that retains the overall BEAKL Wi layout of the Georgi and is a snap to define in the json file for the parser to do the rest! The other difference is the assignment of the inner (versus outer) columns for the toggle layer keys – this is a function of the keyboard’s different physical design, and thumb and at rest finger key positions..

beakl wi

Splitography BEAKL

chord output
: Y “ :: ”
Shift Esc Enter
Shift I Space
Space Backspace Enter
Shift Backspace Backspace (autorepeat)

shift chords

Splitography BEAKL Wi Shift

chord output
Shift : ;
Shift , ?
Shift . !
Shift - _
Shift ‘

leader capitalization

Splitography BEAKL WI Leader Capitalization

chord output
: Space “: ” + one_shot_shift
, Space “, ” + one_shot_shift
. Space “. ” + one_shot_shift
Shift : Space “; ” + one_shot_shift
Shift , Space “? ” + one_shot_shift
Shift . Space “! ” + one_shot_shift
Shift Space “ ” + one_shot_shift
: Space Backspace : <enter> + one_shot_shift
, Space Backspace , <enter> + one_shot_shift
. Space Backspace . <enter> + one_shot_shift
Shift : Space Backspace ; <enter> + one_shot_shift
Shift , Space Backspace ? <enter> + one_shot_shift
Shift . Space Backspace ! <enter> + one_shot_shift
Shift Space Backspace <enter> + one_shot_shift

symbols and regex

Splitography BEAKL Wi Symbols

chord output
J < ” <- “
> % ” -> “
Esc = !=
* & ~/

Splitography BEAKL Wi Regex

chord output
* [ .*

Splitography BEAKL Wi Symbols Regex

numbers and fn keys

Splitography BEAKL Wi Number Pad

chord output
/ 4 :
, 8 ;
Postfix G or “ “
Postfix 0 0x
toggle action
Postfix G -> “ “
Caps Upper case HEX (retoggle to disable CapsLock on exiting layer)
Brkt Square -> Round -> Curly brackets

Splitography BEAKL Wi Fn Keys

shortcuts and cursor

Splitography BEAKL Wi Cursor

chord output
XPaste Private Compile time string
Paste Public Compile time stringString


Splitography BEAKL Wi Steno

the only gotchas during this port were the NKRO and mouse key configuration options. While enabled for the non-chorded Splitography configuration, these needed to be disabled with the chording engine – at present**.

Not doing so causes a dfu-programmer “Bootloader and code overlap” error. This is a good reminder to always initially turn off ALL configuration options when configuring new keyboards.

Other than that, configuring the Splitography with the DennyTom chording engine could not have been simpler.

**Memory requirements are dependent on the keyboard and its MCU. Future chording engine code optimizations may free up the necessary memory. This use case has no need for these options, the parsing/chording paradigm far outweighing any negatives AFAIAC.

Chording engine
Json Source

comment ?