Things that live here:

  1. Work log, where I note things I feel I'll have to Google later.
  2. Journal, very similar but about non-IT topics.
  3. Blog for rare longer-form posts (last one below).

Feel free to look at what you can find here and enjoy yourself.


~17% of my country is occupied by Russia, and horrible things are happening there. You can help stop this! If you can donate - I contribute to (and fully trust) Come Back Alive and Hospitallers, but there are also other ways to help.


Latest posts from the Work log

Day 2029

Notes on annotating nii 3d files

3d Slicer

Main file: 240715-1653 Notes on 3d-slicer, 240718-1530 First python 3d slicer interactions

Git config commentchar for commits starting with hash

Commit messages starting with #14 whatever are awkward as # is the default comment in git rebase and friends.

git config core.commentchar ";"

fixes that for me.

For a one-time thing this works as well:

git -c core.commentChar="|" commit --amend

(escaping - Escape comment character (#) in git commit message - Stack Overflow)

Day 2025 / First python 3d slicer interactions

Why is the number of voxels different from the number of matrices? - Support - 3D Slicer Community

>>> raw = getNode('probe1_0000.nii.gz')
>>> slicer.util.arrayFromVolume(raw).shape
(180, 180, 500)
>>> 

doesn’t work for segmentations because not a volume.

Image dimensions can be seen from volume information And are identical in both segmentations and original

I found smoothing in view controllerS!

Pasted image 20240718154617.png

In Slice controllers there’s this arrow button that allows to set basically layers AND SMOOTHING per slice!

So everything is as expected wrt smoothing — there was none.

Zooming in slices w/ CTRL!

Day 2022 / Notes on 3d-slicer

// ref: 240701-1752 NII MRI annotation tools

  • Importing 2x .nii as directory worked as-is

  • Volumes can do settings per file, incl.:

    • annotations threshold starts at 1
  • Volume renderings gives 3d views?

  • Annotations can be imported as annotations/segmentations through add data! Then they are parsed semantically

  • One can segment N slices and it magically creates a 3d shape out of it!

  • Exporting annos as nifti possible through “export” in Segmentation module 2(not Segment Editor!)


  1. Formats (NITRC: dcm2nii: MainPage)

    • DICOM is the medical lingua franca, scientific apps like nifti. Additionally,

      The DICOM standard is very complex, and different vendors have interpreted it differently. Accurate conversion to NIfTI format requires reading the vendor’s private tags.

     ↩︎
  2. Save a DICOM Data as a Nifti - Support - 3D Slicer Community ↩︎

Day 2019

Hovercode is the best QR code generator, DDG second

Animating diagrams and graphs in quarto

Simplest way possible

  • Multiple fragments one after the other with less and less invisible graph parts
    • style=invis: sum [label="∑", fillcolor="#27ae60", shape=circle, style=invis];1

Day 2017 / Notes in converting PPTX powerpoint presentations to quarto markdown reveal

  • To get images, rename the pptx to .zip1 and just copy them from the archive
    • zipinfo lists everything

Day 2011

Kitty close terminal window

Closing the window with the kitty terminal through qtile/OS means often asks you whether you really want to, as sth is running there.

Kitty has Ctrl+Shift+W which closes the terminal no questions asked.

Dia is dead, alternatives

Used Apps/Dia - GNOME Wiki! all my life and love it, but

News! 2011-Dec-18: Version 0.97.2 has been released.

Depends on python 2.7 and is very problematic to install now. I’ll miss it.

I hear https://draw.io is a good alternative.

I’ll add a list of options here next time I need this.

(But for older dia files I’ll have to edit maybe later: it could be installed on a Windows machine and export a broken .SVG which I could then edit in Inkscape.)

Cropping PDF files with Latex and inkscape

Context: in a paper, using PDF graphics is much better than e.g. PNG, because antialiasing (230628-1313 Saving plots matplotlib seaborn plotly PDF). Assume you need to crop one, and taking a PNG screenshot won’t cut it, because it would defeat the entire purpose.

LaTeX

TL;DR: in \includegraphics, trim=left bottom right top (in cm)

positioning - How can I crop included PDF documents? - TeX - LaTeX Stack Exchange:

includegraphics[clip, trim=0.5cm 11cm 0.5cm 11cm, width=1.00\textwidth]{PDFFILE.pdf}

BUT! If I’m ever in this situation, inkscape can really nicely open a PDF and export only the selected things, also as PDF.

Inkscape (much better)

  1. When importing, “Replace text with closest available font”
    • e.g. OpenSans gets matched to Open Sans and it works out usually
    • the full list of fonts is shown in the import window
  2. Select the part I want to crop
    1. or create a shape over it and select that shape or something
  3. Export selection only as PDF; play with export settings as well if needed but for me the defaults worked this time

And either way

… test the results by downloading the PDF from overleaf and opening it locally, because antialiasing w/ imported vector pictures can be broken from within the preview window.

Day 2009

Ways to add CSS to a Quarto reveal presentation

Usual:

format: 
  revealjs:
    logo: logo.png
    theme: [default, custom.scss]

Adding after the first one, so no !important needed1:

format: 
  revealjs:
    logo: logo.png
    header-includes: |
      <link href="custom.css" rel="stylesheet">      

Inline w/o declaring classes2:

Some [red words]{style="color:#cc0000"}

or:

::: {style="font-size: 1.5em; text-align: center"}
styling an entire div
:::

More quarto reveal presentation notes for lecture slides

References

Misc

Better preview at a specific port, handy for restarting after editing CSS. Similar to quarto project frontmatter preview: port: 4444 browser: false.

quarto preview slides.qmd --port 4444 --no-browser

Supported by default

In frontmatter:

  • logo is in bottom-right+
    • footer-logo-link
  • footer for all slides
    • overwrite with div of class footer
  • Likely relevant for me: Numbering reveajs options for dynamic bits, shift-heading-level-by, number-offset, number-section, number-depth — will touch if I need this.

Headers

In front matter:

  • header: one header text for all presentation
  • title-as-header,subtitle-as-header: if true, place the presentation frontmatter’s title/subtitle as header if one not provided (overwriting the header value)
    • use-case: I same repeating text everywhere w/o specifying it every time.
  • hide-from-titleSlide: all/text/logo to hide it from title slide
  • sc-sb-title: if true, h1/h2 slide titles will appear in the slide header automatically when slide-level is 2 or 3

Divs with classes:

Left/right/center blocks of text in header

Pasted image 20240702194920.png 3

  • If one uses section/subsection titles, they go in the left third and right third of the header, with the normal header text in the middle. This is neat to have in general, w/o the section/subsection titles.
    • sc-title, on the left, is section title
    • sb-title, on the right, is subsection title
  • How do I add arbitrary text there? And what would be a good interface for it?

The right way — extension code

Ugly CSS hack

Since .s[c|b]-title is present always, text added that way will be present on the title slide regardless of settings. … and — adding text to a presentation through CSS is, well, ..

.reveal-header .sc-title {
  background-color: red;

	&::before {
		content: 'sc-title header content';
  }

}

Slightly better ugly hack: main header text split in three, with two aligned l/r correspondingly.

.header-right {
  // text-align: left;
  float: right;
  background-color: pink;
  display: inline-block;
}

.header-left {
  // text-align: left;
  float: left;
  background-color: yellow;
  display: inline-block;
}
::: header 
[left]{.header-left} and not left [and right]{.header-right}
:::

Result: Pasted image 20240702193154.png

Extended ugly SCSS hack

Improved the above to support both footer and headers I have a hammer and everything is a nail SCSS can do mixins let’s use them

// L/R margins of the footer — if logo is wider than this, it may overlap right footer text.
// By default, logo max-height is 2.2em, width auto based on this.
$footer-margin: 5em;

// left or right column bits
%hfcol {
  display: inline-block;
}


/* L/R columns in header */
.reveal .reveal-header .rightcol {
  @extend %hfcol;
  float: right;
}

.reveal .reveal-header .leftcol {
  @extend %hfcol;
  float: left;
}

/* L/R columns in footer */
.reveal .footer .leftcol {
  @extend %hfcol;
  float: left;
  margin-left: $footer-margin;
}

.reveal .footer .rightcol {
  @extend %hfcol;
  float: right;
  margin-right: $footer-margin;
}

Usage:

## I am a slide  with custom headers

And With content 

::: footer 
[Left footer]{.leftcol} Center footer [Right footer]{.rightcol}
:::

::: header 
[Left header]{.leftcol} Center header [Right header]{.rightcol}
:::

Frontmatter usage works only for footer, likely header doesn’t support markup.

    footer: "Center footer [right]{.rightcol} [left]{.leftcol}"  # CHANGEME

Result: Pasted image 20240702205342.png

PROBLEMS:

  • asymmetrical if only one of the two is present. Likely fixable, but I don’t want to force any center div.

Footers through qmd cols

This works almost perfectly, including missing values:

::: footer 

::: {.columns}
:::: {.column width="20%"}
left
::::
:::: {.column width="50%"}
Center footer
::::
:::: {.column width="20%"}
right
::::
:::

:::

It even works inside frontmatter as multiline string (not that it’s a good idea):

    footer: | 
      ::: {.columns}
      :::: {.column width="20%"}
      left
      ::::
      :::: {.column width="50%"}
      FB5 – Informatik und Sprachen: Deep Learning (MDS)
      ::::
      :::: {.column width="20%"}

      ::::
      :::

This removes the margin placing it exactly in the same place as a normal footer:

.reveal .footer p {
  margin: 0 !important;
}

(but headers don’t work)

What is a good interface?

A filter that parses frontmatter and puts things in the correct places.

Misc

Dowgrading AUR packages to an older version in arch using yay cache and pacman pinning

For yay, the cache is in

$HOME/.cache/yay/

If the package is there, then: sudo pacman -U ./quarto-cli-1.4.555-1-x86_64.pkg.tar.zst

Then pin the package in /etc/pacman.conf:

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg   = quarto-cli
#IgnoreGroup =

Then yay -Syu will ignore it as well:

:: Synchronizing package databases...
 endeavouros is up to date
 core is up to date
 extra is up to date
 multilib is up to date
:: Searching AUR for updates...
 -> quarto-cli: ignoring package upgrade (1.4.555-1 => 1.5.52-1)
:: Searching databases for updates...
 there is nothing to do

Refs: How do you downgrade an AUR package? : r/archlinux

For not-AUR, there’s the downgrade command: archlinux-downgrade/downgrade: Downgrade packages in Arch Linux

Day 2008

NII MRI annotation tools

For later.

MRI Medical imaging benchmark datasets

  • nnU-Net Revisited paper lists the following, in bold the ones it considers the best:
    • ACDC, KiTS, AMOS “most suitable for benchmarking”
    • BTCV, LiTS, BraTS

Datasets

ACDC

KiTS-23


  1. BrainBrowser Volume Viewer v2.5.2 ↩︎

  2. KiTS23 | The 2023 Kidney Tumor Segmentation Challenge ↩︎

  3. test set unreleased: How to Obtain Test Data in the KiTS23 Dataset? - KiTS Challenge ↩︎

  4. It’s important to note the distinction between what we call “annotations” and what we call “segmentations”. We use “annotations” to refer to the raw vectorized interactions that the user generates during an annotation session. A “segmentation,” on the other hand, refers to the rasterized output of a postprocessing script that uses “annotations” to define regions of interest.[^kits2023]

     ↩︎

Downloading single directories from GitHub repo

Download GitHub directory: paste an URI to the directory, get .zip of that directory only. Handy for downloading only parts of datasets

Day 1998

PDF forms in Linux

TL;DR use Chromium

PDF, PS and DjVu - ArchWiki has a table, but it lies, in my tests:

  • zathura explicitly no support
  • evince didn’t work
  • gnome document viewer didn’t work

And for the Nth time, I end up remembering about Chrome/Chromium PDF viewer, that does this reliably.

Fish adventures in noglob, calculators and expressions

TL;DR: fish easy version below works, but needs quotes when expression is complex: cc 2+2 but cc 'floor(2.3)'.

I’m continuing to move my useful snippets from zsh to fish (240620-2109 Fish shell bits), and the most challenging one was the CLI python calculator I really love and depend on, since it contained arguments with parentheses (which are fish expressions as well).

Basically: cc WHATEVER runs WHATEVER inside python, can do both easy math a la 2+2 and more casual statistics-y mean([2,33,28]).

Before in zsh this was the magic function:

cc() python3 -c "from math import *; from statistics import *; print($*);"
alias cc='noglob cc'

Fish, easy version:

function cc
  command python3 -c "from math import *; from statistics import *; print($argv);"
end

Works for easy cc 2+2 bits, but as soon as functions and therefore parentheses get involved (cc floor(2.3)) it starts to error out.

[I] sh@nebra~/t $ cc mean([2,4])
fish: Unknown command: '[2,4]'
in command substitution
fish: Unknown command
cc mean([2,4])
       ^~~~~~^
[I] sh@nebra~/t $ cc mean\([2,4]\)

>>> mean([2,4])
3
[I] sh@nebra~/t $

(But I REALLY don’t want to do cc mean\([2, 3]\))

In the zsh snippet, noglob meant basically “take this literally w/o expanding anything”, and it passed everything as-is to python, and this is what fails in my fish solution.

Noglob in fish is fun:

THEN

  • command python3 -c "from math import *; from statistics import *; print($argv);"

    • cc ceil\(2\) +
    • cc ceil(2) -
  • `command python3 -c “from math import *; from statistics import *; print(’$argv’);”

    • literally prints the passed thing w/o python eval, w/ same rules
  • OK can I do a variable then?

  set pyc $argv
  echo $pyc
  command python3 -c "from math import *; from statistics import *; print($pyc);"

nope.

Bruteforcing the solution

(and learning to use fish loops mainly, of course there are better ways to do this.)


# list of simple, brackets, and parentheses + no, single, double quotes 
# no space between nums in brackets, python interpreter would add them. [2,3] — literal, [2, 3] — parsed by python
set cmds \
'2+2' \
'\'2+2\'' \
'"2+2"' \
'[2,3]' \
'\'[2,3]\'' \
'"[2,3]"' \
'floor(2.3)' \
'\'floor(2.3)\'' \
'"floor(2.3)"' 

function tcc
  set pyc $argv
  # command python3 -c "from math import *; from statistics import *; print" '(' "$pyc" ');'
  # command python3 -c "from math import *; from statistics import *; print($pyc);"
  command python3 -c "from math import *; from statistics import *; print($pyc);"
end


# loop through all test cases to see sth that works for all
for i in $cmds
  echo $i:
  echo "   $(tcc $i)"
end

At the end, no additional literal quotes + initial command didn’t error out, and we came full circle:

set cmds \
'2+2' \
'[2,3]' \
'floor(2.3)' 

# winner command!
function tcc
  command python3 -c "from math import *; from statistics import *; print($argv);"
end
[I] sh@nebra~/t $ ./test_cc.sh
2+2:
   4
[2,3]:
   [2, 3]
floor(2.3):
   2
  • Double quotes in the python command mean only $pyc gets expanded
  • $pyc in the working versions have no hard-coded quotes
  • in CLI tcc floor(2.3) still fails — because like that it’s a command, not a string. In the file it was inside single quotes, as a string. So I can do this in the CLI as well.

So simple and logical at the end.

Final solution

function cc
  echo ">>> $argv"
  command python3 -c "from math import *; from statistics import *; print($argv);"
end

When using, quotes are needed only for complex bits (parentheses, * etc.).

[I] sh@nebra~/t $ cc 2+2
>>> 2+2
4

[I] sh@nebra~/t $ cc [2,3,4]
>>> [2,3,4]
[2, 3, 4]

# no quotes
[I] sh@nebra~/t $ cc mean([2,3,4])
fish: Unknown command: '[2,3,4]'
in command substitution
fish: Unknown command
cc mean([2,3,4])
       ^~~~~~~~^

# with quotes
[I] sh@nebra~/t $ cc 'mean([2,3,4])'
>>> mean([2,3,4])
3

So I literally had to follow the advice from the first link I found and used single quotes in my initial command:

If you wish to use arguments that may be expanded somehow literally, quote them. echo ‘’ and echo “” both will print the literal.

Still, I learned a lot about fish in the process and honestly am loving it.

Arch cron

sudo pacman -S cronie
sudo systemctl enable cronie.service

# many minutes were lost due to me forgetting to start it as well...
sudo systemctl start cronie.service

Cron git backup script

#!/bin/bash

# https://stackoverflow.com/posts/1482133/
# get the directory where this file is located
DIRNAME="$( dirname -- "$( readlink -f -- "$0"; )"; )"

cd $DIRNAME &&
git add -A &&
git commit -m "Automatic backup at `date`" &&
git push origin master &&
echo "Done"

# and this is the crontab
# odd hours:
# * 1-23/2 * * *  /bin/bash $HOME/this-script-location.sh > /tmp/cronlog

Day 1997

Quarto --no-clean creates html.md files and errors

TL;DR –no-clean is dangerous

quarto render --no-clean ... (or an interrupted render?) created many .html.md files in the same dirs as their .qmd/.md sources:


papers/11-bank2011using/index.md               papers/23-hanig2023nlp/index.md
papers/11-hanig2011benefits/index.html.md      papers/23-tumler2023virtual/index.html.md
papers/11-hanig2011benefits/index.md           papers/23-tumler2023virtual/index.md
papers/11-hanig2011knowledge/index.html.md     papers/24-hamotskyi2024fincorpus/index.html.md
papers/

Then the custom listing for */*.md went crazy because the html.md files didn’t have the needed fields. (also .jsons/.html etc.)

Quarto has no quarto clean but one can just re-render everything without --no-clean

Fish globs

To find all these files arbitrarily many levels deep:

ls **/*.html.md

Previewing quarto websites locally

When doing a multilingual quarto website using profiles (240619-1425 Quarto multilanguage website), quarto preview/render --profile de allows previewing only one language, and the menu links (/de/xxx) break.

Solution to preview EVERYTHING, including menu links logic:

# Todo break on erorr
quarto render --profile=ua
quarto render --profile=en
quarto render --profile=de

And then serve the _site directory locally through a simple webserver, e.g. Python SimpleHTTPServer - Python HTTP Server | DigitalOcean, and see the result on http://localhost:9000:

python3 -m http.server -d _site 9000

Fish shell bits

Run and disown

In my old zsh config I had this:

function dos() {
    # run_disowned and silenced
    nohup "$@" >/dev/null 2>&1 & disown
}

Emulating my old dos command in fish:

Both together give this solution:

function dos
  echo "disowning $argv"
  command $argv  >/dev/null 2>&1 &
  disown
end

Shell notation for $(cmd)

shell - Fish equivalent of bash $(command) notation - Stack Overflow: - bash: $(command) - fish: (command)

which command

type - locate a command and describe its type — fish-shell 3.7.0 documentation: type commandname.

[I] sh@nebra~/me/me-qs $ type cc
cc is a function with definition
# Defined in /home/sh/.config/fish/config.fish @ line 184
function cc
  echo ">>> $argv"
  command python3 -c "from math import *; from statistics import *; print($argv);"
end

Latest post from Blog

'The Hacker Manifesto', переклад українською

Оригінал: .:: Phrack Magazine ::.
Контекст: Маніфест хакера — Вікіпедія / Hacker Manifesto - Wikipedia
Існуючий дуже класний переклад, не відкривав, поки не закінчив свій: Маніфест хакера | Hacker’s Manifesto | webKnjaZ: be a LifeHacker

                               ==Phrack Inc.==

                    Том I, випуск 7, Ph-айл[0] 3 з 10

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Наступне було написано невдовзі після мого арешту...

	                        \/\Совість хакера/\/

	                               автор:

	                          +++The Mentor+++

	                           8 січня 1986р.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	Сьогодні ще одного спіймали, пишуть у всіх газетах. "Кібер-скандал:
підлітку повідомили про підозру", "Кіберзлочинця затримали після
проникнення в систему банку".
	Тупа школота[1], вони всі однакові.

	Та чи ви, з вашою трафаретною ментальністю[2] та знаннями 
інформатики зразка першої половини пʼятидесятих[3], коли-небудь дивилися 
в душу хакера?[4] Чи вас колись цікавило, що є причиною його поведінки[5], 
які сили на нього впливали, що його сформувало?
	Я хакер, ласкаво прошу у мій світ...
	Мій світ почався ще зі школи... Я розумніший за більшість інших
дітей, і дурниці, які нам викладають, мені набридають.
	Тупий відстаючий[6], вони всі однакові.

	Восьмий, девʼятий, десятий, одинадцятий клас[7]. В пʼятнадцятий
раз слухаю, як вчителька пояснює, як скорочувати дроби. Мені все ясно. "Ні, 
Вікторія Миколаївна[8], я не написав проміжні кроки, я розвʼязав все усно..."
	Тупий підліток. Мабуть списав. Всі вони такі.

	Сьогодні я зробив відкриття. Я знайшов компʼютер. Ха, почекай-но,
це круто. Він робить те, що я від нього хочу. І якщо він помиляється,
це тому, що помилився я. А не тому що він мене не любить...
                         Або відчуває від мене загрозу...
                         Або думає що я тіпа самий умний[9]...
                         Або не любить викладати[10] і йому тут не місце...
	Тупий підліток. Він постійно тільки грає в свої ігри. Всі вони такі...

	Потім це відбулось... відчинились двері в світ... несучись телефонною 
лінією як героїн венами наркомана, надсилається електронний пульс,
шукається спасіння від невігластва навколо...[11] Знаходиться борд.[12]
	"Це воно... це те, до чого я належу..."
	Я з усіма тут знайомий... попри те, що я з ними ніколи не 
зустрічався, не розмовляв, і колись можливо більше нічого не чутиму про 
них... Я їх всіх знаю...
	Тупий підліток. Знову займає телефонну лінію... Вони всі однакові.

	Та можете не сумніватись,[13] що ми всі однакові... Нас годували
дитячими сумішами з ложки, коли ми хотіли стейк... а ті куски мʼяса, які 
до нас все ж потрапляли, були вже пережовані і без смаку. Над нами
панували садисти, або нас ігнорували байдужі. Для тих, хто хотіли чомусь 
нас навчити, ми були вдячними учнями, але їх було як краплин дощу в
пустелі.

	Цей світ зараз наш... світ електрона і комутатора, світ краси
бода[14]. Ми користуємося існуючою послугою не платячи за те, що могло б 
бути дуже дешевим, якби ним не завідували ненажерливі бариги[15], і ви 
називаєте нас злочинцями. Ми досліджуємо... і ви називаєте нас 
злочинцями. Ми шукаємо знання... і ви називаєте нас злочинцями. Ми 
існуємо без кольору шкіри, без національності і без релігійної 
нетерпимості... і ви називаєте нас злочинцями. Ви будуєте атомні бомби, 
ви ведете війни, ви вбиваєте, обманюєте, і брешете нам, намагаючись 
заставити нас повірити, що ви це робите для нашого блага, і попри все - 
це ми тут злочинці.

	Так, я злочинець. Мій злочин - моя допитливість. Мій злочин - 
оцінювати людей по тому, що вони кажуть і думають, а не по тому, як 
вони виглядають. Мій злочин в тому, що я вас перехитрив, і ви мене 
ніколи не пробачите за це.

	Я хакер, і це мій маніфест. Можливо ви зупините мене як особу, але ви 
ніколи не зупините нас всіх... зрештою, ми всі однакові.
	

Замітки:

  1. Ph-айл: worst of both worlds between phile and файл
  2. Damn kids: тупі/кляті/грьобані діти/школота1/малолітки2? Дякую цьому твіту Букви, який дає мені моральне право використовувати слово “школота”, бо нічого інше не клеїлося (“Окаяні дітлахи!")
  3. three-piece-psychology: інтерпретую як невисоку оцінку розвитку внутрішнього світу. Тому: пересічним/шаблонним/банальним/трафаретним3/примітивним/нехитрим/безхитрим; psychology: ‘інтелект’ але не зовсім, мені подобається ‘ментальність’
  4. and 1950’s technobrain: Німецький переклад, який сподобався англіцизмами та дав ідею перекласти technobrain в значенні “знання про компʼютери”, а не слово в слово: Berühmte Manifeste 2 – openPunk
  5. хакер/гакер: Вікіпедія вважає обидва допустимими; сам Авраменко ссилаючись на ті самі правила українського правопису теж вважає обидва допустимими, але все ж любить “г” більше (Хакер чи гакер - експрес-урок - YouTube). А я не можу і не буду. Хакер. I will die on this hill.
  6. what makes him tick: TODO, нічого не подобається. Що його рухає/надихає, що у нього в середині, …
  7. underachiever: хай буде “відстаючий”. Хоча пригадую з ЗНО, що суфікси уч/юч обмежені у вживанні, правильніше ВІДСТАЛИЙ мені не подобається.
  8. junior high or high school: тут додаю драми замість дослівності, тому що все ближче до оригіналу, що я можу придумати, занадто канцеляристично: “я закінчую базову чи повну загальну середню освіту”..?
  9. Ms. Smith:
  10. I’m a smart ass
  11. doesn’t like teaching: оплакую невикористаний варіант від душі “ненавидить себе, дітей, і педагогіку”. Дуже оплакую.
  12. a refuge from the day-to-day incompetencies is sought
  13. a board is found: мається на увазі електронна дошка оголошень (BBS — Вікіпедія), дід форумів і прадід іміджбордів. Найцікавіше слово для перекладу. Якщо буде “борд” то збережеться драматизм оригіналу, але є шанси, що хтось спутає з іміджбордами. Коли вони були популярні, нормальні люди в Україні їх не називали ніяк, російською були варіанти “доска”, “бибиэска”4. “BBS” був би найпростішим виходом; “електронна дошка оголошень” знову ж таки канцеляризм. По контексту далі очевидно, що мова йде про якесь спілкування, тому хай буде “борд”, принесу в жертву однозначність і зрозумілість милозвучності.
  14. you bet your ass we’re all alike: як же складно підбирати такі речі. Умовні embeddings з ML тут були б в тему. “Дай мені щось на кшталт ‘авжеж’ тільки більш emphatical”. Попередня версія “Авжеж ми всі однакові!”
    1. You bet – phrases: базара нет, по любому, я вас умоляю
    2. Будьте певні5
    3. ЩЕ Б ПАК — СИНОНІМІЯ | Горох — українські словники
      1. Авжеж?6
  15. the beauty of the baud: Бод — Вікіпедія Нехай мій (і єдиний можливий) переклад буде всім настільки ж зрозумілим, наскільки мені був зрозумілий оригінал, коли я його читав вперше.
  16. profitteering gluttons

Hat tip to:

Random: