Skip to content

Instantly share code, notes, and snippets.

…at any cost

Martin Kühl mkhl

…at any cost
View GitHub Profile
mkhl /
Created Jun 26, 2020 — forked from michael-simons/
A bash script waiting for port 7687 to become available without netcat or similar.
until (exec 3<>/dev/tcp/ &>/dev/null; do
echo -n .
sleep 1
View realpath
# Usage: realpath [<path>...]
# Print each real absolute <path>, resolving symlinks
# Defaults: <path>: read from stdin
case $# in
while read path; do
echo "${path:A}"
mkhl / acme-editorconfig
Created Apr 1, 2019
EditorConfig support for Acme
View acme-editorconfig
. 9.rc
. $PLAN9/lib/acme.rc
fn convert {
awk -F'=' '
$1 == "indent_style" {
print "Spaces", ($2 == "space") ? "on" : "off"
mkhl / acme-autoformat
Last active Apr 5, 2020
My current autoacme event handler script
View acme-autoformat
. 9.rc
. $PLAN9/lib/acme.rc
fn hashbang {
awk '
mkhl /
Created May 16, 2018
Acme auto commands - like acmego, but generic

The specific profile doesn’t actually matter!

Take any dark profile (both Pastel and Tango are great!) and change the background to #292929 (the colour of the dark iTerm title bar). I also like to activate Cursor Guide and use a translucent greyish colour.

iTerm Settings

mkhl /
Last active Nov 2, 2017 — forked from FND/
complate-wsgi sandbox
$ python3 -m venv venv
$ . venv/bin/activate

$ pip install js2py gunicorn

$ gunicorn app:app


mkhl /
Created Nov 2, 2017
Tail-recursive Tree fold using CPS

Tail-recursive Tree fold

Both the original and the proposed solution assume an associative and commutative combining function (g).

That bugged me so a colleague and I put this together.


Keybase proof

I hereby claim:

  • I am mkhl on github.
  • I am mkhl ( on keybase.
  • I have a public key ASDOZDDY2WKJiu0GMeVXecOv_KalOkFnJhahWX-vYhWcAAo

To claim this, I am signing this object:

View snippets.cson
# Demonstration for
# Expand this snippet, type "foo" for the first placeholder, hit <Tab>
'Test: Adjacent Tabstops':
'prefix': 'a'
'body': '${1:abc}${2:def}'