This is the yet another reincarnation of my blog. For old posts, there may be formatting issues (especially after the last radical move to Jekyll) — let me know if you see something that doesn't look like it should -- footnotes, weird image formatting, tables in illogical places, etc. Old (pre-2017) posts may or may not represent any present or past opinions, sometimes there was more than one author, and they are saved here mostly for sentimental reasons. You might want to browse my English or IT posts or to visit my duty diary, which is a separate blog with semi-daily posts describing stuff I feel I might have to google later.

Dvorak Mirrorboard Keyboard Layout

This is a test “Project”.


2018 New Year Meme

Let’s try this format again. Since my birthday is coming up, I might reserve this format for birthday retrospectives, and the usual one for new years. We’ll see.

Now playing: Вася Обломов - Еду в Магадан

1) Was 2018 a good year for you?

It was an excellent year by all means.

2) What was your favourite moment are your strongest memories of this year?

Most probably the 35C3. The Chaos Computer Congress is stereotypically the highlight of my year, but this time it was something completely different from the usual. I had more balance and energy to enjoy it on a deeper level than before. For a couple of days I got back my former legendary ability to live on 2h of sleep a day, and did not suffer any repercussions for this.

Though this year many more really awesome things happened.

My internship in Israel (me riding a camel in the desert). The trip to Kassel/Düsseldorf/Köln/… (strong on so many levels). My first German wedding. The trip to Carpathians. The trip to Italy. The actual New Year (in the metro). TODO Pictures!

Read more...

Підсумки 2018

Невже 7 років?

Перечитую щоденники, листи, календар, гітхаб, передивляюсь фотографії. Вірогідно, це був найкращим роком за все моє життя.

Now playing: Bach, Matthäus-Passion
Досягнення року: Написав і довів до функціонального стану перший нетривіальний програмний проект :) І потім замутив ще один
Подія року: 35c3!
Настрій року: Усвідомленості, свободи та світла всередині, з легким відтінком магічного реалізму
Зустріч року: Э. Деякі зустрічі залишають глибокі сліди. Почесне друге місце — чувак, який мені втирав о сьомій ранку про часові пояси. (“If you use continuous timezones, the width of a server rack is one millisecond”). А так взагалі дуже багато надзвичайних зустрічей цього року.
Геморой року: Електротехніка.
Країна року: Ізраїль
Місто року: Петах Тіква
Слово року: Machine Learning
Подорож року: Ізраїль!
Веб-сервіс року: http://www.time.is/
Колір року: Чорний, можливо з темно-синім.
Запах року: Зеленого чаю
Новина року: “IAESTE nomination confirmed”
Книга року: “Deep Work”, але взагалі дуже мало читав цього року. Вірніше, дуже мало дочитав.
Фільм року: “Отпетые мошенники” + перші дві серії Ліквідації.
Пісня року: Ооо. Продовжимо. As usual, in no particular order. Il Ballo di San Vito – Vinicio Capossela, Branduardi / Battiato – Il Sultano Di Babilonia E La Prostituta, Dr. Dre – Still D.R.E., The Irish Rover, у конкретно цьому виконанні, Leningrad Cowboys – Happy Together + Kasakka, Ritmo di Contrabbando – Eugenio Bennato, The Beatles – Hey Jude, Tracy Chapman – Fast car, Kipparikvartetti – Rovaniemen markkinoilla 1964, Oró Sé do Bheatha ‘Bhaile – The Dubliners. Вовка Затихомиренный — НАЕБАЛИ
Жах року: Реакція окремих людей на окремі події в українській політиці.
Заклад року: Їдальня Хаврат Хашмаль.
Напій року: Зелений чай!
Їжа року: Курині відбивні та спагеті
Транспорт року: Flixbus
Бренд року:
Антилюдина року:
МріяЦіль на наступний рік:  Знайти офіційну цікаву роботу в області ML / Data Science та замутити три нормальних сайтика, один з монетизацією. Закінчити бакалаврат в Мерзе.

Побажання собі на 2013 2014 2015 2016 2017 2018 2019 рік: 

Продовжити сон, спорт, медитацію – ЦЕ ПРАЦЮЄ.

Як і минулого року — більше читати, особливо художню літературу. Навчитися це робити, а також взагалі займатися творчістю, не відчуваючи вину з приводу того, що я маю робити щось інше. Взагалі позбавитись від непотрібного почуття вини і нормально відпочивати. Не витрачати час але коли витрачаю — робити це свідомо.

Інтенсивно вчити статистику та МЛ та мати проектики які це демонструють, можливо вести якийсь Diensttagebuch (головне не згадувати звідки я дізнався про саме поняття). Чітко щось осмислене робити Х годин на день.

Нормально підтримувати спілкування з людьми, вірогідно це основне що не давало спокою, але воно покращується.

На наступний рік дивлюсь з оптимізмом та вірою в себе та Всесвіт, який мені стабільно підкидає прекрасні речі саме тоді, коли вони мені актуальні. Рік почався абсолютно прекрасно, і так, сподіваюсь, і продовжиться, сам я точно докладу всі зусилля до цього. Ну, фоєр.

(У)


Записки из подполья — часть א из א — Тайные протоколы одесских мудрецов

Пишу эти строчки изнутри квартиры с плохо работающим кондиционером, где жду вечера, когда смогу опять спокойно выйти на улицу.

В аэропорту пришлось пройти самое большое количество сикьюрити за всю мою жизнь. Когда уже был по ту сторону гэйта резко почувствовал, что люди стали чем-то интереснее, резко, все, даже сложно объяснить чем, ярче и открытее во всем. Сел, читал книжечку про алфавиту всех времен и народов, со мной заговорила женщина, сказала, что учила китайский когда-то. Она там была со своей семьей, которые переговаривались одновременно на французском, немецком, и каком-то непонятном мне языке (иврите?).

Вышел из самолета и сразу почувствовал жару. Это и было первым впечатлением из этой страны — эта жара, плотная, кисельная, липкая, пробирающая тебя сразу.

Now playing: Il ballo di san Vito

o/’
terra di sud, terra di sud
terra di confine
terra di dove finisce la terra
o/’

Read more...

Pomodoro timers in i3 statusbar

The Pomodoro Technique

Pomodoro is an awesome productivity technique, one of the few that work for me, consistently, more than five years now. If you have not heard of it, the basic idea is the following:

  1. Decide on the task to be done.
  2. Set the pomodoro timer (traditionally to 25 minutes).
  3. Work on the task.
  4. End work when the timer rings and put a checkmark on a piece of paper.
  5. If you have fewer than four checkmarks, take a short break (3–5 minutes), then go to step 2.
  6. After four pomodoros, take a longer break (15–30 minutes), reset your checkmark count to zero, then go to step 1. 1

Now playing: Iggy Pop – The Passenger

This works, for me usually 15 / 5 minutes, depending on the complexity of the task. For things that are very hard to do or for times when I don’t feel well at all, switching helps immensely. Usually it’s 5 minutes of a task that requires a lot of willpower, 5 minutes of something easier, 5+ minutes of pause. For tasks requiring more uninterrupted contentration, tasks that are easier for me, and when I feel well and productive, I go for 25 minutes / 5 minutes of pause.

This system is also nice because it implements the age-old rule of “rest before you are tired”. (I found that when I feel tired, it’s probably too late to rest, and my productivity is already impaired. I can force myself through it, but it would mean that I’d pay for it the next day.)  So the best metric I found for the exact ratio is the amount of willpower it takes to do something.

To implement this, I always used https://onlinetimer.ru/, and it’s absolutely perfect. You can even drag and drop individual timers and create bookmarks out of them:

i3 / i3status

But since I use it really a lot, I decided to make another keyboard shortcut for a timer, and visualize it in my i3 statusbar, to have a nice overview.

i3 is a(n awesome) tiling windows manager for Linux. Its statusbar is controlled in .i3/config:

bar {
    output eDP
    status_command i3status --config=~/.i3status-small | ~/.i3/wrapper.py
    strip_workspace_numbers yes
    mode hide
    modifier Mod4
    position bottom
    output_format="i3bar"
}

This is the config for my smaller screen, which hides the statusbar except Mod4 (=Win) is pressed. It executes status_command, which in turn generates a statusbar with i3status using a certain config file, and then pipes the output through .i3/wrapper.py

My .i3status-small is not too creative. Maybe the only nontrivial thing is a run_watch which tells me if a VPN is running:

run_watch VPN {
        pidfile = "/etc/openvpn/mv.pid"
}

It checks if the file /etc/openvpn/mv.pid exists, if it does – the VPN in running. The vpn is run via the following aliased command:

alias o=’sudo openvpn –writepid /etc/openvpn/mv.pid –config’

The result looks like this (click to enlarge)

i3status wrapper for custom commands

Now playing: Les Miserables 10th anniversary version – The Confrontation

First, I researched possible timers. Found utimer, It’s perfect.

Its output looks like this:

I added the following lines in .i3/config. The first line executes utimer, countdown 15 minutes, pipes the output to a textfile and plays a sound at the end of its execution. Third line kills the player.

# Timers
    bindsym Mod3+n exec "utimer -c 15m > ~/s/sounds/outpomo && mpg123 -q ~/s/sounds/tib.mp3"
    bindsym Mod3+Shift+s exec "utimer -c 5m > ~/s/sounds/outpause && mpg123 -q ~/s/sounds/cl.mp3"
    bindsym Mod3+k exec "killall mpg123"

I needed to prepend the timers to the statusbar, so I cound see how much time is left. For this, I used this excellent wrapper script. It’s built based on i3statusbar’s input protocol, documented here.

I added the following lines, heavily commented:

 
j = json.loads(line)

        # Files with the output of utimer:
        tfile="/home/sh/s/sounds/outbash"
        tfile2="/home/sh/s/sounds/outpomo"
        tfile3="/home/sh/s/sounds/outpause"

        def rtime(tfile, color):
            with open(tfile, "r") as f:
                # last line of the file
                try:
                    t=f.readlines()[-1]
                except IndexError:
                    t="O"
            # Utime seems to add a \n(^M?); at the end 
            # We use it as a way to check that the timer has stopped
            # When it stops, a \n is added.
            if "\n" not in t:
                to=t.split("ing:")[1]
                j.insert(0, {'full_text': '%s' % to, 'color':'%s'%color})

        tcolor1="#FF0F02" 
        tcolor2="#FFFFFF" 
        tcolor3="#FA0FF2" 

        rtime(tfile, tcolor1)
        rtime(tfile3, tcolor3)
        rtime(tfile2, tcolor2)

        print_line(prefix+json.dumps(j))

It’s quite a dirty solution, but it works. When there’s text, it gets outputted on screen after being split. If the timer program finishes, it outputs a \n instead of a ^M, and nothing is shown. They are colored so I know which timer is which.

I also added  a  third timer, which I can run from CLI and which both makes a sound and a popup, with optional text. Heavily based on this forum post. Its file also gets read by wrapper.py.

tm() {
  local N=$1; shift
  (utimer -c > ~/s/sounds/outbash $N && mpg123 -q ~/s/sounds/tib.mp3  &
      zenity --info --title="Time's Up" --text="${*:-BING}")
}

The statusbar with all three timers active looks like this:

Sometimes they break, probably because of the hack-y way I use to read the files outputted by the timer. Restarting i3 (which does not close any programs and is not a problem) helps, I have a shortcut for that.

The sounds I use are http://soundbible.com/2205-Bells-Tibetan-Large.html and http://soundbible.com/2170-Clock-Chimes-4x.html.

(Y)

SH

 

Footnotes   [ + ]