In the middle of the desert you can say anything you want
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.
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?)
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))
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
I’ll try to do this tomorrow: The Best Pizza Dough Recipe - Sugar Spun Run
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.
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.
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)
(Setting a name for a screen session - Unix & Linux Stack Exchange)
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 changesThis 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).
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.
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.
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.
ferine - Wiktionary - “pertaining to wild, menacing animals” - same in Italian. First seen here: Ninco Nanco - Wikipedia.
speiseöl | Übersetzung Englisch-Deutsch is basically any cooking oil.
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
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
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
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
:
#!/usr/bin/python3
import os
title = os.environ['QUTE_TITLE']
title = title.replace("|", "\\|")
url = os.environ['QUTE_URL']
with open(os.environ['QUTE_FIFO'], 'w') as f:
f.write("yank inline \"[{}]({})\"".format(title, url))
Added config.bind('ym', 'spawn --userscript yank.py')
to config.py
Why did I need to use with open(..) as f:
in the above script and couldn’t just do os.environ['sth']='sth else'
?
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.
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
{%raw%}{{=}}{%endraw%}
templateUsing Template:= - Wikipedia as an example, I created a page located at = - Fiamma which I can include as {%raw%}{{=}}{%endraw%}
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 {%raw%}{{!}}{%endraw%}
.
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:
#!/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
title = os.environ['QUTE_TITLE']
url = os.environ['QUTE_URL']
newTitle = replace(title)
newUrl = replace(url)
et = urlencode(newTitle)
eu = urlencode(newUrl)
fiammaUrl = 'https://pchr8.net/f/index.php'
url = fiammaUrl+'?title='+et+'&action=edit&preload=Template:NewLink&preloadparams[]='+eu+'&preloadparams[]='+et
with open(os.environ['QUTE_FIFO'], 'w') as f:
f.write("open -w {}".format(url))
Pages to test this on:
I had issues with commands executing too early, for example before the previous one has executed. So:
config.bind('B', 'spawn --userscript open_fiamma_page.py')
config.bind('T', 'hint inputs --first;; later 20 leave-mode;; later 20 open-editor')
Lastly for some reason the “later” sometimes are interpreted as starting at the same time, not from the time the last command finished executing.
(sorry)
{%raw%}
" 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'
{%endraw%}
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
{%raw%}
{{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]]
{%endraw%}
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
..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.
Added some things to the concat.sh
script, it’s even more ugly now but the resulting page is okay:
{% raw %}
echo "Concatting all existing days"
cd _posts
echo \
"---
layout: page
title: Master file
permalink: /master/
---
"\
> ../master_file.md
cat * | grep -v "layout: post" | grep -v "categories: \[" | grep -v "title: \"Day" | grep -v "date: 20" | grep -v "\-\-\-" >> ../master_file.md
{% endraw %}
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 – Sijin Joseph, I don’t agree with everything but looks like a nice blueprint
Picture from xkcd what-if 0034 found on this article about evaluating LMs: Evaluation Metrics for Language Modeling and hotlinked from what-if 0034.
Added to config.py
:
c.tabs.pinned.frozen = False
c.tabs.title.format_pinned = "{current_title}"
Cabinfever is der Lagerkoller.
My favourite corona-Dashboard has a nice new option to “align by date of 100th case”: Coronavirus charts
It looks like this today:
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.
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.
Granular convection - Wikipedia is the process where biggerr parts of something float above when surrounded by smaller parts of something and vibration.
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.
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.
To copy absolute path of a file, Ctrl+Shift+C
works.
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)
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.
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?
tab-give
keybindingAdded 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.
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
lenovo - 18.10: how to set system default webcam? - Ask Ubuntu
mv /dev/video0 /dev/video0.original
ln -s /dev/video2 /dev/video0