# Day 750

## English / Slack

Unfurl | Definition of Unfurl by Merriam-Webster - “expand, extend, fan (out), flare (out), open, outspread, outstretch, spread (out), stretch (out), unfold”

## Fastmail calendar

Things I love so far:

• Can move/change single recurring events without issues, asks whether to do it for one or all of them only when I use the “Edit” button! Things I miss:
• Ability to “copy” an event in another calendar. Though I consider the need to do this an antipattern, and maybe I’ll find a workflow where I don’t need to do this often.

## German / Deutsch

das Teufelszeug - appalling/hellish/infernal stuff (heard at work)

# Day 749

## .vimrc conversion saga

In Day732, I changed my ./vimrc to utf8 from latin-1, to be able to use the “◦” symbol to mark trailing spaces.

Well, it broke the vim macros for the link wiki (from Day 450) :( I had the latin version of the .vimrc backed up, falling back to it for now.

I need to think of a way to save these macros better, because even copypasting them to this dtb didn’t work and I had to do text encoding magic. I think this is exactly the time one should use a proper scripting language like Python, and write another small qutebrowser script that changes the contents of the filled textarea.

link links to pages, post_url links directly to posts inside _posts.


{{ site.baseurl }}{% link _collection/document-name.md %}
{{ site.baseurl }}{% link _posts/2019-03-06-post-title.md %}
{{ site.baseurl }}{% link services/index.html %}
{{ site.baseurl }}{% link /assets/documents/pal-codes.pdf %}




{% post_url 2019-03-06-post-title.md %}
{{ site.baseurl }}{% post_url 2019-03-06-post-title.md %}
{{ site.baseurl }}{% post_url /folder/2019-03-06-post-title.md %}



Copied directly from this excellent page, I never found this explained in such a readable way: How to create internal links in Jekyll | Web Island Blog

## TODO Jekyll / dtb / meta

Write a small script that allows me to easily link to days just by their day number.

Before URI contained the date and was hard to link to. Now I changed this in _config.yml:

permalink: :title:output_ext


Links are now like this: https://www.pchr8.net/d/dtb/day749.html

## Python representing infinity

float('inf') works for floats, but there’s no way to do it with ints. math.inf is also a float. 1

## vim interrupt operation via <Ctrl-C>

Made a typo, vim attempted to indent 20k lines (and started counting “xx lines to indent…”, intuitively pressed <Ctrl-C>, it successfully interrupted the operation!

https://scrolller.com/

# Day 748

## matplotlib reverse colormaps

Every colomap has a reversed version named *_r (such as gray_r)! 1

## Papers - NLP - Chargrid

[1809.08799] Chargrid: Towards Understanding 2D Documents

# Day 747

## Fastmail shortcuts

Keyboard shortcuts | Fastmail

## Qutebrowser passthrough

Simplified bindings for passthrogh, added last line to ~/.config/qutebrowser/config.py

config.unbind('<Shift-Escape>', mode='passthrough')
config.bind('<Ctrl-Shift-+>', 'leave-mode', mode='passthrough')
config.bind('<Shift-I>', 'enter-mode passthrough')


Would allow me to use websites’ own shortcuts more often.

# Day 744

## python serialization using dill

dill is like pickle, but serializes more stuff!

## python pycharm unittest

Yet another way one can get the “no tests to run” error - if a test is not called test_..., it won’t be ran.

# Day 742

## i3 sticky window / pin window

It’s easy to do a sticky window in i3!

Added to ~/.config/i3/config:

# Sticky window
bindsym $ms+p sticky toggle  ## Seaborn catplot titles (plotting, pandas, visualization) sns.catplot(x="target",y="score",hue='score-type',data=d,kind='bar',col='bundle',col_wrap=2,sharex=False,sharey=False).set_titles(col_template='{col_name}')  The set_titles(col_template='{col_name}') removes the usual “x=y” title in each of the sub-plots! # Day 741 ## qutebrowser crashing Yet another time qtbrowser started crashing, yet another time fixed it by removing state and sessions from ~/.local/share/qutebrowser/. I blame me messing with qt versions last week. ## ag Somehow magically I don’t have to escape anything in the regexes when using it! ag "(VISION_|short)" * ## passing empty parameters to python argparse / cli? python test.py --mode=  I’ve been using args a la -w is, but -w=is also works, and therefore python3 myprogram.py -w -another=opt is perfectly valid! Python parses it as empty string (that casts to False). ## fc linux meaning TIL fc stands for “fix command”! ## vim s/ replacing stuff Discovered that if you just want to remove something, %s/from works (without the second // part at all) # Day 738 ## pycharm optimize imports Auto import—PyCharm ## python argparse Seems the best current default way to do cli options! Docs tutorial is as accessible as usual: Argparse Tutorial — Python 3.9.1 documentation parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) # show default args in help parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) # allow newlines in help text parser.add_argument("-lp", "--localpath", help="Local path. \n %(default)s", default=local_path) # add default text in help text manually  ## Python shadowing modules When creating argparse.py, don’t be surprised if you can’t use argparse from import argparse. 1 ## Python to read, TODO Nice article: PyFormat: Using % and .format() for great good! ## ag as grep alternative for code I should make an effort to learn it and use it. ag -G "component.*yaml" regex - searches for regex inside all files whose path matches the regex after -G ag --python "myregex" automatically looks for it in all python files, and really nicely outputs matches! ## vim delete lines not containing a pattern g!/pattern/d, as opposed to the usual g without exclamation mark. ## Using less to copy cli stuff with weird linebreaks If command returns output with newline breaks that are ignored when copypasting directly, using command | less seems to make it work - I can copypaste from there without problems. # Day 737 ## Change volume of bluetooth headphones via cli / pactl I wasn’t able to do it the usual amixer way, because: You are running Pulseaudio, which uses ALSA to drive soundcards, but which connects to Bluetooth speakers without involving ALSA. When you set ALSA volumes with amixer, Pulseaudio notices and corrects the source/sink volumes[…] 1 Command to do it directly through pulseaudio is: pactl set-sink-volume name_of_bluetooth_speaker +3% Added this to ~/.config/i3/config: bindsym Mod1+r exec pactl set-sink-volume bluez_sink.60_AB_D2_43_E9_C5.a2dp_sink +5% bindsym Mod1+c exec pactl set-sink-volume bluez_sink.60_AB_D2_43_E9_C5.a2dp_sink -5%  ## Nomacs picture viewer remove animations + frameless • Changed transition time to 0 in Settings -> Display -> Slideshow • <F10> leaves only the current picture (‘frameless’), a la scrot; Though in this mode drag-n-drop doesn’t work! ## zsh text colors list Found this when autocompleting something else: (12:36:26/10136)~/$ which spectrum_ls
spectrum_ls () {
for code in {000..255}
do
print -P -- "$code: %{$FG[$code]%}$ZSH_SPECTRUM_TEXT%{$reset_color%}" done }  Returns 255 lines with 255 colors, they look neat: ## To read - matplotlib TODO: The Many Ways To Call Axes In Matplotlib | by Jun | Towards Data Science And in general # Day 736 ## Deutsch das wasserzeichen - Watermark! (Heard at work) die dringlichkeit - urgency. “Besondere Dringlichkeit”. Verschiedene Dringlichkeiten. (heard at work) ## Bluetooth / Linux blueman is a nice semi-gui suite for everything. bluetoothctl is an interactive cli. ## Linux - remove noise from microphone with Noisetorch lawl/NoiseTorch: Real-time microphone noise suppression on Linux. - creates virtual devices that are the same as inpucts, but filter the noise. Works really well for me! (Single binary). Works also for filtering voice in outputs! Listening to songs through it is weird. ## taskwarrior zsh sprint env variable Changed date format from %+V to just %V, which gives a sprint like 01 instead of 1 (which in turn removes the need for sprint.is:1 filtering in taskwarrior, now sprint:01 is a unique identifier) ~/.zshrc: export SPRINT=$(date +%V)


# Day 735

## matplotlib pyplot make certain color transparent

For this, a subset has to become bad values, and a cmap has to set what to do with them.

my_cmap = copy.copy(plt.cm.get_cmap('gray')) # get a copy of the gray color map
plt.imshow(thing, cmap=my_cmap)


1

As for bad values, I wrote a function similar to this to make them arbitrary:

def get_bad_values(matr, value=0):
new_matr = matr.astype(np.float)
new_matr[new_matr == value] = np.nan
return new_matr


Note that np.nan can only replace a np.float, never an int!

# Day 734

## Updated i3 config for toggling between modes

Made everything simpler, based on what I usually really need:

bindsym $ms+s layout toggle tabbed stacking bindsym$ms+Shift+s layout toggle split


TODO - something for “focus tab N in currently focused container”, a la what I have in qutebrowser/intellij.

## Yearly dtb ritual of updating year

.. TODO - fix this, finally. +DAY=$(((365)*2+10#$(date +%j)))

## ideavim splitters

Added this to ~/.ideavimrc for moving between splits

map <leader>h :action PrevSplitter<CR>


# Day 733

## record terminal on linux with script

The script utility exists, and is installed by default on at least two systems I have access to. Works really well for interactive sessions!

script --timing=time.txt script.log
scriptreplay --timing=time.txt script.log


Seems to work when ran through screen, even when the screen is detached!

How to Record and Replay Linux Terminal Sessions using ‘script’ and ‘scriptreplay’ Commands

## output terminal live on another screen

script -f /tmp/lecture1.scrpt
tail -F /tmp/lecture1.scrpt


-f is for “Flush output after each write.” (as opposed to “write everything to the file when script is terminated”)

# Day 732

## Markdown newline inside quote

Couldn’t understand why there are newlinen in my yearly review blog post from last year. So - in markdown, two spaces and then a line break create a line break.

So, like this:
One
two

Three
Four
Fine, no spaces Six, no spaces

Highlight to see spaces:

So, like this:
One
*two*

> Three
> Four
> Fine, no spaces
> Six, no spaces


## vim show trailing whitespaces

In connection to the above, yes. Updated ~/.vimrc with the following:

set listchars=tab:\:\
set listchars+=trail:◦


Looks like this:

## vim CONVERSION ERROR - convert file to different encoding / save with other encoding.

For the above had to convert my ~/.vimrc to utf-8, not the default latin-1:
:w ++enc=utf-8

## i3 keybinding to make a screenshot and put it into jekyll assets directory

This makes a screenshot as usual, opens it, opens the jekyll dtb assets folder, and puts the screenhsot name in the primary clipboard. I look at the screenshot, if I like it - I drag it directly to the folder, then use the vim/jekyll binding to insert it in the markdown.

bindsym Mod3+Shift+s --release exec scrot -s -e 'mv $f ~/s/screenshots && nomacs ~/s/screenshots/$f & echo -n $f | xclip -selection c && thunar ~/o/dtb/assets/pics/screenshots/'  echo -n is echo without newline (otherwise it gets fed to xc with newline appended). Added to ~/.config/i3/config. Feels incredibly ugly and unstable but works for me I guess. Ideally it’s long enough to be replaced with a bash script, but not sure it’s worth it. But if I end up doing more of these, I’ll create a one custom big parametrized bash script that I’ll call like ./big-script.sh screenshot. ## vim jekyll binding to insert screenshot picture map <leader>p i![](https://pchr8.net/d/dtb/assets/pics/screenshots/<esc>pa)<esc>0lli in ~/.vimrc Inserts a picture with filename from primary selection, then goes back to the description. Used with new i3 screenshot keybinding from above. a in vim is “insert from next character”, so like A but with words. I really do need to use a/e etc in vim more often. ## camel / snake / kebab notation, note to self. I seem to use more of-this-notation lately, instead of this_notation. Formalize this, not just for consistency, but to use this to my advantage - vim and company see these-words as separate, and this_word as one. ## bash echo without newline at the end echo -n doesn’t add a newline. Especially useful combined with xclip. # Day 730 ## Haiku 1662 or 1663 寛文二年 His first known hokku at age 19: 春や来し年や行きけん小晦日 haru ya koshi toshi ya yukiken kotsugomori has spring come or has the year gone? second-to-last-day Tr. Barnhill what is spring that came or was it the year that went? the Second Last Day Tr. Ueda Ist das Frühjahr gekommen oder das Jahr vergangen? Der vorletzte Tag. Tr. Udo Wenzel The Ukrainian translation seems imprecise, but still remains my favourite: Аніяких думок не лишилось в моїй голові наприкінці року! Чи вже про весну, чи про минулий рік думати? Передостанній день року. Переклад Геннадія Туркова ## Bible ибо начальник есть Божий слуга, тебе на добро. Если же делаешь зло, бойся, ибо он не напрасно носит меч: он Божий слуга, отмститель в наказание делающему злое. Послание к Римлянам 13:4 – Рим 13:4: https://bible.by/verse/52/13/4/ # Day 728 ## Taskwarrior / zsh Updated zsh alias to include non-work tasks tagged +A or +O from current sprint: s () {task s $$project:w or \(sprint:(date +%-V) \(+A or +O$$\) \) "$*"}


or has to be lowercase, brackets in taskwarrior’s filtering have to be escaped.

Use a formula like this:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1xrGsOD-yXuORqd8cFg21XOo3ZIw9QbSiNDcnSEatlPM/edit#gid=0", "Sheet1!A:A") 1 For me it was ; as separator; may need to confirm connecting sheets.

# Day 722

Changed colour of +F tasks to a better shade of gray in .taskrc

# color.tag.F=color239
color.tag.F=color244


## Show all available terminal colors

curl -s https://gist.githubusercontent.com/HaleTom/89ffe32783f89f403bba96bd7bcd1263/raw/ | bash


(yay for curl | bash!)

## German

• Slashes
• der Schrägstrich - forward slash (/)
• umgekehrter Schrägstrich - backslash (\)

TODO - all German IT words in one place, and add them to Anki

## Intellij idea structural search and replace

Structural search and replace examples—IntelliJ IDEA is neat! Templates are like this:

$Instance$.$MethodCall$($Parameter$)


Note the “target”, usually it’s set to a complete match, but by call and by params exists too.

I had to disable ideavim, because it was doing some weird formatting by itself with brakets and indents that broke checkstyle.

Filters are also important - $params$ will catch only what.function("one"), but won’t what.function(one, two) - had to change count to be [1, +inf]. (1, not 0, because I needed to avoid replacing what.function().)

“Expression cannot be replaced by non-expression” - if you add a ; at the end of the template, it’s an expression now, and the replacement also needs a ; now.

## Java “do nothing” instruction (a la pass)

; works! 1 A bigger one that makes checkstyle happy is assert true;

# Day 721

## Deutsch

• vorkauen -> pre-chew (or “explain with crayons” metaphorically)
• die Achillesferse - Achilles’ heel

# Day 718

“Pinning” a screen makes it only big screen you see.

# Day 716

## grep escaped quotes without quotes

It’s possible not to use quotes if have just escaped stuff.

grep "\"Thinker" == grep \"Thinker

## Til - decompression bomb

After finding a weird error in PIL, found this: Decompression bomb protection · Issue #515 · python-pillow/Pillow

Zip-bombs live on and prosper it seems :)

# Day 715

## ncdu / ncurses interface to list big directories

ncdu is a little neat program that first scans all the subdirectories of the current one and returns a nice visual navigable list.

d to delete selected folder, ? for help.

## zip recursively excluding folder or some files

zip -r result-small.zip ./ -x 'unscoped/*'

-x is a regex of files to exclude. 1

## Diff two folders

diff -rq folder1 folder2 diffs contents of files inside the two folders.

## Daff diff epsilon

daff diff can accept a -d parameter giving an epsilon, changes of numbers smaller than eps won’t be shown in the diff!

## screen

screen -r seems to accept not just the full name of the screen to attach, but even just the first letters!

# Day 711

## qutebrowser

Started to crash suddenly. git pull-ing didn’t help, but it and recreating the virtualenv using scripts/mkenv.py did.

# Day 708

## German

der werkzeugkasten - toolbox/kit

## vim foldignore with foldmethod tab

This makes empty newlines be part of the fold: 1

" Ignore empty lines when using tabfold
:set foldignore=#<CR>


## jq sorting

.. exists and works. 2

.one.two|=sort_by('.whatever')|.next.thing

# Day 704

## maven version ranges

(Also used in input of some other internal tools) They are: 1

Range	Meaning
1.0	x >= 1.0 * The default Maven meaning for 1.0 is everything (,) but with 1.0 recommended. Obviously this doesn't work for enforcing versions here, so it has been redefined as a minimum version.
(,1.0]	x <= 1.0
(,1.0)	x < 1.0
[1.0]	x == 1.0
[1.0,)	x >= 1.0
(1.0,)	x > 1.0
(1.0,2.0)	1.0 < x < 2.0
[1.0,2.0]	1.0 <= x <= 2.0
(,1.0],[1.2,)	x <= 1.0 or x >= 1.2. Multiple sets are comma-separated
(,1.1),(1.1,)	x != 1.1


# Day 702

## Python ast literal_eval

literal_eval - ast - Python documentation - Kite

Safely evaluates Python expressions, nice to use for input.

may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

## jq colours

To pipe output with jq to for example less preserving the colours, use -C. (Simialar to --color=always etc.)

jq . $filename -C | less # Day 701 ## Deutsch selbsterklärend - self-explanatory. ## Bash - do something when a file appears in a directory Wrote this short shell script: #!/bin/bash if [[$1 == "" ]] ; then
echo "Usage:"
echo "$0 whatever" exit fi echo "Looking for filename" echo "$1"
echo "at URI"
URI="http://some.uri/path/$1" echo "$URI"

while [[ true ]]
do
RES="$(curl -I -s$URI | grep 200)"
if [[ $RES == "" ]] ; then #echo "nothing changed" : # https://stackoverflow.com/questions/2421586/what-is-the-bash-equivalent-of-pythons-pass-statement else echo "$RES"
zenity --info --title="DING" --text="$1 finished!" xdg-open$URI
exit
fi
sleep 5
done


## Bash - python pass / do-nothing instruction

• : 1
• true is a command that successfully does nothing.

(false would, in a way, be the opposite: it doesn’t do anything, but claims that a failure occurred.) … in other words, it does nothing, and fails at it.

• In modern shells, :/true doesn’t matter unless you care about buildins.1

## Bash spaces after trailing slashes

whatever
--one=two \
--three=four \
--five=six \
--seven=eight \
--nine=ten


There’s a space after a slash. Spaces after a slash can be seen when highlighting the command in the cli. When you copy it - it may disappear.

# Day 697

## Zsh prompt change based on dev/prod

The script that sets dev/prod sets a variable to 1 if using dev. Based on that variable I get (or not) a red (B) in my zsh prompt.

Did these changes to the theme clean2.zsh-theme:

PROMPT='%{$fg[green]%}(%*/%!)$ZSH_USING_DEV%{$fg[$NCOLOR]%}%B%b%{$reset_color%}%{$fg[blue]%}%B%5c/%b%{$reset_color%}$(git_prompt_info)%(!.#.$) ' ZSH_USING_DEV="" if [ "$USING_DEV" = "1" ]
then
ZSH_USING_DEV="%{$fg_bold[red]%}[B]%{$fg[$NCOLOR]%}" fi  and in ~/.zsrhc alias uc='. ~/s/setenv.sh p' alias ud='. ~/s/setenv.sh d'  ## zsh prompt export variables from a script Using the usual ./ way doesn’t work! Note the . ~/s.. in the script above. Running it as ~/what.sh will create a new shell, export the new values there, and close it. Starting with a . will make it run the script without starting a new shell. 1 # Day 696 ## Confluence tabs + publishing “Publish without notifying watchers” exits. If I paste something from vim that has tabs in it in a Code block, in the Edit window it will look fine, but won’t at the end. Editing again will make it again look fine in the edit window. Moral: use spaces. ## vim tabs If you copypaste things from it to code blocks in jira/confluence it will start being weird. You can do expandtabs/retab to convert it to something that looks just like this with spaces when saved. Though feels suboptimal. # Day 695 ## Multiple monitors / productivity idea If I have a laptop and two external monitors, put the ‘distracting’ things on the laptop monitor and close the laptop. Open it when I’m officially doing a pause. ## My aliases for grep and history I shouldn’t forget that I have g aliased to grep, along with h to history | grep. Just tried this and it works: h vim | g http ## zsh expand all aliases; zsh keybindings; zsh show all files in directory Added this 1 to ./zshrc: expand-aliases() { unset 'functions[_expand-aliases]' functions[_expand-aliases]=$BUFFER
(($+functions[_expand-aliases])) && BUFFER=${functions[_expand-aliases]#$'\t'} && CURSOR=$#BUFFER
}

zle -N expand-aliases
bindkey '^E' expand-aliases


^E is <C-e>. Gets run anytime I use it, without connection to the written text. Neat.

Also found this in ./.zshrc:

# Usage:
#   In the middle of the command line:
#     (command being typed)<TAB>(resume typing)
#
#   At the beginning of the command line:
#     <SPACE><TAB>
#     <SPACE><SPACE><TAB>
#
# Notes:
#   This does not affect other completions
#   If you want 'cd ' or './' to be prepended, write in your .zshrc 'export TAB_LIST_FILES_PREFIX'
#   I recommend to complement this with push-line-or edit (bindkey '^q' push-line-or-edit)
function tab_list_files
{
if [[ $#BUFFER == 0 ]]; then BUFFER="ls " CURSOR=3 zle list-choices zle backward-kill-word elif [[$BUFFER =~ ^[[:space:]][[:space:]].*$]]; then BUFFER="./" CURSOR=2 zle list-choices [ -z${TAB_LIST_FILES_PREFIX+x} ] && { BUFFER="  "; CURSOR=2; }
elif [[ $BUFFER =~ ^[[:space:]]*$ ]]; then
BUFFER="cd "
CURSOR=3
zle list-choices
[ -z ${TAB_LIST_FILES_PREFIX+x} ] && { BUFFER=" "; CURSOR=1; } else BUFFER_=$BUFFER
CURSOR_=$CURSOR zle expand-or-complete || zle expand-or-complete || { BUFFER="ls " CURSOR=3 zle list-choices BUFFER=$BUFFER_

To change it during runtime, <C-A>:scrollback $number. Otherwise ~/screenrc: defscrollback 1000000  ## nextcloud You can drag-n-drop files from the OS to a folder in nextcloud web gui, and it will automatically upload the file directly there (and inherit all permissions) # Day 683 ## Linux disable and reenable laptop keyboard xinput -list Note the id of “AT Translated Set 2 keyboard” (14 in my case), it’s the laptop keyboard, and of the one labeled “master keyboard” (3 in my case). xinput float$id and xinput float $id$id-master. 1

xinput float 14         #disables laptop keyboard
xinput reattach 14 3    #enables it back


## ssh keys (id_rsa, id_rsa.pub)

Errors like:

Permissions 0644 for '/home/me/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.


can be fixed by setting the permissions to 400.

# Day 682

## linux screen

If you leave screen in copy mode and detach, it’ll be in copy mode when you attach it back and give the impression that no new output happened from the time you detached it.

# Day 681

## German ‘alle’ deklination, singular/plural

Das Indefinitpronomen all- - all- -

• Im Singular bezieht sich aller, alle, alles auf die Gesamtheit unzählbarer Nomen.
• Wahrscheinlich Plural = countable?
• Alles steht sehr oft allein und hat eine ganz allgemeine Bedeutung.
• Alles ist gut.

# Day 680

## Markdown subscript/superscript

Don’t forget that I can use sub/sup HTML tags in markdown!

# Day 675

## qutebrowser new profile and basedir

Created a new basedir, where I symlinked the config.py from the original one: 11399 5.11.2020 09:54 ln -s ~/.config/qutebrowser/config.py ../profile2/config/config.py

To run with it, python3 qutebrowser.py -B ../profile2 (-B is the same as --basedir)

My use case would be to run a separate instance with tabs on top instead of in the left, for jupyter and similar. I can’t set tab position per window in the same profile.

## zshrc aliases for output and copy

As I seem to do that often:

xrealpath() {
realpath "$1" realpath "$1" | xc
}

xpwd() {
pwd
pwd | xc
}


Both outputs to screen and saves to buffer. xc is still this:

 alias xp='xclip -selection clipboard o'


## pandas nullable integer data type

Nullable integer data type — pandas 1.1.4 documentation Usual int cannot contain NaN values, and things like df[0].astype(int) fail in that case.

To use nullable ints: df[0].astype('Int64'). (Note - it’s a string. int works both ways.)

## pandas styling

Pandas can do styling! Had no idea: Styling — pandas 1.1.4 documentation

def _color_original(s):
if s[5]==-1:
return ['background-color: lightgrey']*len(s)
elif s[5]>0.9:
return ['background-color: #a5a1ff']*len(s)
elif s[5]>0.8:
return ['background-color: #bebaff']*len(s)
elif s[5]>0.7:
return ['background-color: #d8d6ff']*len(s)
else:
#print(s)
return ['background-color: white']*len(s)

df.style.apply(_color_original, axis=1)


style.applymap() is elementwise, style.apply() is per row/column/table.

# Day 674

## Slack / Electron apps hard restart

<Ctrl-Shift-R> does a hard-restart that sometimes fixes issues with Electron apps such as Slack. (TS)

## pandas invert operator

~ inverts boolean values.

Used like this: dd[~dd.companyName.str.contains("po")] -> “does not contain”

## Online buchstabierung Deutsch

Buchstabieren am Telefon auf Deutsch nach DIN 5009 - Ziffern nach DIN 5009 - Satzzeichen und Sonderzeichen

# Day 673

## Java / German

Sehr schönes deutschsprächiges Buch über Java, dem ich nützen könnte, um mein IT-Wortschatz zu verbessern:

Rheinwerk Computing :: Java ist auch eine Insel - Inhaltsverzeichnis

## Intellij Idea commit window

The commit window is (as with conflict resolution) a fully-functioning text editor, including all the usual ideavim bindings! All changes/diffs get automatically updated as they get changed.

## Intellij idea copy file

“Copy”-ed files get pasted as the filename with all the extensions. “Copy filename” does only the file name, w/o the last extension.

## Intellij environment variables copypaste - check for spaces at the end.

I’ve been bitten by this before at least twice. When copypasting them, for example even from another Intellij running configuration, check for spaces at the end. Not visible at all ever in any of the context one might hope to see them.

## Java REPL / shell / cli

Called jshell on my box. Has tab-completion etc. Really nice!

jshell> NavigableSet original = new TreeSet();
...>
original ==> []
jshell> original.floor("2")
|  Warning:
|  unchecked call to floor(E) as a member of the raw type java.util.NavigableSet
|  original.floor("2")
|  ^-----------------^
$8 ==> "2"  ## Java floor/ceil with Pairs and in general, especially with HashMapS and stuff Think about compareTo() and equals() of the classes if I’m doing something that may need it. Such as using Pairs as keys in a TreeSet and expecting that they will be compared only based on first value. ## Java comparing Integers Java: Integer equals vs. == - Stack Overflow Using !=/== … works only for Integers -128..127. Otherwise they will likely be different Objects => not equal. And of course, -128..127 is exactly the kind of numbers one might see in tests as opposed to real world situations. The way to do it is if (!one.equals(two)) { ## OWASP Java Gotchas TODO read this: Java gotchas - OWASP (Link from AA in the context of comparing integers) ## Linux - run command after some time has elapsed I usually use sleep 5m && foobar, so if I change my mind and ^C the sleep, the next command doesn’t run. – Peter Cordes May 28 ‘16 at 14:07 1 And sleep is installed by default in a lot of places! sleep 5m && foobar From the man page: SUFFIX may be ‘s’ for seconds (the default), ‘m’ for minutes, ‘h’ for hours or ‘d’ for days. Unlike most implementations that require NUMBER be an integer, here NUMBER may be an arbitrary floating point number. ## Duckduckgo (ddg) Wolfram Alpha !bang !wa now plus 12.5h # Day 672 ## diff side by side bash - unix diff side-to-side results? - Stack Overflow diff -y (NB not git diff) does really nice side by side viewing, and still colours output in the columns. ## Learning Java Found Think Java in my old notes and it’s really nice. # Day 668 ## German Ctrl+C - “Steuerung-C” - Strg. ## Random / interesting / patterns / ML / vision Intersection over Union (IoU) for object detection - PyImageSearch TODO + add to Fiamma ## vim verymagic This again, but: • \v - very magic - everything has special meaning • \V - not magic - everything has literal meaning meaning, \ to activate special # Day 667 ## vim TODO For my log, it would be interesting to create a keybinding that prepends current time to the beginning of the new created line and stays in insert mode. ## Zoom shortcuts Hot keys and keyboard shortcuts – Zoom Help Center • <Alt-A> - mute/unmute microphone. ## German resources # Day 665 ## Confluence creating pages drafts Confluence saves draft version of the things you write if a page already exists. If the page is not created yet, no draft version is saved. ## Pycharm project settings Project settings are not separate, but part of the general ‘Settings’. # Day 662 ## Google Sheets / formatting. Conditional formatting, especially the one that does gradient, is really nice. Butif you enter numbers with “.” as decimal point, while the sheet has “,” as decimal “point”, it will silently fail and color everything white. # Day 661 ## German / Denglisch • Gemerget / Gemergt - no consensus :) 1 • „mom“ heißt „Moment Mal“ oder „Einen Moment bitte“. 2 • “Aufruf der Java Platform” = “call” in IT context • “gelinde gesagt” = “мягко скажем”; gelinde = mild, soft. ## git/bitbucket/intellij pull requests and resolving conflicts TODO: ## TODO grep regex Lookarounds look useful: Regex Tutorial - Lookahead and Lookbehind Zero-Length Assertions If TC triggers Sonar, it will provide a link to it once it finishes in the build log! (Same for CheckStyle - if it breaks because of it, going to the error and scrolling up in the log will lead to the problematic file and line.) ## tig (git) TS showed it to me some days ago, installed it, does really nice and colorful visualizations of branches statuses etc etc etc. Keyboard-driven and configurable and basically everything I might want, including easy to remember name. ## pandas / pyplot bar plots This is awesome: Bar Plots in Python using Pandas DataFrames | Shane Lynn # Day 660 ## Corona Ukraine Система моніторингу поширення епідемії коронавірусу ## Zoom annotations TL;DR use only one screen and they work. I have a potential fix for this! I have 2 screens (internal laptop monitor, and external monitor). I noticed that the problem only presents when I’m using “dual monitor” mode and have “gallery view” enabled. The controls also don’t appear if I have “full screen” enabled. They also won’t appear if I have either window on the external monitor. It works in “dual monitor” mode if I have the controls window set to “speaker view” and not in “full screen” with both windows on the internal (laptop) monitor. I can then move either window to the external monitor. If I’ve accidentally started Annotation mode “wrong”, I have to cancel it and move all windows to the internal monitor before re-starting Annontation mode. I have my controls back! This is with version 5.2.458699.0906 1 I have version 5.3.47…. (no way to copypaste) and they don’t, but using only one monitor helped. Though I get a black screen underneath annotations when/as I’m writing them. # Day 659 ## zsh alias pwd | xc alias pwx='pwd | xc' I really need to gather them all in one place and make ~/.zshrc cleaner and neater. ## bash / python / whatever todo small things ~I keep doing things like echo 1 2 4 | paste -sd+ | bc -> cc 123/5 etc. Some small things like avgof 1 2 3 etc would help. Has this been solved by something, any sci / mathematical environment? If not I’d write it the functions myself.~ cc() python3 -c "from math import *; from statistics import *; print($*);"
alias cc='noglob cc'


Added statistics to it, now I can do things like cc mean([2, 4, 9]). (As a bonus stdev() etc., full list). Works for now. ", if any, have to be escaped.

## zsh prompt

Yet another change (theme file clean2.zsh-theme): PROMPT='%{$fg[green]%}(%*/%!) %{$fg[$NCOLOR]%}%B%b%{$reset_color%}%{$fg[blue]%}%B%5c/%b%{$reset_color%} $(git_prompt_info)%(!.#.$) '

It transforms to:

(10:23:09/10712) some/folder/whatever/ mycommand Removed the user (that I had to edit out often), moved current time from PROMPT to the left side (now I can happily copypaste CLI args and output again). ## regex greedy / lazy TL;DR most regex engines are greedy by default. Greedy = ‘longest possible match’. Making it lazy sometimes means adding a “?” to the quantifier, such as .*?. Not supported everywhere, notably grep does this only with the perl syntax (grep -P .*?). ## info command instead of man Nice, had no idea this existed. info diff, for example. Found here: linux - Understanding of diff output - Unix & Linux Stack Exchange. ## Unified diff how to read @@ -1,4 +1,5 @@: • The number after the comma is the length of the chunk (in the old or new file), and • the number before the comma is the line number for the beginning of the chunk. • The + and - signs refer to adding and deleting lines, respectively. 1 Gnu diff man page has more: Detailed Unified (Comparing and Merging Files) ## Git / Jira / Bitbucket branches and connections to tickets As long as the branch name contains the issue key (ABCD-123), it gets connected - but only if the branch is created after the creation of the ticket. 2 As stated previously in this question, it is not possible. You are screwed if you create the branch first. But also it seems that mentioning an issue name in the pull request (does this work for commits?) also works: Simply renaming the Pull Request in Github to include the issue id XXX-nnn in the name triggered that PR and Branch to be linked to the Jira ticket. 2 ## Random / i3 / workspaces I could define a workspace officially, like number 5, for terminals I don’t really need but that are open in deep folders I might need later. ## Random / documentation / dtb Sometimes I miss the ability to drag and drop screenshots to my textfile with descriptions of stuff I did. I can drag and drop screenshots but they are a bit ephemeral. An interesting idea would be create a different keybinding that creates screenshots that get put in a particular folder; I can still drag-and-drop them, but I’ll have stricter guarantees that they’ll be there when I’ll look for them. ## vim plugin MultipleSearch MultipleSearch - Highlight multiple searches at the same time, each with a different color. : vim online :Search sth :Search somethingelse :SearchReset  Highlights them in diff colors, just what I need. n/N works only on the last one. vim-scripts/MultipleSearch2.vim: Improve Multiple search looks like an improved version of the above. ## vim search and substitute You can use \1 etc for %s/.. commands, if the groups where previously defined by you in a usual /search-for-stuff! /\v(https?):\/\/(.{-})\/.* <-- Search :%s,,Protocol:\1 - Domain:\2,g <-- Substitution  This is awesome. # Day 658 ## Jira Tickets are linked automatically when mentioned like WHAT-1234, but only with spaces around them; WHAT-1234: result, for example, wouldn’t work. ## zsh alias for summing up a column of numbers alias sumup='paste -sd+ | bc' ## bash sort version numbers This is nice! sort -V sorts by “version numbers” => 1, 10, 20, 50, 200, instead of the alphabetic 1 10 20 200 50. ## bash zsh history / aliases TODO I need something like “output to CLI and copy to clipboard” + I need a smaller timestamp and to the left, not right-aligned, so I can more easily copypaste stuff. # Day 656 ## Quotes / HN I think part of the problem is people being raised to believe that love, in the biochemical sense, is the most important part of a relationship. Hence when they start feeling similar feelings for others, their relationship can weaken. But a relationship can be about so much more than just the biochemical side: two people, with similar goals and values, working together to build a better life for themselves and their children, and to help each-other achieve their dreams. 1 ## Random / Interesting Zersetzung - Wikipedia “(German for “decomposition”) is a psychological warfare technique used by the Ministry for State Security (Stasi) to repress political opponents in East Germany during the 1970s and 1980s.” ## Home wifi/ethernet speed comparison TL;DR Download speed with ethernet is 4x faster, no differences otherwise. Sa 17 Okt 2020 17:15:44 CEST. Wifi, 50cm from router:  speedtest-cli

Retrieving speedtest.net configuration...
Testing from [redacted]
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by [redacted]: 46.246 ms


Ethernet from same router:

$speedtest-cli Retrieving speedtest.net configuration... Testing from [redacted] Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by [redacted]: 40.086 ms Testing download speed................................................................................ Download: 395.90 Mbit/s Testing upload speed...................................................................................................... Upload: 3.89 Mbit/s  # Day 654 ## Added zsh alias for copying current dir alias ccd='pwd | xc'; though I kinda feel the task would be solved nicely as keyboard shortcut for kitty. + Reminder to myself that zsh nicely cd-s to it when pasting the folder, without cd. Also find | grep is now f instead of ff. ## German “Du spricht für uns alle” ## English / interesting ## grep for looking for tests in different files Forgetting about this nice use of grep: grep "whatever" * gives the matches while also displaying the filename! # Day 653 ## Intellij Idea Ideavim actionlist And yet another place to find this! :actionlist as command in ideavim. ## Ideavim jump to place of last edit IdeaVIM Help: motion is the last readable docu I can find, from 2006. gi starts insert mode at the last place insert mode was exited; '^ just moves the cursor there. ## Intellij Idea tests not running Had an issue with “Class not found” when running tests, fixed with “Invalidate caches and restart” ## Intellij up/down keys My custom up/down keys set via xmodmap (<Super-C> etc.) got recognized everywhere in the OS except intellij; Can get configured in intellij keymap. # Day 652 ## Intellij idea toolbars “View -> Appearance -> Tool window bars” gives extremely useful tool window bars that include a number, the one I can use in <Alt-N> bindings to make them appear! Same goes for the …tabs to the right with Structure etc. ## Intellij building complex stuff and running maven goals Once N maven goals or whatever are run and N tabs opened, they can be found again in the “Run” tool window bar (<Alt-4>). Particular tabs can be also successfully restarted. ## maven skip checkstyle mvn [target] -Dcheckstyle.skip does the magic without editing any POMs etc. 1 ## Java Comparators • Not bound to -1, 0, +1, any positive/negative number works. ## Random / interesting Nightcore - Wikipedia - A nightcore edit is a cover track that speeds up the pitch and time of its source material by 10–30%. # Day 651 ## German in trockenen Tüchern - “cut and dried” = “final”. See in trockenen Tüchern - Wiktionary ## Java profiling with visualVM # Day 648 ## scp can do autocompletion! Nothing to add, but I think it works if you have access via public key instead of passwords. scp what-ever:/home/whatever/..<TAB> works nicely with zsh even visualizing it like usual. Also TODO rsync apparently can do the same things as scp, but better, I should give it a chance. ## Pandas / matplotlib It’s possible use panda’s graphs as an ax and do all other modifications to it! ax = data.plot(y=['tp','fn'], kind='bar',stacked='true') ## jupyter / mpl / google docs You can drag and drop graphs directly from jupyter into a google docs presentation # Day 647 ## grep / uniq magic uniq can compare stuff before / after N characters in the string, group together duplicate ones, etc! • uniq -w N looks at only the N first characters. • uniq -s N don’tt look at the first N characters • uniq --all-repeated[=METHOD] prints all duplicated lines and optionally separates them via METHOD. separate is really nice as method. • uniq -c  prefixes line by number of occurrences of that line And I guess again - uniq works only on sorted data. # Day 646 ## Slack formatting • ~strikethrough~, *bold*, _italic_. • > quoting is as usual. • Highlight text and paste a link -> create a link. in:#team-marketing in:@sara to:@anna before:4/12/2019 after:4/12/2019 on:4/12/2019 during:april has::white_check_mark: has:pin is:saved has:link  ## vim folding by tab works again now! Had to remove this snipped from vimrc: augroup remember_folds autocmd! autocmd BufWinLeave *.* mkview autocmd BufWinEnter *.* loadview augroup END  ## vim folding Will now try to use almost exclusively folding by tabs. For this, these are going to be helpful: 1 zo Open one fold under the cursor. zc Close one fold under the cursor. zO Open all folds under the cursor recursively. zC Close all folds under the cursor recursively. za When on a closed fold: open it. When on an open fold: close it zA When on a closed fold: open it recursively. When on an open fold: close it recursively zv View cursor line: Open just enough folds to make the line in which the cursor is located not folded. zX Undo manually opened and closed folds: re-apply 'foldlevel'. Also forces recomputing folds, like |zx|. zm Fold more: Subtract one from 'foldlevel'. zM Close all folds: set 'foldlevel' to 0. zr Reduce folding: Add one to 'foldlevel'. zR Open all folds. This sets 'foldlevel' to highest fold level. zn Fold none: reset 'foldenable'. All folds will be open. zN Fold normal: set 'foldenable'. All folds will be as they were before. zi Invert 'foldenable'. MOVING OVER FOLDS [z Move to the start of the current open fold. ]z Move to the end of the current open fold. zj Move downwards to the start of the next fold. zk Move upwards to the end of the previous fold.  ## TODO and XXX conventions coding style - Where does the TODO convention come from? - Stack Overflow - XXX as marker for something dangerous. Fixme Comment in c2 wiki for more. ## TODO vim highlighting Very ugly but it works: fun! SetTodo() syn match modo /.*MODO.*$/
syn match nodo /.*NODO.*$/ hi link nodo javaScript syn match todo /\s*TODO.*$/
syn match done /\s*DONE.*$/ hi link done cssListProp syn match xxx /\s*XXX.*$/
endfu
autocmd filetype markdown :call SetTodo()


# Day 645

## How to prettyfy json using jq

jq . inputfile.json gives a nice pretty colored indented output.

## Wolfram alpha “time between”

https://www.wolframalpha.com/input/?i=time+between+2020-10-02+16%3A55%3A01+and+2020-10-03+20%3A00%3A29

Works also in this shorter format: https://www.wolframalpha.com/input/?i=time+between+2020-10-06+11%3A22%3A50+2020-10-06+14%3A53%3A49 (time between $date1$date2)

# Day 641

## screen attaching non-existing named screens creates them

If I do screen -R 20, and there’s no screen named ‘20’, such a screen will be created and attached. Neat.

## killing all screens

Quitting all screens from inside screens is the screen command C-a \ 1

# Day 640

## i3 shortcuts for monitors

Remembered about and updated the shortcuts for focusing the different monitors:

# focus outputs screen
bindsym $ms+a focus output eDP-1 bindsym$ms+o focus output HDMI-2
bindsym $ms+e focus output DP-1-1  Connected to me remembering about the tabbed layout: # change container layout (stacked, tabbed, toggle split) bindsym$ms+s layout stacking
bindsym $ms+Shift+t layout tabbed bindsym$ms+Shift+s layout toggle split


takes less space than my usual stacked, but makes it hard to focus a different screen via left/right - until now.

## bash rm multiple folders

For removing multiple folders if it has to be done often, and the folders may or may not be there, esp. with wildcards, current best option I found is not to do rm -rf one/* two/*something* three but rm -rf one/* && rm -rf two/*something* && rm -rf three. If one breaks the other ones will still run.

## zsh removing an alias + zsh feature of ‘you sure you want to delete all N files from… ‘ + rm -r **

• unalias rm 1
• The feature can be removed by an option, but this is nice:

I don’t know why but the following works for me - no questions asked [..]

rm -rf **

Works for me too.

## Random / phrases

That answers a question, but not this one! :) – Lambart Jul 28 ‘17 at 0:43 2

## Intellij Ideavim full list of keybindings + configured movements.

ideavim/package-info.java at master · JetBrains/ideavim

 * |CTRL-B|               {@link com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageUpAction}


Half-page-down (<Ctrl-D>) doesn’t work in the output of running programs / debuggers, but <Ctrl-F> always does. (And <Page Down> too, ofc.)

me@server:/some/folder$ls -larh .. total 290M drwxr-xr-x 3 me users 4.0K Jul 7 16:51 file drwxr-xr-x 4 me users 12K Jul 7 16:51 file drwxr-xr-x 4 me users 4.0K Jul 7 16:42 file drwxr-xr-x 2 me users 4.0K Jul 7 16:32 file drwxr-xr-x 4 me users 4.0K Jul 7 16:32 file -rw-r--r-- 1 me users 0 Jul 7 16:19 file -rw-r--r-- 1 me users 4.0K Jul 7 16:19 file -rw-r--r-- 1 me users 0 Jul 7 16:31 file -rw-r--r-- 1 me users 1.6K Jul 7 16:32 file -rw-r--r-- 1 me users 144M Oct 1 13:23 file drwxr-xr-x 7 me users 4.0K Oct 1 13:35 file -rwxr-xr-x 1 me users 4.9K Oct 2 2019 file -rw-r--r-- 1 me users 46K Oct 4 2019 file -rw-r--r-- 1 me users 45K Oct 2 2019 file -rw-r--r-- 1 me users 146M Oct 2 2019 file drwxr-xr-x 2 me users 4.0K Oct 2 2019 file -rwxr-xr-x 1 me users 3.8K Jul 7 16:32 file drwxrwx--- 13 500 users 4.0K Mar 27 2020 .. drwxr-xr-x 9 me users 4.0K Sep 30 17:10 .  If files are not from this year, it shows the year instead of the time! ## hashing / checksum utility jacksum Jacksum - a free cross platform checksum utility Is also in the repos as jacksum. jacksum -a hashingAlgo -x filename ## Slack zooming / font size <Ctrl-plus> and <Ctrl-minus> increase / decrease Slack font size! # Day 639 ## head / tail starting from an offset  -n, --lines=K output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth  You can therefore use ... | tail -n +2 | head -n 3 to get 3 lines starting from line 2. Simple but effective. tail -n +N does tail starting from linenumber N. ## Intellij idea search / find Search is search, but “find in path” (and some other stuff) is find. I wonder if there’s a meaningful semantic difference in there. Semantic difference between Find and Search? - Stack Overflow has the logical ones, but I can’t connect it to how intellij idea uses them. # Day 638 ## i3 disable changing workspace via mouse wheel bar { wheel_up_cmd nop wheel_down_cmd exec ~/.i3/scripts/custom_wheel_down }  1 is an example. Disabled it in config, not the i3 statusbars own configs. ## Intellij idea debugging step out “Step out” (<Shift-F8>) skips to the first line executed after returning from the current method. ## Intellij idea debugging / run code fragment <Shift-Return> changes the window from one line to multi and back. ## tee vs less with UTF-16 / UTF-16LE encoding + reading them in vim If a file is UTF-16 encoded, tee works much better than less. To read UTF-16LE in vim, the command is: :e ++enc=utf-16le ## Todo diensttagebuch In my text version of this, I need a nice way of interlinking parts of the text. Ideally in a way that adding text doesn’t break it, and in a way that it’s still text-safe. # Day 635 ## Screenkey screenkey1 (in the repos too) shows the keys you pressed on the screen. screenkey --show-settings shows a nice GUI before start with all the configs. Looks like the second answer here: folding - Is there a best practice to fold a vimrc file - Vi and Vim Stack Exchange ## Vim foldmodes This answer has an awesome idea for folds, something very close to what I was looking for in my long notes file: folding - Is there a best practice to fold a vimrc file - Vi and Vim Stack Exchange In general TODO vim folds - create a nice stable system instead of the ad hoc hell I have now. Also How to enable and use code folding in Vim? - Unix & Linux Stack Exchange has a nice summary of fold keybindings: ## vim keybindings I forgot I used <leader> for most of the things I’m currently using F12 for! ## Work-home keybindings TODO I guess A shell script that changes monitor configurations, volume, changes some of the zsh aliases to show me the correct taskwarrior todos, etc. Something like this: #!/bin/zsh if [ "$1" == "work" ]
then
echo "Setting configs to work..."
export SOMETHNIG="something" ...
...
else
echo "Setting configs to home..."
export SOMETHNIG="something" ...
...
fi
zsh


How do I get all open terminals to use the new env. variables though?

# Day 634

## Markdown syntaxt highlight in vim and URIs

If you paste an URL containing characters with a meaning in markdown, it breaks syntax highlight till the end of the file. Especially URIs containing an uneven number of underscores. Fix is either make it code, or indent it - it seems formatting is local for indentation, at least for vim.

## Parsing json via jq

It supports newlines in filters!

“Data science and the command line” (from json - How to nicely remove empty array in jq - Stack Overflow}

## vim / terminal drag and drop

I can drag and drop my screenshots in the terminal and it pastes the absolute location!

## uniq works only on sorted output!

This explains really a lot.

# Day 633

## Java logical operators shorct-circuiting

The && and || operators “short-circuit”, meaning they don’t evaluate the right-hand side if it isn’t necessary. The & and | operators, when used as logical operators, always evaluate both sides.

There is only one case of short-circuiting for each operator, and they are:

• false && ... - it is not necessary to know what the right-hand side is because the result can only be false regardless of the value there
• true || ... - it is not necessary to know what the right-hand side is because the result can only be true regardless of the value there. 1

## Quoting quotes and answers with code from Stack Overflow

Clicking on “improve this answer”, even when not logged in, gives access to the source markdown that I can copy here preserving most formatting.

## Stand-off markup (NLP)

Stand-off markup (also known as remote markup or stand-off annotation) is the kind of markup that resides in a location different from the location of the data being described by it. It is thus the opposite of inline markup, where data and annotations are intermingled within a single location. 2

The wiki it’s from is also nice: TEIWiki It’s All pages - TEIWiki would be interesting to look through, NB it has a non-intuitive “next page” link there.

I need either a command or an alias for “create task and start immediately”, along with some nice way to create boilerplate code for tasks

## Intellij idea debugging “Drop Frames”

“In case if you want to “go back in time” while debugging you can do it via Drop Frame action. This is a great help if you mistakenly stepped too far. This will not revert the global state of your application but at least will get you back by stack of frames.” 3 (Icon with a red X on top left.)

## Java declaring variables inside or outside a loop

Does it make a difference if I declare variables inside or outside a loop in Java? - Software Engineering Stack Exchange - TL;DR it doesn’t, if you are not creating complex objects. The way to learn this is to look at the generated bytecode, using javap.

# Day 632

## vi mode / readline / inputrc / history

This is freaking awesome:

k: history-search-backward
j: history-search-forward


… in ~/.inputrc allows using j/k for scrolling through history in vim mode. 1 This configures readline that then is used by (at least) bash, zsh, and fish.

## ag command

I still have it installed as a standalone command, I should use it. Ag (silver searcher) is better than ack, which is better than grep. ggreer/the_silver_searcher: A code-searching tool similar to ack, but faster.

TODO get proficient with them and learn how exactly they are better for writing code.

## German

dict.cc | muskelkrampf | English Dictionary - muscle cramp

## Intellij Idea “Find in path”

<Ctrl-Shift-f> for “Find in path” - extremely useful for large codebases; info from Tony.

# Day 631

## Random / Interesting / Quotes

“The best minds of my generation are thinking about how to make people click ads.” –Jeff Hammerbacher

@solvaholic: Sorry I missed your comment of many months ago. I no longer build software; I now make furniture out of wood. The hours are long, the pay sucks, and there’s always the opportunity to remove my finger with a table saw, but nobody asks me if I can add an RSS feed to a DBMS, so there’s that :-)

## Slack ‘set status’

In ‘set status’ there’s a ‘clear’ option, it controls when the status gets reset, minutes/days.

## Emacs tutorials

Uncle Dave - YouTube (No script is too simple | Hacker News) - for later. Notable there is:

# Day 627

## Intellij idea debugging “run to cursor”

• “Run to cursor” is <Alt-Shift-9> and the ideavim cursor works!
• “Show exectution point” <Alt-F10> is also really useful

## redshift

Remembered that redshift exists, added it to startup. It’s the program that makes screen redder at night, a la twilight / night mode / etc etc etc.

# Day 626

## Intellij reopening closed windows such as debugging

Reopening closing windows can be done through View -> Tool windows. It has nice shortcuts that are <Alt-N>, with N=0..9. For example, debug window is <Alt-5>.

Additionally - I should use F7 / ‘step into’ much more.

## Intellij idea structure

<Alt-7> opens a nice structure window with info about the long class you’re editing. With nice options like show public/fields/..

## Gson / json serialization of objects

Gson gson = new Gson();
gson.toJson(1);            // ==> 1
gson.toJson("abcd");       // ==> "abcd"
gson.toJson(new Long(10)); // ==> 10
int[] values = { 1 };
gson.toJson(values);       // ==> [1]

// Deserialization
int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String[] anotherStr = gson.fromJson("[\"abc\"]", String[].class);


Not drag-and-drop for more complex stuff though.

## Intellj Idea Exceptions Breakpoints

You can create breakpoints at all exceptions of a certain type, even when they are caught. May lead to discovery that there are a lot of them in the code :)

On this topic - “Run to cursor” is nice

# Day 625

## English / Interesting

Tohu wa-bohu - Wikipedia “is a Biblical Hebrew phrase found in the Genesis creation narrative (Genesis 1:2) that describes the condition of the earth (eretz) immediately before the creation of light in Genesis 1:3.”

Now let’s play with Jekyll and UTF-8.

וְהָאָ֗רֶץ הָיְתָ֥ה תֹ֙הוּ֙ וָבֹ֔הוּ וְחֹ֖שֶׁךְ עַל־פְּנֵ֣י תְהֹ֑ום וְר֣וּחַ אֱלֹהִ֔ים מְרַחֶ֖פֶת עַל־פְּנֵ֥י הַמָּֽיִם‎

— Genesis 1:2, Westminster Leningrad Codex

Now the earth was formless and empty, darkness was over the surface of the deep, and the spirit of God was hovering over the waters.

— Genesis 1:2, New International Version

## Better master file

So, before we had this file:

echo "Concatting all existing days"
cd _posts
echo \
"---
layout: page
title: Master file
---
"\
> ../master_file.md

cat * | grep -v "layout: post" | grep -v "categories: " | grep -v "title: \"Day" | grep -v "date: 20" | grep -v "\-\-\-" >> ../master_file.md  This didn’t really work well for various reasons, now I did this right: --- layout: default --- <div class="home"> {%- if page.title -%} <h1 class="page-heading">{{ page.title }}</h1> {%- endif -%} {{ content }} <ul class="post-list"> {% for post in site.posts %} <h1><a href="{{site.url}}{{site.baseurl}}{{ post.url }}">{{ post.title }}</a></h1> <p class="author"> {% assign date_format = site.minima.date_format | default: "%b %-d, %Y" %} <span class="post-meta">{{ post.date | date: date_format }}</span> </p> <div class="content"> {{ post.content }} <br> </div> {% endfor %} </ul> </div>  Master file is at the same URI: Master file | Diensttagebuch ## Jekyll raw The nice tags for raw input, of course, work immediately, no spaces between (%raw%)And the start of the actual content(%endraw%). # Day 624 ## English / German dict.cc dictionary :: Die Kacke ist am Dampfen :: German-English translation == shit hitting the fan ## Intellij idea running configurations One can export it to ~/.idea/runConifgurations/*.xml which can be edited with any editor or copied to another project folder. ## Intellij idea enable VCS integration Had this issue when creating a project in a folder that was not equal to the folder with the project files downloaded from git. It did not automatically recognize .git, but I could do it from the VCS menu, something like “choose VCS type”->git etc. Disappeared after I did it. From Error on openjdk11, cannot find javadoc · Issue #26 · chenjianjx/wsdl2html · GitHub: export JAVA_HOME=(readlink -f /usr/bin/javac | sed "s:/bin/javac::") readlink resolves symlinks. Alone it just gives you the file the symlink points to. readlink -f follows each and every symlink to the very end. On my box, the difference is: me:~/  readlink /usr/bin/javac /etc/alternatives/javac me:~/  readlink -f /usr/bin/javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac  BUT! The actual JAVA_HOME thing should be solved as a setting in Intellij->Maven, as noted in Day 554 | Diensttagebuch. # Day 623 ## English TODO Ankify: spelling of Colleague ## German schnipsel | Übersetzung Englisch-Deutsch - scrap/shred/snipped (noun). Mentioned by Caro in context of Schnitzeljagd – Wikipedia that is an interesting thing by itself. ## git coloring git --color=never means that no color gets added by git, but any existing is preserved. Usually the program piping the output has to be told that colours are still needed despite the fact that it’s not outputting to a terminal. ## bash pretty CSV viewer Pretty CSV viewing on the Command Line - Stefaan Lippens inserts content here this is realy nice! In goes a CSV, out goes a pretty CSV. With all the tabs right etc. Piping output from daff diff to this works wonders. Added his function to .zshrc: function pretty_csv { column -t -s, -n "@" | less -F -S -X -K }  # Day 619 ## vim antipatterns w vs e + vim movements I should use e much more than w, as that’s what I really usually need. And in general I should take the time to get to know better the tools I’m constantly using. I guess ‘right’ vim is something like ‘right’ typing. Also, never used them like this, but c of course takes all movements, so changing next two lines or changing from cursor to beginning of the line also works. ## Jira collapsible / spoiler block + code syntax highlighting This 1 is how you do collapsible spoilers in Jira: {code:bash|title=Header for code|collapse=true} echo this is some code {code}  Shows also how to define which syntax highlighting to use. ## kitty paste to terminal and copy url hints Added this to config: map kitty_mod+p>c kitten hints --type path --program @ - copies hinted URL to clipboard. Default map kitty_mod+p>f kitten hints --type path --program - - pastes the hint to the current terminal window. This gets rid of so much copypasting oh my God. ## Libreoffice calc freeze rows and columns The setting for freezing headers and stuff so that they remain visible wherever you scroll is in View -> Freeze cells ## bash sort by multiple columns sort -k 13 -k 15 -k 7 -t ";" -d filename - here the multiple -ks are the different sorting keys. -t is separator, and -d is dictionary order. Interestingly, it automatically sorts by everything else too after the column you give it - if you want it to look only at that one column, you do -k 2,2 2 # Day 618 ## Random / Interesting ## vim regex separator I have been using \s as “word separator”, this is wrong. \s in vim is just a whitespace character - so tabs, spaces etc. For what I usually want, \A is any non-alphabetic-character. (\a being an alphabetic one). ## vim regex inverse match capturing group + ‘very magic’ mode /\vcat (dog)@! /cat $$dog$$\@!  First one is very magic, second is the same without it. @! is a negative match to the preceding capturing group (could have been (\1) too). \v activates “very magic” mode where everything except letters and underscore has special meaning. This is actually going to be very handy. 1 I’ve actually been using regexes quite a lot lately, have no idea how I lived without them when parsing very big log and text files. # vim paste last searched regex :s/<Ctrl-R>/ inserts the last searched for regex between the slashes. This is wonderful and no more copypasting stuff! 1 ## Intellij idea checkstyle tests In settings, you can configure checkstyle to run everywhere [not] including tests. If you don’t include tests, you won’t get to ‘run checkstyle on the current file’. ## i3 vertical tabbed windows If I have windows that are tabs stacked vertically to make it not-a-tab-anymore I just have to move it one level above or below tabs. If it’s stack 3/3, amking it 4/3 would make it the bottom part of a split whose top part is vertical tabs. ## zsh evil registers ## Intellij idea read-only decompiled class sources .. predictably, “Download sources” makes them downloaded, readable and debuggable. Also nice is the “Alternative source available for” - todo understand how exactly do poms, sources, etc etc etc. play with all this. I assume if maven module wants X, and X can be found in maven and in the list of dependencies in Intellij, I get this choice? # Day 617 ## zsh prompt changes To continue the idea to make it easier to record my steps, did some changes to the clean oh-my-zsh theme. For this, I made a copy of the theme file /home/%username%/.oh-my-zsh/themes/clean2.zsh-theme, and using zsh: 13 Prompt Expansion added the following: • history event number at the end of the prompt, after the time (RPROMPT='%*/%!') • Added the last N elements in the path while leaving tilde contraction. (PROMPT='%{fg[NCOLOR]%}%B%n%b%{reset_color%}:%{fg[blue]%}%B%5c/%b%{reset_color%} (git_prompt_info)%(!.#.) ', the number 5 represents the number of directories to show.) Now the prompt looks like this: %username%:~/o/dtb/assets/pics/ (master✗)  16:14:10/10548  ## timewarrior :quarter Timewarrior has many interesting hints, I always missed something with now and previous month - of course :quarter exists. # Day 616 ## Disabling wifi to use ethernet This should have been done long ago but discovered this now. If I have both a wiki and ethernet and want to stop connecting to the wifi, disconnecting from the endpoint is much less reliable than disabling wifi alltogether. ## fc and history fc also accepts the history number of the command to edit and run. So fc 1238, for example. ## Ideavim map for <Esc> Quite often, especially in the commit window, I want to use Ideavim’s normal/command mode, but <Esc> gets intercepted by Idea and closes the commit window. My old mapping works though: imap jj <Esc>  in .ideavimrc. ## German ## zsh share registers with OS when copypasting Now I can yank stuff from the zsh command line and paste them in other applications etc. # Day 613 ## Finally fixed the date / time / tztime saga Looked into the TZ environment variable, it’s the overwritten “Berlin” one. I forgot I had this beauty in .zshrc: export TZ="/usr/share/zoneinfo/Europe/Berlin" Probably a relict of an old hacky way to set time when I couldn’t do it properly. Interestingly, even i3status listened to it (how? why? At which point does it access zsh environment variables? Are environment variables zsh-specific and accessible to things started by/within zsh? How does this work? TODO). And interestingly, restarting zsh didn’t get date to output the right date, even with the right timezone set, I had to close and reopen the terminal. Removed that line, restarted i3, now all times are set right and I can remove timezone info from my timestamps. ## Vim insert time and date - updated mappings imap <leader>d <esc>:put =strftime('%c')<cr>kJA imap <leader>t <esc>:put =strftime('%H:%M:%S')<cr>kJA  They look like this: Fr 04 Sep 2020 09:54:59 CEST 09:55:00  ## Qutebrowser / vim copypaste If I’m copypasting something from vim with yW it copies the space after the last word. If I then paste it into the search of qutebrowser it won’t find anything if the string in the page doesn’t have a space after it. ## git diff CSVs at field level git diff --color-words="[^[:space:],]+" 1 ## daff tool for diff-ing CSVs Daff is a “library for comparing tables, producing a summary of differences”. GitHub - paulfitz/daff: align and compare tables It actually does a really nice visualization with colours, like that script I wrote a long time ago. Leaves field numbers too. In general it’s awesome. More options available with the full form: daff diff --id field --padding sparse file1 file2 Has a lot of output formats! Even ordered/unordered works, if you don’t set the wrong id column. ## Vim folds empty line To make the markers marking folds easier to edit, one can select an empty line at the end of zf, they will end up on a line by themselves, and you can happily paste stuff inside the fold. # Day 612 ## New shiny zsh alias ff is now find | grep ## i3 run and show windows # bindsym ms+d exec --no-startup-id i3-dmenu-desktop bindsym ms+d exec rofi -show run # select windown bindsym ms+g exec rofi -show window  in i3/config. Rofi is nice and I forgot about it. Added a list of windows on ms+g so that it’s similar to my qutebrowser keybinding. ## Dependencies scopes in Intellij Idea The default, “Compile”, is the “strongest”. Module dependencies - Help | IntelliJ IDEA contains a really nice table summarizing compile/test/runtime/provided. ## Running a single test in maven mvn -Dtest=UsersServiceImplTest test for all tests in that class, but you can also do wildcards and single test (yourclass#yourtest test) 1 ## Intellij idea module dependencies order Order is important and whichever is the first will be used. You can change the order in the GUI, but you can move them one step above and you can’t move multiple dependencies at the same time. Of course if you add a new one it goes to the veeeery end. You can edit the configuration manually, inside the project it’s the .iml file that can be edited via whatever. ## Get column in bash with cut This is a thing that keeps coming up, TODO anki awk - bash: shortest way to get n-th column of output - Stack Overflow cut -f2 accesses the second field. -d is for delimiters, if not equal to tab. ## fex.net Fex.net seems to be an OK service for sharing stuff, S. used it for wedding pictures and A. used it for uploading an .iso, both worked well. # Day 611 ## Libreoffice Calc opening files with default import settings For multiple files with known settings, such as separator, decimal etc., libreoffice --calc mydata.csv --infilter=”CSV:44,34,0,1,4/2/1” 1. Separator, 44 is the ASCII value of comma 2. Text delimiter, 34 is the ASCII value of double quote 3. Character set to use, 0 is the system default 4. Line number to start conversion. I have no header line, so it is 1 5. Cell format per column, separated by /. It does not seem to matter if there are a different number of columns in the data: Extra columns default to Standard, extra formats are ignored. 4 = date d/m/y; 2 = text; 1 = standard 1 Full documentation for infilter is here: Filter Options - Apache OpenOffice Wiki ## Jekyll mixing html and markdown I have to remember that putting markdown stuff inside HTML tags won’t work, like with the Actionlist yesterday. ## git diff to stdin echo foo | git diff --no-index -- my_file - Since git 1.5.1 there’s been an option to diff against stdin - it’s just not been documented ## Germany “c/o” with letters and post # Day 610 ## x-www-browser and qutebrowser If qutebrowser is not running and I click a link, another instance will be started, and it looks like this: myusername+ 19648 10.8 2.7 6125248 896828 ? Sl 12:10 10:07 /usr/bin/python3 /usr/bin/x-www-browser https://the-link-i-click.ed; I can’t find it easily as the process doesn’t contain the string qutebrowser. ## English / German Redewendungen ## English / British dict.cc | analog | English Dictionary “analog” is English spelling, British is “analogue” ## NLP / NER / Named entity recognition / ML CH’s favourite example of ambiguity in NER: [Paris(LOC) Hilton(ORG)](PER) ## zsh theme Changed it to clean, now I get the time when I ran commands. I so missed this, not sure when it all went wrong. ## zsh history with datetime history -E shows time and date when a command was run. I really think I need something like a lab notebook approach to all my work experiments, this is a good step for this. So many terminals around with so much stuff run with different parameters and no way to track it. history -E:  7932 1.9.2020 18:11 history 7933 1.9.2020 18:11 vim ~/.zshrc 7934 1.9.2020 18:11 zsh 7935 1.9.2020 18:11 ls 7936 1.9.2020 18:13 pwd 7937 1.9.2020 18:13 ls 7938 1.9.2020 18:13 cd newkotlin-newusecase 7939 1.9.2020 18:13 pwd | xc 7940 1.9.2020 18:13 ls 7941 1.9.2020 18:13 history -E 7942 1.9.2020 18:15 vim ~/.zshrc 7943 1.9.2020 18:15 zsh  Outputs only the latest items though. But it accepts a start parameter, so history -E 0 gives me what I need. Also I didn’t fix the time last time apparently, date still disagrees with tztime, whatever I did last time was a temporary fix. Will be printing timezone info starting from now on. Now I have a couple more default aliases: alias h='history -E 1 | grep' alias hh='history -E 1' alias g='grep'  ## zsh alias for date in filenames/commands alias sht='date +"%m%d-%H%M%S%z"' Now I can do whatevercommand -o outputfile-(sht) and it will paste a datetime like outputfile-0901-182113+0300 automatically. ## curl quiet mode The magic for waiting for files will be now watch curl -I -s http://somefile | grep 200 interestingly, echo watch "curl ..." | xc which xc being clipboard gave me a string without "s, not sure at which step they got removed but it might bite me in the future. Real command is watch "curl -I -s http://somefile | grep 200". . -s makes it show no progress bars etc. # Day 609 ## German • nachschlagen - look sth. up, retaliation, consult something quickly. TODO anki • massig - bulky, massive, huge. (“Massiges Gehalt”) ## Intellij idea split tabs Intellij Idea has ‘unsplit’ lower than all the other tab options :) ## TODO English Finally remember how many “d”s and “s”s are there in address. TODO anki ## Intellij idea reopen closed tab Like in browsers, it’s <Ctrl-Shift-T>; Also now it’s also u like in qutebrowser: map <leader>u :action ReopenClosedTab<CR> Edit: Why doesn’t it work? TODO ## Intellij idea / pycharm environment variables You can copypaste the environment variables in the running configuration, including from system ones that get included to the custom ones, it understands what you want. ## Ideavim / Intellij idea actionlist Since I usually look for this here by looking for items from .ideavimrc Actionlist --- Actions --- Copy Cut Delete LRU Paste Redo SearchWeb SelectAll Undo About Actions.ActionsPlugin.GenerateToString ActivateAntBuildToolWindow ActivateApplicationServersToolWindow ActivateChangesToolWindow <M-=> ActivateDatabaseToolWindow ActivateDebugToolWindow ActivateDesignerToolWindow ActivateEventLogToolWindow ActivateFavoritesToolWindow ActivateFindToolWindow ActivateInspectionToolWindow ActivateMavenProjectsToolWindow ActivateMessagesToolWindow ActivateNavBar ActivatePalette ToolWindow ActivatePaletteToolWindow ActivateProjectToolWindow ActivateRunToolWindow ActivateStructureToolWindow ActivateTerminalToolWindow ActivateTODOToolWindow ActivateUIDesignerToolWindow ActiveToolwindowGroup Add.Email.Transport Add.Embedded.Http.Transport Add.Hibernate.Framework Add.Ibatis.Framework Add.JdkTimer Add.Jdo.Framework Add.Jms.Transport Add.OpenSymphonyTimer Add.Toplink.Framework Add.Webflow AddAllToFavorites AddAntBuildFile AddAsSwcLib AddAttributeAction AddDataSourceFromServer AddFrameworkSupport AddGradleDslPluginAction AddNewComponentAction AddNewFavoritesList AddNewMixinAction AddNewPageAction AddNewTabToTheEndMode AddOptionDialogActionGroup AddSourcesContentToSourceMap AddSubtagAction AddToFavorites AddToFavoritesPopup AddToISuite AddToTestNGSuite AJ.NewAspect AJ.PushIn AlienCommitChangesDialog.AdditionalActions AlienPropertiesLocalDiff AnalyzeActions AnalyzeJavaMenu AnalyzeMenu AnalyzeStacktraceOnError Android.ConvertToNinePatch Android.CreateResourceDirectory Android.CreateResourcesActionGroup Android.Debugger.ViewBitmapAction Android.EnableDdms Android.GenerateSignedApk Android.GenerateSourcesAction Android.MainToolBarActionGroup Android.MemoryMonitor Android.OpenStringResourceEditor Android.RunAndroidAvdManager Android.RunAndroidSdkManager Android.RunDdms Android.ShowLicenses Android.ShowNavigationEditor Android.SyncProject Android.TraceViewSearch Android.UploadDatabase AndroidConnectDebuggerAction AndroidExtractAsIncludeAction AndroidExtractStyleAction AndroidFindStyleApplicationsAction AndroidInlineIncludeAction AndroidInlineStyleReferenceAction AndroidToolsGroup Annotate AnonymousToInner AntBuildGroup AppEngine.UploadApplication ApplyJavaeeStyle AppServers.ChooseArtifacts AppServers.DebugServer AppServers.DeployAll AppServers.EditServerConfig AppServers.RemoveArtifact AppServers.RunServer AppServers.StopServer Arrangement.Alias.Rule.Add Arrangement.Alias.Rule.Context.Menu Arrangement.Alias.Rule.Edit Arrangement.Alias.Rule.Match.Condition.Move.Down Arrangement.Alias.Rule.Match.Condition.Move.Up Arrangement.Alias.Rule.Remove Arrangement.Alias.Rule.ToolBar Arrangement.Custom.Token.Rule.Edit Arrangement.Rule.Add Arrangement.Rule.Edit Arrangement.Rule.Group.Condition.Move.Down Arrangement.Rule.Group.Condition.Move.Up Arrangement.Rule.Group.Control.ToolBar Arrangement.Rule.Match.Condition.Move.Down Arrangement.Rule.Match.Condition.Move.Up Arrangement.Rule.Match.Control.Context.Menu Arrangement.Rule.Match.Control.ToolBar Arrangement.Rule.Remove Arrangement.Rule.Section.Add AssociateWithFileType AutoIndentLines AutoShowProcessWindow AxisActions Back button=4 clickCount=1 modifiers=0 <C-[> BackgroundTasks BaseOnThisFunction Bash.NewBashScript Bash.REPL.Group Batch.Job.Create Bookmarks BuildArtifact BuildMenu ByteCodeViewer CallHierarchy CallHierarchy.BaseOnThisType CallHierarchyPopupMenu CaptureCPUUsageData CaptureMemorySnapShot ChangeAttributeValueAction ChangeCodeStyleScheme ChangeColorScheme ChangeFileEncodingAction ChangeInspectionProfile ChangeKeymap ChangeLaf ChangeLineSeparators ChangeScheme ChangeSignature ChangeSplitOrientation ChangesView.AddUnversioned ChangesView.AddUnversioned.From.Dialog ChangesView.ApplyPatch ChangesView.Browse ChangesView.Commit ChangesView.CreatePatch ChangesView.CreatePatchFromChanges ChangesView.DeleteUnversioned ChangesView.DeleteUnversioned.From.Dialog ChangesView.Diff ChangesView.Edit ChangesView.Ignore ChangesView.Move ChangesView.NewChangeList ChangesView.Refresh ChangesView.RemoveChangeList ChangesView.RemoveDeleted ChangesView.Rename ChangesView.Revert ChangesView.SetDefault ChangesView.Shelve ChangesViewPopupMenu ChangesViewToolbar ChangeTemplateDataLanguage ChangeTypeSignature ChangeView CheckForUpdate CheckinFiles CheckinProject CheckStatusForFiles ChooseActiveBuildConfiguration ChooseDebugConfiguration ChooseNextSubsequentPropertyValueEditorAction ChoosePrevSubsequentPropertyValueEditorAction ChooseRunConfiguration ClassNameCompletion ClassTemplateNavigation CleanGradleProject ClearCase.Add ClearCase.CheckOut ClearCase.DeliverActivities ClearCase.FindProjectCheckouts ClearCase.Hijack ClearCase.Merge ClearCase.MergeProject ClearCase.Properties ClearCase.RebaseProject ClearCase.SynchronizeWithActivities ClearCase.UndoCheckOut ClearCase.Update ClearCase.VersionTree ClearCaseFile ClearCaseProject CloseActiveTab CloseAllEditors CloseAllEditorsButActive CloseAllUnmodifiedEditors CloseAllUnpinnedEditors CloseContent CloseEditor CloseEditorsGroup CloseProject CodeCleanup CodeCompletion CodeCompletionGroup CodeEditorBaseGroup CodeEditorViewGroup CodeFormatGroup CodeInsightEditorActions CodeInspection.OnEditor CodeMenu CollapseAll CollapseAllRegions CollapseBlock CollapseDocComments CollapseRegion CollapseRegionRecursively CollapseSelection CollapseTreeNode com.ansorgit.plugins.bash.actions.AddReplAction com.intellij.execution.testframework.sm.runner.ui.statistics.ShowStatisticsAction com.intellij.execution.testframework.sm.runner.ui.statistics.ShowTestProxy com.intellij.play.console.RunPlayConsoleAction com.intellij.spellchecker.actions.SpellingPopupActionGroup com.intellij.sql.refactoring.SqlExtractNamedQueryAction com.jetbrains.php.framework.FrameworkRunConsoleAction com.jetbrains.plugins.remotesdk.console.RunSshConsoleAction CombinePropertiesFilesAction CommanderPopupMenu CommentByBlockComment CommentByLineComment CommentGroup CommittedChanges.Clear CommittedChanges.Details CommittedChanges.Filter CommittedChanges.Refresh CommittedChanges.Revert CommittedChangesToolbar Compare.LastVersion Compare.SameVersion Compare.Selected Compare.Specified CompareActions CompareClipboardWithSelection CompareDirs CompareFileWithEditor CompareTwoFiles Compile CompileCoffeeScript CompileDirty CompileEcmaScript6 CompileProject CompilerErrorViewPopupMenu ConfigureCvsRoots Console.Dialect.SpecificGroup Console.EditorTableResult.Group Console.Execute Console.Execute.Multiline Console.History.Browse Console.History.Next Console.History.Previous Console.HistoryActions Console.Jdbc.Close Console.Jdbc.Execute Console.Jdbc.Execute.Selection Console.Jdbc.ExplainPlan Console.Jdbc.ExplainPlan.Raw Console.Jdbc.Terminate Console.JdbcActions Console.Jpa.Close Console.Jpa.Execute Console.Jpa.GenerateDDL Console.Jpa.GenerateSql Console.Jpa.Terminate Console.JpaActions Console.Open Console.Oracle.DbmsOutput Console.SplitLine Console.TableResult.AddColumn Console.TableResult.AddRow Console.TableResult.Cancel Console.TableResult.CellEditor.Popup Console.TableResult.ChangeCellEditorFileEncoding Console.TableResult.ChangeCellEditorLanguage Console.TableResult.ChangeColumnLanguage Console.TableResult.ChooseExtractor Console.TableResult.CloneColumn Console.TableResult.CloneRow Console.TableResult.ColumnActions Console.TableResult.ColumnHeaderPopup Console.TableResult.ColumnsList Console.TableResult.ColumnSortAsc Console.TableResult.ColumnSortDesc Console.TableResult.ColumnSortingActions Console.TableResult.ColumnSortReset Console.TableResult.ColumnVisibility < > Console.TableResult.CompareWith Console.TableResult.Copy.ChooseExtractorGroup Console.TableResult.Copy.ClipboardGroup Console.TableResult.Copy.FileGroup Console.TableResult.Copy.Settings Console.TableResult.CopyGroup Console.TableResult.CountRows Console.TableResult.Csv.PopupGroup Console.TableResult.DeleteColumns Console.TableResult.DeleteRows Console.TableResult.EditValue Console.TableResult.EditValueMaximized Console.TableResult.Filter.Custom Console.TableResult.FirstPage Console.TableResult.Group Console.TableResult.Group.Secondary Console.TableResult.HideColumn Console.TableResult.LastPage Console.TableResult.LoadFile Console.TableResult.MaximizeEditingCell Console.TableResult.NavigateAction Console.TableResult.NavigateExportedAction Console.TableResult.NavigateForeignAction button=1 clickCount=1 modifiers=256 button=2 clickCount=1 modifiers=0 Console.TableResult.NavigationAndEditing.Group Console.TableResult.NextPage Console.TableResult.Options Console.TableResult.Pin Console.TableResult.PopupGroup Console.TableResult.PreviousPage Console.TableResult.Reload Console.TableResult.RenameTab Console.TableResult.ResetView Console.TableResult.SaveLobAs Console.TableResult.SetDefault Console.TableResult.SetNull Console.TableResult.ShowQuery Console.TableResult.SortToggle Console.TableResult.SubmitAddedRow Console.TableResult.ToggleFilters Console.TableResult.Transpose Console.TabPopupGroup Console.Transaction Console.Transaction.Autocommit Console.Transaction.Commit Console.Transaction.Rollback ConsoleEditorPopupMenu ConsoleView.ClearAll ConsoleView.FoldLinesLikeThis ConsoleView.PopupMenu ConsoleView.ShowAsJsonAction context.clear context.load context.save ContextHelp ConvertContentsToAttributeAction ConvertGroovyToJava ConvertIndentsGroup ConvertIndentsToSpaces ConvertIndentsToTabs ConvertSchemaAction ConvertToInstanceMethod ConvertToMacLineSeparators ConvertToUnixLineSeparators ConvertToWindowsLineSeparators CopyAsPlainText CopyAsRichText CopyElement CopyPaths CopyReference CopyUrl Coverage CoverageMenu Create.CDI.Beans.Xml.File CreateBeanManagedEntityBeanAction CreateCMPField CreateContainerManagedEntityBeanAction CreateDesktopEntry CreateEJBInterceptor CreateEJBRelationship CreateFilterAction CreateJavaeeWebPageAction CreateLauncherScript CreateLibraryFromFile CreateListenerAction CreateMessageBean CreateResourceBundle CreateRunConfiguration CreateServletAction CreateSingletonBean CreateStatefulBean CreateStatelessBean CreateTaglibFileAction CreateTransferObject CreateWebProject CutCopyPasteGroup Cvs.Add Cvs.BrowseCVSRepository Cvs.Checkout Cvs.CreateBranch Cvs.CreateTag Cvs.DeleteTag Cvs.Edit Cvs.Editors Cvs.GetFromRepository Cvs.Ignore Cvs.Import Cvs.MergeAction Cvs.ToggleOffline Cvs.UndoAdd Cvs.Unedit Cvs.WatchAdd Cvs.Watchers Cvs.WatchOff Cvs.WatchOn Cvs.WatchRemove CvsActions CvsFilePopupGroup CvsGlobalGroup Database.OpenDbStorageAction Database.Settings DatabaseView.AddActionGroup DatabaseView.AddActionGroupPopup DatabaseView.AddDataSourceFromUrl DatabaseView.AddDataSourcesGroup DatabaseView.AssignColor DatabaseView.ChangeSignature DatabaseView.CloseConnectionAction DatabaseView.CopyAction DatabaseView.Ddl.AddColumn DatabaseView.Ddl.AddForeignKey DatabaseView.Ddl.AddIndex DatabaseView.Ddl.AddPrimaryKey DatabaseView.Ddl.AddTable DatabaseView.DropAction DatabaseView.Dump.FileGroup DatabaseView.GenerateDDLAction DatabaseView.ImportDataSources DatabaseView.PropertiesAction DatabaseView.ShowDiff DatabaseView.SynchronizeAction DatabaseViewPopupMenu DatabaseViewToolbar Debug DebugClass Debugger.AddSteppingFilter Debugger.AddToWatch Debugger.AdjustArrayRange Debugger.AutoRenderer Debugger.CustomizeContextView Debugger.CustomizeThreadsView Debugger.EditFrameSource Debugger.EditNodeSource Debugger.EditTypeSource Debugger.EvaluateInConsole Debugger.EvaluationDialogPopup Debugger.FocusOnBreakpoint Debugger.FramePanelPopup Debugger.FreezeThread Debugger.InspectPanelPopup Debugger.InterruptThread Debugger.MarkObject Debugger.PopFrame Debugger.Representation Debugger.ResumeThread Debugger.ShowLibraryFrames Debugger.ShowReferring Debugger.ThreadsPanelPopup Debugger.Tree.AddToWatches Debugger.Tree.EvaluateInConsole Debugger.ViewAsGroup Debugger.ViewText Debugger.WatchesPanelPopup DebuggerActions DebugMainMenu DecrementWindowHeight DecrementWindowWidth DelegateMethods DeleteAttributeAction DeleteTagAction Diagram.DeselectAll Diagram.SelectAll Diff.EditorPopupMenu Diff.FocusOppositePane Diff.FocusOppositePaneAndScroll Diff.HighlightMode Diff.IgnoreWhitespace Diff.KeymapGroup Diff.NextChange <M-S-]> Diff.PrevChange <M-S-[> Diff.SelectedChange Diff.ShowDiff Diff.ShowInExternalTool Diff.ShowSettingsPopup Diff.UpdatedFiles DiffPanel.Toolbar DirDiffMenu DirDiffMenu.Deployment.MirrorToLeft DirDiffMenu.Deployment.MirrorToRight DirDiffMenu.EnableEqual DirDiffMenu.EnableLeft DirDiffMenu.EnableNotEqual DirDiffMenu.EnableRight DirDiffMenu.SetCopyToLeft DirDiffMenu.SetCopyToRight DirDiffMenu.SetDefault DirDiffMenu.SetDelete DirDiffMenu.SetNoOperation DirDiffMenu.WarnOnDeletion DissociateResourceBundleAction dmServer.manage.server.libraries Document2XSD DomCollectionControl DomCollectionControl.Add DomCollectionControl.Edit DomCollectionControl.Remove DomElementsTreeView.AddElement DomElementsTreeView.AddElementGroup DomElementsTreeView.DeleteElement DomElementsTreeView.GotoDomElementDeclarationAction DomElementsTreeView.TreePopup Drools.CreateRuleFile DSM.Analyze DSM.Close DSM.DiggIntoDependenciesAction DSM.GoToNextCycle DSM.LimitDependencies DSM.OpenDependencies DSM.OpenInEditor DSM.Popup DSM.ToggleCycles DSM.ToggleFlattenPackages DSM.ToggleGradient DSM.ToggleModuleGroups DSM.ToggleModules DSM.TogglenPackages DSM.Toolbar DumpLookupElementWeights DumpSpringConfiguration DumpThreads DuplicatesForm.SendToLeft DuplicatesForm.SendToRight DupLocate Dvcs.Log.ContextMenu Dvcs.Log.Toolbar EditAndWatch EditBookmarksGroup EditBreakpoint EditCommitMessage EditCreateDeleteGroup EditEntityListenerBindingsAction EditFavorites EditInterceptorBindingsAction EditMacros EditMenu Editor.JSLibrariesMenu Editor.JSLibrariesMenu.LibraryList EditorActions EditorAddOrRemoveCaret button=1 clickCount=1 modifiers=576 EditorAddRectangularSelectionOnMouseDrag button=1 clickCount=1 modifiers=832 EditorBackSpace EditorChooseLookupItem EditorChooseLookupItemCompleteStatement EditorChooseLookupItemDot EditorChooseLookupItemReplace EditorCloneCaretAbove EditorCloneCaretBelow EditorCodeBlockEnd <M-A-]> EditorCodeBlockEndWithSelection <M-A-S-]> EditorCodeBlockStart <M-A-[> EditorCodeBlockStartWithSelection <M-A-S-[> EditorCompleteStatement EditorContextBarMenu EditorContextInfo EditorCopy EditorCreateRectangularSelection button=2 clickCount=1 modifiers=576 EditorCut EditorCutLineBackward EditorCutLineEnd EditorDecreaseFontSize EditorDelete EditorDeleteLine EditorDeleteToLineEnd EditorDeleteToLineStart EditorDeleteToWordEnd EditorDeleteToWordEndInDifferentHumpsMode EditorDeleteToWordStart EditorDeleteToWordStartInDifferentHumpsMode EditorDown EditorDownWithSelection EditorDuplicate EditorDuplicateLines EditorEnter EditorEscape EditorGutterPopupMenu EditorGutterVcsPopupMenu EditorHungryBackSpace EditorIncreaseFontSize EditorIndentLineOrSelection EditorIndentSelection EditorJoinLines EditorKillRegion EditorKillRingSave EditorKillToWordEnd EditorKillToWordStart EditorLangPopupMenu EditorLeft EditorLeftWithSelection EditorLineEnd EditorLineEndWithSelection EditorLineStart EditorLineStartWithSelection EditorLookupDown EditorLookupUp EditorMatchBrace EditorMoveDownAndScroll EditorMoveDownAndScrollWithSelection EditorMoveToPageBottom EditorMoveToPageBottomWithSelection EditorMoveToPageTop EditorMoveToPageTopWithSelection EditorMoveUpAndScroll EditorMoveUpAndScrollWithSelection EditorNextWord EditorNextWordInDifferentHumpsMode EditorNextWordInDifferentHumpsModeWithSelection EditorNextWordWithSelection EditorPageDown EditorPageDownWithSelection EditorPageUp EditorPageUpWithSelection EditorPaste EditorPasteFromX11 button=2 clickCount=1 modifiers=0 EditorPasteSimple EditorPopupMenu EditorPopupMenu.GoTo EditorPopupMenu.Run EditorPopupMenu1 EditorPopupMenuDebug EditorPopupMenuDebugJava EditorPreviousWord EditorPreviousWordInDifferentHumpsMode EditorPreviousWordInDifferentHumpsModeWithSelection EditorPreviousWordWithSelection EditorResetFontSize EditorRight EditorRightWithSelection EditorScrollBottom EditorScrollDown EditorScrollDownAndMove EditorScrollLeft EditorScrollRight EditorScrollToCenter EditorScrollTop EditorScrollUp EditorScrollUpAndMove EditorSelectLine EditorSelectWord EditorSplitLine EditorStartNewLine EditorStartNewLineBefore EditorSwapSelectionBoundaries EditorTab EditorTabCompileGroup EditorTabPopupMenu EditorTabPopupMenuEx EditorTabsGroup EditorTextEnd EditorTextEndWithSelection EditorTextStart EditorTextStartWithSelection EditorToggleActions EditorToggleCase EditorToggleColumnMode EditorToggleInsertState EditorToggleShowIndentLines EditorToggleShowLineNumbers EditorToggleShowWhitespaces EditorToggleStickySelection EditorToggleUseSoftWraps EditorUnindentSelection EditorUnSelectWord EditorUp EditorUpWithSelection editRunConfigurations EditSelectGroup EditSelectWordGroup EditSmartGroup EditSource EditSourceInNewWindow EmacsStyleIndent Emmet EmmetNextEditPoint EmmetPreview EmmetPreviousEditPoint EmmetUpdateTag EncapsulateFields EvaluateExpression ExcludeFromStubGeneration excludeFromSuite excludeFromTestNGSuite ExcludeFromValidation Exit ExpandAll <M-]> ExpandAllRegions <M-]> ExpandAllToLevel ExpandAllToLevel1 ExpandAllToLevel2 ExpandAllToLevel3 ExpandAllToLevel4 ExpandAllToLevel5 ExpandDocComments ExpandLiveTemplateByTab ExpandLiveTemplateCustom ExpandRegion <M-S-=> ExpandRegionRecursively <M-A-=> ExpandToLevel ExpandToLevel1 ExpandToLevel2 ExpandToLevel3 ExpandToLevel4 ExpandToLevel5 ExpandTreeNode ExportImportGroup ExportSettings ExportTestResults ExportThreads ExportToEclipse ExportToHTML ExportToTextFile ExpressionTypeInfo ExternalJavaDoc ExternalSystem.AfterCompile ExternalSystem.AfterRebuild ExternalSystem.AfterSync ExternalSystem.AssignRunConfigurationShortcut ExternalSystem.AssignShortcut ExternalSystem.AttachProject ExternalSystem.BeforeCompile ExternalSystem.BeforeRebuild ExternalSystem.BeforeRun ExternalSystem.BeforeSync ExternalSystem.CollapseAll ExternalSystem.DetachProject ExternalSystem.EditRunConfiguration ExternalSystem.ExpandAll <M-]> ExternalSystem.GroupTasks ExternalSystem.OpenConfig ExternalSystem.OpenTasksActivationManager ExternalSystem.RefreshAllProjects ExternalSystem.RefreshProject ExternalSystem.RemoveRunConfiguration ExternalSystem.RunTask ExternalSystem.ShowInheritedTasks ExternalSystem.ShowSettings ExternalSystem.ToggleAutoImport ExternalSystemView.ActionsToolbar ExternalSystemView.ActionsToolbar.CenterPanel ExternalSystemView.ActionsToolbar.LeftPanel ExternalSystemView.ActionsToolbar.RightPanel ExternalSystemView.BaseProjectMenu ExternalSystemView.ProjectMenu ExternalSystemView.RunConfigurationMenu ExternalSystemView.TaskActivationGroup ExternalSystemView.TaskMenu ExternalToolsGroup ExtractClass ExtractInclude ExtractInterface ExtractJspTagAction ExtractMethod ExtractModule ExtractSuperclass Faces.CreateFacesConfigAction Faces.CreateJsfAction Faces.Generate.From.Persistence Faces.MainGraphPopup Faces.MainPageGraphPopup Faces.MainPageTreePopup Faces.Navigation.Graph.PageTree.GotoDeclarationAction Faces.Navigation.Graph.PageTree.GotoSourceAction Faces.User.Defined.Faces.Config FavoritesViewPopupMenu FileChooser FileChooser.Delete FileChooser.GotoDesktop FileChooser.GotoHome FileChooser.GotoJDK FileChooser.GotoModule FileChooser.GotoProject FileChooser.NewFile FileChooser.NewFolder FileChooser.Refresh FileChooser.ShowHiddens FileChooser.TogglePathShowing FileChooserToolbar FileEditor.OpenDataEditor FileMainSettingsGroup FileMenu FileOpenGroup FileOtherSettingsGroup FileSettingsGroup FileStructurePopup FillParagraph Find FindInPath FindMenuGroup FindModal FindNext FindPrevious FindUsages FindUsagesInFile FindWordAtCaret FixDocComment Flex.Debugger.FilterSwfLoadUnloadMessages Flex.NewActionScriptClass Flex.NewFlexComponent FoldingGroup ForceRunToCursor ForceStepInto ForceStepOver Forward button=5 clickCount=1 modifiers=0 <C-S-=> <C-]> FullyExpandTreeNode <M-]> Gant.NewScript Generate Generate.Constructor.JavaScript Generate.EventHandler.Actionscript Generate.GetAccessor.JavaScript Generate.GetSetAccessor.JavaScript Generate.GrailsView Generate.SetAccessor.JavaScript Generate.SetUp.Actionscript Generate.TearDown.Actionscript Generate.TestMethod.Actionscript Generate.ToString.Actionscript GenerateAntBuild GenerateConstructor GenerateCopyright GenerateCoverageReport GenerateCreateUI GenerateDataMethod GenerateDTD GenerateEJBFinderOrSelectorMethod GenerateEJBReference GenerateEntityListenerMethods GenerateEquals GenerateExternalization GenerateFilterAction GenerateGetter GenerateGetterAndSetter GenerateGroup GenerateInterceptorMethods GenerateJavadoc GenerateJspFunctionAction GenerateJspTagAction GeneratePattern GeneratePersistenceContextReference GeneratePersistenceMapping GenerateResourceReference GenerateServletAction GenerateSetter GenerateSetUpMethod GenerateSuperMethodCall GenerateTearDownMethod GenerateTestMethod GenerateXmlTag Generify Git.Add Git.Branches Git.CheckoutRevision Git.CompareWithBranch Git.ContextMenu Git.CreateNewBranch Git.CreateNewTag Git.Edit.Global.Message Git.Fetch Git.Init Git.Log Git.Log.ContextMenu Git.Log.DeepCompare Git.Log.Toolbar Git.LogContextMenu Git.Menu Git.Merge Git.Pull Git.Rebase Git.Rebase.Abort Git.Rebase.Continue Git.Rebase.Skip Git.RepositoryContextMenu Git.Reset Git.Reset.In.Log Git.ResolveConflicts Git.Revert Git.Stash Git.Tag Git.Unstash GitFileActions Github.Create.Gist Github.Create.Pull.Request Github.Open.Commit.In.Browser Github.Open.In.Browser Github.Rebase Github.Share GitRepositoryActions GlobalSettings Go.NewGoFile GoFmtFileAction GoFmtProjectAction GoGenerateBenchmark GoGenerateTest GoImportsFileAction GoShowTypeInternalAction GoTestGenerateGroup GotoAction GotoBookmark0 GotoBookmark1 GotoBookmark2 GotoBookmark3 GotoBookmark4 GotoBookmark5 GotoBookmark6 GotoBookmark7 GotoBookmark8 GotoBookmark9 GotoChangedFile GoToChangeMarkerGroup GoToClass GotoClass GoToCodeGroup GotoCustomRegion GotoDeclaration button=1 clickCount=1 modifiers=256 button=2 clickCount=1 modifiers=0 GoToEditPointGroup GoToErrorGroup GotoFile GotoImplementation button=1 clickCount=1 modifiers=768 GotoLine GoToLinkTarget GoToMenu GoToMenuEx GotoNextBookmark GotoNextError GotoNextIncompletePropertyAction GotoPreviousBookmark GotoPreviousError GotoRelated GotoRow GotoSuperMethod GotoSymbol GoToTapestryClass GoToTapestryTemplate GoToTargetEx GotoTest GotoTypeDeclaration button=1 clickCount=1 modifiers=320 button=2 clickCount=1 modifiers=64 Gradle.AddGradleDslDependencyAction Gradle.ExecuteTask Gradle.GenerateGroup Gradle.ToggleOfflineAction Grails Grails.Controller Grails.DomainClass Grails.Filter Grails.GSP Grails.Script Grails.Service Grails.Shell Grails.TagLib Grails.UpdateDependencies Grails.WAR Graph.ActualZoom Graph.CommonLayoutGroup Graph.Current.Node.Dependencies.Filter Graph.DefaultGraphPopup Graph.Delete Graph.ExportToFile Graph.Faces.DefaultGraphPopup Graph.Faces.OpenSelectedPages Graph.FitContent Graph.Layout.BalloonLayouter Graph.Layout.CircularLayouter Graph.Layout.DirectedOrthogonalLayouter Graph.Layout.Fit.Content Graph.Layout.HierarchicGroupLayouter Graph.Layout.OrganicLayouter Graph.Layout.OrthogonalLayouter Graph.Layout.TreeLayouter Graph.Print Graph.Print.Preview Graph.Show.Edge.Labels Graph.ShowHideGrid Graph.SnapToGrid Graph.ZoomIn <=> Graph.ZoomOut <-> Griffon.UpdateDependencies Groovy.Console Groovy.Doc.Generating Groovy.Dynamic.CollapseAll Groovy.Dynamic.ExpandAll Groovy.Dynamic.Remove Groovy.Dynamic.Toolbar Groovy.NewClass Groovy.NewScript Groovy.Shell Groovy.Shell.Execute GroovyGenerateGroup1 GuiceActionGroup GuiDesigner.AddComponent GuiDesigner.AddGroup GuiDesigner.AddTab GuiDesigner.ChooseLocale GuiDesigner.ComponentTreePopupMenu GuiDesigner.CreateComponent GuiDesigner.CreateListener GuiDesigner.DataBindingWizard GuiDesigner.DecreaseIndent GuiDesigner.DeleteComponent GuiDesigner.DeleteGroup GuiDesigner.Duplicate GuiDesigner.EditComponent GuiDesigner.EditGroup GuiDesigner.EditorPopupMenu GuiDesigner.ExpandSelection GuiDesigner.Flatten GuiDesigner.FormSource GuiDesigner.GenerateMain GuiDesigner.GoToListener button=1 clickCount=1 modifiers=768 GuiDesigner.GroupButtons GuiDesigner.IncreaseIndent GuiDesigner.MainToolbarActions GuiDesigner.Morph GuiDesigner.NewActions GuiDesigner.Pack GuiDesigner.PaletteComponentPopupMenu GuiDesigner.PaletteGroupPopupMenu GuiDesigner.PreviewForm GuiDesigner.PropertyInspectorPopupMenu GuiDesigner.QuickJavadoc GuiDesigner.ReloadCustomComponents GuiDesigner.ResetValue GuiDesigner.ShowComponentTags GuiDesigner.ShowGrid GuiDesigner.ShrinkSelection GuiDesigner.SurroundPopup GuiDesigner.UngroupButtons GWT GWT.GenerateCompileReport GWT.GenerateUiHandlerMethod GWT.NewEntryPoint GWT.NewEventWithHandler GWT.NewModule GWT.NewRemoteService GWT.NewSerialClass GWT.NewTestCase GWT.NewUiBinder Help.JetBrainsTV Help.KeymapReference HelpMenu HelpTopics Heroku.RemoteServers.ShowContainerLog Heroku.RemoteServersViewPopup Hg.Init Hg.Log.ContextMenu Hg.Mq Hg.MQ.Unapplied hg4idea.branches hg4idea.CreateNewBranch hg4idea.CreateNewTag hg4idea.file.menu hg4idea.Graft.Continue hg4idea.merge.files hg4idea.mq.ShowUnAppliedPatches hg4idea.pull hg4idea.QDelete hg4idea.QFinish hg4idea.QFold hg4idea.QGoto hg4idea.QGotoFromPatches hg4idea.QImport hg4idea.QPushAction hg4idea.QRefresh hg4idea.QRename hg4idea.Rebase.Abort hg4idea.Rebase.Continue hg4idea.resolve.mark hg4idea.run.conflict.resolver hg4idea.tag hg4idea.updateTo hg4idea.UpdateToRevision Hibernate.SessionFactorySettings HideActiveWindow HideAllWindows HideCoverage HideSideWindows HierarchyGroup HighlightUsagesInFile HippieBackwardCompletion HippieCompletion Hotswap HtmlAddTableColumnAfter HtmlAddTableColumnBefore HtmlTableCellNavigateDown HtmlTableCellNavigateLeft HtmlTableCellNavigateRight HtmlTableCellNavigateUp I18nize IDEACoverageMenu IdeScriptingConsole IgnoreChoicesGroup Images.EditExternally Images.Editor.ActualSize Images.Editor.ToggleGrid Images.Editor.ZoomIn <M-]> Images.Editor.ZoomOut Images.EditorPopupMenu Images.EditorToolbar Images.ShowThumbnails Images.Thumbnails.EnterAction Images.Thumbnails.Hide Images.Thumbnails.ToggleRecursive Images.Thumbnails.UpFolder Images.ThumbnailsPopupMenu Images.ThumbnailsToolbar Images.ToggleTransparencyChessboard ImplementMethods ImportModule ImportModuleFromImlFile ImportProject ImportSettings IncomingChanges.Refresh IncomingChangesToolbar IncrementalSearch IncrementWindowHeight IncrementWindowWidth InferNullity InheritanceToDelegation Inline InsertLiveTemplate InspectCode InspectCodeGroup IntegrateChangeSetAction IntegrateFiles IntroduceActionsGroup IntroduceConstant IntroduceField IntroduceFunctionalParameter IntroduceParameter IntroduceParameterObject IntroduceVariable InvalidateCaches InvertBoolean J2EEGenerateGroup J2EEViewPopupMenu JasmineGenerateAfterEachMethodAction JasmineGenerateBeforeEachMethodAction JasmineGenerateNewSpecAction JasmineGenerateNewSuiteAction JavaCompileGroup JavaDebuggerActions Javaee.Deploy Javaee.KeepDeployedAfterDisconnect Javaee.RefreshDeploymentStatus Javaee.Undeploy javaee.UpdateRunningApplication JavaeeEditorGenerateGroup JavaeeMigrationGroup JavaeeRunDeploymentViewToolbar JavaeeRunToolWindowToolbar JavaGenerateGroup1 JavaGenerateGroup2 JavaMethodHierarchyPopupMenu Javascript.Linters.JSCS.Fix JavaScriptDebugger.HideActionsGroup JavaScriptDebugger.HideDomPropertiesAction JavaScriptDebugger.OpenUrl JAX-RS.GenerateJavaFromWADL JAX-RS.GenerateWADL JAXB Jdbc.OpenConsole Jdbc.OpenConsole.CreateNew Jdbc.OpenTableEditor Jdbc.RunQueryInConsole Jdbc.RunQueryInConsole.Selection Jdbc.RunSqlScript jpa.AddJpaProviderSupport Jpa.AssignDataSources Jpa.OpenConsole JpaPatternAction JpaViewPopupMenu Jpdl.CreateJpdl Jpdl.Designer JS.TypeInfo JS.TypeScript.Compile JS.TypeScript.Compile.Current JSCallHierarchy.BaseOnThisMethod JSCallHierarchyPopupMenu JSClassHierarchyPopupMenu JSHierarchyPopupMenu JSMethodHierarchy.BaseOnThisMethod JSMethodHierarchyPopupMenu JspActions JsTestFrameworkCodeGeneratorGroup JumpToLastChange JumpToLastWindow JumpToNextChange LangCodeInsightActions LanguageSpecificFoldingGroup LegacyNewAndroidComponent LocalHistory LocalHistory.PutLabel LocalHistory.ShowHistory LocalHistory.ShowSelectionHistory LogDebugConfigure LookupActions Macros MacrosGroup MainMenu MaintenanceAction MaintenanceGroup MainToolBar MainToolBarSettings MakeAllJarsAction MakeJarAction MakeModule MakeStatic ManageProjectTemplatesAction MarkAsOriginalTypeAction MarkAsPlainTextAction MarkExcludeRoot MarkFileAs MarkGeneratedSourceRoot MarkGeneratedSourceRootGroup MarkNotificationsAsRead MarkRootGroup MarkSourceRootGroup Maven.AddFileAsMavenProject Maven.AddManagedFiles Maven.AfterCompile Maven.AfterRebuild Maven.AlwaysShowArtifactId Maven.AssignShortcut Maven.BaseProjectMenu Maven.BeforeCompile Maven.BeforeRebuild Maven.BeforeRun Maven.BuildMenu Maven.CollapseAll Maven.DependencyGraphMenu Maven.DependencyMenu Maven.DownloadAllDocs Maven.DownloadAllGroup Maven.DownloadAllGroupPopup Maven.DownloadAllSources Maven.DownloadAllSourcesAndDocs Maven.DownloadSelectedDocs Maven.DownloadSelectedSources Maven.DownloadSelectedSourcesAndDocs Maven.EditRunConfiguration Maven.ExecuteGoal Maven.ExpandAll <M-]> Maven.GenerateGroup Maven.GlobalProjectMenu Maven.GroupProjects Maven.IgnoreProjects Maven.NavigatorActionsToolbar Maven.NavigatorProjectMenu Maven.OpenProfilesXml Maven.OpenSettingsXml Maven.RefactoringGroup Maven.Reimport Maven.ReimportProject Maven.RemoveManagedFiles Maven.RemoveRunConfiguration Maven.RunBuild Maven.RunConfigurationMenu Maven.ShowBasicPhasesOnly Maven.ShowEffectivePom Maven.ShowIgnored Maven.ShowSettings Maven.ShowVersions Maven.TasksGroup Maven.ToggleOffline Maven.ToggleProfile Maven.ToggleSkipTests Maven.Uml.Exclude Maven.UpdateFolders Maven.UpdateFoldersForProject MaximizeToolWindow MemberPushDown MembersPullUp MethodDown MethodDuplicates MethodHierarchy MethodHierarchy.BaseOnThisType MethodHierarchy.ImplementMethodAction MethodHierarchy.OverrideMethodAction MethodHierarchyPopupMenu MethodUp Migrate MigrateCvsRoot MinimizeCurrentWindow ModuleSettings Move MoveAttributeInAction MoveAttributeOutAction MoveEditorToOppositeTabGroup MoveLineDown MoveLineUp MoveModuleToGroup MoveStatementDown MoveStatementUp MoveTabDown MoveTabRight Mq.Patches.ContextMenu Mq.Patches.Toolbar Mvc.Actions Mvc.Plugins Mvc.RunTarget Mvc.Upgrade MyEditorPopupMenu NavbarPopupMenu NavBarToolBar NavBarToolBarOthers NavBarVcsGroup NewAction NewAndroidAssetImage NewApplicationComponent NewCfmlFile NewClass NewCoffeeScriptFile NewDialog NewDir NewElement NewElementInMenuGroup NewElementSamePlace NewFile NewForm NewFormSnapshot NewFromTemplate NewGroup NewGroup1 NewGroupPersistence NewGuiceBindingAnnotation NewGuiceMethodInterceptor NewGuiceModule NewGuiceProvider NewGuiceScopeAnnotation NewHtmlFile NewJavaDiagram NewJavaScriptFile NewModule NewModuleComponent NewModuleInGroup NewModulesDiagram NewPackageInfo NewProject NewProjectComponent NewProjectFromVCS NewProjectOrModuleGroup NewPropertyAction NewScratchFile NewStylesheetFile NewTypeScriptFile NewXml NewXmlDescriptor NextDiff NextEditorTab NextOccurence NextParameter NextProjectWindow NextSplitter NextTab <M-S-]> NextTemplateParameter NextTemplateVariable ObtainPermanentTicket OnlineDocAction openAssertEqualsDiff OpenEditorInOppositeTabGroup OpenEjbERDiagramAction OpenFile OpenInBrowser OpenInBrowserEditorContextBarGroupAction OpenInBrowserGroup OpenInSceneBuilder OpenModuleSettings OpenPersistenceERDiagramAction OpenProjectGroup OpenProjectWindows OptimizeImports org.jetbrains.plugins.groovy.actions.generate.accessors.GroovyGenerateGetterAction org.jetbrains.plugins.groovy.actions.generate.accessors.GroovyGenerateGetterSetterAction org.jetbrains.plugins.groovy.actions.generate.accessors.GroovyGenerateSetterAction org.jetbrains.plugins.groovy.actions.generate.constructors.GroovyGenerateConstructorAction org.jetbrains.plugins.groovy.actions.generate.equals.GroovyGenerateEqualsAction org.jetbrains.plugins.groovy.actions.generate.missing.GroovyGenerateMethodMissingAction org.jetbrains.plugins.groovy.actions.generate.missing.GroovyGeneratePropertyMissingAction osgi.bnd.reimport osgi.bnd.reimport.all osmorc.viewGeneratedManifests OtherMenu OverrideMethods PackageAIR PackageFile Pageflow.Designer PairFileActions ParameterInfo PasteMultiple Pause Perforce.Force.Refresh PerforceDirect.Edit PerforceDirect.Menu PerforceEnableIntegration PinActiveTab PinToolwindowTab PlaybackLastMacro PlaySavedMacrosAction PluginDeployActions PopupHector PowerSaveGroup PreviousDiff PreviousEditorTab PreviousOccurence PreviousProjectWindow PreviousTab <M-S-[> PreviousTemplateVariable PrevParameter PrevSplitter PrevTemplateParameter Print PrintExportGroup ProductivityGude ProfilingActions ProjectViewAnalysisGroup ProjectViewChangeView ProjectViewCompileGroup ProjectViewPopupMenu ProjectViewPopupMenuModifyGroup ProjectViewPopupMenuRefactoringGroup ProjectViewPopupMenuRunGroup ProjectViewPopupMenuSettingsGroup PropertiesDiff PropertyInspectorActions PropertyInspectorActions.AddProperty PropertyInspectorActions.CommonActions PropertyInspectorActions.EditValue PropertyInspectorActions.RemoveProperty PsiViewer PsiViewerForContext PublishGroup PublishGroup.CompareLocalVsRemote PublishGroup.Download PublishGroup.SyncLocalVsRemote PublishGroup.SyncLocalVsRemoteWith PublishGroup.Upload PublishGroup.UploadTo PublishGroupPopupMenu QuickActions QuickChangeScheme QuickDocCopy QuickEvaluateExpression button=1 clickCount=1 modifiers=512 QuickImplementations QuickJavaDoc QuickList.Deployment QUnitGenerateNewTestAction QUnitGenerateSetupAction QUnitGenerateTearDownAction RearrangeCode RecentChangedFiles RecentChanges RecentFiles refactoring.extract.dependency refactoring.introduce.property RefactoringMenu RefactoringMenu1 RefactoringMenu2 RefactoringMenu4 Refactorings.QuickListPopupAction ReformatCode Refresh Register RegistrationActions ReleasePermanentTicket ReloadFromDisk RemoteExternalToolsGroup RemoteHost.NewGroup RemoteHost.NewRemoteItem RemoteHostView.CopyPaths RemoteHostView.CreateFile RemoteHostView.CreateFolder RemoteHostView.EditRemoteFile RemoteHostView.EditSource RemoteHostView.Rename RemoteHostView.SetPermissions RemoteHostView.ToggleExclusion RemoteHostViewPopupMenu RemoteServers.ChooseServerDeployment RemoteServers.ChooseServerDeploymentWithDebug RemoteServers.ConnectServer RemoteServers.DisconnectServer RemoteServers.EditDeploymentConfig RemoteServers.EditServerConfig RemoteServersViewPopup RemoteServersViewToolbar RemoveFromFavorites RemoveMiddleman RenameAttributeAction RenameElement RenameFavoritesList RenameFile RenameTagAction ReopenClosedTab Replace ReplaceAttributeWithTagAction ReplaceConstructorWithBuilder ReplaceConstructorWithFactory ReplaceInPath ReplaceMethodWithMethodObject ReplaceTagWithAttributeAction ReplaceTempWithQuery RepositoryChangesBrowserToolbar Rerun RerunFailedTests RerunTests ResizeToolWindowDown ResizeToolWindowGroup ResizeToolWindowLeft ResizeToolWindowRight ResizeToolWindowUp Resolve ResolveAll REST RESTClient.RunRequest RestoreDefaultLayout Resume RevealIn RevertUnchanged RevisionGraph Run RunClass RunConfiguration RunContextGroup RunContextPopupGroup RunCoverage RunGc RunInspection RunJsbtTask RunMenu Runner.CloseAllUnpinnedViews Runner.CloseAllViews Runner.CloseOtherViews Runner.CloseView Runner.Focus Runner.FocusOnStartup Runner.Layout Runner.MinimizeView Runner.RestoreLayout Runner.View.Close.Group Runner.View.Popup Runner.View.Toolbar RunnerActions RunnerLayoutActions RunTargetAction RunToCursor SafeDelete SaveAll SaveAsNewFormat SaveAsTemplate SaveDocument SaveFileAsTemplate SaveProjectAsTemplateAction ScopeView.EditScopes ScopeViewPopupMenu ScrollTreeToCenter Seam.Create.Components.Xml Seam.Create.Pageflow Seam.Create.Pages.Xml SearchEverywhere SelectAllOccurrences SelectIn SelectInRemoteHost SelectNextOccurrence SendEOF SendFeedback SendToFavoritesGroup Servers.Deploy Servers.DeployWithDebug Servers.Undeploy ServersToolWindowToolbar SetJobsForChangeList SeverityEditorDialog Shelve.KeymapGroup ShelveChanges.UnshelveWithDialog ShelvedChanges.DeleteDeleted ShelvedChanges.Diff ShelvedChanges.ImportPatches ShelvedChanges.Rename ShelvedChanges.Restore ShelvedChanges.ShowHideDeleted ShelvedChanges.Unshelve ShelvedChangesPopupMenu ShelvedChangesToolbar ShelvedChangesToolbarGear Show.Current.Revision ShowAppliedStylesAction ShowBackwardPackageDeps ShowBookmarks ShowCdiDependenciesPopup ShowColorPicker ShowContent ShowDependenciesOnTarget ShowErrorDescription ShowExecutionPoint ShowFilePath ShowIntentionActions ShowJsbtTasks ShowLog ShowModulesDependencies ShowNavBar ShowPackageCycles ShowPackageDeps ShowPackageDepsGroup ShowPopupMenu ShowProcessWindow ShowProjectStructureSettings <M-;> ShowPropertiesDiffVsLocal ShowRecentFindUsagesGroup ShowReformatFileDialog ShowRegistry ShowSeamDependenciesGraph ShowSettings <M-,> ShowSettingsAndFindUsages ShowSiblings ShowTabsInSingleRow ShowTips ShowUmlDiagram ShowUmlDiagramPopup ShowUsages SliceBackward SliceForward SmartStepInto SmartTypeCompletion SMTestRunnerStatistics SMTestRunnerTestsTree SplitHorizontally SplitVertically Spring.Beans.Generate.Action Spring.Beans.Generate.Constructor.Dependency.Action Spring.Beans.Generate.Setter.Dependency.Action Spring.Beans.Generate.Testing.Dependency.Action Spring.Create.Context.File Spring.Patterns.ActionGroup SpringGenerateGroup Spy-js.AddLabel Spy-js.CaptureOnlyEvent Spy-js.CaptureOnlyFile Spy-js.CaptureOnlyStackFile Spy-js.CloseDocument Spy-js.CloseTraceFiles Spy-js.Context.Tree Spy-js.Event.Tree Spy-js.FileDependencyGraph.CommonLayoutGroup Spy-js.FileDependencyGraph.Default Spy-js.FileDependencyGraph.LocateEvent Spy-js.FileDependencyGraph.SearchFunction Spy-js.FileDependencyGraph.Tree Spy-js.FindNextFunctionNextCallFromStack Spy-js.FindNextFunctionPreviousCallFromStack Spy-js.FindPrevFunctionNextCallFromStack Spy-js.FindPreviousFunctionPreviousCallFromStack Spy-js.FindThisFunctionNextCallFromStack Spy-js.FindThisFunctionPreviousCallFromStack Spy-js.GoToFirstFoundOccurence Spy-js.GoToLastFoundOccurence Spy-js.GoToNextFoundOccurence Spy-js.GoToPreviousFoundOccurence Spy-js.Graph.ExportToFile Spy-js.Graph.Layout.Fit.Content Spy-js.Graph.Preview Spy-js.Graph.Print Spy-js.Graph.Show.Edge.Labels Spy-js.JumpToCaller Spy-js.JumpToMappedTrace Spy-js.JumpToPackageFile Spy-js.JumpToSource Spy-js.JumpToTrace Spy-js.MuteEvent Spy-js.MuteFile Spy-js.MuteNodeModuleAction Spy-js.MuteNodeModules Spy-js.MuteStackFile Spy-js.RefreshDocument Spy-js.RemoveAndCloseTraceFiles Spy-js.RemoveChildren Spy-js.RemoveNode Spy-js.SearchFunction Spy-js.SearchFunctionFromStack Spy-js.ShowAppDependencyGraph Spy-js.ShowEventDependencyGraph Spy-js.Stack.Toolbar Spy-js.Stack.Tree sql.ChangeDialectAction SqlGenerateGroup StandardMacroActions Start.Use.Vcs StartStopMacroRecording StartupWizard StepInto StepOut StepOver Stop StoreDefaultLayout StructuralSearchActions StructuralSearchPlugin.StructuralReplaceAction StructuralSearchPlugin.StructuralSearchAction StructureViewCompileGroup StructureViewPopupMenu Struts.Generate.Actions.Group Struts2.Create.StrutsXml Subversion.BrowseSVNRepository Subversion.CleanupProject Subversion.Clenaup Subversion.CompareWithBranch Subversion.Copy Subversion.Create.External Subversion.ImportToSVNRepository Subversion.Lock Subversion.MarkLocallyDeletedTreeResolved Subversion.MarkResolved Subversion.MarkTreeResolved Subversion.MergeFrom Subversion.Relocate Subversion.Resolve Subversion.SetProperty Subversion.Share Subversion.ShareWholeProject Subversion.ShowProperties Subversion.TogglePropertiesDiff Subversion.Unlock SubversionFilePopupGroup SubversionGroup SubversionUpdateActionGroup SurroundWith SurroundWithEmmet SurroundWithLiveTemplate SwitchApply SwitchBootJdk SwitchCoverage SwitchDown Switcher SwitchLeft SwitchRight SwitchUp SwitchViewActions Synchronize SynchronizeCurrentFile TabList TabsAlphabeticalMode TabsPlacementBottom TabsPlacementGroup TabsPlacementLeft TabsPlacementNone TabsPlacementRight TabsPlacementTop TagDocumentationNavigation TalkToFdb.Flex.Debug TapestryGroup task.actions tasks.analyze.stacktrace tasks.and.contexts tasks.close tasks.configure.servers tasks.create.changelist tasks.goto tasks.group tasks.open.in.browser tasks.show.task.description tasks.switch tasks.switch.toolbar tasks.toolbar.group TechnicalSupport TemplateParametersNavigation TemplateProjectProperties <M-;> TemplateProjectSettingsGroup TemplateProjectStructure <A-;> TestData.Navigate Testing.SelectInTree TestStatisticsTablePopupMenu TestTreePopupMenu TextComponent.ClearAction Tfs.Add Tfs.Branch Tfs.Checkout TFS.CreateVirtualFolder Tfs.ItemInfo Tfs.Label Tfs.Lock TFS.ManageWorkspaces Tfs.MergeChanges TfsFilePopupGroup TfsGlobalGroup TfsGroup TfsTreePopupMenu TimeLapseView ToggleBookmark ToggleBookmark0 ToggleBookmark1 ToggleBookmark2 ToggleBookmark3 ToggleBookmark4 ToggleBookmark5 ToggleBookmark6 ToggleBookmark7 ToggleBookmark8 ToggleBookmark9 ToggleBookmarkWithMnemonic ToggleBreakpointAction ToggleBreakpointEnabled ToggleContentUiTypeMode ToggleDistractionFreeMode ToggleDockMode ToggleFieldBreakpoint ToggleFloatingMode ToggleFullScreen ToggleFullScreenGroup ToggleLineBreakpoint ToggleMethodBreakpoint TogglePinnedMode TogglePopupHints TogglePowerSave TogglePresentationMode ToggleReadOnlyAttribute ToggleSideMode ToggleTemporaryLineBreakpoint ToggleWindowedMode ToolbarFindGroup ToolbarMakeGroup ToolbarRunGroup ToolsBasicGroup ToolsMenu ToolsXmlGroup ToolWindowsGroup TurnRefsToSuper TypeHierarchy TypeHierarchy.BaseOnThisType TypeHierarchy.Class TypeHierarchy.Subtypes TypeHierarchy.Supertypes TypeHierarchyBase.BaseOnThisType TypeHierarchyPopupMenu UiDebugger UIToggleActions UML.ActualSize Uml.Analyze UML.ApplyCurrentLayout Uml.CollapseNodes UML.DefaultGraphPopup UML.EditorGroup Uml.ExpandNodes UML.ExportToFile UML.Find UML.FitContent UML.Group UML.Group.Simple Uml.NewElement Uml.NewGroup Uml.NodeCellEditorPopup Uml.NodeIntentions UML.PrintGraph UML.PrintPreview Uml.PsiElement.Actions Uml.Refactoring UML.SaveDiagram UML.ShowChanges Uml.ShowDiff UML.ShowStructure Uml.Standard.Toolbar.Actions UML.ZoomIn UML.ZoomOut UnmarkGeneratedSourceRoot UnmarkRoot Unscramble UnselectPreviousOccurrence Unsplit UnsplitAll Unversioned.Files.Dialog Unwrap UnwrapTagAction UpdateActionGroup UpdateCopyright UpdateFiles UsageView.Exclude UsageView.Include UsageView.Popup UsageView.Rerun UsageView.ShowRecentFindUsages vaadin.CreateCustomComponent vaadin.CreateWidget ValidateJsp ValidateXml Vcs.Browse Vcs.ChangesView Vcs.CheckCommitMessageSpelling Vcs.CheckinProjectPopup Vcs.CheckinProjectToolbar Vcs.Checkout Vcs.CherryPick Vcs.CopyRevisionNumberAction Vcs.History Vcs.Import Vcs.IntegrateProject Vcs.KeymapGroup Vcs.Log.ContextMenu Vcs.Log.CreatePatch Vcs.Log.GoToRef Vcs.Log.IntelliSortChooser Vcs.Log.QuickSettings Vcs.Log.Toolbar Vcs.MessageActionGroup Vcs.Push Vcs.QuickListPopupAction Vcs.RefreshStatuses Vcs.RollbackChangedLines Vcs.ShowDiffWithLocal Vcs.ShowHistoryForBlock Vcs.ShowMessageHistory Vcs.ShowTabbedFileHistory Vcs.Specific Vcs.UpdateProject VcsFileGroupPopup VcsGeneral.KeymapGroup VcsGlobalGroup VcsGroup VcsGroups VcsHistory.ShowAllAffected VcsHistoryActionsGroup VcsNavBarToobarActions VcsShowCurrentChangeMarker VcsShowNextChangeMarker VcsShowPrevChangeMarker VcsToobarActions VersionControlsGroup ViewBreakpoints ViewImportPopups ViewMenu ViewNavigationBar ViewOfflineInspection ViewRecentActions ViewSource ViewStatusBar ViewToolBar ViewToolButtons VimAutoIndentLines VimAutoIndentVisual VimBack VimCancelExEntry VimChangeCaseLowerMotion VimChangeCaseLowerVisual VimChangeCaseToggleCharacter VimChangeCaseToggleMotion VimChangeCaseToggleVisual VimChangeCaseUpperMotion VimChangeCaseUpperVisual VimChangeCharacter VimChangeCharacters VimChangeEndOfLine VimChangeLine VimChangeMotion VimChangeNumberDec VimChangeNumberInc VimChangeReplace VimChangeVisual VimChangeVisualCharacter VimChangeVisualLines VimChangeVisualLinesEnd VimCopyPutTextAfterCursor VimCopyPutTextAfterCursorMoveCursor VimCopyPutTextAfterCursorNoIndent VimCopyPutTextBeforeCursor VimCopyPutTextBeforeCursorMoveCursor VimCopyPutTextBeforeCursorNoIndent VimCopySelectRegister VimCopyYankLine VimCopyYankMotion VimCopyYankVisual VimCopyYankVisualLines VimDeleteCharacter VimDeleteCharacterLeft VimDeleteCharacterRight VimDeleteEndOfLine VimDeleteJoinLines VimDeleteJoinLinesSpaces VimDeleteJoinVisualLines VimDeleteJoinVisualLinesSpaces VimDeleteLine VimDeleteMotion VimDeleteVisual VimDeleteVisualLines VimDeleteVisualLinesEnd VimExBackspace VimExEntry VimFileGetAscii VimFileGetFileInfo VimFileGetHex VimFileGetLocationInfo VimFilePrevious VimFileSaveClose VimFilterCountLines VimFilterMotion VimFilterVisualLines VimForward VimGotoDeclaration VimInsertAfterCursor VimInsertAfterLineEnd VimInsertAtPreviousInsert VimInsertBeforeCursor VimInsertBeforeFirstNonBlank VimInsertCharacterAboveCursor VimInsertCharacterBelowCursor VimInsertDeleteInsertedText VimInsertDeletePreviousWord VimInsertEnter VimInsertExitMode VimInsertLineStart VimInsertNewLineAbove VimInsertNewLineBelow VimInsertPreviousInsert VimInsertPreviousInsertExit VimInsertRegister VimInsertReplaceToggle VimInsertSingleCommand VimLastGlobalSearchReplace VimLastSearchReplace VimMotionBigWordEndLeft VimMotionBigWordEndRight VimMotionBigWordLeft VimMotionBigWordRight VimMotionCamelEndLeft VimMotionCamelEndRight VimMotionCamelLeft VimMotionCamelRight VimMotionColumn VimMotionDown VimMotionDownFirstNonSpace VimMotionDownLess1FirstNonSpace VimMotionFirstColumn VimMotionFirstNonSpace VimMotionFirstScreenColumn VimMotionFirstScreenLine VimMotionFirstScreenNonSpace VimMotionGotoFileMark VimMotionGotoFileMarkLine VimMotionGotoLineFirst VimMotionGotoLineLast VimMotionGotoLineLastEnd VimMotionGotoMark VimMotionGotoMarkLine VimMotionInnerBlockAngle VimMotionInnerBlockBackQuote VimMotionInnerBlockBrace VimMotionInnerBlockBracket VimMotionInnerBlockDoubleQuote VimMotionInnerBlockParen VimMotionInnerBlockSingleQuote VimMotionInnerParagraph VimMotionInnerSentence VimMotionJumpNext VimMotionJumpPrevious VimMotionLastColumn VimMotionLastMatchChar VimMotionLastMatchCharReverse VimMotionLastNonSpace VimMotionLastScreenColumn VimMotionLastScreenLine VimMotionLeft VimMotionLeftMatchChar VimMotionLeftTillMatchChar VimMotionLeftWrap VimMotionMark VimMotionMethodBackwardEnd VimMotionMethodBackwardStart VimMotionMethodForwardEnd VimMotionMethodForwardStart VimMotionMiddleColumn VimMotionMiddleScreenLine VimMotionNextTab VimMotionNthCharacter VimMotionOuterBlockAngle VimMotionOuterBlockBackQuote VimMotionOuterBlockBrace VimMotionOuterBlockBracket VimMotionOuterBlockDoubleQuote VimMotionOuterBlockParen VimMotionOuterBlockSingleQuote VimMotionOuterParagraph VimMotionOuterSentence VimMotionParagraphNext VimMotionParagraphPrevious VimMotionPercentOrMatch VimMotionPreviousTab VimMotionRight VimMotionRightMatchChar VimMotionRightTillMatchChar VimMotionRightWrap VimMotionScrollColumnLeft VimMotionScrollColumnRight VimMotionScrollFirstScreenColumn VimMotionScrollFirstScreenLine VimMotionScrollFirstScreenLinePageStart VimMotionScrollFirstScreenLineStart VimMotionScrollHalfPageDown VimMotionScrollHalfPageUp VimMotionScrollLastScreenColumn VimMotionScrollLastScreenLine VimMotionScrollLastScreenLinePageStart VimMotionScrollLastScreenLineStart VimMotionScrollLineDown VimMotionScrollLineUp VimMotionScrollMiddleScreenLine VimMotionScrollMiddleScreenLineStart VimMotionScrollPageDown VimMotionScrollPageUp VimMotionSectionBackwardEnd VimMotionSectionBackwardStart VimMotionSectionForwardEnd VimMotionSectionForwardStart VimMotionSentenceEndNext VimMotionSentenceEndPrevious VimMotionSentenceStartNext VimMotionSentenceStartPrevious VimMotionTextInnerBigWord VimMotionTextInnerWord VimMotionTextOuterBigWord VimMotionTextOuterWord VimMotionUnmatchedBraceClose VimMotionUnmatchedBraceOpen VimMotionUnmatchedParenClose VimMotionUnmatchedParenOpen VimMotionUp VimMotionUpFirstNonSpace VimMotionWordEndLeft VimMotionWordEndRight VimMotionWordLeft VimMotionWordRight VimPlaybackLastRegister VimPlaybackRegister VimPluginToggle VimProcessExEntry VimProcessExKey VimRedo VimReformatVisual VimRepeatChange VimRepeatExCommand VimResetMode VimSearchAgainNext VimSearchAgainPrevious VimSearchFwdEntry VimSearchRevEntry VimSearchWholeWordBackward VimSearchWholeWordForward VimSearchWordBackward VimSearchWordForward VimShiftLeftLines VimShiftLeftMotion VimShiftLeftVisual VimShiftRightLines VimShiftRightMotion VimShiftRightVisual VimShortcutKeyAction <ￋ> <C-[> <C-\> <C-]> <à> <â> <á> <ã> VimToggleRecording VimUndo VimVisualBlockAppend VimVisualBlockInsert VimVisualExitMode VimVisualPutText VimVisualPutTextMoveCursor VimVisualPutTextNoIndent VimVisualSelectPrevious VimVisualSwapEnds VimVisualSwapEndsBlock VimVisualSwapSelections VimVisualToggleBlockMode VimVisualToggleCharacterMode VimVisualToggleLineMode VimWindowClose VimWindowDown VimWindowLeft VimWindowNext VimWindowOnly VimWindowPrev VimWindowRight VimWindowSplitHorizontal VimWindowSplitVertical VimWindowUp VisualizeSourceMap WD.UploadCurrentRemoteFileAction WebDeployment.BrowseServers WebDeployment.Configuration WebDeployment.Options WebDeployment.ToggleAutoUpload Webflow.Create.Context.File WebOpenInAction WebResourcesGroup WebServicesActions WebServicesPlugin.CreateRESTClient WebServicesPlugin.CreateRestfulWebService WebServicesPlugin.CreateRestfulWebServiceClient WebServicesPlugin.CreateWebService WebServicesPlugin.CreateWebServiceClient WebServicesPlugin.GenerateJavaFromJAXBSchemas WebServicesPlugin.GenerateJavaFromWsdl WebServicesPlugin.GenerateJavaFromXmlBeansSchemas WebServicesPlugin.GenerateJAXBSchemasFromJava WebServicesPlugin.GenerateWsdlFromJava WebServicesPlugin.MonitorSoapMessages WebServicesPlugin.ShowDeployedWebServices WeighingNewGroup WelcomeScreen.ChangeProjectIcon WelcomeScreen.Configure WelcomeScreen.Configure.DesktopEntry WelcomeScreen.Configure.Export WelcomeScreen.Configure.IDEA WelcomeScreen.Configure.Import WelcomeScreen.CreateNewProject WelcomeScreen.CreateWebProject WelcomeScreen.DevelopPlugins WelcomeScreen.Documentation WelcomeScreen.Documentation.IDEA WelcomeScreen.EditGroup WelcomeScreen.GetFromVcs WelcomeScreen.ImportProject WelcomeScreen.MoveToGroup WelcomeScreen.NewGroup WelcomeScreen.OpenProject WelcomeScreen.OpenSelected WelcomeScreen.Plugins WelcomeScreen.QuickStart WelcomeScreen.QuickStart.IDEA WelcomeScreen.Register WelcomeScreen.RemoveSelected WelcomeScreen.Settings WelcomeScreen.Update WelcomeScreenRecentProjectActionGroup WhatsNewAction WindowMenu working.context WrapReturnValue WrapTagAction WrapTagContentsAction XDebugger.Actions XDebugger.CompareValueWithClipboard XDebugger.CopyName XDebugger.CopyValue XDebugger.CopyWatch XDebugger.EditWatch XDebugger.Evaluation.Dialog.Tree.Popup XDebugger.Frames.TopToolbar XDebugger.Frames.Tree.Popup XDebugger.Inline XDebugger.Inspect XDebugger.Inspect.Tree.Popup XDebugger.JumpToSource XDebugger.JumpToTypeSource XDebugger.MuteBreakpoints XDebugger.NewWatch XDebugger.RemoveAllWatches XDebugger.RemoveWatch XDebugger.Settings XDebugger.SetValue XDebugger.ToggleSortValues XDebugger.ToolWindow.LeftToolbar XDebugger.ToolWindow.TopToolbar XDebugger.UnmuteOnStop XDebugger.ValueGroup XDebugger.ValueGroup.CopyJson XDebugger.Variables.Tree.Popup XDebugger.Variables.Tree.Toolbar XDebugger.Watches.Tree.Popup XDebugger.Watches.Tree.Toolbar XmlBeans XmlGenerateToolsGroup XMLRefactoringMenu XPathView.Actions.Evaluate XPathView.Actions.FindByExpression XPathView.Actions.ShowPath XPathView.EditorPopup XPathView.MainMenu.Search XPathView.XSLT.Associations XSD2Document ZoomCurrentWindow <M-C-=> </pre> [^actionlist] </summary> [^actionlist]: [IdeaVim actionlist](https://gist.github.com/zchee/9c78f91cc5ad771c1f5d)  # Day 608 ## Random / interesting / ideas Emoji Simulator! 😘 -> generally, emojis are a nice way to convey information, instead of colour. Not nice but at least novel and ineresting. It would be nice to work them into some project or visualization. Мамо чому я не фронтендщик. # Day 606 ## Git revert vs reset last N commits Resetting, Checking Out & Reverting | Atlassian Git Tutorial is a nice guide about ways to undo some of the commits. Reset is a harder way to undo stuff that sometimes leaves no traces, Revert is a way to create a commit that undoes the last N commits, so history is preserved and that’s good. A way to revert the last N commits is this: 1 git revert --no-commit HEAD~3..  Two dots at the end are significant: @cardamom Those specify a range. HEAD~3.. is the same as HEAD~3..HEAD ## A saga about timezones So. I wanted to change time back to Berlin time from Ukrainian time. Something was wrong. ~ → timedatectl status Local time: Fr 2020-08-28 18:50:55 EEST Universal time: Fr 2020-08-28 15:50:55 UTC RTC time: Fr 2020-08-28 15:50:55 Time zone: Europe/Berlin (EEST, +0300) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no  UTC is right, time zone is right, but local time is wrong. Then I google and see that Europe/Berlin is actually EEST, +0200! Then I realize the following: Last time I needed to change the time, I changed the timezone, by doing: sudo cp /usr/share/zoneinfo/Europe/Kiev /etc/localtime  (#Kyivnotkiev) /etc/localtime was a SYMBOLIC LINK to /usr/share/zoneinfo/Europe/Berlin ~ → file /etc/localtime /etc/localtime: symbolic link to ../usr/share/zoneinfo/Europe/Berlin  By doing that, I rewrote the Berlin timezone by making it Kyiv, changing the time on my computer and changing the Berlin timezone itself. Fixed this with a bandaid by making my timezone Europe/Rome, as /usr/share/zoneinfo/Europe/Rome was never overwritten. ↑130 ~ → timedatectl status Local time: Fr 2020-08-28 17:59:15 CEST Universal time: Fr 2020-08-28 15:59:15 UTC RTC time: Fr 2020-08-28 15:59:15 Time zone: Europe/Rome (CEST, +0200) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no  Happy end. # Day 604 ## VPN DNS issues Seemed to have a conflict w/ IPv6 VPN vs the IPv4 one, first had priority. Then I had an issue where the VPN IP was the same as the IP of my router. Fixed by moving router IP. Learned a lot about how DNS works. ## Lookup website using particular DNS • nslookup somewebsite.com 8.8.8.8 looks up the website using the provided 8.8.8.8 DNS server. • systemd-resolve --status gives the current DNS settings. • sudo systemd-resolve --flush-caches flushes the DNS caches. # Day 589 ## git diff with full context How to get git diff with full context? - Stack Overflow - git diff -U1000000 - or wc -l in place of the number - any number of line larger than the file works. ## Intellij idea test results CLI output w/ ideavim The window w/ CLI output or test output can be happily manipulated with ideavim! Now I can copypaste everything easily! # Day 586 ## Jupyter Notebook vim mode When operating on cells, not text (= not insert mode), the usual j/k commands select cells when shift is used (J/K). This is neat. I should read the documentation. ## Java brackets in for statements If you have only one statement in for loops, you can drop the brackets: for (final String dt: distanceTypes) for (final double co : cutoffs) your_one_statement();  That said, it’s not a good idea :) Answer has details about the definitions, default scope for for is next statement. A statement can have brackets. for loop without braces in java - Stack Overflow ## Ideas / TODO / Fiamma / PKM Possibly sometime rewrite my link wiki (pchr8.net/f/)’s bookmarking userscript to accept data as title/complexity/rating/tag1 two three/Cat1 cat2 cat3 instead of the current multiline thingy, might be even easier to fit it into a userprompt ## Random / interesting # Day 585 ## Jaro-winkler similarity for empty strings (#nlp) Jaro-Winkler handling empty strings · Issue #28 · tdebatty/java-string-similarity - TL;DR officially ‘undefined’, what has to be returned in implementations depends on why you need it. These are nice edge cases I have to learn to watch for. ## String similarity algo explained String simularity has a nice table with similarity algos and how they perform with different changes. . # Day 584 ## Git diff Is much more flexible than expected. git diff --unified=0 doesn’t show the context lines, only the changed ones; in general the documentation is worth reading, could be a good tool to add to my belt for various one-off tasks. ## pandas convert entire dataframe to str / value type df.applymap(str) converts everythnig to str. df.applymap() applies a function to a Dataframe elementwise. (TODO anki) ## pandas import numpy If I don’t want to do import numpy as np separately (for things like np.nan), pd.np.nan works! 1 ## pandas remove NaN/nan in str np.nan in the dataframe can be removed w/ df.fillna(''), but after getting converted to string the NaN become nan and have to be removed by the string operation. As a string operation, it’s important to watch out for strings containing nans, for example: pd.DataFrame({'one':['two','three','four',pd.np.nan,23,'nonanme']}).applymap(str).replace('nan','',regex=True) would change the last element. All answers here seem to have this issue. So to remove them from a string representation, pd.DataFrame({'one':['two','three','four',pd.np.nan,23,'nonanme']}).applymap(str).replace('^nan','',regex=True) works, with a regex for nan. ## qutebrowser leave passthrough mode Changed keybinding to config.bind('<Ctrl-Shift-+>', 'leave-mode', mode='passthrough'), which translates to <C-S-=>, but it seems to see = as + because Shift is being pressed. # Day 583 ## Diff character-level differences highlights command line - Using ‘diff’ (or anything else) to get character-level diff between text files - Stack Overflow gives this one nice string: git diff --word-diff=color --word-diff-regex=. file1 file2 which gives red/green characters for deletions/additions. Also, chaining greps also works nicely with grep -o which passes only the text of the actual match. Grep doesn’t support capturing groups. # Day 582 ## Intellij idea CheckStyle plugin CheckStyle-IDEA - plugin for IntelliJ IDEA and Android Studio | JetBrains exists and I had better luck w/ it than with importing the checkstyle file from Style in Settings. Gives highlights inside the code itself automatically. ## Intellij idea - “Add comment” style - put them before the text, not at first column • Can be set in “Code generation”: Action gets used w/ Ideavim’s gcc etc. To configure settings for where the generated line or block comments should be placed in Java, in the Settings/Preferences dialog Ctrl+Alt+S, go to Editor | Code Style | Java and on the Code Generation tab use options in the Comment Code section. 1 ## Intellij Idea Checkstyle highlights Intellij Idea Checkstyle highlights seem to refresh when I change a character and similar edits, but not when I change indentation w/ IdeaVim. ## Intellij idea Rainbow CSV plugin Rainbow CSV plugin is nice and highlights columns of the CSV in different colours - something I didn’t know I needed. ## Checkstyle documentation checkstyle – Imports explains (“Rationale:”) the rules used and in general is quite well-written. ## Checkstyle equalsavoidnull "My_Sweet_String".equals(nullString); is the way to go for string comparisons apparently, it avoids potential nullPointerExceptions. 2 ## String similarity algorithms in Java A library implementing different string similarity and distance measures. A dozen of algorithms (including Levenshtein edit distance and sibblings, Jaro-Winkler, Longest Common Subsequence, cosine similarity etc.) are currently implemented. ## String similarity / string distances normalization #nlp algorithm - Normalizing the edit distance - Stack Overflow has info about normalizing distances like Levenshtein etc. And how a normalized distance is not a metric anymore, as it violates the Triangle inequality w/ sum of two sides of the triangle not being longer than the third. ## Longest common subsequence Longest common subsequence problem - Wikipedia is different from Longest Common Substring is that subsequences are not required to be uninterrupted. # Day 578 ## Random / Interesting ## Intellij idea source code navigation •  to navigate to last edited location … though most of this is helpfully configurable in ideavim; esp: map <leader>b :action GotoDeclaration<CR>1 for “go to declaration”, which is <Alt+B> in vanilla ideavim. I should track things I use my mouse for most often and replace them with ideavim shortcuts. ## Lenovo Thinkpad disable Fn key Nice that I don’t have to use BIOS for this. <Fn+Esc> disables Fn key functionality. # Day 577 ## Random / books / to read ## Mediawiki change allowed filetypes wgFileExtensions = [ 'png', 'gif', 'jpg', 'jpeg', ];  # Day 576 ## Random / interesting / English • Avunculicide is the act of killing an uncle. First heard on Brooklyn 99, S5:E3 # Day 575 ## Intellij idea run class with cursor The small “play” symbols to the left on some classes can be run w/ <C-S-F10> if cursor is on them currently. ## Java supports labels! Java label? Outer, middle, inner - Stack Overflow someLabel: for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { if (i % 20 == 0) { break someLabel; } } }  Used to tell break/continue.. which loop to act on. ## Random / style / writing Calling your example classes as something that might be interpreted as a keyword of the language you are writing a tutorial about is a bad idea. (Outer here: Java Nested Classes) ## Java collections Java Collections Tutorial is a really nice tutorial by the author of the other java really nice tutorial I’ve been following. # Day 574 ## Python do something based on probability python - True or false output based on a probability - Stack Overflow mentions a really neat idea: def decision(probability): return random.random() < probability  # Day 572 ## timew TODO finally read the man page and learn to use it right, esp. splitting; look at history for the usual things I do manually (esp. moving back starting time) ## Random In my daily file, I need a better vim shortcut not to move lines to the very bottom, but to the beginning of the following day (===), should be easy - TODO # Day 571 ## Intellij idea breakpoints with no executable code So here’s a nice difference w/ Python - in Python, you can set breakpoints everywhere, and you can add something random after the line you want to look at if it’s the last line of the function. In java, I assume some pointless lines are optimized away or considered uninteresting, but you can set a breakpoint to the } bracket and the end of the function if it’s on a line alone. (Have yet to find a way to nicely output multiple values in the debugger though.) ## Intellij idea “Execute code” during debugging What I could do in Python with 2, 3, 'test', function() I can do in Java by returning an array or whatever, with Object[] t = {1, 3, 5, "whatever"}  Which is nicely covered by this Live template: Object[] t = { END }  that I run via exe<Tab> # Day 570 ## Python Did a lot of python, pandas, jupyter and enjoyed it so much that did not write any of the things I learned here, now they are lost forever. :’C ## Sonderurlaub / Germany / Bureaucracy Sonderurlaub: Anspruch bei Hochzeit, Todesfall & Umzug | karrierebibel.de - doesn’t get counted in the the number of days for ‘usual’ vacations. • Geburt des eigenen Kindes – 1 Tag • Tod des Ehepartners bzw. eingetragenen Lebenspartners – 2 Tage • aus betrieblichen Gründen erforderlicher Umzug in eine andere Stadt – 1 Tag • beim 25-jährigen und beim 40-jährigen Arbeitsjubiläum – 1 Tag • bei schwerer Erkrankung eines im Haushalt lebenden Angehörigen – 1 Tag/Jahr • bei schwerer Erkrankung eines Kindes, welches das 12. Lebensjahr noch nicht vollendet hat – bis zu 4 Tage/Jahr • zwingende ärztliche Behandlung, die nicht außerhalb der vereinbarten Arbeitszeiten erfolgen kann – Dauer ergibt sich aus An- und Abfahrtszeiten plus Behandlungszeit 1 ## First time I’ve seen anchors in real life The copied link was: https://www.arbeitsrechte.de/sonderurlaub/#:~:text=Sonderurlaub%20bei%20Hochzeit,-Die%20Entscheidung%2C%20den&text=Zwar%20erw%C3%A4hnt%20%C2%A7%20616%20BGB%20die%20Hochzeit%20nicht%20ausdr%C3%BCcklich%20als%20Freistellungsgrund.&text=Nicht%20nur%20f%C3%BCr%20die%20eigene,Die%20Silberhochzeit%20(25.) which of course broke the Markdown. TODO update ym qutebrowser keybinding to remove stuff starting with … #:~: maybe? # Day 569 ## Jupyter Notebook vim plugin copypaste Things that I selected with vim keybindings can be copypasted with usual qutebrowser keybindings (or mouse). ## Libreoffice calc search by regex You can do it if you go in the find-and-replace dialog. Checkbox -> search all ## Inverse regex .. is surprisingly hard and implementation-dependant. You can always iterate and look for the not-matched things. [^aeo] doesn’t really work for capturing groups. # Day 568 ## Random / TODO / Linux I should really rewrite my timer function to be a) Python, b) better than the current version. # Timer in zsh tm() { local DATE=(date +'%H:%M:%S %d/%m') local N="1"; shift (utimer -c > ~/s/sounds/outbash N && mpg123 -q ~/s/sounds/tib.mp3 & zenity --info --title="Time's Up" --text="{*:-BING} \n\n DATE") }  utimer seeing minutes as m while everyone else (timew especially) wanting minutes as min makes me crazy. ## Intellij idea I can remove the tree of files by doubleclicking the tabs! ## Intellij idea debugging paste <Ctrl-Shift-V> gives a nice choice of things to paste, first thing being the current content of the buffer. The others I assume are historical. ## Quotes in german / Random / Interesting / TODO # Day 567 ## Intellij idea almost-tree tabs In Tabs Config you can select a small font for them and move them to the left instead of top. # Day 564 ## Intellij idea project dependencies / maven / magic I had two projects, one used code from the other one. The other one is also compiled jars gotten via maven. Had an issue that it used the maven one instead of the manually imported one I wanted it to use, even though Ctrl+Click took me to the ‘right’ directory with the files I wanted it to see. Sorted out via Project Structure -> Modules -> modulename -> dependencies, where I deleted the maven one and pointed it to the imported folder/project ## Random / quotes / coronavirus People seem to have a naïve view of what “cured” means: someone “gets sick”, is treated, and then returns to the status quo ante. Thus there is little concern about catching the disease (or any disease) when you are not in an “at risk” group. But hospital discharge just means the treatment you get stops being worth the time/money. Ideally you finish convalescing at home. But any consequential damage isn’t ignored, as if you just had had a dented panel replaced on your car. Once I understood this error some of the discussion about dealing with the virus made sense.1 Indeed. # Day 563 ## Work / OCR Paper about the common OCR errors, containing statistical info about them and having nice clear lists w/ probabilities. ## German, English Stachelbeere – Wikipedia ist Крыжовник. English - Gooseberry. ## Libreoffice Calc Libreoffice Calc automatically replaces “ß”<->”ss”, unless you tick “Match case”. ## Intellij idea opening files in splits You can drag and drop files to the split you want to open them into. ## Magic numbers in hash functions algorithm - Reason for 5381 number in DJB hash function? - Stack Overflow is a nice answer about why numbers may be chosen. # Day 562 ## Random / podcasts / quotes • MLOps. Entwurf, Entwicklung, Betrieb – INNOQ • Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers. 1 • Crippleware - Wikipedia means that “vital features of the program such as printing or the ability to save files are disabled until the user purchases a registration key” ## English treble - …triple. ## Intellij idea search through debugger I can search through the variables in the debugger by just typing, without any / shortcut. ## Edit distance String Similarity Algorithms Compared | by Appaloosa Store | Medium compares different edit distance algos, TODO # Day 561 ## Random / interesting Third-party doctrine - Wikipedia - is a United States legal doctrine that holds that people who voluntarily give information to third parties—such as banks, phone companies, internet service providers (ISPs), and e-mail servers—have “no reasonable expectation of privacy.” ## Keyboard layout / compose Changed line to setxkbmap -option -option 'grp:rctrl_toggle, compose:rwin, compose:paus' v5,ruua &, now the Pause key works as compose too. Will check whether the RWIN works back at home with the keyboard that has a RWIN. 1 ## vim macro For markdown references, updated my old @R macro to add an additional /Enter before the actual reference part, so it's gets parsed correctly: let @R = 'viw"oyi[^^[^[^[^[A]^[^[^[Go^M[^^[^[^[^["opA]: ^[^[^[^['et @R = 'viw"oyi[^A]Go [^"opA]: ' For the ^M/Enter, I used the old <C-v><Enter> trick. 2 ## intellij toolbox app The Toolbox app is actually not bad at all and quite easy to use and the things it installs can actually be run from CLI. It also recognized my manually downloaded intellij - which raises the question how did it do that. EDIT Do 17 Sep 2020 07:29:48 CEST: but of course the environment variables set in ~/.zshrc are not going to be set if you launch the toobox app not via CLI. ~/idea/bin/idea.sh remains my favourite method. ## maven documentation / skipping tests Maven Surefire Plugin – Skipping Tests has nice info and its readable, and I should read through the maven documentation sometime. To skip maven tests: mvn install -DskipTests ## Qutebrowser devtools 1) Are not enabled if I don’t import the virtualenv before running qutebrowser 2) Can be happily moved to a separate window by :devtools window ## taskwarrior Added these two nice functions to zsh, for work and not-work: tt () {task s project:w "*"} th () {task s $$sprint.is:(date +%-V) or sprint:c$$ project.not:w "*"}  # Day 557 ## Timewarrior / timew If I track something tagged ‘daily’ it sees it as <duration> and I get syntax error. ## German Randfälle - edge cases; TODO add to anki ## Random • Quirky Escape Rooms. - EscapeVenture • The name is sometimes said to be derived from an Ojibwe exonym for the Sioux meaning “little snakes” (compare nadowe “big snakes”, used for the Iroquois). ## Random / quotes / meditation However, in general, when meditating, you take the mind as you find it and work from there. There’s no particular way the mind has to be. (Reddit) ## Identify an unknown process in linux Found something called “HUNT” in htop taking A LOT of my CPU. Process with randomized name - Unix & Linux Stack Exchange: Check its process ID, and look at ls -l /proc/process_id/ to see e.g. what the executable is (the exe symlink). exe symlink pointed to /usr/sbin/huntd, which was easy to Google, and which turned up to be one of the bsdgames I tested earlier that still had its daemon running. I’ll remember this trick. (Why did it take so much memory is still a mystery but I’m not that interested to check). # Day 556 ## Random / Interesting / patterns “If it takes water lilies that double their spread every day 50 days to cover the entire lake, on what day would they cover a half of that lake?” The answer, obviously, is day 49. More to the point, day 45 would have had only seen the lilies cover 3,125% of the lake. Day 40 would have had been 0,0976% - from that little of an amount, the lilies would proceed to take over the entire lake in 10 more days. So, it’s the same way with this pandemic. I think there now enough of an evidence from anywhere in the world to say that absent an (effective, early) intervention to lower R0 inside the country, it takes about 3,5 months for the virus to blow up into a devastating contagion. 1 ## Intellij idea environment variables Intellij reads environment variables only at startup, and there’s no way to refresh them. Even “Restart”-ing it via the menu didn’t help, I think I need to physically restart the process. UPD: Even restarting the process doesn’t work if I don’t (re)start zsh (and make it read the new variables in .zshrc) in the terminal where it’s running! Which actually makes sense. ## Intellij idea git annotate VCS -> Git -> Annotate is basically git blame. It shows the last person who modified each particular line and when. ## Qutebrowser ‘open in private window’ :open -p {url} opens url in private window. qutebrowser --temp-basedir -s content.private_browsing true also works. ## Random / Interesting / Languages Circumfix - Wikipedia is when something gets added both to the beginning and the end of a word; same cluster as prefixes/suffixes. Examples are German “ge…t” and “най…чший” for German/Russian. ## Random / IT Diving in the current codebase I’m reading through, I realize just how awesome are tests to understand unknown code. The usual “change stuff and see what happens” is much easier if it’s all nicely insulated, with hardcoded values, and providing examples of how to use the code. I’ll remember this. ## qutebrowser To finally save my answers to the notifications, added config.load_autoconfig() to config.py as per qutebrowser/configuring.asciidoc at master · qutebrowser/qutebrowser # Day 555 ## Java jar/fatjar shaded dependency libraries - What is a shaded Java dependency? - Software Engineering Stack Exchange Shading dependencies is the process of including and renaming dependencies (thus relocating the classes & rewriting affected bytecode & resources) to create a private copy that you bundle alongside your own code. To Shade a library is to take the contents files of said library, put them in your own jar, and change their package. This is different from packaging which is simply shipping the libraries files in side your own jar without relocating them to a different package. ## Recovering corrupt textfiles / strings / fc builtin shell command How to fix and recover zsh: corrupt history file /home/…/.zsh_history error strings .zsh_history_old > .zsh_history fc -R .zsh_history  strings gives the strings (=printable characters) in a file; ### fc fc is freaking awesome. Linux and Unix fc command tutorial with examples | George Ornbo Running fc opens a text editor w/ the last command, closing it runs the command you edited. On my box it opens vim. This is so going to help me with long commands oh my God. Much better than the faux-vim syntax that I have in zsh. I’ll be able to use ci) and other things I always missed. fc -l, fc -l 100, fc -l 100 200 lists the last commands ran (or a range). fc -ln doesn’t print their numbers. -d gives timestamps, -f for full timestamp in US format, -fE for the usual one. # Day 554 ## Intellij / Java / Maven • JAVA_HOME does not get necessarily set and has to be set in maven runner settings (Build/exec/dev -> build tools -> maven), or in environment variables. • Maven goals’ order sometimes matters (who knew) ## History is happening # Day 553 ## English • subsume - Wiktionary • To place (any one cognition) under another as belonging to it; to include or contain something else. • To consider an occurrence as part of a principle or rule; to colligate • crass - Wiktionary - Lacking finesse; crude and obvious. ## Random / interesting ## Scrum / Agile • Full Comparison: Agile vs Scrum vs Waterfall vs Kanban is a nice resource. • TL;DR Scrum is a subset of Agile, with more focus on Sprints + team accountability, and much more prescriptive / ritualized. • Agile describes a set of principles in the Agile Manifesto for building software through iterative development. On the other hand, Scrum is a specific set of rules to follow when practicing Agile software development. **Agile is the philosophy and Scrum is the methodology to implement the Agile philosophy. ** ## German • autark – Wiktionary - von außere [wirtschaftliche] Einflüssen unabhängig.cmp autarkic in English = self-sufficient. • Quality Gate – Wikipedia • Quality Gates sind Punkte im Ablauf eines Entwicklungsprojekts, bei denen anhand von im Voraus eindeutig bestimmten Qualitätskriterien über die Freigabe des nächsten Projektschrittes entschieden wird.[1] # Day 550 ## Random / interesting / cats Существует «теория благополучия животных», которая определяет «пять свобод», необходимых животным, которые живут рядом с человеком: • свобода от голода и жажды; • свобода от дискомфорта; • свобода от травм и болезней; • свобода поведения, характерного для вида животного; • свобода от горя и страданий. 1 ## Java ### Java ternary operators Java has ternary operators! Java Ternary Operator String value = object != null ? object.getValue() : null; ### Java subclassing something w/ private fields java - Do subclasses inherit private fields? - Stack Overflow is pretty split by opinions. TL;DR they are inherited as they are used by the methods in the superclass, but you can’t use them in the subclass.o Since the subclass can’t access or modify the private fields, then, in other words, they are not inherited. But there really is just one object, it really does contain the private fields. So classes do not inherit them, but the object does. And the JLS (Java SE Specifications) is the Bible. ## History is happening Santa Cruz County Beaches Officially Reopen Due to Public Ignoring Beach Closure # Day 548 ## Java Tutorial Java Constructors is a nice series of Java tutorials! I’ll be following it to remember everything I’ve forgotten about java. ## Intellij Idea has a lot of shortcuts! sout -> System.out.println() and a lot of other similar ones, TODO find full list. ## Random / Interesting A Bolo tie is a weird kind of tie popular in the Western US; first found in “Pill Mills of Florida” creepypasta. ## History is happening Catholic priest, laity defend statue of St. Louis as leftist protestors become increasingly violent | News | Lifesitenews # Day 546 ## History is happening Seen a nice newspaper in Italy from something like March 3: “cityname: first person healed, one in reanimation”. Also in the plane they give instructions about what to do if there’s a loss of cabin pressure: you take your mask off before you wear the oxygen one. # Day 540 ## timewarrior Finally fixed the zsh function and tw command to be able to filter the output by adding escaped parentheses: s () {task s $$sprint.is:(date +%-V) or sprint:c$$ "@"}  That said, When they are not quoted, * and @ are the same. You shouldn’t use either of these, because they can break unexpectedly as soon as you have arguments containing spaces or wildcards. 1 ## random / todo Create a better vim macro that automatically generates some random text for the reference. # Day 532 # Day 530 ## Random / Interesting / English Soapbox - Wikipedia - A soapbox is a raised platform which one stands on to make an impromptu speech, often about a political subject. The term originates from the days when speakers would elevate themselves by standing on a wooden crate originally used for shipment of soap or other dry goods from a manufacturer to a retail store. ## Random / Interesting Playlist (Psilocybin for depression, Imperial College London, version 1.3) by Mendel Kaelen | Mixcloud # Day 527 ## Random / interesting / ety / History is happening Trending Words 1. blacklist 2. family 3. race 4. master 5. chauvinism 6. human 7. sand 8. blackmail 9. racism 10. nice Haha. ## Numpy reading from text and discarding comments numpy.genfromtxt — NumPy v1.18 Manual - lines starting with “#” get discarded by default. # Day 526 ## Random / Interesting I really need to sort out where do I put my links, my short-form descriptions of links, my ideas, longer-form things if any. I need to focus on “being happy” again; I know what to do, how to do it, and objectively - I have time for this. All of the white people who joined Indian tribes loved it and refused to go back to white civilization. All the Indians who joined white civilization hated it and did everything they could to go back to their previous tribal lives. 1 The Happiness Lab is relevant. I need to synthesize this all in one nice post or article or work on progress or whatever. # Day 522 ## Random / interesting Sai - Essays: Meditation & energy work techniques “It’s simple but not easy” ## Intellij Idea / vim plugin / easymotion # Day 521 ## You can write raw SVGs into HTML! Just wow, I had no idea you could do that: <b>Hi!</b> <svg> <line x1="0" y1="0" x2="10" y2="10" stroke="black"></line> <rect x="0" y="0" width="10" height="10"></rect> <circle cx="5" cy="5" r="5"></circle> <ellipse cx="10" cy="5" rx="10" ry="5"></ellipse> <polygon points="0,0 10,5 20,0 20,20 10,15 0,20"></polygon> <polyline points="0,0 10,5 20,0 20,20 10,15 0,20" stroke="black"></polyline> <path d="M65,10 a50,25 0 1,0 50,25"></path> </svg>  (Found here: An introduction to d3.js in 10 basic examples) # Day 520 ## English I rest my case | meaning in the Cambridge English Dictionary: - “what just happened proves my point” - said by lawyers in a law court when they have finished the explanation of their case ## Taskwarrior For weird stuff like symbols hard to escape and deleting annotations or whatever, the edit command exists that opens vim and makes everything very easy. ## numpy getting started The Basics of NumPy Arrays | Python Data Science Handbook is a nice refresher on the numpy basics. ## German grundlegend | Übersetzung Englisch-Deutsch is ‘basic’. I was confusing it with gründlich | Übersetzung Englisch-Deutsch, which is closer to ‘exhaustive’ ## Python unzip To do the reverse of zip(), the way is list(zip(*previously_zipped_data)) # Day 514 ## Hypermodern python Hypermodern Python · Claudio Jolowicz It has basics on how to write/run/publish a Python app in 2020, which is nice. Uses poetry and stuff. I don’t have much knowledge in such things. But next project I do will use some of the ways described in there, there’s no consensus on how to do it right but what’s described there is much better than nothing. ## Project idea Yet another nice unfinished project! I need something to unite flashcards and actual study material. I see something that gets markdown flashcards as input, and generates (via genanki1?) actual flashcards to be imported into anki, but also (with pandoc?) nice readable latex/HTML thinges in column (a la “The little schemer”) form to review it better and/or print. This is something I really miss now, since anki_import has some issues but I don’t want to learn perl to fix them. And I’d need the column format output. ## qutebrowser bindings with specifying mode Added this to config.py: config.unbind('<Shift-Escape>', mode='passthrough') config.bind('<Ctrl-Shift-Escape>', 'leave-mode', mode='passthrough')  Now I can use <Shift+Escape> in vim-mode of Jupyter Notebook! It’s used to go from insert mode inside a cell to operate on the cells themselves. I missed this. Additionally my bindings of “Ctrl” as “Escape” when clicked fast seem to work also inside other bindings! As in <Shift-fastCtrl> works as <Shift-Escape>. Wow. ## Random / youtube-dl Youtube-dl can download video from Reddit! Such as will she fall? (tutorial link in comment) : animation # Day 509 ## Python backslashes and raw strings Why can’t Python’s raw string literals end with a single backslash? - Stack Overflow - raw strings are not that raw and can’t end in a single backslash. ## New vim highlight rules for markdown files fun! SetBackslash() syn region mys matchgroup=ignore start=/^\s*\\/ end=// oneline hi link mys EndOfBuffer endfu fun! SetQuestions() syn region dash matchgroup=ignore start=/^\s*\\+/ end=// oneline hi link dash Statement endfu " fun! SetQuestions() " syn match mys /^\s*+.*/ " hi link mys Keyword " endfu autocmd filetype markdown :call SetBackslash() autocmd filetype markdown :call SetQuestions()  ## Vim increase/decrease number under cursor Ctrl+a increases the number under the cursor, \ Ctrl+x decreases the number under the cursor. ## Interesting / Random # Day 508 ## English An Ermine, aka Stoat, is the thing Lady with an Ermine holds. . Yes. Hotlinking is allowed from Wikimedia servers, but not generally recommended: this is because anyone could change, vandalise, rename or delete a hotlinked image. 1 First found in The Trouble with Tribbles which I found through Voltaire - The Trouble with Tribbles (Song Only) - YouTube # Day 507 ## Vim easymotion Changed the default <Leader><Leader> mapping to s, that I never use, now everything is much easier! ## Intellij Idea vim plugin The * thing to search for word under cursor also works! ## Random / Quotes “Шредингеров кот” (с) Андрей # Day 506 ## “Vim plugins I use” + read man pages with vim The last one is freaking awesome. ## English spunk - spark (fire); courage, spirit, determination. ## Vim new highlight groups fun! SetBackslash() syn region mys matchgroup=ignore start=/^\\/ end=// oneline hi link mys EndOfBuffer endfu fun! SetQuestions() syn region dash matchgroup=ignore start=/^\\\s*+/ end=// oneline hi link dash Statement endfu  The backslash is a way to mark “pre-written” things is my todo files. Anything after them is special. The backslash itself doesn’t get shown (matchgroup=ignore), everything else either is colored as EndOfBuffer (blue) or, if it starts with a +, as Statement (=yellow). I’ll play with the colours a bit more later. matchgroup=1 is the colour in which we’ll print the things that are actually matched as start/end, can be different from the thing demarcated by them. # Day 504 ## Python generator expressions are a thing >>> nums_squared_lc = [num**2 for num in range(5)] >>> nums_squared_gc = (num**2 for num in range(5))  The second one is a generator expression, with all the nice memory thingsies that entails. In general How to Stand Out in a Python Coding Interview – Real Python has some very interesting bits I had no idea about. And from “Dive into python”, p.193: Using a generator expression instead of a list comprehension can save both RAM and CPU. If you’re building an list just to throw it away (e.g. passing it to tuple() or set()), use a generator expression instead! Generator expressions are functionally equivalent to generator functions. ## Python itertools The itertools module has a lot of awesome stuff! 1 cycle, count, repeat, etc etc etc. Scary to think how many hours of coding I could have done over my lifetime if I hadn’t read this. ## #!/usr/bin/env python and the env trick for running stuff From the Learning Python 5th Edition book, Chapter 3 page 60: #!/usr/bin/env python ...script goes here...  This is fascinating. The env whatever command returns the location of whatever, which may or may not be standard. And apparently this is the way to write trueъ portable scripts. This goes to show that reading some nice reference line-by-line is actually a good thing if you have basic random bits of knowledge about something. So currently: • Finish Diving into Python, at least the parts I feel are relevant If I decide I need more Python in my life, • Learning Python 5th edition, 1594 pages, focuses on the Python language which is the official prerequisite to… • Programming Python, 1628 pages. It focuses on libraries and tools. The latter two have actual “Test your knowledge” tests and exercises. All of them may or may not be helpfully available illegally online, especially on github, especially in a repo I cloned. # Day 501 ## Port knocking and using ports based on IP My latest trick for deciding on external ports to forward is to combine the service port and the device’s internal IP address. If my desktop was 10.0.1.36 and the service was SSH on port 22, the external port would be 22136. So far it’s worked well, but it only really works if you force your router to only give out 10.0.1.2 through 10.0.1.99. (snazz @ Port knocking | Hacker News) Also: Port knocking is a method of externally opening ports on a firewall by generating a connection attempt on a set of prespecified closed ports. Once a correct sequence of connection attempts is received, the firewall rules are dynamically modified to allow the host which sent the connection attempts to connect over specific port(s). 1 ## Random / Interesting I’ve noticed a similar way of counting that’s still quite common today in China. They point with their thumb to each segment of their four fingers to count up to 12 on one hand. The other hand tracks the number of 12 counts, which lets you keep track all the way up to 144 with both hands. (modo_ at Roman Finger Counting | Hacker News) ## English All thumbs - Fig. very awkward and clumsy, especially with one’s hands. uncouth - clumsy, awkward, unrefined, crude. # Day 499 ## Random / Interesting / Quotes My favourite quote by Kerouac has a fuller version I forgot exists: “I don’t know, I don’t care, and it doesn’t make any difference.” ― Jack Kerouac From the 1-to-1: “You always meet twice in life” ## Tensorflow / ML Binary crossentropy is a special case of categorical crossentropy, for when you have one output. ## Zsh / Bash history I can use syntax like !10600 inside commands in the CLI! They get replaced when needed. ## Compressing PDF  pdf2ps input.pdf tmp.ps ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf , and you can tune dColorImageResolution. Out of all answers in that thread 1, it’s the only one that decreased my 2.3M pdf to 1.3MB. (Needed less than 2MB) # Day 497 ## Random / Interesting / Quotes If their absence brings you peace, you didn’t lose them. ## Vim read from stdin whatevercommand | vim - works nicely for some of the commands I’d usually use less for. Related TODO: that vim plugin to read man pages and the website I found it on. # Day 495 ## Random / interesting • fantascienza Problemi di pelle Sebastiano Diciassette • I feel like writing better reviews of the books I read on Goodreads or my blog. I miss having to put things into words, and one of my New Year’s resolutions one of the previous years has been “Less consuming, more creating. Doesn’t matter what it is, doesn’t matter if it’s bad.”, stolen from HN. There’s definitely something to it. Along with this quote: “Write it. Shoot it. Publish it. Crochet it, sauté it, whatever. MAKE.” ― Joss Whedon Also, from the Onion: This is America. Nobody deserves to be treated as a black man. Judge Rules White Girl Will Be Tried As Black Adult - YouTube # Day 494 ## DTB Todo Analyzing this DTB would make for an interesting blog post, especially by plotting the frequency of words in the headers, length, time of the day they were created. Same goes for the link wiki. Same goes for list of URLs and graphing the number of them returning 404s or similar. I also want to create better Python scripts that join everything to the master file (Master file | Diensttagebuch) with better formated dates. # Day 493 ## Rsync to slash or not to slash This definitely goes into anki: Rsync – To Slash or Not To Slash? – Rants & Raves – The Blog! Without a slash on the source directory means copy both the source directory, and the contents (recursively if specified) to the destination directory while adding a trailing slash means only copy the contents of the source directory, recursively if specified, to the destination. Without a slash on the source directory means copy both the source directory, and the contents (recursively if specified) to the destination directory while adding a trailing slash means only copy the contents of the source directory, recursively if specified, to the destination. TL;DR: #anki • Source directory: • Slash: copy the contents of the source directory, without the directory itself • No slash: copy both the directory and its files • Destination directory: doesn’t matter The difference between /target/source/source_content and /target/source_content. Usually I want slash. To memorize, the slash represents the contents of the directory in some way. Also nice handy command tree that I didn’t know I needed. ## grep excluding matches On the topic of the things I keep forgetting: grep -v excludeme, mnemonic might be reVerse? #anki ## rsync show progress rsync -ra --info=progress2 source target #anki Usually this is what I want, otherwise there’s pv that I could never get to work reliably ## Random / Interesting / Ukrainian Хештег - Як перекладається слово Хештег українською - Словотвір З огляду на технічну складову питання додам коротке обґрунтування назви “кришмітка”. Слово hash-tag отримало таку назву не просто із-за символа “решітка”, причиною використання цього символа є скорочення написання слова hash-tag, коріння якого по своїй суті заходить глибоко в науку про компьютери. Розробники використовють слово hash як скорочення слова dictionary (словничок) що є спеціальною структурою даних котра пришвидшує пошук. Hash-tag або “#tag” з технічної точки зору означає те що слово “tag” проіндексується (потрапить у індекс або іншими словами словничок) і надалі буде доступне для швидкого пошуку. Тепер про саме слово hash, у тій же компьютерній науці існує багато стуктур даних здатних виконувати роль словничка. Hash-словнички особливі тим що використовують спеціальну hash-функцію, котра дозволяє отримувати інформацію із найменшою кількістю дій над словничком (аналогія дії - перелистування сторінок словника, що є вкрай повільним). Hash-фунція на основі вхідної послідовності символів (текста чи слова) підраховує число. Якісна hash-функція буде генерувати числа особливим чином, якщо в тексті замінити бодай одну літеру число має змінитися кардинально, але визначальним є те що якщо на вхід подавати одну і ту ж саму послідовність число має залишитися незмінним. Таким чином після того як ваша послідовність символів потрапила у словничок, вам не потрібно гортати його сторінки для того щоб знайти необхідний ключ, ви підраховуєте хеш-функцію яка вам повертає номер сторінки де має знаходитись слово. Hash-функція отримала таку назву із-за дій що вона виконує над вхідними данними всередині себе. Фактично вона “кришить”, “рубає”, “перемішує”, “заплутує” вхідні данні, що відповідає англійському перекладу слова hash. Тобто логічним було б перекласти слово хеш у цьому контексті як “криш” або “міш”. Переклад слова “tag” вже здійснений, і це “мітка”, поєднавши ці варіанти отримаємо “кришмітка” що в одночас володіє певною милозвучністю. “Кришітка” є спрощеним варіантом новотвору “кришмітка”, запропонованого Денисом Яремовим. Але має кілька суттєвих переваг: 1) Милозвучніше; 2) Відповідає етимології (криш-мітка); 3) І до того ж співзвучне з назвою самого символу # - “решітка”. Знову захотілося писати Соломку українською мовою, просто щоб мати змогу використовувати слово “кришітка” :) ## Taskwarrior Removed the dependency from SPRINT by simplifying basically everything in .zshrc: s () {task s sprint.is:(date +%-V) or sprint:c *} ## Downloading private youtube playlist using youtube-dl A mostly-complete example: youtube-dl --yes-playlist --cookies ~/D/cookies.txt --playlist-end 100 --playlist-start 18 --write-description --write-info-json --all-subs -o '%(playlist_index)s - %(title)s.%(ext)s' --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.9.5 Chrome/56.0.2924.122 Safari/537.36" --min-sleep-interval 0 --max-sleep-interval 20 -i https://www.youtube.com/playlist\?list\=MYPLAYLIST -i is for skipping errors (“ERROR: 1Jlvi4qTiyE: YouTube said: This video contains content from DisneyEnterprisesInc, who has blocked it on copyright grounds.”) I could not get --user to work, because I got error 400, but --cookies works. qutebrowser’s cookies are not in the right format (but are located at ~/.local/share/qutebrowser/cookies and nicely readable), and firefox’s cookies can be downloaded using cookies.txt – Get this Extension for 🦊 Firefox (en-US). ## Youtube mildly interesting statistics Out of 2279 videos, 1995 were available, that would mean 87.5%. Makes me a bit anxious about the links on my links wiki :) I should do some datahoarding/archiving there too. And another interesting thing - the random quotes from my file usually are not easy to google, and the only result is my blog post with them (Private: ~/notes/quotes; ~/notes/phrases | Я сам, соломка, чай.) Everything as-is, sadly I don’t have sources for everything, but should be pretty easy to google. Ha. ## English kibble is store-bought dry (mostly) cat food. To kibble = ‘to coarsely grind’. Found on Peter Watts’ The Kibble Fund # Day 492 ## Searching in quotes TIL DDG doesn’t allow me to search for exact matches in quotes, which I find absolutely idiotic. Yandex works, Google works. The usual “I want to like ddg but I honestly can’t” ## To read / interesting /g/ - Let’s collect here programming books that are unusual in some sense, be it their approach, presentation, or simply just quality. “The little schemer” has a nice dialog-like structure, and I find this very interesting. I wonder if there are any other similar books (or threads). ## Editing bash scripts Take care editing bash scripts Well, after the 30 seconds elapses, the running script deletes all of my files. This happens because bash reads the content of the script in chunks as it executes, tracking where it’s up to with a byte offset. When I delete one character from the sleep line, the “next command” offset points at the r in #rm instead of the #. From the interpreter’s point of view, the # shifts backwards onto the previous line so it runs the unfortunate command. javascript:(function(){(function () {var i, elements = document.querySelectorAll('body *');for (i = 0; i < elements.length; i++) {if (getComputedStyle(elements[i]).position === 'fixed') {elements[i].parentNode.removeChild(elements[i]);}}})();document.querySelector('body').style.setProperty('overflow','auto','important'); document.querySelector('html').style.setProperty('overflow','auto','important');})(), found in One of my favorite bookmarklets to remove cookie notifications or other obnoxiou… | Hacker News To run it as bookmarklet in qutebrowser, jseval works: :jseval (function(){(function () {var i, elements = document.querySelectorAll('body *');for (i = 0; i < elements.length; i++) {if (getComputedStyle(elements[i]).position === 'fixed') {elements[i].parentNode.removeChild(elements[i]);}}})();document.querySelector('body').style.setProperty('overflow','auto','important'); document.querySelector('html').style.setProperty('overflow','auto','important');})() Now bound to ,b: config.bind(",b", ":seval (function(){(function () {var i, elements = document.querySelectorAll('body *');for (i = 0; i < elements.length; i++) {if (getComputedStyle(elements[i]).position === 'fixed') {elements[i].parentNode.removeChild(elements[i]);}}})();document.querySelector('body').style.setProperty('overflow','auto','important'); document.querySelector('html').style.setProperty('overflow','auto','important');})()") And as a bonus, ,w now takes me to the wayback machine for that page: config.bind(",w", ":jseval javascript:location.href='https://web.archive.org/web/*/'+location.href") ## Qutebrowser show all bindings :bind opens a page with all the bindings as currently configured. This answered a lot of my quesions, especially about the caret mode bindings that are not documented anywhere I could find. What’s interesting is the Ctrl-e in Insert mode that opens the editor (I usually did Esc+e) # Day 489 ## Blog categories TODO: Add links to categories in my blog, they might be useful for example for Pentachronological #0015 Праздник | Я сам, соломка, чай.. And in general maybe look into the blog itself - maybe I want to unite it with Diensttagebuch or something? ## Jekyll images size ![ddr]({{site.url}}{{site.baseurl}}/wp-content/static/pentachronological/d2.jpg){:width="40%"} ## Random/Interesting If you really want to make something good, eat good food and drink good saki. (Welcome to the NHK, episode 20.) 1 A tv drama has a progressive plot, an emotional climax and a resolution, but our lives aren’t like that… all we get day after day are vague anxieties that are never resolved. 2 questo è uno di quegli anime che fanno morire una piccola parte di te, passi 1-2 giorni ripensando a ciò che hai visto malinconico. Al 3 giorno pensi un’ultima volta a ciò che ti ha trasmesso, sorridi e il vuoto che ti ha dato si riempie di fiori dandoti molto di più da ciò che ti aspettavi. 3 And on the topic of fully enlightened people: ## Ad-hoc tables via tabulate tabulate works surprisingly well to make random tables: >>> x = tabulate.tabulate([['WHAT','Will happen','Will not happen'],['If I do this','',''],['If I don\'t do this','','']],tablefmt='grid') >>> print(x) +--------------------+-------------+-----------------+ | WHAT | Will happen | Will not happen | +--------------------+-------------+-----------------+ | If I do this | | | +--------------------+-------------+-----------------+ | If I don't do this | | | +--------------------+-------------+-----------------+ >>>  ## Italian (wow?) debellare - Wiktionary - sconfiggere/eliminare. 3 1. Welcome To The NHK 20 English Dub - YouTube, even though anime on Youtube is one of the more ephemeral things. # Day 488 ## Inkscape make handler nodes bigger microscopic handle nodes - Beyond the Basics - Inkscape Forum Confusingly, that setting is in Preferences > Input/Output > Input Devices. ## Krita lags Krita’s slowness can be fixed by looking at the settings of Display and looking through Krita FAQ — Krita Manual version 4.3.0. # Day 486 Except by clicking on them, f gives numbers you can follow;F outputs the link text in the statusbar. ## Anki::Import The Anki::Import documentation doesn’t make it clear enough, but using a quote(') works too for carrying on old tags along with the usual backtick, but for signalling an empty field only the backtick works. Also I don’t think I can control the Cloze deletions - it automatically generates identifiers for them. Not going to get into perl to fix this :) ## Vim regex reference Vim Regular Expressions 101 is a really nice reference for vim’s search/replace/regex things. Maybe I’ll work through it later. Most interesting is that groups are created with $$-$$ and mentioned as \1 (will be handy for search-and-replace!) I miss having a “now learning” textfile. (TODO) Also this is a nice summary of the differences between vim and python/perl regexes, in vim characters are more likely to be literally interpreted: 1 Perl Vim Explanation --------------------------- x? x\= Match 0 or 1 of x x+ x\+ Match 1 or more of x (xyz) $$xyz$$ Use brackets to group matches x{n,m} x\{n,m} Match n to m of x x*? x\{-} Match 0 or 1 of x, non-greedy x+? x\{-1,} Match 1 or more of x, non-greedy \b \< \> Word boundaries n \n Backreferences for previously grouped matches  And regex101.com remains the best place to test usual regexes. ## Pinta and gthumb I’ve been looking for something simpler than GIMP for casual blurring / cropping / adding text, pinta mostly fits the bill but I find it hard to use and no easy blur brush, gthumb is much more minimalistic in functions but is more pleasant to use. ## Zsh global aliases and aliases that take arguments Zsh has global aliases! An Introduction to the Z Shell - Aliasing is awesome. alias -g M='| more' -> who M This has a lot of potential for often-typed parts of commands. But I went there to look for arguments, and apparently zsh explicitly doesn’t have them and wants functions instead. So: % rm () { mv * /tmp/wastebasket } % rm foo.dvi % ls /tmp/wastebasket foo.dvi  So I changed my taskwarrior s alias to: #alias s='task s sprint.is:SPRINT or sprint:c' s () {task s sprint.is:SPRINT or sprint:c *}  Now I can finally filter my tasks for the sprint (s +F) // TODO replace dependence on SPRINT by just usind current week number. Not the first time I neglect to read the documentation of the software I switch to, being happy that it mostly works like the previous one. # Day 485 ## Random / interesting The Technium: 68 Bits of Unsolicited Advice My favourite parts: • Being enthusiastic is worth 25 IQ points. • Being able to listen well is a superpower. While listening to someone you love keep asking them “Is there more?”, until there is no more. • A worthy goal for a year is to learn enough about a subject so that you can’t believe how ignorant you were a year earlier. • Gratitude will unlock all other virtues and is something you can get better at. • Treating a person to a meal never fails, and is so easy to do. It’s powerful with old friends and a great way to make new friends. • Reading to your children regularly will bond you together and kickstart their imaginations. • Rule of 3 in conversation. To get to the real reason, ask a person to go deeper than what they just said. Then again, and once more. The third time’s answer is close to the truth. • Compare Five whys - Wikipedia* and death certificates with multiple “due to (or as a consequence of)” • The purpose of a habit is to remove that action from self-negotiation. You no longer expend energy deciding whether to do it. You just do it. Good habits can range from telling the truth, to flossing. • Promptness is a sign of respect. • If you are looking for something in your house, and you finally find it, when you’re done with it, don’t put it back where you found it. Put it back where you first looked for it. • Show up. Keep showing up. Somebody successful said: 99% of success is just showing up. • Separate the processes of creation from improving. You can’t write and edit, or sculpt and polish, or make and analyze at the same time. If you do, the editor stops the creator. While you invent, don’t select. While you sketch, don’t inspect. While you write the first draft, don’t reflect. At the start, the creator mind must be unleashed from judgement. • Perhaps the most counter-intuitive truth of the universe is that the more you give to others, the more you’ll get. Understanding this is the beginning of wisdom. • Friends are better than money. Almost anything money can do, friends can do better. In so many ways a friend with a boat is better than owning a boat. • You are what you do. Not what you say, not what you believe, not how you vote, but what you spend your time on. • When you die you take absolutely nothing with you except your reputation. • Before you are old, attend as many funerals as you can bear, and listen. Nobody talks about the departed’s achievements. The only thing people will remember is what kind of person you were while you were achieving. • When crisis and disaster strike, don’t waste them. No problems, no progress. • When you get an invitation to do something in the future, ask yourself: would you accept this if it was scheduled for tomorrow? Not too many promises will pass that immediacy filter. • Acquiring things will rarely bring you deep satisfaction. But acquiring experiences will. • Rule of 7 in research. You can find out anything if you are willing to go seven levels. If the first source you ask doesn’t know, ask them who you should ask next, and so on down the line. If you are willing to go to the 7th source, you’ll almost always get your answer. • When someone is nasty, rude, hateful, or mean with you, pretend they have a disease. That makes it easier to have empathy toward them which can soften the conflict. • Eliminating clutter makes room for your true treasures. • Experience is overrated. When hiring, hire for aptitude, train for skills. Most really amazing or great things are done by people doing them for the first time. • Buying tools: Start by buying the absolute cheapest tools you can find. Upgrade the ones you use a lot. If you wind up using some tool for a job, buy the very best you can afford. • Following your bliss is a recipe for paralysis if you don’t know what you are passionate about. A better motto for most youth is “master something, anything”. Through mastery of one thing, you can drift towards extensions of that mastery that bring you more joy, and eventually discover where your bliss is. • The universe is conspiring behind your back to make you a success. This will be much easier to do if you embrace this pronoia. ## Backup entire github account with all the repositories The Github token needed only the repo scope, needed to add it to the env variable with: export GITHUB_TOKEN=MYGITHUBTOKEN Command to backup was: ./gitbackup-0.5-linux-amd64 -backupdir BACKUPDIR -service github Should also work for gitlab. Also magically it took something like 30 seconds for the all of the 3.5GB of all my repos. # Day 484 ## German lutschen / an etwDat. lutschen - to suck (on) sth; Lutschtablette = lozenge. ## English lozenge: 1) A rhombus (shape); 2) A small (originall diamond-shaped!) tablet/sweet for a sore throat. ## Random / interesting Agnes Obel - Fuel To Fire (Official Video) - YouTube First comment on the video: All the people in this video are dead. Life is short, don’t do anything that makes you unhappy # Day 481 ## History is happening We live in interesting times. ## English shambolic - Chaotic, disorganised or mismanaged. Found somewhere on The Guardian applied to Trump’s daily health briefings. # Day 479 ## Vim exclamation mark to switch parameters A ! either forces the action or toggles the action: :set cursorline, to turn off: :set nocursorline Is equivalent to: :set cursorline! 1 ## python tabulate module tabulate2 generates nice tables of various formats! Things like: print(tabulate.tabulate(db,headers=db.columns))  epoch loss val_loss val f-score -- ------- ------ ---------- ------------- 0 1 4.31 4.62 0.579 1 2 3.72 3.61 0.705 2 3 3.54 3.25 0.722 3 4 3.31 3.06 0.737 4 5 3.19 2.93 0.736 5 1 4.31 4.62 0.581 6 2 3.72 3.61 0.72 7 3 3.54 3.25 0.755 8 4 3.31 3.06 0.755 9 5 3.19 2.93 0.764 10 6 3.12 2.83 0.798 11 7 2.95 2.76 0.779 12 8 2.91 2.69 0.757 13 9 2.84 2.64 0.816 14 10 2.68 2.63 0.835 15 11 2.71 2.56 0.83 16 12 2.69 2.52 0.825 17 13 2.62 2.49 0.826 18 14 2.6 2.46 0.845 19 15 2.56 2.44 0.84  tabulate · PyPI is the basic documentation with visualizations of each tablefmt. It even supports jira! And pipe is the usual markdown format. Let’s try: epoch loss val_loss val f-score 0 1 4.31 4.62 0.579 1 2 3.72 3.61 0.705 2 3 3.54 3.25 0.722 3 4 3.31 3.06 0.737 4 5 3.19 2.93 0.736 5 1 4.31 4.62 0.581 6 2 3.72 3.61 0.72 7 3 3.54 3.25 0.755 8 4 3.31 3.06 0.755 9 5 3.19 2.93 0.764 10 6 3.12 2.83 0.798 11 7 2.95 2.76 0.779 12 8 2.91 2.69 0.757 13 9 2.84 2.64 0.816 14 10 2.68 2.63 0.835 15 11 2.71 2.56 0.83 16 12 2.69 2.52 0.825 17 13 2.62 2.49 0.826 18 14 2.6 2.46 0.845 19 15 2.56 2.44 0.84 ## Tensorflow how does training happen with nan? TODO How does Tensorflow train stuff when loss is nan? It keeps doing something, accuracy changes, etc etc etc. - is the gradient calculated per batch as normal, ## Note Einstein / Netzah “do your own thing” # Day 478 ## German Zinseszins - Wiktionary - compound interest. Beyond logic ## pandas / python split string by multiple delimiters Split string with multiple delimiters in Python - Stack Overflow has this really nice idea of doing str.replace(':', '_') and then str.split('_'). ## Pandas split string to different columns Series.str.split(delim) can do Series.str.split(delim, expand=True), that returns different columns instead of a list. Also - if graphs don’t make sense, one way things have gone wrong is interpreting x and y as strings. # Day 476 ## Qutebrowser open in new background tab c.tabs.background = True in config opens new tabs in the background when middle-clicking. ## History is happening Nurse blocking anti lockdown protests in Denver : PublicFreakout and the imgur album: Health care workers stand in the street in counter-protest to hundreds of people who gathered at the State Capitol to demand the stay-at-home order be lifted in Denver, Colo., on Sunday, April 19, 2020. Photos by Alyson McClaran - Album on Imgur. As someone said, I really imagine seeing this in history books. ## Screen logging To visualize logs of screen sessions, less -r filename (-R hates ^H progress bars but I search seems to work a bit better) works very well. Even for the (tf) progress bars almost. ansifilter exists but deals with progress bars much worse. Empirically - for searching and scrolling the same font size / terminal size is very helpful. ## Vim macros posting Just pasting the Vim macro on Day 469, while it did not break Jekyll this time (why?), seems to have broken the RSS script at the beginning of the page. This page contains the following errors: error on line 19 at column 73: PCDATA invalid Char value 27 Copypasted the lines from terminal and back, but I need a much better way to save and ‘publish’ the macros. Found Vim Macro Trickz • Hillel Wayne when looking for solutions. ## German grammar • You need a dot between things like ‘u. a.’ in German, apparently. • on a noisy dataset = auf ein Verrauschtes Dataset • Dataset = der Datensatz, learned this far too late :) ## Essential oils .. can be added in a bath, but only in a carrier oil, olive oil works. “For a single bath, three to 12 drops of essential oil in a tablespoon (15 ml) of carrier oil is sufficient to create a very aromatic, therapeutic bath” 1 # Day 473 ## Tensorflow Tensorboard download CSV Can I export a tensorflow summary to CSV? - Stack Overflow – yes I can, by clicking “show data download links” on the top left of interface and selecting what I want to download below the plots. ## Why does loss increase at the beginning of an epoch? machine learning - Why training loss is increased at the beginning of each epoch? - Stack Overflow - probably because the dataset is not random enough, and the network overfits on the structure of the dataset. Happens with buffer_size dramatically less then the size of the structured dataset. # Day 469 ## Qutebrowser Added config.bind('tw', 'set-cmd-text -s :open -w') to config, now tw is like a, but for windows instead of tabs. ## Vim markdown references macro Added this macro: let @R = 'viw"oyi[^^[^[^[^[A]^[^[^[Go[^^[^[^[^["opA]: ^[^[^[^[' When the last word in the line is selected, it gets transformed immediately to a reference. I’ll use this vim cheatsheet as 1. As a bonus, this uses a non-default vim register so whatever is in my clipboard stays there. (But it destroys whatever I had in "o). # Day 467 ## History is happening Mafia distributes food to Italy’s struggling residents In recent days, the police in Naples have intensified their presence in the poorest quarters of the city, where men tied to the Camorra, the Neapolitan mafia, have organised home delivery of food parcels. Magistrates have already begun an investigation against a group of people who were questioned while distributing food to local residents. ## Greater Good podcast The Science of Happiness | Greater Good is a podcast about happiness, found it while looking for The Happiness Lab which is also a podcast about happiness. # Day 465 ## Vim custom syntax highlighting For SIOM and my morning pages the following two commands highlight in yellow all lines starting with a “+” after zero or more of any kind of space: :syntax match mys /^\s*+.*/ :highlight link mys Keyword  To do this everytime I open a markdown file: fun! SetQuestions() syn match mys /^\s*+.*/ hi link mys Keyword endfu autocmd filetype markdown :call SetQuestions()  ## Python stalinsort testcases Never thought about it like this, but for simple algorithms the test cases can be put in a nice array and iterated through: stalin-sort/test_utils.py at master · gustavo-depaula/stalin-sort ## Other • Watched Southern Comfort, 7/10, expected more based on the one clip with the song, but no regrets • Drew a couple of things, TODO later paste here :) # Day 464 ## screen naming screens Screens named with screen -S myname and attached by screen -r myname - tab completion works with screen -r! ## Taskwarrior list unfinished tasks created more than 2 weeks ago entry is the time the task was created. So: task all sprint:SPRINT status:pending entry.before:eow-3wk tags.not:s rc.report.all.columns:entry,end,tags,description rc.report.all.labels=Age,Done,Tags,Description rc.report.all.sort:end rc.verbose:label,blank is what I’ll use in SIOM. ## Google calendar has shortcuts! I missed this all my life. • j/k work predictably. • t Today • g Go to date • c create ## Tensorflow GPU use If more than 1 GPU are visible, tensorflow will take some memory on all of them, even if its actively using only one. Restricting visibility the usual way helps. # Day 463 ## taskwarrior better ‘done / completed last week’ command filter task all status:completed end.after:eow-2wk – I forgot you could do almost-math with the datetimes! Editing the output, to sort it by project, divide different ones by newlines, and show the headers of the table but nothing else: task all status:completed end.after:eow-2wk rc.report.all.columns:project,entry,end,tags,description rc.report.all.labels=Project,Created,Finished,Tags,Description rc.report.all.sort:project-/,end rc.verbose:label # Day 462 ## How to make perfect italian pizza This is a really nice video: How to Make Perfect Pizza | Gennaro Contaldo - YouTube ## Qutebrowser mediawiki yank userscript Using an userscript for this is overkill, but  #!/usr/bin/python3 import os title = os.environ['QUTE_TITLE'] url = os.environ['QUTE_URL'] with open(os.environ['QUTE_FIFO'], 'w') as f: f.write("yank inline \"[{} {}]\"".format(url, title))  Located at /home/shamotskyi/.local/share/qutebrowser/userscripts/yank_w.py. In the config, config.bind('yw', 'spawn --userscript yank_w.py') EDIT: replaced this with config.bind('yw', 'yank inline "[{url} {title}]"'). ## Taskwarrior tasks completed today I have not been using it to the fullest. List tasks completed today: task all status:completed end:today This might be something I can copypaste into my pages or in my reports, such as my weekly sprint review! Adding it as a module to siom should be not too hard. Taskwarrior - Usage Examples contains more nice examples. ## Python3 glob glob is not sorted! glob.glob().sorted() though is. ## Kitty kitty - the fast, featureful, GPU based terminal emulator — kitty 0.17.2 documentation: ctrl+shift+s is paste from selection ctrl+shift+u for unicode characters ## Set default browser from the shell sudo update-alternatives --config x-www-browser Doesn’t seem to work for kitty, but in the config open_url_with qutebrowser works predictably. ## English gratuitous - Wiktionary - given freely, unearned; without reason, unjustified, unnecessary, uncalled for. Seen first in Behemoth by Peter Watts. ## Taskwarrior / zsh / … week number For the sake of consistency (to each other and especially to Google Calendar) now my sprint number and week number is the ISO week number: export SPRINT=(date +%-V) Fixed this in: • SPRINT environment variable • weekNumberValue in siom • i3 statusline: tztime local { format = "[%V] %a %Y-%m-%d %H:%M:%S" }  Only place it’s left now is in my paper calendar, but I don’t use it too much these days. # Day 460 ## English balmy - Wiktionary - soothing, fragrant, mild, pleasant. Found in Behemoth by Peter Watts. ## Vim modeline I should check vim modelines (Vim documentation: options) out, systematically. ## Cooking ### Pasta Try adding cauliflower in my pasta water 1 And pasting my favourite Reddit comment for posterity: [deleted] 385 points · 1 year ago · edited 1 year ago This isn’t wrong, but not the tradition Italian way. The way we do it in Italy (Sicily) is to split the sauce in half. Take the pasta out about a minute or less before al dente. If you’re going for the creamy flavor, sauce permitting, mix some butter with the pasta as you’re draining the water. Then put the pasta in the sauce pan with half of the sauce and a (tiny) bit of pasta water. 1/4 of a cup is too much in our opinion because you don’t want to cook the pasta in the sauce for too long. Use the other half of the sauce to top it off. That’s not to say this is the only way Italians do it, but my Southern Italian family has been using this method for generations. I’m not a fan of OP’s method, if you want this kind of pasta just make a cacio e pepe. On a separate but related note, tomato sauces (without meat) should only be cooked for 30 minutes, after that they lose the aroma. Of course I’m biased, but a simple tomato sauce is one of the easiest and most delicious things in the world to make. Simmer garlic until sizzling (add red pepper flakes with garlic for arrabbiata) add decent plum tomatoes (buy whole ones and hand crush them) with S&P, basil, oregano. You can add some butter if you like. Stir occasionally, 30 minutes later you’re done. Edit: I always used to laugh to myself when I saw people getting excited about getting their first gold, and now I’m that person. Thanks kind stranger. 2 ### Bread You can freeze bread without problems: He starts with what not to freeze: “I never recommend freezing things like baguettes or ciabatta. Anything that has a large surface-to-crumb ratio just never refreshes the same.” 3 If baking, let your bread cool completely. This will prevent it from becoming soggy or moldy. Wrap each loaf tightly in plastic wrap. Then wrap it in foil or freezer paper. The double-wrap is your secret weapon for freshness.4 Unfreezing works overnight in the refrigerator. 4 While I’m at it, the yeast ratio is 2 1/4 teaspoons dry active, instant, or rapid-rise yeast granules (usually one 1/4-ounce packet) = 2/3 ounce fresh yeast 5 ## Markdown If I do annotations / sources / references, I have to put the definition on a new ‘new’ line, so it’s a new block. This was my error back at the very beginning. Not one but two. ## TODO Vim Vim macro to create an reference based on a selected line. # Day 456 ## Python -v So apparently python -v exists, output includes the adresses of all loaded modules # Day 455 ## Qutebrowser edit url in editor config.bind('E', 'set-cmd-text -s :edit-url') added to config.py allows me to press E and the command will be prefilled. Interesting arguments 1: -b, --bg: Open in a new background tab. -t, --tab: Open in a new tab. -w, --window: Open in a new window. -p, --private: Open a new window in private browsing mode.  ## Keyboard layout changes Made the following changes and bumped the version to v5: // Changing aoeu for umlauted letters key <AC01> { [ a, A, adiaeresis, s] }; key <AC02> { [ o, O, odiaeresis, n] }; key <AC03> { [ e, E, ediaeresis, t] }; key <AC04> { [ u, U, udiaeresis, u] }; // Adding ~ to the better key for this key <AD01> { [ apostrophe, quotedbl, grave, asciitilde] }; key <AD02> { [ comma, less, r, asciitilde] }; // Adding parentheses in a better place key <AD08> { [ c, C, Up, parenleft ] }; key <AD09> { [ r, R, BackSpace, parenright ] }; key <AD07> { [ g, G, bracketleft, braceleft ] }; key <AD10> { [ l, L, bracketright, braceright] }; // Numbers! key <AB01> { [ semicolon, colon,1, exclam] }; key <AB02> { [ q, Q, 2, at ] }; key <AB03> { [ j, J, 3, numbersign ] }; key <AB04> { [ k, K, 4, dollar ] }; key <AB05> { [ x, X, 5, percent ] }; key <AB06> { [ b, B, 6, asciicircum] }; key <AB07> { [ m, M, 7, ampersand] }; key <AB08> { [ w, W, 8, asterisk] }; key <AB09> { [ v, V, 9, asterisk] }; key <AB10> { [ z, Z, 0, asterisk] }; // A new delete key key <AC06> { [ d, D, KP_Delete, asterisk] };  Now I have brackets on my right hand letters :) I’ll think later what other symbols I still have not learned by heart and move the below. (Numbers, maybe?) ## Fiamma userscript update Updated the userscript to the following, now it removes stuff Mediawiki doesn’t like from the name of the page (but not from the Title, which is not part of the URL!) #!/usr/bin/python3 import os from urllib.parse import quote_plus def urlencode(string): return quote_plus(string) def replace(original): new = original.replace("|", "-") return new def replace_name(original): new = original.replace("|", "-") new = new.replace("[", "(") new = new.replace("]", ")") new = new.replace("#", "(hash)") new = new.replace("{", "(") new = new.replace("}", ")") new = new.replace("_", " ") # TODO test return new title = os.environ['QUTE_TITLE'] url = os.environ['QUTE_URL'] selected_text = os.environ['QUTE_SELECTED_TEXT'] newTitle = replace(title) newArticleName = replace_name(title) newUrl = replace(url) newText = replace(selected_text) print(newTitle) article_title = urlencode(newTitle) article_name = urlencode(newArticleName) page_url = urlencode(newUrl) selected_text = urlencode(newText) fiammaUrl = 'https://pchr8.net/f/index.php' url = fiammaUrl+'?title='+article_name+'&action=edit&preload=Template:NewLink&preloadparams[]='+page_url+'&preloadparams[]='+article_title+'&preloadparams[]='+selected_text with open(os.environ['QUTE_FIFO'], 'w') as f: f.write("open -w {}".format(url))  ## Random / Interesting This is a nice wikipedia page that starts with “Q.” and not with “Q:”, because “Q:” is forbidden as start of page name: Q. Are We Not Men? A: We Are Devo! - Wikipedia ## Pizza dough I’ll try to do this tomorrow: The Best Pizza Dough Recipe - Sugar Spun Run ## Mattermost and Python For when I get to this, it’s easy, after I install matterhook: >>> mwh = Webhook('https://chat.mycompany.de', 'myAPIhook') >>> mwh.send('test',channel='notif')  Very nice explanation here: GitHub - numberly/matterhook: Interact with Mattermost incoming webhooks easily. ## Python run from command line / shell with all the imports and stuff Say I’m in folder2 and want to run folder2/folder/main.py python3 -m folder.main adds folder2 to PATH, while python3 folder/main.py adds folder to PATH. The first option makes all imports much much easier. # Day 453 ## Giving names to screen sessions To set a name to a screen session to make attaching it easier, you either set it as parameter during screen creation (screen -S screenname) or set it from inside an attached screen by typing <C-a> :sessionname screenname. It will look like that: There are several suitable screens on: 74720.trying_to_run_GPU (03/28/20 00:33:28) (Attached) 70666.whatisthis (03/28/20 00:20:53) (Detached)  To attach it I can use only its name: screen -raAd whatisthis TODO actually read the man pages and have a better understanding of these flags instead of treating them like incantations. ## watch command set interval and highlight changes This is nice! To watch a file grow in size, except watch ls -lar you can do watch -d -n 1 ls -lar. -d makes it highlight the differences, and -n for some reason is the interval. (-i was taken I guess). ## Use only one GPU for training in Tensorflow I keep googling this, so: export CUDA_VISIBLE_DEVICES=2 And to set an environment variable before running the script (in bash at least) it’s TEST=foo; echo TEST (shell - How do I set an environment variable on the command line and have it appear in commands? - Unix & Linux Stack Exchange). export is just to make it available for other commands. ## Random It’s quite cute how google interprets me looking for kitty paths linux as cat paths linux, as in I believe that they are kinda similar in many contexts. That said, it’s very refreshing to see a program where reading the config file documentation on its official website doubles as basic tutorial for the program, since all the keyboard shortcuts used in the example config are the real ones. ## Tensorboard & SSH tunnelling Not sure why this surprises me, but I can first start a SSH shell that does a tunnel (.. and opens a SSH shell), then from it start the thing on the port that I am tunnelling. This almost looks like something I could automate if I do it often enough. ## English ferine - Wiktionary - “pertaining to wild, menacing animals” - same in Italian. First seen here: Ninco Nanco - Wikipedia. ## German speiseöl | Übersetzung Englisch-Deutsch is basically any cooking oil. ## Book about baking bread If you want to learn more about the process and jump off the deep end, Peter Reinhart’s book “The Bread Baker’s Apprentice” is a great place to start. It is detailed without being pedantic, simple without being over-simplified, and oriented for the home baker without forgetting the reasons that professionals do things the way they do. Why do you need to refrigerate bread dough overnight? - Seasoned Advice # Day 452 ## German • papierdeutsch – Wiktionary - in trockener, komplizierter deutscher Sprache; im Papierdeutsch. Found when looking for a synonim for ‘baldigst’ • abwertend – Wiktionary - opposite of ‘lobend’/’positiv’. Found it as description of ‘papierdeutsch’ :) # Day 451 ## History is happening Hilariously aggressive Covid-19 propaganda banners in China - SupChina Not gathering for a feast is so you can eat in the future, Not visiting others is so you still have relatives in the future Everyone you encounter on the streets now is a wild ghost seeking to take your life Stay in and don’t wander around, You have AC, television, and wifi as your friends ## Kitty zoom (=change font size) To zoom in/out in Kitty: map ctrl+shift+equal change_font_size all +1.0 map ctrl+shift+minus change_font_size all -1.0  ## Fiamma qutebrowser userscript Edited the userscript to pass selected text as a third parameter to the NewLink template, to which I added the third parameter, and removed the automatic closing of the window from the vim macro. ## i3 keybindings to move to / select a screen / output # focus outputs bindsym ms+o focus output DP-1-1 bindsym ms+e focus output HDMI-2 bindsym ms+u focus output eDP-1  ## Disable GPU in Tensorflow via environment variable How to disable GPU with TensorFlow? - Data Science Stack Exchange .. or set it from outside the script. ## tf.shape(x) vs x.shape ..is 1 hour 58 minutes of debugging if it’s inside of a dataset.map(). It seems to return None inside .map(), and None==1 is False instead of an exception. # Day 450 ## Kitty - the terminal emulator Added bindsym ms+Return exec ~/.local/kitty.app/bin/kitty to ~/.config/i3/config kitty - the fast, featureful, GPU based terminal emulator — kitty 0.17.1 documentation is really awesome actually, and noticeably faster than any other terminals I’ve used. TODO - read through the documentation linked above, esp wrt zooming and config. <Ctrl+Shift+F2> opens the config file. In general I love everything about Kitti for now, in all the tiny little details. Changes: font_family FiraCode-Bold font_size 10.0 cursor_blink_interval 0.5 scrollback_lines 5000 strip_trailing_spaces smart background_image ~/test.png background_image_layout tiled background_tint 0.7  ## Random / interesting Waffle House Index - Wikipedia If you get there and the Waffle House is closed? That’s really bad… — Craig Fugate, Former Head of the Federal Emergency Management Agency ## Qutebrowser writing python userscripts Just wrote this and put it into ~/.local/share/qutebrowser/userscripts/yank.py. This is an userscript that allows me to escape my only problematic markdown character (|) when copying with ym: Added config.bind('ym', 'spawn --userscript yank.py') to config.py ## Python set environment variables Why did I need to use with open(..) as f: in the above script and couldn’t just do os.environ['sth']='sth else'? ## Taskwarrior task annotation It took seeing qutebrowser/taskadd at master · qutebrowser/qutebrowser to learn that you can annotate tasks in taskwarrior! task 123 annotate my annotation that can be long adds a visible line with the annotation under the task that is shown whenever the task is shown. This is awesome and I should read manpages sometimes. ## Keyboard layout I should finally put it in order, especially given that I mostly don’t use the left-hand part of the left-hand typing layout, I started today by putting my  and ~ no LALT+SHIFT+apostrophe by adding this: key <AD01> { [ apostrophe,!quotedbl, grave, asciitilde] }; to /usr/share/X11/xkb/symbols/v4 ## Making Fiamma / Semantic Mediawiki alive again ### {{=}} template Using Template:= - Wikipedia as an example, I created a page located at = - Fiamma which I can include as {{=}} to replace URIs in parameters in my Template:B - Fiamma template. I’m not sure how would I edit all pages containing equal signs in parameters but this is a nice start. My source is Help:Template - Wikipedia, first bullet point. Same works for |, for which there’s already the default template {{!}}. ### New javascript bookmarklets qutebrowser userscripts! The old venerable bookmarklets I wrote about here Updated Fiamma “Add link” bookmarklet (now there are two of them!) | Я сам, соломка, чай. are as dead as it gets, I’ll write one userscript to rule them all :) Or one userscript and one vim script to expand it. Current iteration is: Pages to test this on: ### Running userscript in qutebrowser I had issues with commands executing too early, for example before the previous one has executed. So: Lastly for some reason the “later” sometimes are interpreted as starting at the same time, not from the time the last command finished executing. ### Vim macros for the vimwin (sorry)  " let @H = 'gg??c??bi??c??b{{B|^[^[^[j0i|^[^[^[ji|j?kb^[^[^[ji|^[^[^[o}};q' " For the 5 lines " let @L = 'ji{{?kb%?kb#set:\^Mk=?kD^[o|+sep=,}}^[' " For the tags " let @C = 'i[[C;tj?kb?kb?kbategory: ^[^[^[A]];q' " For each individual category " let @F = 'jjVG:norm! @C\^M' "Apply that to all lines till the end " let @d = '@H@L@F' " let @q = '^[A^[bbbbbbi|??^B?kb^[:%s/=/{{=}}/ge^M' " Summed up: let @C = 'i[[C;tj?kb?kb?kbategory: ^[^[^[A]];q' " For each individual category let @H = '^[A^[bbbbbbi|??^B?kb^[:%s/=/{{=}}/ge^Mgg??c??bi??c??b{{B|^[^[^[j0i|^[^[^[ji|j?kb^[^[^[ji|^[^[^[o}};qji{{?kb%?kb#set:^Mk=?kD^[o|+sep=,}}^[jjVG:norm! @C^M:x^M' " let @d = '@H@L@F'  The above changes text like: https://www.pchr8.net/d/dtb/ Diensttagebuch - A purely technical blog about things I did on particular days, for future reference and search. 5 tag1, tag tag2, tag3 Cat1 Cat2 And a category with space  to  {{B|https://www.pchr8.net/d/dtb/ |Diensttagebuch - A purely technical blog about things I did on particular days, for future reference and search. |5 |6 }} {{#set: k=tag1, tag tag2, tag3 |+sep=, }} [[Category: Cat1]] [[Category: Cat2]] [[Category: And a category with space]]  For the above, jekyll had issues with utf-8 encoding and the escaped characters, so I copy-pasted them with my mouse from my terminal. Additionally it converts the equal sign to its template, and saves-and-closes gvim. … And with the glorious new page Waffle House Index - Wikipedia - Fiamma a new era for that wiki starts again! This raises the question about what is the role of this blog, but I think here we’ll stick to IT stuff ## Vim script omit “Pattern not found” error ..especially when writing macros that replace stuff. The magic is the e option at the end: :%s/x/y/ge And the vim macro / script doesn’t break anymore. ## DTB Master file Added some things to the concat.sh script, it’s even more ugly now but the resulting page is okay: # Day 449 ## Random / Interesting Why do color TVs make black and white snow? | Hacker News The other question is “why don’t you see that noise when the TV is tuned in?” The TV has automatic gain control. When the signal is weak, it will amplify it up to the right level. If the signal is just background noise, then it will amplify that background noise until it’s at the “right level” for a proper TV signal. So, the gain is lower for stronger signals, and very high when there is no signal at all. the artefacts created in the black and white picture by the colour signal are hardly noticeable, but they are enough to recover the colour from a black and white recording! The Unofficial Colour Recovery Wiki | Fandom ## Programmer competency matrix Programmer Competency Matrix – Sijin Joseph, I don’t agree with everything but looks like a nice blueprint ## Random Picture from xkcd what-if 0034 found on this article about evaluating LMs: Evaluation Metrics for Language Modeling and hotlinked from what-if 0034. ## Qutebrowser Added to config.py: c.tabs.pinned.frozen = False c.tabs.title.format_pinned = "{current_title}"  ## German / Deutsch Cabinfever is der Lagerkoller. # Day 448 ## Bash print full path to a file I’m so glad this exists and I don’t have to do pwd+ls+copypaste anymore! # realpath example.txt /home/username/example.txt  Not a default shell built-in, readlink -e (or -m or -f) does the same. ## Quotes Moses was fond of repeating at this time a quote often used in Albany. “You can get an awful lot of good done in the world if you’re willing to let someone else take the credit for it.” (The power broker by Robert A. Caro, p.315) ## xclip using it right Copy and paste at the Linux command line with xclip | Opensource.com The line is yourcommand | xclip -sel clip which is aliased to xc, so yourcommand | xc. ## scp port forwarding If I have something running on servername:6006 reachable only from 127.0.0.1 (on the server itself), I can do this: ssh -L 4000:127.0.0.1:6006 servername Which makes it available for me from my localhost as 127.0.0.1:4000 To check if the thing running on servername can be reached from outside, netstat -tulpen A Guide to SSH Port Forwarding/Tunnelling - Boolean World ## qutebrowser tabs width Added this to qutebrowser’s config.py, two keybindings to make the tabs width smaller and back, to save screen space. ## English tetchy - “Easily annoyed or irritated; peevish, testy or irascible.” ## Podcasts Lost in Larrimah - Whooshkaa has 6 episodes 20 mins each and it sounds interesting. ## Python formatting PyFormat: Using % and .format() for great good! is a website dedicated completely to Python formatting that I could read through someday. ## History is happening # Day 446 ## History is happening My favourite corona-Dashboard has a nice new option to “align by date of 100th case”: Coronavirus charts It looks like this today: # Day 445 ## German The Mad Hatter in Alice im Wunderland in German is Der Hutmacher! ## Mediawiki + SMW update This was so so so easy, oh my God. Even though I was updating basically everything from a very old version, to a different PHP and MariaDB version. TL;DR move files, install manually my one extension needed, export/import mysql table data, point the wiki to the newly created table/db, run php maintenance/update.php and it just magically took care of everything. Only gotcha was that I forgot the db prefix, which gave me DBQueryError after restore; error in update.php on Project:Support desk, solved with the first google result. This was so much easier than expected. EDIT2 - forgot about Extension:ParserFunctions - MediaWiki, and a couple of smaller ones. So: EDIT3: Had to move the /images/ folder with its content. To check for them, Gallery of new files - Fiamma works Now live again at pchr8.net/f/ EDIT4: properties seem to be broken and capitalized, which makes semantic search unusable. I’ll deal with it later. ## Jonatan Hui blog Jonathan Hui blog Mostly ML stuff in a static html blog. ## zsh setting and checking environment variables If I do: export PYTHON_PATH=(pwd), then check it via PYTHON_PATH hoping to see something like:\ zsh: command not found: Fr 20. Mär 19:48:01 CET 2020 - this won’t happen, as this is a path, and the result would be same as cd PYTHONPATH, therefore outputting nothing and leaving me with the impression that the value was not being set. # Day 444 ## Changed font in the Terminal Changed the font from Fira Code Light to Fira Code Medium (EDIT: now Bold. True-bold text still gets rendered as extra-bold, which is very nice too!). It works much better on not-bright-enough screens that stand in front of too-bright windows. ## Tensorflow saving model weird errors about init things I could not save a Tensorflow Keras model, the issue was that I passed arguments from init as: self.whatever = whatever, then changed self.whatever to a different data type (string to b’ytes’ w/ .encode in my case), then in the get_config() function then I happily said {'whatever': self.whatever,} which then could not be encode()‘d. ## Random / interesting Granular convection - Wikipedia is the process where biggerr parts of something float above when surrounded by smaller parts of something and vibration. ## History is happening I’m not sure this is the place for this (oh wait, my blog, I decide the rules, it is now), but since the universe is interesting right now, I feel like preserving some parts. Not necessarily like a diary, just links that I feel will represent this interesting time better than many words could. # Day 443 ## Githubusing keys instead of passphrase This is very nice and concise: Setup SSH keys for use with GitHub/GitLab/BitBucket etc, along with this series: Generating a new SSH key and adding it to the ssh-agent - GitHub Help TL;DR generate a key, add it to Github, add it to the ssh-agent as  eval "(ssh-agent -s)" > Agent pid 59566  ssh-add ~/.ssh/id_rsa  Test the results as → ssh -T git@github.com Hi username! You've successfully authenticated, but GitHub does not provide shell access.  If the key is in a non-default location, Host github.com HostName github.com User jaeaess IdentityFile ~/.ssh/id_rsa_github_jaeaess is needed in the ~/.ssh/config file. To push without being asked for passwords, the remote needs to be changed from HTTPS to SSH:  git remote remove origin  git remote add origin git@github.com:AquilineAdaeze/gitformyMac.git  Since it doesn’t seem to be persistent, the unsafe way (even though it’s considered unsafe in general) is to add ssh-add -q ~/.ssh/id_rsa_github to startup. ## Intellij Idea copy absolute path To copy absolute path of a file, Ctrl+Shift+C works. ## Transformer Keras load a trained model and do some changes Very interesting discussion: Loading a trained model, popping the last two layers, and then saving it · Issue #8772 · keras-team/keras For the Sequential model, model.pop() also exists but not for the Functional one. For a Functional model, after getting a model from an .h5 file, we can do things such as: new_model = Model(model.inputs, model.layers[-3].output) # Day 442 ## Keras / Tensorflow why saving a subclassed model is hard Very nice R-centric explanation, but should be valid for Python too: Saving and serializing models A subclassed model differs in that it’s not a data structure, it’s a piece of code. The architecture of the model is defined via the body of the call method. This means that the architecture of the model cannot be safely serialized. To load a model, you’ll need to have access to the code that created it (the code of the model subclass). Alternatively, you could be serializing this code as bytecode (e.g. via pickling), but that’s unsafe and generally not portable. ## TODO Tensorflow model saving / prediction Why am I getting wildly different accuracies and losses after loading the model from .h5 file, when model.weights for both are identical and predictions (using model.predict()) too? This probably has something to do with me misunderstanding datasets, how exactly? ## Tensorflow/Keras # Day 441 ## Qutebrowser tab-give keybinding Added config.bind('tg', 'set-cmd-text -s :tab-give') to qutebrowser config.py. set-cmd-text is nice, -s means add space to the end, and now I know more about qutebrowser modes in general - for example, I can do keybindings even while I’m inserting a :command. The further it goes the more I love qutebrowser. ## Intellij idea debugger Debug tool window - Help | IntelliJ IDEA If I click and the Debugger pane disappears, Alt+5 makes it appear again in the previous state. ## cat compressed files with zcat This is very nice: zcat auth.log.3.gz ## Choose default webcam lenovo - 18.10: how to set system default webcam? - Ask Ubuntu # Day 437 ## Toread How to Make Yourself Into a Learning Machine - Superorganizers - fascinating practical use of the Zettelkasten method, amongst other things - don’t have time for this now but I will read it later. + Using Anki to Remember Everything You Read | Hacker News as my source. Adding to this: ## TODO Qutebrowser • Create a better ym that automatically escapes things like | • Resurrect pchr8.net/f/ since I really really miss it as my place to organize stuff # Day 436 ## Tensorflow Keras reset states of everything Everytime I call model.fit() it does NOT reset the weights, DOES reset the hidden states (such as RNN/LSTM), does NOT reset optimizer settings. machine learning - keras.fit() re-initialises the weights - Stack Overflow If I want to reset them, keras.backend.clear_session() should clear the info from the previous model. # Day 434 ## Matplotlib/pyplot reset styles If I set a style like paper with plt.style.use('paper') it changes some settings (esp. in Jupyter Notebook) that don’t get overwritten by the next calls to plt.style.use(). For this, plt.style.use('default') exists. (Found here: python - How to recover matplotlib defaults after setting stylesheet - Stack Overflow) ## Matplotlib have lines of the same colours when cycling / set line colour explicitly The idea is to access the colour cycle directly: Also I learned that there’s a nice way to get a value for ax when I don’t have it: ax=plt.gca() And that I should look into itertools because this is really neat (TODO: Look into itertools): ## Matplotlib get list of available styles The list of available styles in matplotlib: plt.style.available To use: plt.style.use('paper') ## Matplotlib adjust subplots When creating a plot with many subplots via a loop I had the issue that they were too close together. Fixed with plt.subplots_adjust(): matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) matplotlib.pyplot.subplots_adjust — Matplotlib 3.1.2 documentation ## Matplotlib subplots TODO add what I finally understood about the location of the subplots # Day 430 ## German - Geburtsname Geburtsname: Vorname oder Nachname - Das versteht man darunter - FOCUS Online Müssen Sie in einem Formular Ihren Geburtsnamen angeben, handelt es sich um Ihren Nachnamen, den Sie bei Ihrer Geburt erhalten haben. Sofern Sie nicht geheiratet und den Namen Ihres Ehemanns oder Ihrer Ehefrau angenommen oder eine Namensänderung beantragt haben, können Sie hier Ihren aktuellen Nachnamen angeben. ## Bash/terminal command with a certain percent chances of running [ [RANDOM % 10] = 0 ] && do_this || do_that “s gives roughly a 1 in 10 chance of do_this running, and a 9 in 10 chance of do_that running. You can omit || do_that to just have a 10 percent chance of do_this running.” (seen here: Clear Your Terminal in Style - Adam.) ## Vim vimmotion plugin in visual mode The vim vim-easymotion plugin (easymotion/vim-easymotion: Vim motions on speed!) also works in select/visual mode! EDIT: there’s an intellij idea plugin! Just wow ## Intellij Idea / Ideavim / Easymotion plugin I’m very very very glad about this, this is one thing that I missed from vim! AlexPl292/IdeaVim-EasyMotion: EasyMotion emulation plugin for IdeaVim To activate I had to add set easymotion after setting the leader key in .ideavimrc. I just to not-forget about it. # Day 429 ## Python imports Python ‘No module named’ error; ‘package’ is not a package - Stack Overflow TL;DR Beware of conflicting filenames. I keep getting bitten by this - if I have a folder called something and inside it something called something.py and want to import something from the folder, it will take something to mean something.py instead of the folder. Quoting the most helpful answer: I was using the same name for both a sub-package (directory) and a module (file) within it. For example I had this:  /opt/mylib/myapi /opt/mylib/myapi/__init__.py /opt/mylib/myapi/myapi_creds.py # gitignored file for user/pass /opt/mylib/myapi/myapi.py # base module, load creds and connect /opt/mylib/myapi/myapi_dostuff.py # call myapi.py and do work  The script ‘myapi.py’ imports credentials from myapi_creds.py via this statement:  from myapi.myapi_creds import my_user, my_pass Testing the module 'myapi.py' resulted in this error:  ./myapi.py Traceback (most recent call last): File "./myapi.py", line 12, in <module> from myapi.myapi_creds import my_user, my_pass File "/opt/mylib/myapi/myapi.py", line 12, in <module> from myapi.myapi_creds import my_user, my_pass ModuleNotFoundError: No module named 'myapi.myapi_creds'; 'myapi' is not a package  The solution was to rename myapi.py to myapi_base.py so it’s name does not collide with the sub-package name. ## Markdown code in quotes Is there a way to put code blocks in block quotes? - Meta Stack Overflow TL;DR Code is indented four spaces, but inside a quote (>) they have to be indented five spaces. ## English - dingbat dingbat - Wiktionary - crazy person - typographical ornament (like arrows) - small device/gadget the correct term for which is forgotten/unknown ## Scipy normality test scipy.stats.normaltest — SciPy v1.4.1 Reference Guide - function returns amongst other things p-value that the sample comes from a normal distribution. ## Meaning of buffer_size= in dataset.shuffle() tensorflow - Meaning of buffer_size in Dataset.map , Dataset.prefetch and Dataset.shuffle - Stack Overflow It affects how random the shuffle is. A buffer size of 1 would not shuffle at all, one bigger than the dataset would be perfect. It’s basically the size of the randomly created bucket from which we pick the next element. # Day 428 ## Tensorflow running eagerly TODO What is the difference between setting run_eagerly while compiling a tf.keras model vs setting it after compilation vs tf.config.experimental_run_functions_eagerly(True)? ## Tensorflow saving models blues As of Di 03 Mär 2020 17:11:47 CETA, it seems saving weights both in .h5 format and tf format is broken. For TF format, [TF2.0] Bug when saving weights with custom layers · Issue #26811 · tensorflow/tensorflow, you should use .h5; For .h5, Tensorflow 2.x seems to use the same names of Variables if they are unnamed, which creates conflicts when saving. The fix is to name all the variables: Custom layer weights all have the same name by default · Issue #36650 · tensorflow/tensorflow ## Zinc for common colds This paper: Zinc for the common cold—not if, but when says that it’s conclusive evidence that it helps at <24h after the start and that it reduces the risk of colds. I’m not sure I understand what’s the right dose though # Day 427 ## Tensorflow Dataset API split to train/test Splitting a tf Dataset is surprisingly hard. Best option is Along with stuff like this if you know the dataset size: (Though I don’t see any fuction to get a dataset size from the Dataset). # Day 422 ## Qutebrowser clear all finished downloads Added this to config.py: config.bind('<Ctrl-I>', 'download-clear') ## Python string sanitization Different ways to ‘sanitize’ a list of strings to ensure they don’t contain any of the contents of another ‘ignored’ list # Day 420 ## Change volume on different soundcard Added the following lines to .config/i3/config: Now there are two shortcuts for two volumes :) ## Use vim to change encoding of file :set fileencoding=utf8, then :w newfilename. # Day 417 ## Taskwarrior project: project:myproject can be replaced by pro:myproject ## Meta - Diensttagebuch Updated the layout to output 10 posts in full and 10 as links on the first page, instead of the previous 3/7. ## English Idioms See the writing on the wall - Idioms by The Free Dictionary — “To notice and interpret apparent signs or indications that something will or is about to happen in the future, especially something bad or unfortunate.”, “To know something is about to happen”. Found here. ## Random Spent a lot of time understanding why do i3 and my mouse and Intellij Idea not work, fix was removing the headphones that were pressing a mouse button on the laptop. # Day 416 ## Transformer & BERT ML article NLP — BERT & Transformer - Jonathan Hui - Medium is probably the best explanation of the Transformer and BERT I’ve even seen. ## Fill paragraph, Knuth and psychologically bad breaks Implement Fill Paragraph for coments · Issue #2737 · intellij-rust/intellij-rust This is fascinating problem, originally solved by Knuth himself, and a primarily example of dynamic programming: www.eprg.org/G53DOC/pdfs/knuth-plass-breaking.pdf. However interesting the problem might be, I’d rather my IDE solved it, and not me :-) TODO - read it sometime maybe, I’ve skimmed through it and it looks very interesting. ## Intellij Idea ideavim plugin remove keybinding Predictably to remove a keybinding imported from .vimrc in .ideavimrc the usual syntax is used: unmap <C-h> ## Intellij Idea Ideavim go to last modified line The vim shortcut '' works in ideavim as well! ## General idea about Tensorflow and writing stuff for it It’d be nice to have fixed values (and especially dimensions!) for my tensors that I use for testing stuff such as layers. If my input tensors’ dimensions are predictable, like [10, 9, 8, ...] for each dimension, I’d be able to recognize them immediately at various stages without having to think about it. For a level up, I can consider for example Fibonacci numbers or similar, that have different divisors, so that the program will fail early and predictably if I do something wrong. Otherwise I kinda like the approach of Tensor Considered Harmful, especially the part where dimensions have human-readable names. ## Deutsch / Jour fixe TIL: Jour fixe ist ein in einer kleinen Gruppe von Personen fest vereinbarter, regelmäßig wiederkehrender Termin (Regeltermin), zum Beispiel „jeder zweite Donnerstag im Monat“. In der Arbeitswelt wird zu diesem Regeltermin meist eine Besprechung durchgeführt. ## reStructuredText for Python documentation 7. Documenting Python — Python Developer’s Guide is something I can try to follow. PEP 287 – reStructuredText Docstring Format | Python.org has more examples. Getting permanent links to files - GitHub Help tells me to press y for the URI to update to the permanent link to that version of the file. Ideavim search seems “smart” by default, ignores case unless I use case in my search. # Day 415 ## Ambient sleeping pill Ambient Sleeping Pill – Internet Radio for Sleep, Meditation & Relaxation is what it says it is. Background music is okay. “For sleep, meditation or study”. Nice alternative to brain.fm ## Intellij idea “Add as content source” getting ignored that leads to “module not found” in Python depending on the order of the files of PYTHONPATH and/or sys.path I had two modules, both marked as source roots, with conflicting subfolder names. It could not find modules inside the second folder. Right click → Unload modules helped; I could unload the conflicting module, after this it happily started importing the files from the second source root. This is a band-aid fix but for now it works; TODO later find out a better way to solve these problems. If not, there are always uglier hacks like sys.path.extend(['folder_marked_as_source_root_that_doesn't_seem_to_get_added_to_PATH']) ## Emulate Python prompt during debugging in Intellij Idea An interactive shell can be used during debugging in intellij idea! See Interactive console during debug? – IDEs Support (IntelliJ Platform) | JetBrains ## Keras saving model ‘Not JSON Serializable’ error Cannot export Keras model TypeError: (‘Not JSON Serializable:’, b’\n…’) · Issue #27112 · tensorflow/tensorflow - yet another reason to use Keras’ own methods. tf.concat -> tf.keras.layers.Concatenate etc etc etc. ## Keras loading weights from only some layers of the model machine learning - How to load only specific weights on Keras - Stack Overflow If your first 9 layers are consistently named between your original trained model and the new model, then you can use model.load_weights() with by_name=True. This will update weights only in the layers of your new model that have an identically named layer found in the original trained model. # Day 414 ## NLP Reddit Natural Language Processing exists and is surprisingly active. ## Keras Transformer Bert implementation kpot/keras-transformer: Keras library for building (Universal) Transformers, facilitating BERT and GPT models is a non-official Transformer and Bert implementation using Keras >= 2.0 ## Stanford CS 224N - Natural Language Processing with Deep Learning Stanford CS 224N | Natural Language Processing with Deep Learning has lectures, slides etc etc etc. Based on the lecture 06 from 2019, it’s freaking awesome, I really like the way the slides are done. I really really really like the way slides are done. In general that course would answer most of the questions I’ll ever have It also has literature suggestions, all free to read online. Very glad I found it. # Day 413 ## English A Snowclone is a cliché and phrasal template that can be used and recognized in multiple variants. Examples: • Eskimo words for snow • In space, no one can X • X is the new Y • The mother of all X • X-ing while Y • To X or not to X • Have X, will travel • X considered harmful ## Another explanation of Transformer - “The Annotated Transformer” The Annotated Transformer seems the very best explanation I’ve found. It’s a Jupyter notebook, very detailed and containing an implementation. Link found here: course-nlp/8-translation-transformer.ipynb at master · fastai/course-nlp which in turn is a Jupyter Notebook used in this nice Youtube video lecture: Introduction to the Transformer (NLP video 17) - YouTube. In this post I present an “annotated” version of the paper in the form of a line-by-line implementation. I have reordered and deleted some sections from the original paper and added comments throughout. In general everything posted by the Harvard NLP team is very interesting for me especially: Code. It’s all nicely visualized and/or with source code. ## Linux watch command It runs a command continuously and updates the screen when the output changes. Found in my zsh history, watch nvidia-smi is one example. ## Heaps’ law Heaps’ law - Wikipedia “is an empirical law which describes the number of distinct words in a document (or set of documents) as a function of the document length (so called type-token relation)”. In “See also” it has quite a large amound of other “laws” which may be interesting. # Day 409 ## unittest@skipUnless Python unit testing models/transformer_main_test.py at master · tensorflow/models uses a neat thing: ## Linux keyboard compose key Yet another change to the layout - now compose lives on rwin: setxkbmap -option -option 'grp:rctrl_toggle, compose:rwin' v4,ru & This makes the entire file as follows: # Day 408 ## Python ModuleNotFoundError ‘requests’ To get requests one has to install requests-html. requests might already be installed. Why did I get ModuleNotFoundError instead of ImportError? Apparently it’s new in Python 3.6 and it’s a subclass of ImportError, just more precise; catching ImportError would work for it too. ## Programming cases name • Flat case: myvariable • Kebab case: my-variable (this is the most famous. Other names include: caterpillar case, dash case, hyphen case, lisp case, spinal case and css-case) • Camel case: myVariable • Pascal case: MyVariable (other names: capital camel case) • Snake case: my_variable (other names: c case) • Macro case: MY_VARIABLE (other names: upper case) • Cobol case: COBOL-CASE (other names: Train case) # Day 407 ## Vim “Done” map/macro The following inside the .vimrc moves the selected line to the end of the file and takes the cursor back: map <C-d> dGp'' From the first answer: The \. command will bring you to your last change. The \ goes to a mark, and . is a “special” mark which is automatically set to the position where the last change was made. See :help . for some more information. There is also  which will bring you back to where the cursor was before you made your last jump. See :help \\ for more information. Another useful mark is \^; this is the position where the cursor was the last time when insert mode was stopped. See :help \^. See :help mark-motions for some more general info about using marks (including some other “special” marks that are automatically set). # Day 406 ## English / ML - ablation study/analysis (20) In the context of deep learning, what is an ablation study? - Quora, may God forgive me for a Quora link - An ablation study typically refers to removing some “feature” of the model or algorithm, and seeing how that affects performance. and An ablation study is where you systematically remove parts of the input to see which parts of the input are relevant to the networks output. First seen in page 3 of Deep contextualized word representations ## Knowledge wikis Gabor Melli’s Research Knowledge Base looks to be basically what I’ve tried to do. His layout for the posts is also interesting, for example see here: Personal Blog - GM-RKB It has a Context, Example(s), Counter-Example(s), and References. But I can't find any meta-level page describing this Gabor Melli’s Knowledge Base (GM-RKB) - GM-RKB. Usually the more interesting topics contain other stuff, such as Meaningless Universe Theory - GM-RKB the References contain actual quotes. I really really really want to resurrect my own wiki. ## Tensorflow v1 The tf.global_variables_initializer() gets rid of “Attempting to use uninitialized value” errors. ## CNN visualization (ML) How to visualize convolutional features in 40 lines of code has very cool pictures of intermediate layers of a CNN, along with pictures that seem to fit to it. This is realyl really cool. ## qutebrowser bindings qutebrowser/.config/qutebrowser/autoconfig.yml · 39516940c80b70bab059e563a129709882f4a41e · Jay Kamat / dotfiles · GitLab has very interesting bindings, with interesting commands like fake-key and stuff, along with per-websites(?) bindings; javascript whitelisting. ## CNN tutorial Again I come back to this nice resource: 6.4. Multiple Input and Output Channels — Dive into Deep Learning 0.7.1 documentation It has a very nice explanation of CNNs and in/out channels and stuff. Especially output channels: Regardless of the number of input channels, so far we always ended up with one output channel. However, as we discussed earlier, it turns out to be essential to have multiple channels at each layer. In the most popular neural network architectures, we actually increase the channel dimension as we go higher up in the neural network, typically downsampling to trade off spatial resolution for greater channel depth. Intuitively, you could think of each channel as responding to some different set of features\o(6.4. Multiple Input and Output Channels — Dive into Deep Learning 0.7.1 documentation) ## Duckduckgo I’m feeling lucky This is awesome! Works with a backslash: \tf.nn.maxpool # Day 403 ## Tensorflow tf.math.count_nonzero() works for booleans, as in “number of True elements in tensor” ## Python mutable/immutable dictionaries/lists changing inside a function Tutorial: Why Functions Modify Lists, Dictionaries in Python just got bitten by this again :) TL;DR lists and dicts are mutable, therefore if I pass them to a function and it does stuff to it they will get changed outside the function too. dict.copy() helps. # Day 401 ## Adding concat.sh to dtb One thing which I continuously missed was a way to quickly search through all the files visually - :Ag as fuzzy search is a really nice solution, but I still like the usual way. So now the following was added: cat * | grep -v "layout: post" | grep -v "categories: \[" > ../master_file.md

This is purely a text file that I plan to work with as a text file (though it gets compiled to .html during deployment), and we’ll see what happens next with it.

## Random / interesting

Compass rose - Wikipedia, especially the names of the winds. I wonder if they could become names for hostnames/servers or something.

## CNN Tutorial - Machine Learning

Simple Introduction to Convolutional Neural Networks is really nice and has pictures of swans.

# Day 396

## Taskwarrior .zsh alias current sprint change

Changed zsh alias to alias s='task s sprint.is:$SPRINT or sprint:c', it didn’t have the .is before showing me 40, 41… for sprint 4 etc. ## Taskwarrior seq recurring tasks commands For next year: 10270 for i in$(seq 4 9 52)\nt add project:h +MOD  sprint:$i change toothbrush 10272 for i in$(seq 4 4 52)\nt add project:h +MOD  sprint:$i Master monthly backup  # Day 395 ## English ## DNB And let’s come back to an old favourite of this Diensttagebuch… Today's Sets 1.D3B 86% 1m. 27s. 2.D4B 56% 1m. 48s. 3.D4B 28% 1m. 48s. 4.D4B 39% 1m. 48s. 5.D4B 39% 1m. 48s  # Day 394 ## Intellij idea shortcut for closing tab Ctrl+F4 closes the current tab, which is not too easy to type. But I set a nice shortcut Ctrl-I which is not, action is “Close all unmodified”, it closes all the tabs I usually close manually - all internal TF stuffs that open when debugging and that I don’t want to change or edit (but breakpoints are okay, and they don’t seem to count as “modification”) ## qutebrowser edit current url go is the default shortcut for this. ## Tensorflow masking function not_equal This is very nice and easy and easy to forget: mask = tf.not_equal(inputs, '') It has sisters such as tf.math.less, etc. ## Tensorflow python unittests check for equality of two tensors tf.assertEqual(x, y) exists, can be used in unittests as is, if it raises an error the test automatically fails. ## Intellij idea generate tests This is awesome! Right click on class name -> Generate -> Test, and this creates a boilerplate file with the right name and right methods. # Day 392 ## Python truthy and falsy TIL that values considered true/false without being explicitly True/False have a name, and from python - What is Truthy and Falsy? How is it different from True and False? - Stack Overflow here’s a handy list of them: All values are considered “truthy” except for the following, which are “falsy”: • None • False • 0 • 0.0 • 0j • Decimal(0) • Fraction(0, 1) • [] - an empty list • {} - an empty dict • () - an empty tuple • '' - an empty str • b'' - an empty bytes • set() - an empty set • an empty range, like range(0) • objects for which • obj.__bool__() returns False • obj.__len__() returns 0 A “truthy” value will satisfy the check performed by if or while statements. We use “truthy” and “falsy” to differentiate from the bool values True and False. Truth Value Testing # Day 389 ## Python type hinting Allegedly one of the best tutorials to start with: Type hinting and annotations — Python for you and me 0.4.alpha1 documentation, link found here: A deep dive on Python type hints · Vicki Boykis. That blog in general is quite interesting, she’s the same person who wrote IT runs on Java 8 · Vicki Boykis. ## Random - good small datasets From the same blog above, Good small datasets · Vicki Boykis is nice. TIL datasets can have documentation. ## Tensorflow SequenceExamples to and from String tf.train.SequenceExample.FromString(se.numpy()).SerializeToString()==se, logically. They can be parsed without an extract function and tf.io.parse_single_sequence_example() # Day 387 ## Tensorflow py_function in mapping and Raggedtensors one is a RaggedTensor. This gives an error: TypeError: Tensors in list passed to 'input' of 'EagerPyFunc' Op have types [<NOT CONVERTIBLE TO TENSOR>, int32] that are invalid. Tensors: [tf.RaggedTensor(values=Tensor("RaggedFromVariant/RaggedTensorFromVariant:1", shape=(None,), dtype=int32), row_splits=Tensor("RaggedFromVariant/RaggedTensorFromVariant:0", shape=(None,), dtype=int64)), <tf.Tensor 'RaggedFromVariant_1/RaggedTensorFromVariant:0' shape=(None,) dtype=int32>] one.to_tensor() converts it to Tensor and this works. Additionally, if I set Tout to be only one value, I get a nice descriptive error: OperatorNotAllowedInGraphError: iterating over tf.Tensor is not allowed: AutoGraph is disabled in this function. Try decorating it directly with @tf.function. Giving a type for both outputs fixes this. ## Tensorflow RaggedTensor and Tensor evaluation Ragged tensors | TensorFlow Core gives a nice breakdown of the ways to evaluate a Tensor in general: • print(rt.to_list()) • print(rt[1].numpy()) • Printing the constutuents of it: • print(rt.values) • print(rt.row_splits) # Intermezzo - 2 ## Три истории про Мерзебург Вот про Мерзебург надо писать на русском языке, на самом деле, хотя нереально объяснить почему. Сижу за идеально пустым столом комнатки где провел предыдущие 4 года. Вокруг какие-то непонятные бумаги на полу, какие-то ручки, как будто после урагана. Господи, сколько же всякого происходило тут за последние 4 года. Сижу за знакомым столом, который на идеальной высоте, куда идеально ложатся локти. Хотя все вещи кроме общажной мебели отсюда увезены, чудом осталась свечка и спички. Сейчас она горит и пахнет воском, тоже до боли знакомый запах, с точностью до всех нот - конкретно такие свечки и покупал 4 года подряд. И писал на таких листочках А4, тем же почерком, той же рукой. . Свеча выглядит как будто она догорит сегодня, и это лучшее и самое правильное совпадение этого мира. Комнатка прошла полный круг - а изменился ли я? А еще - город где была сфокусирована моя жизнь довольно долгое время. Сейчас тут пустая комната, за окном - темнота, хорошие люди в городе и самом общежитии в общем-то остались, но само нахождение тут как-то просто странно. Очень хороший повод порефлексировать о том, как можно себя чувствовать совершенно чужим в каком-то городе, особенно по вечерам. Помню летние месяцы тут - за окном лето, ты в напрочь пустом общежитии маленького городка восточной Германии, чувство свободы и пустоты, лето, бесконечное лето, лето как состояние. С работой это все будет стираться, и надо пытаться себя учить замечать маленькие детали в изменениях сезонов, иметь хоть какие-то ритуалы связанные с разными порами года, чтоб это не сливалось и чувствовать, к приеру, лето, про-живать, пере-живать сезоны. Постик об этом, отчасти. Но это все лирика, лирика которая не должна отвлекать нас от того, что на самом деле важно - ### Окна Слева от меня два огромных окна, традиционно жертвы моей любимой темы писать на окнах и давать хорошим людям писать на моих окнах. Очень много этих надписей связаны с вполне конкретными людьми и воспоминаниями. Все что следует написано очень многими разными почерками и размерами и цветами, кроме левой половины первого окна. . #### Окно 1, левая половина Life is a non-0-sum game. "Nothing exists except atoms and empty space. Everything else is opinion" - Democritus ____ - - - SIT, BE STILL AND LISTEN, BECAUSE YOU ARE DRUNK AND WE'RE ON THE EDGE OF THE ROOF - RUMI __________ BE A LIGHT UPON YOURSELF. ___________ ___________ I make my own coincidences, synchronicities, Luck, and Destiny. ____________ Rule your mind, or it will rule you. ____________ Безумие, безумие, безумие. (с) М. Рисунок роботов, вид сверху.  #### Окно 1, правая половина L'occhio del lupo Amazon U: ---/--- P: admin123 __________ Рисунок круга с точкой внутри Leave tonight or live and die this way. padik is where your semki shells lie Еще одна схема робота, одного, вид прямо Рисунок слона, подписан Ellina Antal Szerb: Reise im Mondlicht Это все часть пути  Now playing: Händel - Sarabande, просто самая сильная извесная мне композиция. Мурашки по коже. Продолжаю. . #### Окно 2, левая половина -- Что мне терять на этоп этапе? -- Этап. Ойген Matthew 6:33 TachibanaPC2998 Wovor laüfst du weg? Непонятный рисунок с квадратиками, кружочками и штрих-пунктиром. We were dringking with Ukrainians! 19:01 Рисунок короны Рисунок трех синусоид, суммирующихся в 1 Две неразборчивых надписи 6C | 2-3 Wo bist du? Sergej Еще одна неразборчивая надпись Buch "Krabat" (↳ O.Preußler) Смайлик Логитип BMW Рисунок земли, над ней шар, вокруг шара концентрические стрелочки Под ним: "2001" I fucking like weather сука SOKOLY (I.M.T. SMILE)  #### Окно 2, правая половина  Большой рисунок каббалисткого Древа Жизни, с буквами на иврите внутри 10:45 am Мыло для бульбашек Рисунок лица в очках Сережа ня :3 "Я тебя щелкну как семку!" (с) Женя Рисунок Дао 25см (i) 1:17 Странный рисунок лошади (?) перехоящей в ботинок (?) Der kleine Prinz ist bei mir! - Yasmin P.S. lies das Parfüm! Рисунок графика и минимумов в нем PRIMETIME SPIRIT Он хотел историй Он ее получит [sic] HN GL DF ALeX  ## Инсмут Тут еще будет уместен этот линк на пост, написанный когда я только-только приехал сюда: Файне місто Мерзбург | Я сам, соломка, чай. Сложно написать что-то общее про Мерзебург и мое отношение к нему. Если бы писал, то “блеск и нищета” точно бы звучало. Чем-то очень темный город, маленький, по-своему в некотором роде некоторым образом уютный, без лишних претензий. Но все же, темный, давящий, причем давящий с самого начала. Все хорошее, что я мог про него говорить, было скорее стокгольмским синдромом и рационализацией. Если город маленький, общение с людьми приобретает чуть больше граней. И общение с городом-вообще, где ты знаешь в лицо всех кассирш ближайшего магазина, единственного филиала банка, где четыре года подряд ходишь в одну аптеку и тебя там узнают, и ты узнаешь всех (двух) людей, которых ты там когда-либо видел за прилавком. Как будто личности, которые часть этого города, имеют более прочную позицию в нем, имеют чуть большее значение. Ты встречаешь дедушку на лавочке, болтаешь с ним - дедушка важен, лавочка важна, озеро, около которого она, тоже важно. Ты не анонимен и лавочка не анонимна. Все имеет больший масштаб и связь между всем сильнее. Вне этого - если что-то тебя давит, то город беспощаден, и тебе в нем не затеряться и не отвлечься. Сенека что-то писал про то, что постоянные переезды и путешествия – признак беспокойного духа. Мне кажется надо иметь нереально спокойный дух, чтоб мочь долго жить в маленьком городке. ## Не Инсмут А если иметь спокойный дух - условия в принципе идеальные. Маленький универсистет, университет в 50 метров от общежития. 200 метров дальше - спортивный комплекс. Там можно играть в теннис с людьми, которых туда приглашаешь. По дороге туда встречаешь всех. А в тренажерном зале встречаешь местами преподавательницу немецкого языка, местами - ректора, который стоит и ждет своей очереди на тренажер у тебя над душой, что очень неловко всем. Мерзе это город где к тебе могут просто зайти и пригласить выйти погулять, и ты идешь и просто гуляешь по территории и по Tiergarten, до которого метров 500. Это город где шикарно гуляется ночью. И шикарно разговаривается ночью. Это город, в котором нереально хорошо видны звезды, все, и ночью можно ходить на них смотреть в кукурузные поля (до которых метров 700). Где есть крыша, на которую можно залазить и оттуда смотреть на затмение. Это город где ты идешь в магазин за едой и это интересно, и это развлекаловка, и ты резко понимаешь в чем может быть прелесть шоппинга. Мерзе меня многому научил. От того, как это, когда вокруг у тебя Мерзебург, где мало что происходит, а ты хочешь чего-то интересного - и ты учишься to make your own fun и организовываешь вещи. Эти 4 год атут были мне очень необходимыми и уместными, продлились ровно столько, сколько нужно, и закончились в идеальное для этого время. В эти секунды тушится свечка. Спасибо тебе, свечка, спасибо тебе, столик. Спасибо тебе, здание 5B. Спасибо тебе, Мерзебург, спасибо за все. # Day 385 ## Hammock driven development (video); towatch Hammock Driven Development - Rich Hickey - YouTube looks like an interesting video. Also it’s transcripted! talk-transcripts/HammockDrivenDev.md at master · matthiasn/talk-transcripts Rich Hickey – Hammock Driven Development – melreams.com is a post about the same. ## Intellij idea bookmarks! Ctrl+Shift+3 to toggle bookmark 3, and Ctrl+3 to jump to it ## Tensorflow Building a data pipeline for tf.Dataset. # Day 384 ## Number bases in bash bash - Value too great for base (error token is “08”) - Stack Overflow – tl dr bash/zsh see “018” as an octal number because it starts with 0. To fix this, we explicitly set the number base: 10#$varname.

I updated my create.sh with this. Now the lines are like this:

# Day 379

## Semantic highlighting

This is actually really nice as idea, and as usual someone on the internet thought about this more than I did: Making Semantic Highlighting Useful - Brian Will - Medium

I somehow really like the idea of having color giving me actual semantic information about the thing I’m reading, and there are a lot of potentially cool stuffs that can be done, such as datatypes etc. It’s very connected to my old idea of creating a writing system that uses color to better and more concisely mark different letters, like the apparently defunct Dotsies but even more interesting.

## Zsh autosuggestions (fish-like)

This is interesting: zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh

Less noisy autocomplete than the default, should look similar to this:

As a side note I like the cat explanation.txt part for screenshots.

# Day 378

integer arithmetic - How can I add numbers in a bash script - Stack Overflow

### Redirecting stdout and stderr in bash

some_command >file.log 2>&1  is the only one that works for me in all cases. (shell - Redirect stderr and stdout in Bash - Stack Overflow)

## tmux scroll up

<C-b> PgUp gives me copy mode.

## amixer selecting an audiocard

They can be found in alsamixer. Then -c 2, where 2 is the device/card number.: amixer -c 2 set PCM 5%+ 

# Day 171

## Pandas apply() memory hell

This is a nice read about how Pandas’ apply needs to store the Series it creates, that there’s no magic, and that inelegant loops can sometimes be faster. Relevant is the official Enhancing performance guide, that I should read.

# Day 169

## Games

• Greed is absolutely wonderful and much more interesting than I thought at the beginning.

# Day 168

## Rclone and backing up Google Drive

rclone is nice. I followed the guide in Google drive, and the magic command to copy all content is rclone sync "drive:Google Photos" /mnt/data/Backups/GP, about 300kb/s, and about 4 hours left.

# Day 165

## Qutebrowser private windows

exist. qutebrowser --temp-basedir -s content.private_browsing true

## IntelliJ Idea

• Shift+Enter starts a new line without breaking the current one.
• To focus the code with ideavim, the custom property suppress.focus.stealing=false worked.

# Day 161

## Qutebrowser config.py

A Python config file is excellent. qutebrowser/configuring.asciidoc at master · qutebrowser/qutebrowser · GitHub For now this, then we’ll see:

«««< HEAD , All of the individual settings ======= All of the individual settings

• 5 Whys - Wikipedia - “5 Whys is an iterative interrogative technique used to explore the cause-and-effect relationships underlying a particular problem.”

The vehicle will not start. (the problem) Why? - The battery is dead. (First why) Why? - The alternator is not functioning. (Second why) Why? - The alternator belt has broken. (Third why) Why? - The alternator belt was well beyond its useful service life and not replaced. (Fourth why) Why? - The vehicle was not maintained according to the recommended service schedule. (Fifth why, a root cause)[2]

9cda76db80bd5b2c27d9886a9c01191c0676eac5

# Day 160

## Resizing/converting/… a video with ffmpeg

 ffmpeg -i input.mkv -s 640x480 -c:a copy output.mp4

## Jupyter/pandas show all columns / limit maximum number of columns to show

pandas.set_option('display.max_columns', None).

javascript bookmarklets/quickmarks · Issue #221 · qutebrowser/qutebrowser · GitHub

:bind ,insta jseval alert("Hello World")

# Day 155

## Using I/we/passive in a Bachelor’s thesis

No easy answer, but I liked here the joke “In your particular case, an inclusive we could be used to recognize the nematodes collaboration :) – Dr. belisarius May 10 ‘11 at 13:01”

• I asked another young professor whether one could use “I” and she said “Only if you want to sound like an arrogant bastard”, and observed that only old people with established reputations can get away with it.

• The passive voice should not be used to avoid writing I or we. If the entire thesis is written in the passive voice, it is much harder to read, and the sentences within it1 have to be reworded awkwardly so that some good transitions between the sentences within a paragraph are lost. On the other hand, if some sentences seem to require the passive voice, by all means those sentences should be written in the passive voice. But the passive voice should only be used where it is justified, that is, where its use improves readability of the thesis.

TL;DR use “we”, don’t use passive unless needed; don’t use “I” ever.

Also in Germany it’s bachelor’s thesis, apparently.

## Bachelor’s thesis tenses

This is also really nice:

### Past tense

#### Work done

We collected blood samples from . . . Consequently, astronomers decided to rename . . .

#### Work reported

Jankowsky reported a similar growth rate . . . In 2009, Chu published an alternative method to . . .

#### Observations

The mice in Group A developed, on average, twice as much . . . The conversion rate was close to 95% . . .

### Present tense

#### General truths

Microbes in the human gut have a profound influence on . . . The Reynolds number provides a measure of . . .

#### Atemporal facts

This paper presents the results of . . . Section 3.1 explains the difference between . . . Behbood’s 1969 paper provides a framework for . . .

### Future tense

#### Perspectives

In a follow-up experiment, we will study the role of . . . The influence of temperature will be the object of future research . . .

(As linked in the answer, taken from Effective Writing | Learn Science at Scitable.

## qutebrowser

### qutebrowser yanking URLs and markdown

This is amazing. ym yanks the URL with the title, like this: word choice - Bachelor thesis or Bachelor’s thesis - English Language & Usage Stack Exchange.

### qutebrowser passthrough mode

<C-v> enters passthrough mode, <Shift+Escape> to exit. It works very well with Jupyter-vim.

## Thesis vim marks

m means what it always means, n is the place I’ve been working at the last time, d is the end of the thesis.

# Day 152

## Stack

• Make finally a uniform and nice vim/bspwm/… keybinding system.
• Learn vim formally, all movements and everything, and get rid of my “vim antipatterns”

## Vim

### Vim digraphs

:digraphs to see the available digraphs. <C-k>+%digraph% inserts it. For example, <C-k>+Pd → £

### Vim movements

• '. - move to last modified line.
• D - delete everything until the end of the line.
• C - change everything until the end of the line
• U - undo all changes to this line
• S - substitute everything inside this line
• <C-a> - increment number at character
• <C-x> - decrement number at character
• F/f – move to prev/next occurrence of character
• T/t – move to before prev/next occurrence of character

Learn to use my ;->: mapping

# Day 151

## Quotes

“I’ve come up with a set of rules that describe our reactions to technologies: 1. Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works. 2. Anything that’s invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it. 3. Anything invented after you’re thirty-five is against the natural order of things.” — Douglas Adams

“Be here now”

• “The mind is its own place, and in itself can make a heaven of hell, a hell of heaven.” From Milton’s ‘Paradise Lost’
• “Don’t kill the person inside you who wants to be alive.” Every time I feel down and/or have suicidal thoughts, I think about the part of me who went through so much shit to get to this place. I don’t want to throw away the effort of that person.
• Now I try and loosen up…moods come and moods go…I respect my feelings and those of others.
• “My cat wouldn’t understand where i went.”
• “If you’re going through hell, keep going.” - Winston Churchill
• – My meds keep me goin, fuck a quote. – Yeah I was about to quote: “300mg buproprion” -Dr. Baker Fuckin inspirational!
• “Bend, but don’t break.”
• ” Fireflies love the dark too.”
• “Only after disaster can we be resurrected. It’s only after you’ve lost everything that you’re free to do anything. Nothing is static, everything is evolving, everything is falling apart.”
• None of these keeps me going. For me it’s curiosity and nothing else.
• I think the saddest people always try their hardest to make people happy because they know what it’s like to feel absolutely worthless and they don’t want anyone else to feel like that. - Robin Williams
• “Death doesn’t stop depression, it just spreads it to somebody else.”
• “A smooth sea never made a skilled sailor” Franklin D. Roosevelt
• ‘Get busy living or get busy dying’. From The Shawshank Redemption.

# Day 150

## Vim-mediawiki-editor

vim-mediawiki-editor might make the links wiki fun again for me.

## Jupyter/pandas output entire text in column without truncating

### Pandas count occurrences of value inside a df row (and of values inside a list in a column)

I need to work on my descriptions. d['pos'] contains a list inside every row. I need to count the occurrences of a value inside this list. So I transform the list in a Series and then do value_counts, and each element of the list will be in its own column. The value of each column will be the number of occurrences.

d['pos'].apply(pd.Series.value_counts)

I can do .fillna(0) at the end to put a 0 instead of NaN.

Though this feel awfully slow. (And why doesn’t simply .tolist work?)

(SO)

## Stack

• Remove delay when inserting sudo password

# Day 099

## DNB and Typing

d4b 56% Tue 09 Apr 2019 08:42:36 AM CEST
d4b 22% Tue 09 Apr 2019 08:45:01 AM CEST
d4b 67% Tue 09 Apr 2019 08:46:57 AM CEST
d4b 67% Tue 09 Apr 2019 08:48:54 AM CEST
d4b 28% Tue 09 Apr 2019 08:50:47 AM CEST
d4b 67% Tue 09 Apr 2019 08:52:42 AM CEST
d4b 00% Tue 09 Apr 2019 08:54:36 AM CEST


Though from now on they should also be available on brainscale.net

## Python

### Chained try/except blocks

Apparently this is the recommended way to do this, as per this answer and the official Python docs:

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements. The technique contrasts with the LBYL style common to many other languages such as C.

### Get file name without extension

os.path.splitext("path_to_file")[0]

## Bash adding symbols to filenames

$git reset --hard 0ad5a7a6 returns to any previous version. ## .gitignore for LaTeX projects Here, and it’s excellent. I should actually learn git in a normal systematic way. Additionally, what to do when your .gitignore is ignored by git@SO. ## Random Busy person patterns as linked on HN Testosterone seems to have different effects than the stereotypes say, and road/roid rage is actually caused by estrogen spikes. ## Cooking This eggs inside avocado recipe is very interesting. Will try tomorrow. Also this avocado hummus recipe. # Day 097 ## DNB and Typing d4b 33% Sun 07 Apr 2019 04:24:36 PM CEST d4b 33% Sun 07 Apr 2019 04:26:35 PM CEST d4b 56% Sun 07 Apr 2019 04:28:28 PM CEST d4b 61% Sun 07 Apr 2019 04:30:24 PM CEST d4b 28% Sun 07 Apr 2019 04:32:21 PM CEST d4b 44% Sun 07 Apr 2019 04:34:27 PM CEST d4b 22% Sun 07 Apr 2019 04:36:19 PM CEST d4b 39% Sun 07 Apr 2019 04:38:14 PM CEST  ## Quotes “Wherever you are, make sure you’re there.” — Dan Sullivan ## Diploma ### Classifying by parts of speech nltk.download() downloads everything needed. nltk.word_tokenize('aoethnsu') returns the tokens. From https://medium.com/@gianpaul.r/tokenization-and-parts-of-speech-pos-tagging-in-pythons-nltk-library-2d30f70af13b. For parts of speech it’s nltk.pos_tag(tokens). The tokenizer for twitter works better for URLs (of course). Interestingly it sees URLs as NN. And - this is actually fascinating - smileys get tokenized differently! EDIT: nltk.tokenize.casual might be just like the above, but better! EDIT: I have a column with the POS of the tweets! How do I classify it with its varying length? How can I use the particular emojis as another feature? ### Ideas POS + individual smileys might be enough for it to generalize! TODO test TODO: Maybe first do some much more basic feature engineering with capitalization and other features mentioned here:  Word Count of the documents – total number of words in the documents Character Count of the documents – total number of characters in the documents Average Word Density of the documents – average length of the words used in the documents Puncutation Count in the Complete Essay – total number of punctuation marks in the documents Upper Case Count in the Complete Essay – total number of upper count words in the documents Title Word Count in the Complete Essay – total number of proper case (title) words in the documents Frequency distribution of Part of Speech Tags: Noun Count Verb Count Adjective Count Adverb Count Pronoun Count  ### Resources textminingonline.com has nice resources on topic which would be very interesting to skim through! Additionally flair is a very interesting library not to reinvent the wheel, even though reinventing the wheel would be the entire point of a bachelor’s thesis. This could work as a general high-levent intro into NLP? Also this. # Day 095 ## Stack Edit .i3/ to create the multiple scratchpads at startup and put them automatically where I want them – second answer is a good example. ## DNB and Typing 450 cpm 97% d4b 72% Fri 05 Apr 2019 07:03:22 PM CEST d4b 50% Fri 05 Apr 2019 07:05:21 PM CEST d4b 39% Fri 05 Apr 2019 07:07:23 PM CEST d4b 44% Fri 05 Apr 2019 07:09:19 PM CEST d4b 33% Fri 05 Apr 2019 07:11:17 PM CEST d3b 79% Fri 05 Apr 2019 07:13:08 PM CEST ! d3b 71% Fri 05 Apr 2019 07:14:44 PM CEST ! d3b 86% Fri 05 Apr 2019 07:16:21 PM CEST ! d4b 44% Fri 05 Apr 2019 07:18:17 PM CEST d4b 22% Fri 05 Apr 2019 07:20:13 PM CEST d4b 28% Fri 05 Apr 2019 07:22:41 PM CEST d4b 00% Fri 05 Apr 2019 07:24:46 PM CEST  ## Random ### Knowledge/plans management I just discovered didoesdigital.com, which is absolutely excellent on all levels. I’m missing a way to categorize everything I see there. I should/could make things-I’m-learning pages with links and checklist for things I’m doing/learning. I’m not quite sure what should it look like, but it would definitely be something Jekyll-like. I think I’m slowly going in the direction of Steve Wolfram’s dashboard. Or at least a different vim in a different floating window that opens with another keystroke, i3 would make it easy to do that. In general I need a much better system to track the things I’m learning or reading. Polarized goes in the right direction. And I feel my links wiki will stay just that – a links wiki. Unless I make a seamless interface to it, I don’t really like it for actual knowledge management, even though it’s the absolute best I have until now. And I must not fall in my typical error about sharpening the saw more that actually cutting trees, even though sharpening the saw is a really pleasant thing to do for me. EDIT: Just created it at here, we’ll see what happens. I can imagine a dashboard based on it, and some kind of integration for task/timewarrior. Probably something ncurses-based in python? ### Trickle lists This is the application - in general I find the idea really inspiring. I could imagine it on a touchscreen somewhere, or at least on a second desktop. Is it conceptually different from Nomie? Can I add just add another “trickle” board? ## Jekyll deploy.sh Added at the end ./commit.sh, which is a small file with git commit, so now it gets backed up to github automatically every time I deploy a new version on the server. # Day 090 ## Stack ## DNB and Typing d4b 44% Sun 31 Mar 2019 11:42:18 AM CEST d4b 50% Sun 31 Mar 2019 11:44:21 AM CEST d4b 17% Sun 31 Mar 2019 11:46:18 AM CEST d4b 6% Sun 31 Mar 2019 11:48:20 AM CEST d4b 39% Sun 31 Mar 2019 11:50:20 AM CEST d4b 17% Sun 31 Mar 2019 11:52:47 AM CEST d4b 17% Sun 31 Mar 2019 11:54:49 AM CEST d4b 67% Sun 31 Mar 2019 11:56:52 AM CEST d4b 56% Sun 31 Mar 2019 11:59:03 AM CEST d4b 39% Sun 31 Mar 2019 12:01:05 PM CEST d4b 6% Sun 31 Mar 2019 12:03:29 PM CEST d4b 44% Sun 31 Mar 2019 12:05:30 PM CEST d4b 39% Sun 31 Mar 2019 02:52:21 PM CEST d4b 50% Sun 31 Mar 2019 02:54:35 PM CEST d4b 44% Sun 31 Mar 2019 02:56:44 PM CEST d4b 44% Sun 31 Mar 2019 02:58:43 PM CEST d4b 44% Sun 31 Mar 2019 03:00:46 PM CEST d4b 39% Sun 31 Mar 2019 03:03:16 PM CEST d4b 44% Sun 31 Mar 2019 03:05:19 PM CEST d4b 39% Sun 31 Mar 2019 03:07:16 PM CEST  ## Taskwarrior Tasks tagged +next are now underlined. # Day 088 ## Stack Add Jekyll footnotes to anki. ## DNB and Typing 450 cpm 97.7%  ## Random Why we procrastinate TL;DR procrastination is about negative emotions about doing what we do, not time management. ## Jekyll footnotes For Jekyll footnotes you do ## Blog Added a nice post about Pchr8board and edited the Projects page to have excerpts of posts belonging to that category. ## Github ### Git remove git rm$whatever removes the file even if it’s in the repo but not locally. Handy for old moved or rmd files.

Are done like usual in Markdown: ![description](url)

### Adding files starting with dots

git add .

# Day 087

## Jekyll create.sh

Added to my “create” bash script a line that at the end opens the created file in vim, because this is what I do every single time.

## Urxvt transparency

urxvt*transparent: true


in .Xdefaults, so I get a small transparency in urxvt. Useful to make work/play mode even more defined - I can actually see the background.

## cmus-remote

cmus-remote controls cmus from another CLI. Added to .i3/config:

EDIT: And removed them, they interact strangely with workspace changes, later will look into this.

## DNB and Typing

d4b 28% Thu 28 Mar 2019 12:37:31 PM CET
d4b 44% Thu 28 Mar 2019 12:39:30 PM CET
d4b 17% Thu 28 Mar 2019 12:41:11 PM CET
d3b 93% Thu 28 Mar 2019 12:43:25 PM CET
d4b 44% Thu 28 Mar 2019 12:45:26 PM CET
d4b 78% Thu 28 Mar 2019 12:48:09 PM CET
d4b 06% Thu 28 Mar 2019 12:50:11 PM CET
d4b 28% Thu 28 Mar 2019 12:52:09 PM CET
d4b 39% Thu 28 Mar 2019 12:54:13 PM CET
d3b 93% Thu 28 Mar 2019 12:56:02 PM CET
d4b 0% Thu 28 Mar 2019 12:58:40 PM CET
d4b 39% Thu 28 Mar 2019 01:00:35 PM CET


## Clipboard

Added the alias alias xc='xclip -selection c' to .zshrc, now I can pipe stuff in my clipboard using echo test | xc. See this SO answer. alias xp='xclip -selection clipboard o' to paste.

## HoMe diploma

I’m starting again to work heavily on my diploma. I’ll be documenting most of what I do and learn here, and I think after this this semi-blog will become even more lively. I don’t think anyone will feel bad about me using this as my personal notepad, because this is exactly how this place was envisioned. For the “blog” blog with a bit more curated posts, feel free to go there.

### The plan

In the next couple of days - read maximally about interference in languages, first language identification etc. sci-hub.se - do a better cleanup of the tweets dataset (file for preprocessing it in batch instead of the same way in every notebook) - do some basic classification with tokens standing not for words, but for parts of speech, and with commas included, and see if that brings anything interesting (as per the influence/punctuation paper). - Create a working systemm for notes, papers, links etc etc. Most probably Note.vim or whatever was it called, but I need to research what exist. .. Or my wiki, which is nominally for knowledge management, and I’ve never seen a purer use-case for this.

## Python

### Importing modules

Modules downloaded from Github and placed in the same directory get prioritised automatically, because the first thing inside sys.path is an empty string, which represents the current folder the file runs from.

### Encodings

Are hell. I solved the problem of my utf-8 text being represented with weird \wha\te\ver characters while being utf-8 by changing the way csv is written. The old csvwriter.writerow([str(status.id_str).encode("utf-8") got replaced by csvwriter.writerow([str(status.id_str). It was wrong and now I understand why. It was writing the utf-8 bytes in the file, and when I read I got a string with the slashed that was already utf-8, the individual ‘', ‘w’ .. characters, not bytes.

# Day 085

## Setting time in Linux

date -s 13:17:50 also works. It’s more simple than I remembered.

## i3

removed border around all windows, we’ll see how I live with it and whether I need it. In work mode it might get confused with similar windows, in play mode it shouldn’t matter. We’ll see.

## DNB and Typing

    d4b 33% Tue 26 Mar 2019 01:36:16 PM CET
d4b 50% Tue 26 Mar 2019 01:38:22 PM CET
d4b 50% Tue 26 Mar 2019 01:40:42 PM CET
d4b 17% Tue 26 Mar 2019 01:42:47 PM CET
d4b 61% Tue 26 Mar 2019 01:44:48 PM CET
d4b 50% Tue 26 Mar 2019 01:48:32 PM CET
d4b 28% Tue 26 Mar 2019 01:50:32 PM CET
d4b 50% Tue 26 Mar 2019 01:52:31 PM CET
d4b 22% Tue 26 Mar 2019 01:54:36 PM CET
d4b 00% Tue 26 Mar 2019 01:57:40 PM CET
d4b 50% Tue 26 Mar 2019 02:02:24 PM CET
d4b 00% Tue 26 Mar 2019 02:04:32 PM CET

455 cpm 98.3%


## Anki-vim and importing

Anki’s manual says a lot about importing raw cards – and it’s much easier and more flexible to do this than I thought. I might drop anki-vim completely, or write something more minimalistic.

# Day 084

## Python steganography

Decided to take a look again at my Bachelor’s thesis and do a nice rewrite in Python3 of the main code.

## Setting date in Linux

The date command can take STRINGS, which as mentioned in the man pages can be quite free-form. I moved my system clock back 1h with sudo date -s "1 hour ago". Wow.

## DNB and Typing

For the first time got 100% on D3B! And in general even though the results aren’t the most important thing in D3B they do actually motivate quite a lot. Keeping records and gamification for the win!

    d3b 64% Mon 25 Mar 2019 11:43:46 AM CET
d3b 100% Mon 25 Mar 2019 11:45:39 AM CET
d4b 39% Mon 25 Mar 2019 11:48:12 AM CET
d4b 33% Mon 25 Mar 2019 11:52:23 AM CET
d4b 44% Mon 25 Mar 2019 11:55:07 AM CET
d4b 50% Mon 25 Mar 2019 11:58:35 AM CET
d4b 50% Mon 25 Mar 2019 12:00:39 PM CET


## Python keyring

Is a python module to save secrets. python -m keyring [get/set] for help.

## Arch adding user to group

To be able to change backlight. sudo gpasswd -a sh video

## Clight and backlights

clight -b radeon_bl0 --day-temp=6000 --night-temp=2000 would be nice, but sadly my webcam is covered. But it might be a nice replacement for redshift, sometime.

## i3 borders

hide_edge_borders both #<none|vertical|horizontal|both>

# Day 083: Fun with i3-gaps and work/play mode

## i3

### i3-gaps for work/play mode

i3-gaps is fun but kinda nothing more. But I think it has potential for creating a right atmosphere for my work/play time and pomodoros.

I added the following in the config:

The idea is that there are two main designs, activated by the above keystrokes, one with gaps which I’ll use when I’m not doing anything important, and the other one when I have a timer/pomodoro running. Like a ritual and a way to subconsciously signal to myself that I should not distract myself right now.

We’ll see if it works out.

See if there's a way to do this on all workspaces. Is this what the global/local config thing is about?

yes. gaps inner all plus 5

### i3 backgrounds on different workspaces

i3-wpd from Github is nice. Could be another way to ritualize it all. We’ll see.

## Privacy

Updated my default search engine to startpage.com instead of DDG. I think the search results are much better.

# Day 082: Back at this again after holidays

## Stack

QS: - finally find a semi-automatic way to get my Fitbit data - Hearbeat and sleep as priorities - Nomi too - Write something to centralize it all?

# Day 077: Creating albums from scanned pictures

## Automagically cropping pictures

This tutorial and extension could separate about 30% of the pictures with the default settings. Margins (and margins to the sides of the image!) are important.

### Installing GIMP .scm plugins

is done by putting the .scm file to /usr/share/gimp/2.0/scripts/

## Creating LaTeX photoalbums

This tutorial is freaking awesome.

Given the number of images I was dealing with manually configuring each one was not an option. What I wanted was a service that would, given my image collection, just print me a photo album of approx 6x4 images, in chronological order, two per page, with a caption below each detailing the image file name and the date taken.

It provides a .tex album file and a Python2 file which reads the Exif data and creates a photos.tex which gets included in the main album file.

# Day 073: setting up scanning

## Printing and scanning

scanimage (SANE) is a “a library and a command-line tool to use scanners”.

sudo scanimage -L to see the list of scanners, then to scan (for me also with sudo for some reason): sudo scanimage --device "xerox_mfp:libusb:002:004" --format=png > name.png

# Day 062: Fixing my timer scripts, Jekyll pagination and excerpts and "unless"

## Arch linux thumbnails

The package is tumbler.

## Fixed my timers (Bash, redirects, >)

I had two problems with my timer system: that it doesn’t work when the files are empty (because of the split I did in the code), and the files that grew exponentially, because they did not get deleted at the end of the timer.

I am not sure why did the > in the timer command leave the previous file contents (I assume it’s some magic with terminals and ^M?), but I fixed it by adding : > outfile to the command at the beginning.

From this tutorial:


: > filename
# The > truncates file "filename" to zero length.
# If file not present, creates zero-length file (same effect as 'touch').
# The : serves as a dummy placeholder, producing no output.

> filename
# The > truncates file "filename" to zero length.
# If file not present, creates zero-length file (same effect as 'touch').
# (Same result as ": >", above, but this does not work with some shells.)


My zsh was apparently one of the shells where that doesn’t work, but the first one worked nicely. So the final line in .i3/config is:

The files-not-existing thing was fixed by an additional try/catch block. The final (still bad) code looks like this:

## Jekyll pagination fun

### Pagination – highlighted posts

I wanted to output the first couple of posts in full, and the next ones until the end of the page as excerpts for the first page, and for all the next pages – only the excerpts. This SO answer helped me, I didn’t know about offset and limit in for loops!

## Pagination – removing the pages from the header with unless

I’m not sure what happened, but I saw all the generated paginator pages in the menu, all called “Posts”. I removed it by overriding the layout with unless, which is another really nice operator.

The relevant code in _includes/header.html:

# Day 061: Basic bash scripting

## Bash

I needed to copy all pictures from a folder to another place, while saving the paths and folder names. (from/one/two/three.jpg should become to/one/two/three.jpg)

The images were inside a number of different directories and doing it manually would’ve been hell.

Therefore, first I found all images and wrote their full path to a file: find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print$1}' >> ~/allm  (I’m not pretending I understand the above line).

Then I wrote this basic script to create the folders and to copy the files inside them. This was much harder than expected, especially because of the spaces inside the filenames, which created problems at every step.

The final code was:

The IFS thing decides how should the elements of the file be split. By default it’s spaces and newlines, we needed to tell it to split only by newlines, explicitly.

The entire solution is quick and dirty (the “from_white_xxx” thing would be the first thing to refactor) but it works, no need for overengineering a quick one-time hack which I’ll prolly never need again.

## Keynav scrolling

Q: Can I use keynav to scroll?
A: Yes! X11 represents mouse scrolling as key presses, so you just add the relevant stanza to your keynavrc. Mouse buttons are 1=left, 2=middle, 3=right, 4=scroll-up, 5=scroll-down, 6=scroll-left, 7=scroll-right. So for example to scroll up with i and down with e:

i click 4,end
e click 5,end


## Stack

• Learn find, awk and other holy shell commands which I usually copypaste without actually taking time to learn the proper syntax
• Learn bash – again, formally.

# Day 060

## Ledger

Added a date format to my command line alias: alias le="ledger -f ~/p/f/l/ledger.txt --strict --date-format '%Y/%m/%d'" for my date formats.

Also to represent bought currencies, I think the way to do it is:

2019/02/25  Exchanged 100$for 74.81 at XXX Assets:Cash:Wallet E74.91 @$100
Assets:Cash:Fund:USD


## Stack

* It would be interesting to do an implementation of [this xkcd](https://xkcd.com/2112/) using data from Twitter with 'intensity' defined as 'more or less interaction that the norm for this user'


# Day 058: Vim and Timewarrior

To exclude tasks of a certain project, the syntax for the filter is project.not:projectname.

Also added a new report for tasks which will never be finished – anki, cleaning, basic org etc., but that I still want to track with timewarrior. t m now returns me all such tasks.

## Vim searching at the beginning of line / that start with something

I find myself grepping through the dict.cc raw file, I might build a script to do that for me. But I often need to find a word with the condition that it’s the first thing on a line, instead as partof a bigger sentence.

^ helps. /^Dru gives me the lines which start with “Dru”.

# Day 056

## Stack

• I should actually spend 1h a day for thinking about business and passive income.
• Add a cron job to automagically move all undone tasks from the last sprint/week to the current one.
• Add all the German language I put together a couple of Days ago to Anki

## DNB and Typing

d3b 70% Mon 25 Feb 2019 12:16:05 PM CET
d3b 79% Mon 25 Feb 2019 12:17:50 PM CET
d3b 64% Mon 25 Feb 2019 12:19:26 PM CET
d3b 57% Mon 25 Feb 2019 12:21:00 PM CET
d3b 86% Mon 25 Feb 2019 12:22:34 PM CET
d3b 86% Mon 25 Feb 2019 12:24:38 PM CET
d3b 71% Mon 25 Feb 2019 12:27:23 PM CET
d3b 50% Mon 25 Feb 2019 12:28:57 PM CET


# Day 052: Taskwarrior sprints override, German, bash exit codes, and more Python.

## DNB and Typing

d3b 71% Thu 21 Feb 2019 10:40:21 AM CET
d3b 79% Thu 21 Feb 2019 10:41:57 AM CET
d3b 57% Thu 21 Feb 2019 10:43:33 AM CET
d3b 43% Thu 21 Feb 2019 10:45:08 AM CET
d3b 21% Thu 21 Feb 2019 10:46:44 AM CET
d3b 79% Thu 21 Feb 2019 10:53:03 AM CET
d3b 64% Thu 21 Feb 2019 10:54:41 AM CET
d3b 43% Thu 21 Feb 2019 10:56:15 AM CET
d3b 71% Thu 21 Feb 2019 10:57:47 AM CET
d3b 57% Thu 21 Feb 2019 10:59:25 AM CET


## Deutsch

• It’s säkular, not sekulär etc.
• Geöffnet, not geoffnet
• kümmert
• Brasilien
• hoche Spannungen – no umlaut
• begann
• The earlier we came -> je früher wir kamen
• Ein NN wird trainiert, nicht getraint. (Where did I get this word actually?)

## Linux exit codes

To check the exit code of a command you just ran, you need to output the special bash variable $?, so echo$? returns the exit code of the previous command.

I decided to make my sprint system a bit less stupid than it is now. I finally rewrote it using overrides.

In .zshrc, first I override the default sprint when adding tasks, then create command which shows my s report:

in .taskrc I modified the s report to look like this:

Now when I type s I get my current sprint todo, and when I add tasks they get added automatically to current sprint.

## i3lock-color

This is really nice, I had no idea a fork with more features existed! It doesn’t show my keyboard layout correctly, but otherwise it’s perfect. Will be using it from now on.

## Tmux resize-pane

You open the tmux command line with C-b :, and to resize a pane horizontally to an absolute size the command is :resize-pane -x %absolute size%.

## Vim-pekaboo and vim registers

Is a plugin which lets you preview the register contents before using one. Also you can paste stuff from registers in insert mode by pressing <c-R>.

# Day 051: Phone ADB full backup

## Done

Deleted VK account. Saw another Verteidigung. Backed up my Android. Finished a ton of small things that I was postponing for weeks.

## Backing up Android phone via ADB

Using this tutorial: adb backup -apk -shared -all -f backup-file.adb

To restore: adb restore backup-file.adb

## Ledger

-M gives monthly transactions.

# Day 050: Nothing particularly interesting

## DNB and Typing

d3b 71% Tue 19 Feb 2019 03:29:14 PM CET
d3b 57% Tue 19 Feb 2019 03:31:02 PM CET
d3b 43% Tue 19 Feb 2019 03:32:35 PM CET
d3b 64% tue 19 feb 2019 03:34:10 pm cet
d3b 43% tue 19 feb 2019 03:35:44 pm cet


# Day 049: Python

## Timewarrior

Apparently times and intervals are much more easy than I thought! I should actually read man pages sometime, instead of relying on tutorials.

Nice examples are, for example, w track 7min "something short" – which records something done the last X minutes including now, as a closed interval.

## Stack

• Python – memorize all different exception types!

## DNB

d3b 57% Mon 18 Feb 2019 10:38:29 AM CET
d3b 64% Mon 18 Feb 2019 10:40:15 AM CET
d3b 50% Mon 18 Feb 2019 10:41:48 AM CET
d3b 43% Mon 18 Feb 2019 10:43:54 AM CET
d3b 50% Mon 18 Feb 2019 10:49:25 AM CET
d3b 50% Mon 18 Feb 2019 10:51:01 AM CET
d3b 21% Mon 18 Feb 2019 10:52:45 AM CET
d3b 79% Mon 18 Feb 2019 10:54:51 AM CET


# Day 048: Finally new blog! + A lot of linux and German.

Found here.

## Linux

### Unix date command

Decided to do my sprints system smarter, and decided to set date up to automatically output the week number. I had issues with the padding zero in the export SPRINT=$(date +%U) The dash after % removes them from the output: export SPRINT=$(date +%-U)

Awesome.

### Rsync update behaviour

rsync usually copies files if they are not on the target filesystem. The --update flag makes it check the timestamps, and overwrite if the target file is older than the source file. -c means also check the checksum.

### Rsync slash

Trailing slash after the directory name copies the content of the directory, not the directory itself. Not consisten with mv, cp etc.

### Vnstat for traffic monitoring

vnstat is the package and the service that needs to be enabled, and in /etc/vnstat.conf the default interface needs to be set.

### Mount by UUID

to do this through mount, if for some reason I’ll need to do it manually: sudo mount UUID=%theUUID% /mnt/sth

A task gains an +ACTIVE tag if it’s started. I want to use it to get an output of the currently active task in my statusbar.

t +ACTIVE | sed '4!d' gives the line with the currently active task. With sed I can get the needed column: I created a new report in taskwarrior because I did not want to think of columns. Then in the i3wrapper.py I added the following:

It works!

Once every 12 sprints / 3 months brush, once a month backups, I’ll think what else:

## Vim

Now I can look through this diary with Ag.vim and silver_searcher! :Ag is more than I could wish for.

## Stack

• Add & / && to anki
• Arch linux add traffic monitoring
• DONE
• DONE

## Working on previous stacks

Okay, this is going to be fun!

## To ankify

### German

• Staff meeting = Belegschaftversammlung
• Data cleansing -> Datenbereinigung
• Electric meter -> Stromzähler (m u. pl.)\
• Пёстрый –> Zusammengewürfelt\
• Die Einrichtung –> Institution, estabilishment
• Die Prognose
• How I divided them between X und Y –> Wie ich die zwischen X und Y aufteilte.
• Abweichungswerte – deviation valu
• km^2 = Quadratmeter = km^2 • Die Vergütung. • Anomaly Detection - die Erkennung von Anomalien. • verwenden • 15 minute intervals -> 15-Minuten-Intervalls (auch “im Abständen von 15 Minuten”) • Month rhythm -> Monat__s__rhythmus. • basically -> im Gr__u__nde • plöTZLich, EinflUss, drUck, grOßes, wöchiges, regelmäßig, DatenschUtz. • reCHerCHiert, DiagraMM, Kategorie • “und dann habe ich wieder von vorne angefangen” • “fraghaft” existiert nicht, fragwürdig/flaglich • Eingabedatei, not Eingangdatei • Datei(f), Daten(pl) • draft -> der Entwurf • Abschlüss -> Abschluss • Nationale Technische Universität „Kiewer Polytechnisches Institut Ihor Sikorskyj“ • interdisziplinär • Load Forecasting -> Lastprognose • I should learn the names of the German letters: https://de.wikipedia.org/wiki/Deutsches_Alphabet#Benennung_der_Buchstaben. • der Pfad - die Pfade -> trails/paths • abseits ausgetretener Pfade – off the beaten track • TODO Ankify this • Not Synchronizität, Synchronität. (at least in Schaltungstechnik). • Figure out bzw. • From this German StackExchange answer: • Anders • Only word that works alone, without saying different from what • Der Hund is anders; der andere Hund. • Unterschiedlich • An important but small attribute that makes things different that you want to accentuate: • Wuffi und Kläffi sind unterschiedlich. Sie unterscheiden sich an den Ohren: Wuffi hat Stehohren, Kläffi hat Schlappohren. • Verschieden • Just different, without any specifics. • Natürlich sind Kläffi und Törti verschieden! Es sind schließlich verschiedene Rassen! Not from dict.cc, but from my intuition: • die Unterschiedlichkeit – the difference in a more abstract meaning. • der Unterschied – the difference – especially one in particular. • der ZAhler — whoever pays. Der ZÄhler — counter. • sich mit etw.(Dat) befassen: undertake/concert/deal/occupy/dabble in/with/whatever ### IT for the % symbol: \% Add to Anki \wedge \vee and other latexy things I’ve used. \& istead of &, like with \%. • _ is the black hole register in vim to delete stuff without yanking it • Ankify import random and randInt(x, y) • Here I learned about du. sudo du -h -d 1 shows the size of the directories in the folder (depth of one, human-readable). • Vim newline when searching: in substitutions \r inserts a new line, \n inserts null. When searching \n matchesan end of line (newline) • {} in German ### English • Apostrophes rules! • Sedition is overt conduct, such as speech and organization, that tends toward insurrection against the established order. # Day 046: Linux keyboard LEDs. ## Linux LEDs and triggers You can control LEDs with files! Article. /sys/class/led has folders, with the most interesting files being brightness and trigger. The first one is self-explanatory – echo 1 > brightness does what you would expect it to do. trigger is interesting, cat trigger gives the possible trigger, which you can activate by echo trigger_name > trigger. I connected disk-read to the scroll LED on my USB keyboard, to get a bit of the nostalgic Pentium 4 feels, and BAT0-charging-blink-full-solid to Caps lock, which makes it solid 1 when full and blinking when charging. That was fun. ## Jekyll ### Jekyll/Markdown comments … exist in really a lot of variants which are not portable, the portable ones are complicated. Thankfully, for Jekyll the following exists: {% comment %} my comment {% endcomment %} … and of course the HTML comments, but they will still show up in the source. ### Markdown numbered lists … work with any numbers, in any order! ### Jekyll Cyrillic and Unicode categories seem to be a problem. The suggested approach with HTML Entities didn’t work for me, but this workaround did: ### Changing themes To change/overwrite individual theme files, just create the needed folder/file and do the changes needed. It will include it to the used theme automatically. (Doing the best menu in history). ## Quotes • Success is measured in output of value, not input of effort When to Hold onto Information If the following conditions are met, it may be better to hold off explaining a new problem to your manager: • The situation does not require immediate intervention (i.e. no laws broken, no lives at risk, no bank accounts being drained, etc.) • You’re waiting on additional information that will make the scope of the issue clear • You control the flow of information, and your audience won’t learn about the issue from other sources • It’s possible that the situation can be fixed soon, allowing you to communicate both the problem and solution together • You suspect there may be related problems lurking that should be disclosed together • “Keeping options open” often means “Not being successful in anything”. (from Shulamit Widawsky’s answer) ## Stack # Day 045: Finishing moving Wordpress to Jekyll ## Cooking As I was looking for ideas for small businesses, I found this nice website with small easy microwave recipes: https://www.minmaxmeals.com/recipes/garlic-oatmeal/, and I’ll try today the linked one. In general having such a database of go-to dishes would be quite nice, because I forget about mine often. ## Jekyll ### Categories For categories, I again used this nice tutorial. ### Excerpt separator When outputting posts, {{post.excerpt}} either takes the first paragraph or a separator. The separator can be set in config.yml: excerpt_separator: <!--more--> ### Posts visibility published: false in the front matter. I like this more than the official draft mechanism. ## Vim ### Deleting tags surrounding something A really elegant way to delete the tags surrounding something: yitvatp Tag blocks *tag-blocks* For the "it" and "at" text objects an attempt is done to select blocks between matching tags for HTML and XML. But since these are not completely compatible there are a few restrictions. The normal method is to select a until the matching . For "at" the tags are included, for "it" they are excluded. But when "it" is repeated the tags will be included (otherwise nothing would change). Also, "it" used on a tag block with no contents will select the leading tag.  ### Repeat the last used macro Just discovered this randomly after a typo. @@ repeats the last @-macro I used. This will save me really a lot of time! ## Python forcing named arguments in function In this article, this nice way has been mentioned: def safe_division(*, number, divisor, ignore_overflow, ignore_zero_division): It forces all arguments after * to be named during call: >>> safe_division(number=10**1000, divisor=3**-100, ignore_overflow=True, ignore_zero_division=False) ## Stack # Day 044: DNB, and saying goodbye to Wordpress ## Stack ## DNB and Typing I broke my record of all my life and got 93%! Something is definitely happening in my brain. I like this.  d3b 64% Wed 13 Feb 2019 07:41:58 AM CET d3b 93% Wed 13 Feb 2019 07:43:57 AM CET d3b 71% Wed 13 Feb 2019 07:47:46 AM CET d3b 71% Wed 13 Feb 2019 07:52:30 AM CET d3b 57% Wed 13 Feb 2019 07:54:06 AM CET d3b 57% Wed 13 Feb 2019 07:55:41 AM CET d3b 71% Wed 13 Feb 2019 07:57:31 AM CET d3b 79% Wed 13 Feb 2019 07:59:41 AM CET  ## i3wm Changed date string in statusbar to show also the week/sprint number and weekday: ## Moving my Wordpress to Jekyll … since I started disliking the new Wordpress interface and stopped using it, it is kind of a security problem, but there are too many memories there to just delete it. Using Jekyll Exporter, the Wordpress plugin, I could get all the posts and all the pictures to a new Jekyll blog. I also wanted the private posts, which should have been a one line change in its source, and it was: It created a 307mb file. Old blog stays online just a bit more, I’ll clean up the posts and stuff and think about how I want to change the home page. We’ll see. ### Escaping things I predictably had problems with my posts containing curly brackets. This is the solution: {% r.aw %} {{#set: o=true |c=8 }} {% end.raw %}  Four indentations so that it gets recognized as code. ### Replacing with newline %s/aoeu/aoeu\r/g Same syntax as useful, except \r instead of \n for the newline. \n matches an end of line (newline), whereas \r matches a carriage return. On the other hand, in substitutions \n inserts a null character whereas \r inserts a newline (more precisely, it’s treated as the input ) (from here). :%s/<\/pre>/\r{% end.raw %}/g .  Replace end.raw for endraw, because of this problem which is still around? # Day 043: TYPNIG and vim emojis - and a lot of real life not otherwise specified. ## Stack Add all the new English and German vocabulary to anki, finally. ## DNB and Typing I BROKE MY TYPING RECORD!!1111111111 (Can jekyll and/or vim do smileys? Apparently it can if you enter the Unicode value of the emoji directly Test: 😊 WOOOOOOOHOOOOOOO Also I still can just paste them. Okay, then behold.) ✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈✨✨✨🌈✨✨✨✨✨🌈🌈🎊🎊🎊🎊🎊🎉🎊🎊🎉🎉🎉✨✨🔥🌈🌈 I still have no idea how that happened, but it’s quite interesting. We’ll see if and how that continues. Race # Speed Accuracy Points Place Date 83 119 WPM 99.5% 75 2/5 today 82 87 WPM 97.7% 113 1/2 Feb. 8, 2019 81 93 WPM 98.5% 174 1/5 Feb. 7, 2019 80 87 WPM 97.2% 130 4/5 Feb. 7, 2019 79 87 WPM 97.0% 69 3/5 Feb. 7, 2019 78 101 WPM 98.5% 119 2/5 Jan. 31, 2019 77 87 WPM 97.2% 102 2/5 Jan. 31, 2019  ## Vim And again, for unicode characters inside vim: <C-v>U1F60A<esc> Also, for the table above, to make it align right, I had to change the tabs to spaces. Select and :retab. # Day 042: "A project manager's lessons learned"; vim ## Linux Improving performance on the Arch wiki has nice ideas. hdparm -t /dev/sdX to measure read speed. I will later possibly go through the entire page methodically. ## DNB and Typing ### Typing typing.com has nice lessons about typing numbers, which I like a bit more than EdClub’s. Next up their advanced symbols to finally learn using the right Shift. ### DNB d3b 21% Mon 11 Feb 2019 12:13:52 PM CET d3b 43% Mon 11 Feb 2019 12:17:04 PM CET d3b 57% Mon 11 Feb 2019 12:18:47 PM CET d3b 71% Mon 11 Feb 2019 12:20:35 PM CET d3b 21% Mon 11 Feb 2019 12:22:25 PM CET  ## Python Decided to read Dive into Python to finally get a systematic understanding of all of the language. The most important audience for your code is yourself, six month after writing it. • Float is accurate to up to 15 decimal places. Why there are more on my system? • Why is the “//” operator working like it does with positive/negative numbers? ## Vim Limelight.vim is a really cool plugin. Found it linked here ## Interesting Nasa’s 128 lessons of a project manager. Highlights: None of these are original–It’s just that we don’t know where they were stolen from! 1. Wrong decisions made early can be salvaged, but “right” decisions made late cannot. 2. Never make excuses; instead, present plans of actions to be taken. 3. One of the advantages of NASA in the early days was the fact that everyone knew that the facts that we were absolutely sure of could be wrong 4. If you have a problem that requires the addition of people to solve, you should approach recruiting people like a cook who has under-salted, i.e., a little at a time. 25 Know the resources of your center and if possible other centers. Other centers, if they have the resources, are normally happy to help. It is always surprising how much good help one can get by just asking. 5. Redundancy in hardware can be a fiction. We are adept at building things to be identical so that if one fails, the other will also fail. Make sure all hardware is treated in a build as if it were one of a kind and needed for mission succes 6. It is mainly the incompetent that don’t like to show off their work. 7. Mistakes are all right, but failure is not. Failure is just a mistake you can’t recover from; therefore, try to create contingency plans and alternate approaches for the items or plans that have high risk. • Here it’s quite interesting how you have two different attitudes to plan-B. I guess the more costly failure is, the more okay Plan-Bs are considered. 8. NASA Management Instructions (NMI’s) are written by another NASA employee like yourself; therefore, challenge them if they don’t make sense. It is possible another NASA employee will rewrite them or waive them for you. 9. A working meeting has about six people attending. Meetings larger than this are for information transfer. 10. All problems are solvable in time, so make sure you have enough schedule contingency– if you don’t, the next project manager that takes your place will. 11. Just because you give monthly reports, don’t think that you can abbreviate anything in a yearly report. If management understood the monthlies, they wouldn’t need a yearly. 12. Sometimes the best thing to do is nothing. It is also occasionally the best help you can give. Just listening is all that is needed on many occasions. You may be the boss but, if you constantly have to solve someone’s problems, you are working for him. 13. Remember, it is often easier to do foolish paperwork than to fight the need for it. Fight only if it is a global issue which will save much future work. 14. You cannot watch everything. What you can watch is the people. They have to know you will not accept a poor job. 15. The first sign of trouble comes from the schedule or the cost curve. Engineers are the last to know they are in trouble. Engineers are born optimists. 16. There is no greater motivation than giving a-good person his piece of the puzzle to control but a pat on the back or an award helps. 17. Don’t assume you know why senior management has done something. If you feel you need to know, ask. You get some amazing answers that will dumbfound you. 18. If you have someone who doesn’t look, ask, and analyze, ask them to transfer. 19. There are still some individuals who think important decisions are made in meetings. This is rarely the case. Normally, the decision-makers meet over lunch or have a brief meeting to decide the issue and than (at a meeting called to discuss the issue) make it appear that the decision is made as a result of this discussion. 20. In political decisions, do not look for logic – look for politics. 21. In dealing with international partners, the usual strategy is to go 1 day early, meet with your counterpart, discuss all issues to be brought up at a meeting, arrive at an agreeable response (or a decision to table the issue for later discussion), and agree not to take any firm positions on any new issues brought up at the meeting. This makes it appear to the rest of the world that you and your counterpart are of one mind and that the work is in good hands. All disputes are held behind closed doors with the minimum number of participants. 22. Too many people at Headquarters believe the myth that you can reduce the food to the horse every day till you get a horse that requires food. They try to do the same with projects which eventually end up as dead as the horse. Although it’s not part of Jerry’s written Lessons Learned, he consistently told his people the following (unwritten lesson): “Show up early for all meetings; they may be serving doughnuts” Finally, Les Meredith (former Director of Space Sciences and Acting Center Director) had this remark to make about Jerry Madden’s 128 Project Managers’ Lessons Learned: “God only gave us Ten Commandments. Jerry has listed over a hundred instructions for a Project Manager. It is evident a lot more is expected from a Project Manager” ## Deutsch sich mit etw.(Dat) befassen: undertake/concert/deal/occupy/dabble in/with/whatever ## Places https://foursquare.com/v/true-burger-bar/52b02c4211d241652e021bdf – True Burger Bar in Kyiv # Day 041: Vim ## Vim plugins In this blog post I discovered an excellent new plugin I really like: Easymotion. I’ll make an effort to use it as much as possible the next couple of days to learn it as much as possible with my mechanical memory. It’s absolutely brilliant. Main bindings: (from :help easymotion) # Day 040: Shabbat Finished “Old Mariner’s ballad”! Read a number of pages of La Divina Commedia in a format that TIL is called bilingual parallel text, Italian and 1910s-German. It was absolutely fascinating on all possible levels.. Then I painted some random Gothic letters after getting inspired by the German Font the book. . # Day 039: Backups, Linux ## Goals for today: • learn the number line on the keyboard • see what I want to do with my domains and projects • Finish my backup system, and do one big backup of everything • look at my steno thing and decide what I want to do with it • ssh keys for everything • finish the basic 3 stones game bot thing, especially the turns part • clean everything old and unneded from pchr8.net, to make backups easier and to save money • Download maximum audios and videos from my VK accounts • move my blog to jekyll? ## Linux ### Jekyll new post creation Okay, the first nice thing that happened today is that I finally automated creating new Jekyll posts! Behold create.sh: ### Bash backup scripts And while we’re at it, here are some of my yesterday’s backup scripts: ## Stack / Random • Do this for my remappings instead of xmodmap • At the end of the day I should really make a more optimal search through this blog. • Should I learn by heart the COICOP, just for fun? Memory palaces + anki? ## DNB and Typing Changed my startup xkb line to setxkbmap -option -option 'compose:rctrl, grp:rwin_toggle' umlauted,ruua so I still get the right Shift which I can learn to use! Also I really like typingclub.com, and the next couple of days will try to force myself to type right, with the correct Shift, without bottoming out my keys, and typing the numbers and special symbols without looking and with the right finger. Also not forgetting about posture and the right position of my hands. ## Quotes “I don’t count my situps, I only start counting when it starts hurting, when I feel pain, that’s when I start counting, cause that’s when it really counts.” -Muhammed Ali (As quoted by Arnold Schwarzenneger in his speech) Also from that same speech: People perform better when they have no safety net ## English Sedition is overt conduct, such as speech and organization, that tends toward insurrection against the established order. # Day 38. Bookkeeping, Linux, Borg ## Scratchbox/stack • I need to find a way to look through / grep all these files for when I need something. I’m sure I can grep through multiple files, but if not I can just make a make-script which concatenates them all before “compiling” and sending to server? • Fzf? ## Typing and DNB ### DNB d3b 43% Thu 07 Feb 2019 09:12:29 AM CET d3b 36% Thu 07 Feb 2019 09:12:29 AM CET d3b 14% Thu 07 Feb 2019 09:12:29 AM CET d2b 75% Thu 07 Feb 2019 09:12:29 AM CET <- D2B! I'll keep working on it until I get 80% again on this. d2b 92% Thu 07 Feb 2019 09:19:01 AM CET <- OKAY! d3b 42% Thu 07 Feb 2019 09:21:04 AM CET d3b 14% Thu 07 Feb 2019 09:22:56 AM CET d3b 79% Thu 07 Feb 2019 09:26:03 AM CET <- Nicee!  It’s so interesting how wildly different and unpredictable it is. I should try doing 20 minutes and seeing how much time do I need to concentrate on it. ### Typing Will keep tracking it on Typeracer. 93 WPM 98.5% 174 1/5 87 WPM 97.2% 130 4/5 87 WPM 97.0% 69 3/5  ## Finances I’ll give ledger another try, I’m not sure why I stopped – it had been working out pretty well. Added again the nice aliases alias le="ledger -f ~/s/l/ledger.txt --strict" alias l="vim ~/s/l/ledger.txt" ## Downloading files with wget Savefrom.net has a Firefox addon. I needed to disable various tracking stuff in configs, and let it generate my 7000+ links from the album. Then I’m trying to download them from the file via the following command: wget -i urls1000 -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0" --wait=1 --random-wait --limit-rate=2000k --rejected-log=rejected wget -i inputfile downloads the urls in the file, everything else is me trying not to get banned by the server. Let’s see if it works out. ## Linux ### du Here I learned about du. sudo du -h -d 1 shows the size of the directories in the folder (depth of one, human-readable). ### Borg Borg is an awesome backup program which allows to do most of what I need, the link is the quickstart guide. ### sshfs Is a really neat way to access remote hosts’ folders. ### Extracting tar to a specific directory tar xf file.tar --directory /path/to/directory, the --directory option, as per man tar, is -C, –directory=DIR Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow. ### SSH executing remote commands ssh user@host 'echo "test">> test;'. More examples here ### Mysqldump An excellent way to back it up. If it’s local, one way to do it: Also specifically for nfs, ssh yourname_yoursite@ssh.phx.nearlyfreespeech.net mysqldump --user=youradminusername --password=yourpassword --host=yourprocess.db | gzip >backup-yourprocess-20120627.sql.gz is mentioned on their FAQ ### Scripts I’ve written … will be described in a separate post. # Day 37. Python and game theory Aaand after a short downtime we start again! Today I will be reviewing again all the basics of Python OOP and playing with some game theory by programming a simple simulator, having open the PEP 8 — Style Guide, and focusing on not bottoming-out my keyboard keys. ## Python • Ankify import random and randInt(x, y) • This is how __init__ and inheritance work in Python. ## Scratchbox/stack • How does the apropos thing work? Do I need to create a database for it? I think it worked out of the box before. • I needed to run mandb as root, and apparently need to do it every time a enew man page is added # Day 21. DT Exam ## Scratchbox/stack • Why does Telegram open files in different programs than Telegram? Look again into xdg and the different mechanisms for this. • I should try to make a Rührei sometime. • And at this point I think I should remove the ‘purely technical’ part from the blog description, since until now there was more cooking than solved technical problems. • DONE • I should buy a garment steamer! Dampfglätter ## DNB and typing • d3b 43% Thu 31 Jan 2019 08:36:05 AM CET • d3b 36% Thu 31 Jan 2019 08:40:41 AM CET • 87 WPM 97.2% • 96 WPM 98.7% • 101 WPM 98.5% ## Bash Updated my timer script, now it outputs the time when the timer was set along with the reminder. \n for the newline, () to insert command output in variable (though if I understand right backticks would have also worked), and date’s format because I will probably remember the year.

EDIT Doesn’t output the date when the timer was set, only when executed :C Need to move it to its own variable, I gues TODO for tomorrow. EDIT2 DONE!

## Python

The googletrans python module uses Google Translate’s web api to translate text. Look extremely useful, I should make a small CLI script for this. I seem to translate random stuff quite often.

## Deutsch

• der ZAhler — whoever pays. Der ZÄhler — counter.

## Quotes

Good ol’ alternative productivity. Getting lots of stuff done, but nothing important. Reddit

## Digitaltechnik exam finished!

Here’s a really nice burndown about the states of every single project in the history of humanity:

.

# Day 20. DT

## Typing

https://www.typingclub.com/sportal/program-3/328.play has a Dvorak layout!

## Scratchbox/stack

• it would be interesting to make a static structure for these entries. And then make a template for them, with the right name/date/…
• DONE! Made a script for this.

## Interesting stuff for later

Stenography! With plover and this tutorial. It’s what I was trying to do but much much better on so many levels. The world is a really fascinating place. Installed plover, I will definitely play with it later. “Steno Hero” also exists.

# Day 19. DT

## Random / news

I discovered https://hckrnews.com/, its “top-10%” setting is awesome.

## Scratchbox/stack

• Finally learn English apostrophes
• It would also be interesting sometime later to analyze the words used in these entries

## Quotes

I feel like being obsessed with anything automatically makes it unattainable. It’s like the universe saying, “ you’re not behaving in a healthy way so you have not earned it being yours.” Its a handy way to keep myself in check. (Reddit.

## German

Finally figure out the Unterschied between the words Unterschied u. Unterschiedlichkeit From this German StackExchange answer:

• Anders
• Only word that works alone, without saying different from what
• Der Hund is anders; der andere Hund.
• Unterschiedlich
• An important but small attribute that makes things different that you want to accentuate:
• Wuffi und Kläffi sind unterschiedlich. Sie unterscheiden sich an den Ohren: Wuffi hat Stehohren, Kläffi hat Schlappohren.
• Verschieden
• Just different, without any specifics.
• Natürlich sind Kläffi und Törti verschieden! Es sind schließlich verschiedene Rassen!

Not from dict.cc, but from my intuition:

• die Unterschiedlichkeit – the difference in a more abstract meaning.
• der Unterschied – the difference – especially one in particular.

## Mechanical keyboards

Here are tips on how to improve ergonomics for better typing speed and comfort. TL;DR raise my wrists and lower my table/keyboard till I get a >90C angle.

# Day 18. DT

Today I’ll get my mechanical keyboard <3

## Deutsch

• Finally figure out bzw.

## Scratchbox/stack

• Should I find a way to synchronize all my stacks? TG+T+Jekyll+…
• Probably not
• Vim – add a way to delete things without it going to the y-regester
• "_d does this through the black hole register!

# Day 17. DT

## Scratchbox/stack

• More ideas for xkb fun:
• In vim, make nice shortcuts for usual things I use based on the mod/alt key or the Alt+F2
• DONE
• Why did the .html file extension survive better than .htm, but the same didn’t happen for .jpeg?

# Day 16. Xkb + cooking

## Mediawiki

• [[File:File.jpg]] to use the full version of the file
• [[File:File.png|200px|thumb|left|alt text]] to use a 200 pixel wide rendition in a box in the left margin with “alt text” as description
• [[Media:File.ogg]] for directly linking to the file without displaying the file

copied directly from the Special:Upload page.

## Jekyll

If I make a post’s date in the future it will not appear until then? TODO research how does it work.

## Scratchbox/stack

• I need a way to finally organize all the things I finally want to (invest time to) learn. I seem to lose quite a lot. I need something more formal than my link wiki for this, I think. Or just change how I use it.
• Add to TW a planned-due field! As opposed to the real-deadline.
• Add to TW and create a system for some tasks for the year in the respective sprints, like change toothbrush every 3 month. Things with >1m periodicity.
• DONE
• And finally fix the public and private keys

## XKB Fun

Modified the default Russian layout to make it also Ukrainian at the same time:

Also in the file /usr/include/X11/keysymdef.h is the list of all possible keys to assign.

## Cooking

Couscous! Here is how to cook and ideas.

Also champignons in the oven.

# Day 15. DT

## Sport

I will be doing the Stronglifts 5x5 program in February! Should also read this. And follow the drink a lot of milk calorie gain thing.

## Timewarrior

• For tasks with parentheses, they need to be escaped $$like this$$, so that they don’t conflict with zsh.
• Speaking of which, what do they conflict with?
• I should finally remember that it’s shorten @1 20min for timew, and 20m for utimer. I think it’d be easier to fix utimer than timew – I need to make them identical either way. I guess hypothetical TODO for later.

## Scratchbox/stack

• I should learn the names of the German letters: https://de.wikipedia.org/wiki/Deutsches_Alphabet#Benennung_der_Buchstaben.
• Learn bash/zsh parentheses – what do they do exactly.
• I could make a specific i3wm-config for when I want to do Deep Work in Cal Newport’s meaning of the word? With different background and only two workspaces or something like this. Bonus points if I can switch to it dynamically.
• T add the dynamic font size change perl addon to urxvt
• I should make two different kinds of Scratchboxes – the ones which are time-sensitive and ones that are not.
• And I should learn to ignore thoughts which are inconsequential and not with no chance to ever be acted on.
• Add to my timer the ability to do “tm 15:00” or something.

## Deutsch

• abseits ausgetretener Pfade – off the beaten track
• TODO Ankify this
• Not Synchronizität, Synchronität. (at least in Schaltungstechnik).

# Day 14. DT

Added never-ending tasks like cleaning as the first numbers, so I can still track the time. To give them ids 1 and 2 etc., I moved them to the top of ~/.task/pending.data. I might consider making a patch so that it’s less of ahack? Or – even better – just scripts that interface with timewarrior with taskwarrior out of the picture completely?

## Jupyter/markdown

• Bulletpoints are one asterisk
• sub-bullet-points are +

## Scratchbox/stack

• I should make a better way to track repetitive tasks like cleaning with timewarrior. A bash script, prolly? Like track cl or sth similar.
• Create a day when I go through the scratchbox and paste it somewhere - let’s make it to a particular page on this DTB, and let’s make it wednesday.
• but ideally recheck it once a day
• Add to my statusline on the big screen the output of timew for th ecurrent “Tracking”.
• DONE
• Add a zsh command to make it easier to create new Jekyll posts, with correctly formatted name and content. I’m surprised that I have not found anything similar, it’s prolly there, but I haven’t looked enough.
• DONE!
• Fix dates in all posts – the ones inside the header, not the name
• DONE!
• add tags for not-work and deep-work to Taskwarrior, to better track time for clean work and various cleaning/social/lunch/whatever stuff.
• Calendar – add the symbols in a maximally configurable way instead of directly into tikz-kalender.cls
• DONE ?
• How does \ifdate work inside tikz calendar, it’s like a globally defined command? Interesting I didn’t get that before.

## German

• die Zahnbürste

# Day 13. DT; Bewerbungen.

## Resume

Added the new experience I forgot to add; very glad I could keep it still one page long.

TODO: Possibly change the template to make it less hack-y.

## Scratchbox/stack

• T P.HP Find something to do with the Scratchbox at the end of each day? All three of them
• T h.it Add my vim spellcheck files with my custom words also to my dotfiles repo.
• add aliases for zsh and basic taskwarrior tasks. t 123 start -> tws 123

## Latex

\& istead of &, like with \%.

## German

Again spellchecking everything, later will anki-fy this.

• Abschlüss -> Abschluss
• Nationale Technische Universität „Kiewer Polytechnisches Institut Ihor Sikorskyj“
• interdisziplinär

## PDF

Pdfunite is part of poppler. pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

## Vim

Decided to map my insert mode things to +whatever, started with this suboptimal way to insert the date: imap d :put =strftime('%c')kJA

## Python

For progress bars:

## Productivity

A match made in heaven. http://www.infinitelooper.com/ is my new favourite website.

## Zsh

Added alias for anki-vim as av.

# Day 12. DT; Finances

## DT

Found these beautiful slides by some professor. It’s fascinating how the slides themselves are interactive.

Which by the way reminds me of MarkDeck, which allows to make presentations as code in whatever editor and which imo has a lot of potential for me. I’ll look through it later.

## Scratchbox/stack

Add to Anki \wedge \vee and other latexy things I’ve used. Add to anki formulas without commentaries, which work both sides.

Check how can I transform O in Firefox to open in the same tab

Possibly add the Glossary COICOP numbers to anki?

Add “personal” anki deck where I’ll focus everything important but sensitive.

## Finances

Money is, at its essence, that measure of a man’s choices. (As quoted here).

First of all, I’m gathering resources to do it all systematically. So far the plan is:

• 4-hour-workweek
• The book from Deutsche bank about investing.

At the same time, parallelly to the above:

• Make finally a budget and stick to it
Die Vergütung.
Anomaly Detection - die Erkennung von Anomalien.
verwenden
15 minute intervals -> 15-Minuten-Intervalls (auch “im Abständen von 15 Minuten”)
Month rhythm -> Monat__s__rhythmus.
basically -> im Gr__u__nde
plöTZLich, EinflUss, drUck, grOßes, wöchiges, regelmäßig, DatenschUtz.
reCHerCHiert, DiagraMM, Kategorie
“und dann habe ich wieder von vorne angefangen”
“fraghaft” existiert nicht, fragwürdig/flaglich
Eingabedatei, not Eingangdatei
Datei(f), Daten(pl)
draft -> der Entwurf

I seem to have a problem remembering where the Umlauts are. I’ll fix this with Anki. Should’ve started doing it a long time ago.

### Vim

yank word: yaw. (Not inner, the entire thing, with all eventual paretheses etc.)
Rechschreibung: pacman -S vim-spell-de, after this :setlocal spell spelllang=de_de
Here are the important commands.

]s Gehe zum nächsten falschen Wort
[s Gehe zum vorherigen falschen Wort
zg Fügt das Wort unter dem Cursor dem Wörterbuch hinzu, das in der Variable spellfile steht.
zw Fügt das Wort als falsch der Wörterbuchdatei aus der spellfile-Variable hinzu
z= Bietet eine Auswahl von Korrekturvorschlägen an \

I added: map zr z=1<CR>, so now zr replaces the word under cursor with the first variant suggested. I love vim for the ability to do this.

### Latex

Picture with caption:

# Day 5. PB+Latex

Kept working on my internship report.

## Latex

for the % symbol: \% To use a simplier citation style, \bibliographystyle{unsrt}. For this I had to remove the package apacite. For using urls with underscores in Bibtex: \usepackage{hyperref}, and then howpublished = {\url{https://scikit-learn.org/stable/modules/outlier_detection.html}} for some reason worked for me, even though it shouldn’t have.

## German

Die Prognose
How I divided them between X und Y –> Wie ich die zwischen X und Y aufteilte.
Abweichungswerte – deviation values

# Day 4. Keyboard layout, Praktikumsbericht, Latex

## Quotes

Fish don’t know they are in water

### Keyboard layout

Realized that my Pchr8board layout uses only left alt as mod key, right alt stays as Alt and can be used for typical nice Alt-things like switching windows in tmux. TODO – still need to fix the tick. Or in the ideal world actually have one clean layout for two hands, one clean for one hand, separate Russian/Ukrainian ones and some kind of indicator, like the old one I wrote and forgot about.

### Praktikumsbericht

Mostly writing my internship report.

### Vim

To reload the .vimrc when you’re editing it, :so %.

#### Vocab

Staff meeting = Belegschaftversammlung
Data cleansing -> Datenbereinigung
Electric meter -> Stromzähler (m u. pl.)\ Пёстрый –> Zusammengewürfelt\ Die Einrichtung –> Institution, estabilishment\

#### Latex

Checkmark as per SO

# Day 3. Shabbath

## Quotes

Don’t plant at tree, plant an orchard. Source

## Food

Made humus, following this basically recipe:https://www.bodybuilding.com/recipes/traditional-hummus. Next comes either bodybilder’s hummus or pesto hummus.

## Drawing

Colored one page of my calendar and made one simple lineart drawing. The time has come to learn to add pictures to Jekyll. For reference: ![Hummus](https://pchr8.net/d/dtb/assets/pics/hummus.jpg)

. . .

Using this guide:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600

Researched viability of it all, and got the impression that it doesn’t really make sense for me to get into it and that there are better ways to spend my time. Keep looking for ideas for other (but similar!) places where I can apply some of the approaches.

• would it make sense to focus on individual stocks that can be directly connected to something external, that can both be analyzed?
• can I find some more or less periodical stocs?
• Can I find stocks which more-or-less correlate with something external and easy to analyse?

# Day 2. Mediawiki + Praktikumsbericht - Tmux, urxvt, zsh

Today at the beginning I set mediawiki up, another one, and talked to M re everything connected with it. Now I’m doing my internship report.

For this I had to install latex, the package is texlive-most, which amongst other things contains xelatex.

### Mimetypes

Install perl-file-mimeinfo. After this, I could change the program to use as mimetype what.pdf.

### Tmux

I’m learning to use tmux, just because why not. I hear it’s better than screen. (And lighter than my current solution of multiple terminator instances.).

Best and greates tmux.conf

<C-b> d from inside tmux to detact the current session; tmux attach-session -t tb for attaching the session tb, also works with numbers. Can be tab-completed.

### Urxvt

Middle mouse button for pasting from primary, Ctrl+Meta(Alt?)+C/V for copypasting from clipboard. Uses .Xresources for config, and I’m using this one, it’s perfect.

### Jekyll

Added a Categories page, using this guide.

### Zsh prompt

Added the mod system from my calendar to my prompt, so I can see if the day divides cleanly by 3 5 10.

which gives me a prompt like: 2 [1] !!! sh•~/hs/dt» first number is the sprint number, in square brackets are the mod bits, then number of unfinished taskwarrior tasks.

Used this bash conditionals primer as reference.

# Day 1. Finishing up installation

That was harder than expected. Sadly couldn’t document it as I was doing it.

Audio – install pulse, use it as a default device, otherwise ALSA will have problems playing sounds at the same time. Additionally, devices are hard. HDMI seems to be my new default device, changed that in /etc/asound.conf. I’m not even sure what exactly of what I did helped at this point, sadly.

• Moved i3 configs to .i3/
• Needed to install gvim so that I’d have access to the system clipboard from vim.
• Needed to add $HOME/.gem/ruby/2.5.0/bin' to my $PATH in .zsh

Telegram adds a .desktop file after the first run based on where it is, so I had to change ~/.local/share/applications/telegramdesktop.desktop the lines TryExec and Exec.

## Anki

Ankiweb extension: for Anki, AnkiConnect is needed, code 2055492159 + restart. It also seems to have it’s files not in .config like normal people, but .local/share/Anki[2]; copying them didn’t help to save the profiles. Ankiweb sync did.

# Day 0. Jekyll

Well, first of all, today I installed Jekyll and started writing this DTB :) I’ll be using the minimal vanilla theme, I don’t think I’ll need much more. This will be backed up in github, and in general I think it’s a win/win thing on all possible fronts.

Also today I’ll be reinstalling my Arch Linux, from a working arch Linux installation. I’ll be documenting here the process so I won’t have to google it for the third time later.

I’ll also (finally!) fix the following:

• fix all my configs so that they are optimal and readable
• especially the vim and i3 configs!
• better keyboard layout with explicit ru/ua thing to make my life easier.
• make the zsh statusbar count my taskwarrior todos by better tags. I’m currently using this excellent approach.

As I’m also learning Markdown, I’ll be using this as a reference.

## Installing Arch from an existing installation

I needed to install arch-install-scripts; after this I mounted the filesystems and followed the Arch wiki pacstrap gethsemane_root base base-devel`

After that, just the wiki without too many changes.