Skip to content

Instantly share code, notes, and snippets.

View eikenb's full-sized avatar
🏠
Working from home

John Eikenberry eikenb

🏠
Working from home
View GitHub Profile

Builds tactics.

  1. >400 shields and PPDs - best you can do is buy some time to high wake away. Shields give you time while PPDs helps with Grom bombs.

  2. Agile build - gankers are generally built for catching runners and use fixed wepaons, so you can often out maneuver them while waiting to high wake.

  3. Speed build - go faster than 800ms and you can outrun them. Over 800 with decent shields and you can ignore them. See icourier bubble taxi builds.

@eikenb
eikenb / mirror-backup.sh
Created January 30, 2021 20:26
create live backup on external usb drive
#!/bin/sh
set -e
if [ "$(id -u)" -ne 0 ]
then
echo "Rerunning with sudo..."
fullpath="$(readlink -f $0)"
exec sudo $fullpath
fi
@eikenb
eikenb / zsilver.zsh
Last active October 17, 2020 00:32
zsh/terminal based application launcher
# Preamble. This is cobbled together as it is spread out a bit on my system.
# It might require some fiddling.
# Script to launch terminal/launcher window. Bind this to a key.
# -------------------------
#!/bin/sh
export ZDOTDIR=$HOME/.zsh/zsilver
border="rgb:ff/d0/78" # yellow/orange
width=$(xwininfo -root | grep Width | awk -F ': ' '{print $2}')
@eikenb
eikenb / pairs.kak
Last active July 3, 2020 00:29
initial, not very good version of map based auto-pair
define-command -params 1 maybematch %{
execute-keys "<a-l>"
evaluate-commands %sh{
if [ "$kak_selection_length" -lt 2 ] && [ "$kak_cursor_column" -gt 2 ]
then
printf "execute-keys i${1}<esc>"
fi
}
execute-keys "<a-;>;h"
}
@eikenb
eikenb / pairs.vim
Created July 1, 2020 05:24
Simple auto-pair vim config.
if exists("did_pairs") | finish | endif
let did_pairs = 1
" wiki page: http://vim.wikia.com/wiki/Automatically_append_closing_characters
" let me turn it off when I want
let b:PairOn=1
function PairsToggle()
if exists("b:PairOn") && b:PairOn
let b:PairOn = 0
@eikenb
eikenb / buster-network.md
Created July 30, 2019 19:50
Updated network stack for Buster

For years my network stack has been based around ifupdown and wpa_supplicant but after a recent experience fighting them I decided to look to see what Buster offered and came out with a pretty nice new stack.

Old stack: ifupdown, ifplugd, dhcpcd, wpa_supplicant, resolvconf, unbound

New stack: systemd{-networkd,-resolved} + iwd [+ networkd-dispatcher]

The new setup has systemd-networkd network device setup, networkd-resolvconf handling DNS lookup and caching, networkd-dispatcher

@eikenb
eikenb / ssh-wait-test.go
Created December 4, 2018 21:11
ssh.Wait only unblocks once
package main
import (
"flag"
"log"
"net"
"os"
"sync"
"golang.org/x/crypto/ssh"
@eikenb
eikenb / main.go
Created November 3, 2018 19:19
sftp-server-looping
// An example SFTP server implementation using the golang SSH package.
// Serves the whole filesystem visible to the user, and has a hard-coded username and password,
// so not for real use!
package main
import (
"flag"
"fmt"
"io"
"io/ioutil"
@eikenb
eikenb / mirror-backup
Created September 22, 2018 00:03
My script to make a bootable mirror of my laptop drive.
#!/bin/sh
set -e
if [ $(id -u) -ne 0 ]
then
echo "Rerunning with sudo..."
fullpath="$(readlink -f $0)"
exec sudo $fullpath
fi
@eikenb
eikenb / ssh-client-key.go
Created September 14, 2018 02:55
ssh client key connect
func keyConfig() ssh.ClientConfig {
PORT = "22"
sshagent, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
if err != nil {
panic(err)
}
signer := ssh.PublicKeysCallback(agent.NewClient(sshagent).Signers)
sshConfig := ssh.ClientConfig{
User: os.ExpandEnv("$USER"),