Home Archive About
Home Archive About


2017-09-19 - Cost of spaced repetition

Spaced repetition is a technique for efficiently memorizing things developed by smart people who noticed that when you get reminded of something after not having seen it for some time, you remember it longer next time. You represent things you want to memorize as two-sided “cards”, which have a prompt on one side (e.g., “Population: Asia”) and the answer on the other side (“4.4 B”). Each card has an interval attached to it, and it starts as a small constant, say, 1 day. When you study a card, you look at the prompt, try to remember the answer, and then flip over the card. If you answered correctly, you exponentially increase the interval, say, multiply it by two. If you answered incorrectly, you return the interval back to the minimum. Different systems have slightly different algorithms.

Spaced repetition is really good for learning large amounts of raw information. I have been using it for about a year now, for example for German words, for studying for my master’s final exam, for country names and flags, and for flags and command line options of tools I use. I use the spaced repetition program Anki.

I have noticed that I sometimes use spaced repetition even if I probably could be doing something more fun, or more productive. It is addictive, sort of like playing Mafia Wars on Facebook in high school was addictive or like checking my stock portfolio every day was addictive - seeing the number of due cards going down has a nice feeling like “I am winning the game” and “I feel smart”.

The cost of Anki addiction is opportunity cost: time I am spending on Anki is time I am not using to do more important things. I want to have a rule of thumb I can use when I consider whether to add stuff to Anki, or whether to keep it there, so I can deliberate: “What is more valuable to me? Having X more hours of free time, or remembering the atomic number of every element?”


How much time does learning one Anki card consume? My rule of thumb is 250 seconds per card over the first year. That means that learning a stack of 100 cards will take about 7 hours.

Read on for how I came up with that.

My process

I will simplify Anki’s algorithm to make the estimate. Let’s assume:

  • A single review takes r = 6 seconds. As of today, I have done on average 542.1 reviews per day and studied on average 54.7 minutes per day, so it works out to about 6 seconds per review.
  • It takes l = 4 reviews to get a card from “learning” to “young” (i.e., from “I have not seen this card or I forgot it” to “I am reviewing it, starting with an interval of 1 day”). I have pulled the number 4 out of my hat.
  • If a card is “young” (i.e., its interval is less than 21 days), I have a 16% chance of getting it wrong and resetting its interval to 1 day (p1 = 0.16). 16% is from my Anki statistics.
  • If a card is “mature” (i.e., its interval is more than 21 days), I have only a 10% chance of getting it wrong (p2 = 0.1).
  • Card intervals multiply by 2 if I get the card right, or drop back to 1 day.

I want to know how much review time will a card cost me over the next 365 days. I start with a card that is unreviewed.

Try 1: Markov chain stationary distribution

I will model it as a Markov chain. The first state is the state of a card being forgotten/in learning, the second state is the state of an interval of 2 days, then 4 days, etc., up to 256 days. (I don’t care about longer intervals for the purpose of 1 year. I’ll pretend a card doesn’t get an interval longer than 256 days.) I will figure out its stationary distribution, and then assume each day I’m paying l × r seconds if I’m in the learning state, r seconds for an interval of 1 day, r/2 for an interval of 2 days, etc. So, I have 8 states.

A Markov chain is only a good model if the long term (where the probability distribution converges to the stationary distribution) accounts for most of the learning cost. This might not necessarily be the case.

I’ll create a transition matrix and get its eigenvector in Octave.

p1 = 0.16;
p2 = 0.1;
M = zeros(8);
M(1:5,1) = p1;
for i = 1:5; M(i,i + 1) = 1 - p1; endfor
M(6:8,1) = p2;
for i = 6:7; M(i,i + 1) = 1 - p2; endfor
M(8,8) = 1 - p2;

I want to find a vector x such that Mx=x and the sum of the components of x is 1:

x = [M' - eye(8); ones(1, 8)] \ [zeros(8, 1); 1];

I got: x = [0.127905; 0.107440; 0.090250; 0.075810; 0.063680; 0.053491; 0.048142; 0.433281]

Now to compute the cost.

r = 6;
w = zeros(1, 8);
w(1) = r * l;
for i = 2:5
  w(i) = (l * r * p1 + (1 - p1) * r) / (2 ** (i - 1));
for i = 6:8
  w(i) = (l * r * p2 + (1 - p1) * r) / (2 ** (i - 1));
time_daily = w * x;

That adds up to 3.9 seconds daily.

I noticed the probability mass on the last interval size (0.433) is high. This means that in the stationary distribution, there are many cards with intervals over 256 days, so in the first year of studying a card, the distribution will be more heavily weighted on the smaller intervals.

I decided to try again.

Try 2: Change the assumptions a bit

I’ll slightly change the assumptions of the model. Let’s say that if a card’s interval is x days, it doesn’t mean that it will show up exactly in x days - only that in each following day, it has a 1/x chance of coming up.

Let’s create a matrix of transition probabilities:

p1 = 0.16;
p2 = 0.1;
M = zeros(8);
for i = 1:8;
  p_change = 1 / (2 ** i);
  % Fill in probabilities of reviewing and then forgetting.
  if i <= 5
    M(i,1) = p1 * p_change;
    M(i,1) = p2 * p_change;
  % Fill in probabilities of reviewing and then getting it right.
  if i < 8
    if i <= 5
      M(i,i+1) = (1 - p1) * p_change;
    else i < 8
      M(i,i+1) = (1 - p2) * p_change;
    % Fill in probability of staying in the same state.
    M(i,i) = 1 - M(i,1) - M(i,i+1);
    M(i,i) = 1 - M(i,1);
% Fix for the first row.
M(1,1) = p1;
M(1,2) = 1 - p1;

We are going to pay for transitioning from state A to a different state B. Transitioning from A to A+1 or from A to 1 costs r seconds, and transitioning from 1 to 2 costs r × l seconds. Let’s create a cost matrix.

r = 6;
l = 4;
C = zeros(8);
for i = 2:8;
  if i < 8
    C(i,i+1) = r;
  C(i,1) = r;
C(1,1) = r;
C(1,2) = r * l;

We start with the card in state 1 with probability 1, and we have paid no costs yet. I will represent the costs as a vector of costs paid entering a given state. At the beginning, we have paid nothing.

pd1 = [1 0 0 0 0 0 0 0]';
c1 = [0 0 0 0 0 0 0 0]';

I will want to get the total costs by doing matrix multiplication. After 1 day, the probability distribution will change, and we will incur some costs.

pd2 = M' * pd1;
c2 = (C' \.* M') \* pd1 + c1;

This change is linear, and we will represent the state as a combination of the probability distribution vector and the costs paid so far.

In Octave, I will create a matrix transitioning from one state to another and a vector representing the entire state:

T = [M', zeros(8); M' .* C', eye(8)];
s0 = [1; zeros(7, 1); zeros(8, 1)];

So, after 365 days, we have paid these daily costs:

daily_costs = sum((T**365 * s0)(9:16)) / 365;

This model gives me 0.32 seconds per day. This is 117.69 seconds per year, of which 58 are spent transitioning from state 1 to state 2. The probability distribution was also heavily skewed towards the higher intervals - 64% of cards were in the last state. That means this model is just overly optimistic; there is no way 60% of cards in the unsimplified algorithm could have an interval this long after just 1 year (they would first have to go through the 128 + 256 days). This tells me this model might be way off and broken.

Try 3: Python

And at this point, I’m like “fuck this, I’m better at Python than at math”. So I wrote a thing in Python:


import random
import numpy

p1 = 0.16
p2 = 0.1
review_time = 6
reviews_to_learn = 4

def simulate_cost_of_card_over_year():
  next_day = 0
  interval = 0
  cost = 0
  while next_day < 365:
    if interval == 0:
      cost += reviews_to_learn * review_time
      interval = 1
      cost += review_time
      if interval < 21:
        if random.random() < p1:
          interval = 0
          interval *= 2
        if random.random() < p2:
          interval = 0
          interval *= 2
    next_day += interval
  return cost

tries = [simulate_cost_of_card_over_year() for _ in range(1000)]
print numpy.mean(tries)

And I got these results:

30 81.804
365 159.438
3650 252.15
18250 367.38

That tells me that over the first year, I will spend about 0.43 seconds per day reviewing the card. I trust this result more than I trust my previous hacky math.

Why all the estimates are bullshit

At this point, I was thinking about to declare “victory, it’s about 0.43 seconds per day, and let me now also say why exactly the number is bullshit”:

  • Anki actually doesn’t use a constant interval multiplier of 2; it uses 2.5 by default, and it also adjusts the interval as it goes.
  • You can also answer cards as “Easy”, which makes the interval even bigger.
  • The estimate of “it takes 4 tries to learn a new card” was totally made up.

And then I realized I can actually fix the last point, and that it’s probably also the most significant problem - most of the time spend on a given card will be learning it, not reviewing it.

Fixing the reviews per learning constant

Anki says I did ~35k “Again” responses on cards in learning, and ~65k “Good” responses (and a negligible amount of “Easy” responses). This means that on an attempt to answer a card in the learning phase, I have a p=0.62 chance to get it right. I have Anki setup such that a card graduates to reviewing after I get it right 3 times.

Denote e0, e1, e2 the expected number of attempts it will take me to get a card graduated, given that I have successfully answered it the last 0, 1, or 2 times.

We have: e2 = p × 1 + (1-p)× (1 + e0), e1=p× (1 + e2) + (1-p)× (1 + e0), e0 = p× (1 + e1) + (1-p)(1 + e0). Splashing that around a little bit, I get e0 = 1/p + 1/p2 + 1/p3, which means: e0 = 8.44.

So, that entails some corrections.

Correcting for that in the Python program (setting reviews_to_learn = 8.44) yields:

30 135.76992
365 252.52464
3650 364.75824
18250 502.50888

This means 0.69 seconds per day in the first year, and a total of 250 seconds in the first year, and ~2 minutes in the first month.


  • Learning a new keyboard shortcut is worth it if it will save me 0.7 seconds per day over the following year. (Or 250 seconds in total).
  • My German deck, which has 26 241 cards, would take roughly a whooping 1822 hours over the next year. That’s a full 227 workdays.
  • Rai has an Anki problem.

2017-01-02 - 2016

Time to reflect, 2016 edition. One year ago, I decided to start this ritual of writing summaries of each year. This is an opportunity to take a step back and look at the big picture. Where did the last 12 months go? What did I accomplish? What mistakes did I make, and what lessons can I take from those? Am I moving towards becoming a better person, as I promised at the end of 2015?

2016 abridged

I started the year waking up after a New Year’s celebration at Petr Pávek’s pad, mostly with people from Charlie, the Charles University LGBT organization, and from the Czech Green Party or its youth branch. My private new year’s resolutions were threefold: 1) get to 87.4 kg and stay under that, 2) organize something fun every week, 3) write something every week. How’d that go? The first resolution didn’t go well. Right now, I weigh something like 107 kg. Maybe this year. Fortunately, I got much better at being proactive in doing fun things and socialization. I didn’t ever track how did that writing habit go, but if I intended that to mean “public posts”, then I failed, but I don’t care. I had better things to do than writing.

My dream diary says that in the morning of January 1, characters in my dream included Eliezer Yudkowsky and my crush, which is kind of a premonition of the rest of the year.

At the start of 2016, I felt pretty down. I felt I had no real friends yet, and hence there would be no point in staying in Czech Republic for long. I have been talking with Google and the plan was to get me to Mountain View to start working there in October 2016, and then to climb the corporate hierarchy, earn lots of money, and maybe find happiness somewhere along the way.

How did I feel about this plan? I think even back then I realized I felt sad about it. Mostly about the part where I felt there was noone home who cared about me or who I cared about.

Only there was one loose end I haven’t fixed yet that could rock my sad solitary assumptions. My crush.

What have I been doing about him? So far, nothing - just friendly talking. But I had a plan. You see, I’ve had enough of the pattern where I have feelings for someone, and resolve it by spending months in a cycle of “okay today is the day I say something” / “ohgod I’m so nervous not today”. I planned an opportunity to do something about him. My expectation was that I’d get rejected, which would validate my assumption about having nothing to care about home, so I’d just float on to USA.

In the meantime, I experimented with modafinil, weed and LSD. (Separately. I’m not that crazy.)

Why? Partly probably because I tried to make myself just feel something. Also I wanted some answers. The questions, if I had to guess, may have been: What’s wrong with the world? Why do I keep getting hurt, why does nobody like me? What should I do to fix it?

If you’ve been reading me before, you may have heard that refrain already. Yep, that’s what me being depressed sounds like.

On January 13, I had a really heavy trip while reading Friendship is Optimal. As with other experiences of that sort, putting it into words really doesn’t do it justice. I experienced a blurring of where, in which body and which person, do I reside, and where in time am I. Switching places with other people, moving in time forward and backward, I felt overwhelming grief at the pain of conscious beings everywhere. Looking at my life outside the individual moment and from the outside perspective, I saw myself in a broader context. I have felt pain in the past, and some things are not going as I’d like. Of course, I will feel more pain in the future. But that’s okay, because everything that has happened and will happen has already been set in stone the moment of the Big Bang. My mind is a program running on neural wetware. I have no idea what the world is actually like. Is it real? Is it a simulation, ran by thousands of monks, simulating a Game of Life over eons, one stone at a time? Being a program, only knowing my inputs and outputs, how would I even know if there was no simulation? If all states of the world are set in stone the moment of the Big Bang, how does it differ from a recording? But none of that actually matters. I have something to do here. And it doesn’t matter if all my decisions are already predetermined or if everything I care about is, at the bottom, an uncaring cellular automaton. My enemy is the dragon: aging, death, pain, suffering. And through I may feel fear and pain while I fight, I will not let it stop me.

I did not do anything stupid and this was not a bad trip. But that was only a huge amount of luck. I do not recommend psychoactive drugs. If you don’t know where a door leads, don’t open it. You may not be prepared to see what’s on the other side.

Between January and February, I went to HackCambridge with Petr Hudeček and our project won. Petr was my crush. To my huge surprise and exhiliration, through Petr is into girls, we started a romantic relationship. (If you happen to be in my circle of Charles University friends, this might make a few things click into place for you.)

In the next few months, we dated, talked, and such. I went to school, I researched various rationality-related topics, and for what felt like the first time in my life, I felt happy. This was the first time I attempted to initiate a relationship with someone I loved and I thought I could go on like this forever. I started watching My Little Pony, and I got a nice boost in self-esteem by shoving that into people’s faces and seeing nothing bad happens when I do that.

I found a thesis advisor - Petr “Pasky” Baudiš - and started very slowly hacking away.

Also, very stupidly, I found myself a job. I worked for several months as a software engineer at Factorify. Why was this a mistake? Through I learned some interesting things and met interesting people, I didn’t really need the money, or the experience, or anything. It was probably just workaholism and wanting to have something to do. I should have instead focused on my master’s thesis.

Unfortunately, my happiness in being with the boy of my dreams was short-lived. We broke up at the end of April, and that triggered a full-blown depression.

Just before that happened, I read the book Feeling Good. Recognizing that I’m depressed, I decided to immediately throw away everything I didn’t really want to do and took a few months just to myself.

I started running (with the Zombies, Run app) and I read lots of material (including re-reading Rationality: From AI to Zombies in about 2 days). I noticed that I’m procrastinating while working on my master’s thesis and feeling guilty about it, so I just stopped working on it until I got myself in order.

I also noticed that my comfort zone is really small, so I started expanding it. Most of my life, my idea of fun has been sitting in front of some screen in my room. I started spending lots of time in cafes and tearooms and bought new clothes I liked. I started getting in touch with people I haven’t seen for a long time and developing more authentic friendships.

I noticed a lot of things in my life are not quite in order and slowly started tackling those.

First, I noticed lots of really stupid aversions - instances when I notice I’d like to do something, and then the “inner critic” intervenes and stops me. That feels like an inner prison. I started writing them down and actively fighting them.

Second, I realized these stupid aversions or fears were why I discontinued the only relationship I had before dating Petr, and that those have been mostly running my life for me. Before I went to Dropbox in the summer of 2015, I have been with a boy named Martin for about 3 months. Martin is polyamorous and when we started dating, he had one other boyfriend. In that relationship, I felt afraid of Martin, just because I thought if I were completely honest with him, he might find out something really bad about me, and that would be horrible. I was also afraid of others knowing about the relationships, because I thought it was somehow… dirty or bad to be with someone who has other boyfriends.

I got in touch with Martin again and told him I was sorry for how I treated him, and I told him one of the secrets I thought would destroy me if I told him. Since it’s a sexual oddity, if you’d rather not have that kind of information about me, don’t highlight the following empty space and instead imagine, say, an interest in BDSM.

An overwhelming majority of the porn I look at is furry stuff. The main reason why all my laptops so far had an encrypted partition is I have 18.3 GB of it. I have been fairly unrealistically terrified of how others would judge me if that were to be discovered. My current view is: feel free to judge me, and if you do, I’ll feel free to think of you as an idiot.

I think I’ll actually set becoming friends with someone who identifies as a furry as a comfort-zone-expansion subgoal :)

Also, since you highlighted this paragraph by your own choice, you aren’t allowed to shout “TMI” :)

You may be wondering: Why do I feel the need to put so many personal details online? Several answers. First, this is a way to definitely stop any irrational fears of being shunned by sane people and to expand my comfort zone. Second, be the change you want to see in the world, and I want to live in a world where innocent people don’t feel ashamed for standing outside arbitrary social norms.

The point is that I got my stupid aversions out of the way of actual human connection and we were well on the way to resume our relationship where we left off a year before. I started getting evidence that even if people know icky details about my life, they won’t think of me as a bad person, which allowed me to start feeling safe with someone. A few people now actually know everything about me that I consider important, including things I considered bad about myself, and with those people, I can turn off my mental filter and just tell them whatever I’m thinking. It’s empowering.

Roughly at this point in time, I started seeing a psychologist, because I wanted to ensure the depression wouldn’t come back, althrough, at this point, I felt pretty good.

At the same time when it seemed me and Martin might resume the relationship, I met a girl at the Prague LessWrong meetup group. We clicked and I felt happy with her. Unfortunately, she was not open to me keeping a relationship with both Martin and her.

I had to make a decision: she and monoamory, or Martin and polyamory. Probably because of how I tend to uncritically accept other people’s opinion, I decided to “try” a relationship with her. Part of the decision was also loss aversion. What if I told her “no” and then realized she was the love of my life a week later?

We were in a relationship for about 3-4 months starting late June. I spent most of the relationship feeling bad for still wanting to have Martin as well as her, and I thought I could make it go away by ignoring it long enough and pretending everything was all right. That didn’t work. My relationship with her ended when I told her I would no longer ignore my feelings toward Martin and that I’d start seeing him and that she could to whatever she wanted about it. I admit I was very harsh and didn’t allow any compromise on that point, but I think even if there were more discussion, it probably wouldn’t change the eventual outcome. In hindsight, the fact that my feelings didn’t fit into a monoamorous relationship with her was apparent by week 3. So, why did it take 3-4 months to stop trying to make a pig fly and to stop hurting us both? Two things. A: loss aversion. What if she is actually the love of my life and I’d be throwing a beautiful life together away? B: Low confidence. What if the reason I’m feeling bad is not repressing feelings, but just still being depressed? C: not wanting to hurt her and me by breaking up.

Several weeks after I broke up with her, my depression mostly lifted.

What did I learn from that? The importance of honestly listen to my feelings and the extensive damage that comes from insincerity. Even if it’s driven by a need to protect yourself or someone else.

In the meantime, I have started taking antidepressants and dealing in therapy with various other baggage (which I might also write about some day). At the end of summer, I gathered the motivation to start working on my thesis again. Because it has been going so slowly (due to the depression and due to losing several months to work at Factorify and to depression recovery), I asked my recruiter at Google to move my start date to March 2017. Also, unfortunately, I didn’t make it through the H-1b visa lottery, so I’m not moving to Mountain View. I’m moving to Zurich.

Me and several of my friends from the Czech rationalist subculture decided to organize EAGxPrague in 2016 and to start a Czech effective altruism chapter. Organizing EAGxPrague took a pretty big amount of my time between August and December. For the last month or so, I basically worked full-time on it.

Visiting Chernobyl and Ukraine with my girlfriend and my friends from high school was also very nice.

I got more involved in the broader rationalist community. I visited meetups in Vienna and in September, I went to the LessWrong Community Weekend in Berlin. This let me meet rationalists at a much higher level than myself. I got social proof for several views I wasn’t brave enough to enact in my life myself. First, hugging and cuddling is nice and it’s okay to be hug-positive among your broader social circle, not just your closest friends. Second, polyamorous relationships work, even if they may be harder than monoamorous relationships in some aspects. And IMO, they are worth the work for me. Third, it’s okay to think EA is a worthy project to work on and to actually devote your time to it. It’s not a law of nature that you shall spend a third of your life exchanging your time for currency.

I ran two 10k races this year. Unfortunately, at the end of September, I mostly stopped running. I’ll have to get back to it some day.

I attended an 8-week mindfulness meditation course between October and December. I didn’t keep a daily habit of formal meditation, but I do fairly frequently find the time to notice my feelings and I think mindfulness is a valuable skill for dealing with negative emotion.

For the last 2 months, Martin and I resumed our relationship and it’s going so much better than the first time around. I’m very happy to have someone who I trust so fully and who can support me so well, and who is so good at cuddling :)

I’ve also had my hands full of EAGxPrague and it exceeded all my expectations.

2016 was a year when I found out I was actually in control of my life. I opened up about my feelings, fears and beliefs, and started acting on those. I let down my defenses and I put my real me out there. I got hurt, but I also experienced valuable moments of sincere, real connection. Putting down my defenses also exposed the fact that I don’t feel good spending time with my close family and our relationship is far from close and sincere, which hurt both me and them. This is unfortunate, but I’m not about to waste time beating myself up over how much of a bad person I am for that.


So, a year ago, I said:

I used to tell myself I’d do all kinds of things if only I had time. I will contribute to projects and causes that actually matter. I will develop deeper relationships and fight my social awkwardness. I will get back in touch with old friends. I will do the things I used to put in my bucket list. Urban exploration. Geocaching. Meditation. Jumping out of airplanes. Soft drugs in moderation. I will become healthier and stare at fewer screens. I will lose weight, and for good this time. I will learn about things I want to learn about. I will think things over and figure out how do I imagine my twenties and maybe thirties. And I hope this will not only make me happier, but that it will also help me become a better person.

How’d it go?

  • I co-founded the Czech Association for Effective Altruism and led the organization of EAGxPrague. “Contribute to projects and causes that actually matter”: Check.
  • I developed deeper relationships and fought my social awkwardness, and while it’s still an uphill crawl, I’m winning.
  • I got back in touch with old friends, especially my friends from high school. Thanks to dropping all the stupid fears of not being liked, I am now much more proactive.
  • I didn’t do urban exploration or geocaching. I did not jump out of any more airplanes, because nowadays I’d want to calculate the risk much more explicitly since I started valuing my own life. I learned mindfulness meditation and meditate a few times each week. I don’t think I’ll be touching illegal drugs anytime soon.
    I do, on the other hand, feel much happier nowadays, without necessarily doing anything extreme.
  • I was pretty healthy the first half of 2016, but somehow, my weight crept back up and the habit of running didn’t stick. That’s something for me to keep working on.
  • I did learn lots about things I wanted to learn about. I read 45 books in 2016, coming short of the goal of 50. I’m toning that down to 40 in 2017. I started building a stack of Anki cards (currently at 1549) from books and articles I read, English terms I don’t understand, constants and concepts I want to learn and so on, and I think it’s very useful for me. I also revamped my personal note-taking system – see http://github.com/MichalPokorny/public-notes for the public part.
  • Did I think things over and figure out how do I imagine my twenties and thirties? The answer to this question is “just stop worrying and enjoy life”. Through my long-term plan is still uncertain, I now spend too much time being happy to worry about it so much.
  • Am I happier? Quite. Am I a better person? That is in the eye of the beholder. In my view, yes.

Best books I read in 2016

  • Reasons and Persons by Derek Parfit. This book touched on several very important topics and was very important for the development of my current view on morality and personal identity.
  • Worm by Wildbow. This is an epic rationalist fiction about superheroes, which tells the full story of Taylor Hebert, a bullied high-school girl, who develops superpowers and has to deal with often having to do bad things for good reasons. It totals roughly 1,680,000 words; roughly 26 typical novels in length. I absolutely loved it.
  • More than Two by Franklin Veaux and Eve Rickert. This book explains all the ins and outs of polyamory, frequently with personal stories collected by the authors. Reading this book was the last nudge I needed to publicly come out as polyamorous. Polyamorous relationships are not about wanting to sleep around or fear of commitment. They are about open communication, about the courage to trust the other person not to hurt you even if you allow them to, the strength to stand up for yourself and the wisdom to make your own decisions even when it’s not easy. 5 stars.
  • Friendship is Optimal by iceman. It’s a fanfic crossover between My Little Pony and the Singularity. I highly recommend it if you’re rationality/futurist-minded. It also has very nice recursive fics - I read Caellum est Conterrens and Always Say No.
  • The Hedonistic Imperative by David Pearce. This is an enlightening and persuasive manifesto advocating a program to reduce suffering in sentient beings until, at some point, nanotechnology and genetic engineering allows us to eradicate suffering altogether.
  • Superintelligence: Paths, Dangers, Strategies by Nick Bostrom. Many thinkers (and many EAs) believe that developing a superintelligence not entirely aligned with our interests is likely to happen and that it would have catastrophic consequences for the human race. This book explains, in accessible language, the nature of the problem, some proposed options for dealing with it and long-term strategical concerns.

What now?

I’m starting work in Google in Zurich on March 6. Until that happens, we at the Czech Association for Effective Altruism will work on establishing a viable EA chapter, and other projects (which I will highlight in a public strategy document we’ll be releasing shortly). I will try to get my master’s thesis as far as possible before March, and then I’ll finish it on my own in Zurich. I committed a bunch of money to it. I’m also seriously considering taking the Giving What We Can pledge for life. There was a pretty successful pledge drive on Facebook in December and taking the pledge would probably inspire others around me - like other members of the Czech Association for Effective Altruism. Making giving to effective charity a social norm is the point of the pledge. In February, I’ll be taking the master’s final exam, and I have some studying to do for that, too.

Unfortunately, moving to Zurich will probably impact the relationships I’ll be leaving behind in Prague. At least the first few months, I’ll be coming back fairly frequently. But it’s not the end of the world. I can come back any time I want. The people will still be here and I’ll be there, at the other end of any screen. Relationships don’t end. They change. And if I approach it with a smile on my face, Zurich will be an awesome place. I expect I’ll find new friends in the local EA/rationality groups. And I also expect I’ll love the work at Google.

My longer-term plan is to move to Bay Area to engage in the EA/rationality community there. I would like to surround myself with people of my tribe. Ideally, I’d also like to work in an EA organization, to blur the artificial lines between personal life and work, but I’m not certain if that would be the best decision, when it comes to long-term career strategy. Until a better opportunity than Google comes along, I will work there on things I like (computer science) and I’ll aim to develop my career capital. If I stay there for 1 year, I plan to apply for a transfer visa to USA, or, later, for an H-1b.

What would a better opportunity look like? Maybe being a software engineer for 80,000 Hours or the Centre for Effective Altruism. Maybe, with a bit of repositioning, becoming a researcher, director or project manager. I am also considering becoming an entrepreneur or AGI safety researcher.

I still feel a bit uneasy thinking “I would rather work at 80,000 Hours for $30k a year than at Google for $200k a year”. That’s probably an atavism of back when I thought being rich alone would buy me happiness. I should get rid of that kind of thinking. And I again feel a bit uneasy thinking that sentence. I still seem to have remnants of judging my own worth by size of estate and number of accolades.

So, what goals do I set for myself for 2016?

I will reach and maintain a healthy weight and change my eating habits. I will use all tools in my rationalist toolkit for this. Changing my nervous eating habit will probably take a long time, but it can be done. If people can quit heroin, I can quit overeating.

I will build general and transferrable skills, especially in managing teams and research.

I will work on myself, on being more like the person I want to be and less like the person my fears think I must be or the world will fall apart. I will not fall back into the pattern of running from anxiety to anxiety. I will not let them run my life for me anymore. Life is far too valuable to waste. There are too many people to love, too many beautiful experiences to be had, to yield even a single second to the dragon.

As they say in CFAR:


Addendum: I redid the chart from last year when I visualized how much of my life has passed and how much do I have left. Each box is a single day.

The bright yellow is the time between then and today.

Gist on GitHub

Look at how much you can experience and how far you can level up in the course of that thin bright yellow band, and how many more yellow bands are up for grabs. Imagine the possibilities.

2016-11-01 - October summary, mostly on EA efforts

As some of you might know, yours truly along with my friends Jirka Nádvorník and Radim Lacina founded the Czech Association for Effective Altruism a few months back. Dan Hnyk is not an official member yet, but he’s doing a lion’s share of the work. We were also very lucky to bring along Honza, who used to work on fundraising at the Forum 2000 foundation and who is helping us with many areas we had little experience with before he came onboard. Our goals are to establish an EA community in Czech Republic and to be the hub of its long-term viability.

Executive summary:

  • Effective altruism in Czech Republic is doing well. We have a medium-term plan around movement growth.
  • EAGxPrague is happening on December 10 and you are encouraged to apply (Czech application, English application) and please report your experience and feedback (the more verbose the better) to prague@eaglobalx.org
  • I encourage you to seek answers to certain questions by using surveys and basic statistics. It’s fun, easy and powerful.
  • We have very little information on which to estimate how many people will apply to the conference. I am curious as to how high will the actual number be once we launch distribution.
  • I talk about the importance of good planning.
  • Personally, my depression’s back, I am not OK, but who knows, maybe I’ll be OK one day.

Effective altruism

If you haven’t heard about Effective Altruism yet, it is a philosophy and social movement, which aims to 1) do good, and 2) do it as efficiently as possible. You yourself probably try to good in your own life: you probably help people close to you, and you might sometimes do an altruistic thing for someone not so close to you: donate a few dollars to this charity or other, give some clothing you no longer need to someone who does, and so on.

Early EAs have observed one very important and somewhat counterintuitive fact: it matters a great lot where do you put your resources. If you give $3500 to a charity that trains guide dogs for the blind, it will train roughly one tenth of a dog (they cost 32,400 GBP apiece to train). If you give $3500 to the Against Malaria Foundation, you will, on expectation, save someone’s life, and that is a pessimistic estimate (it only counts infants who would die of malaria infection that will not die thanks to an installed insecticide-laced mosquito net, not older children saved from infection, or prevented suffering from malaria attacks).

So, it matters a great deal that you put your resources where they have as much effect as possible. When you’re looking for ways to transport yourself to work and back, you research options. How much would a car cost? How much would I pay for gas? What if I bike? Would the extra risk of traffic accidents be worth it? How about mass transport? Would the extra time be worth the money I save? Maybe I could work remotely for a day every week?

For some reason, people usually don’t think about charity this way. But it makes perfect sense. If you decide you want to help people with, say, $1000 of your money, or maybe 7 days of your time, you should do some research to ensure you aren’t just burning money. If your work is 3 blocks from where you live, you wouldn’t buy a car to go there. You would probably just walk or ride a station or two on a bus. Then why are people, for some reason, comfortable throwing money into a random charity without knowing what they’re buying for it?

(The actual reason has to do with the way our brain circuitry gives us warm fuzzies in biased ways which are uncorrelated with how good our actions actually are. Some people don’t pull the lever in the trolley problem because they would feel like murderers, which leaves them with two dead bodies instead of one. Other examples include the identifiable victim effect: you are much more likely to donate to some specific African kid whose name and story you know than to support the same intervention when presented as a statistic. People are bad at naively making moral judgement. Our brains were built for stone-age hunter-gatherer tribes, where the only moral impact your actions had was on people you could actually meet and see. Obviously, this is no longer the case today. Which is why many people would rather give $100 so that Jane the blind child from across the street can afford a $35000 guide dog, rather than support a charity which can save a human life for $3500, with the only caveat being that you will probably never meet said saved human. Which makes you saving them and their parents and family from suffering and the victim’s death no less real. Only less emotionally salient to you.)

So, step one. It matters a lot what you do with your resources if your goal is to help others. (Actually, it matters a lot what you do with your resources if you have any particular goal at all.)

Step two (at least for me) is: If it’s THIS easy to help others, how the hell isn’t Effective Altruism a global project with 50 years of history and billions pledged in unanimous international support? Why are our smartest people working on optimizing ads on Facebook instead of on how to fix Earth? And believe me, once you start looking, you see things to fix everywhere. For starters: millions in poverty, diseases, cancer. Possible future risks we know next to nothing about. Aging, degenerative brain disease, death, depression, malnutrition, nuclear stockpiles that could destroy the planet X times over if some immature narcissist in charge pushes the button one day, risk of bioterrorism, and I could go on for another hour.

Read Doing Good Better. The eminent philosopher Will MacAskill gives the topic the attention it deserves.

I hereby swear that if I ever find myself writing a short intro to EA again, I will just make it an article on our association’s website :)

Our plan

Please excuse me if the previous paragraphs have been just me preaching to the choir. I have been very vocal about my support of EA among my friends.

The first step in the Czech Association for Effective Altruism’s plan is organizing EAGxPrague 2016 - the first conference on effective altruism in Czech Republic. We are cooperating with the Centre for Effective Altruism to make it happen, and the cooperation is so fruitful I wouldn’t hesitate to claim it added a degree of magnitude to our expected impact. It will be on December 10, 2016 in Paralelní Polis.

My role is currently Director of the CAEA and Event Director of EAGxPrague 2016.

Yesterday, we finished every necessary preparation and we have just opened applications (in Czech, in English). If you’d like to find out about how can you contribute to making the world better and if you’re fairly close to Prague, I highly encourage you to apply. We would be happy to meet you and talk.

I would be also very happy to hear any feedback from you at prague@eaglobalx.org, especially:

  • Do you know the important info? When and where will the conference be? What will it be about? What should you do if you want to go there?
  • Do you want to attend the conference given what you see on the website?
  • Did you find any parts of the application hard to understand?
  • Do you think some information you are looking for is hard to find on the website?
  • Is there anything about the website that confuses you, or makes you go “ugh”?
  • Do you know someone we should definitely talk to?
  • Do you have any suggestions for us?

The next steps in our plan are, roughly:

  • Do the conference and gather contacts to interested people there.
  • Do post-conference engagament - e.g., one-off talks, discussions, meet-ups, where we get to know each other better, and talk about our longer-term plans and strategy. Grow our member base.
  • Engage students at universities - teach them about Effective Altruism and invite them to our events.
  • Produce more EA material in Czech and post it on social media.
  • Think about longer-term strategy. For example: We will need to approach influencers at some point and try to persuade them. When will be the right time and how should we do that? Our operations will need some monetary resources. How can we gather those?

Our longer-term plan is mostly a black confused void, but that is OK. We are not in a position to formulate sophisticated high-level strategy given our current knowledge and manpower. Sophisticated high-level strategy is important, but it’s just fine if we define it and refine it step by step. Unless there’s some very unlikely crucial consideration we missed (e.g., promoting EA in Czech Republic might actually be a bad thing), most high-level strategies would benefit from having more manpower, more resources and more social backing for the EA idea. And this is an instrumental goal our conference is pursuing. More proximally, the conference will innoculate some influential and smart people with thinking about could we improve the world, which is good (again, barring some exotic and unlikely crucial consideration like “if smart people try to do good, they usually end up doing bad”).

So far, we’re doing great.

I have a few observations I’d like to share.

Doing quick research

I have never worked on organizing a big event before, or did anything entrepreurial-like or product-like.

One tool I have never used before, but that I’m starting to really enjoy using, is asking people what do they think. Doing researchy and sciency things to questions I’d like answered.

For example, yesterday we were thinking about which tagline would be best for the conference. We had a short-list of 7 and couldn’t choose among ourselves, so I asked 9 of my friends to rate each on a 1-5 cool-uncool scale.

My methodology was the following:

  • For each friend, tell them the story (“So, you’re walking down the uni hallway and you see a poster saying EAGxPrague with this tagline…”) and I send them a random permutation of the answers to rate. The random permutation is important because people are highly biased to the order of information presentation and since we’ll pick just one tagline, we want to remove this bias.
  • Then, we take their answers, average them out, and pick the best one.

One nice thing about this is that it doesn’t matter that the participants don’t use the same scale: one participant might use the whole cool-uncool range of 1 to 5, another one might be just like “meh” and use just 3’s or 4’s. There’s no need to account for this. Because every study subject rates every tagline, every subject’s individual bias or scaling has the same effect on every tagline’s average score.

However, this means you can’t really plot the final scores on a consistent linear cool-to-uncool scale, because that would be a hodgepodge of several different scales with different variances and means. The way I use the final averages is twofold: A) see the relative ordering of taglines from good to bad, and B) roughly eyeball the size of the difference.

The scores of the different taglines were as follows: (N = 9. I acknowledge a possible methodological gap in not calculating and working with the variances. 1 = cool, 5 = uncool.)

  • “Chytře za lepším světem” (“Smartly towards a better world”): 3.11
  • “Dělejme dobro lépe” (“Let’s do good better”): 2.66
  • “Konference o efektivní pomoci” (“An conference on effective aid”): 3.0
  • “Máme úžasnou příležitost pomoci stovkám lidí. Jak na to?” (“We have a great opportunity to help hundreds of people. How can we do it?”): 3.22
  • “Skutečná řešení na skutečné problémy” (“Real solutions to real problems”): 3.0
  • “Skutečné problémy a jejich efektivní řešení” (“Real problems and their effective solutions”): 2.66
  • “Skutečné problémy, efektivní řešení” (“Real problems, effective solutions”): 3.0

Some things that surprised me here:

  • The size of the gap between “Real problems and their effective solutions” and “Real problems, effective solutions”. Come on, it’s just two short words versus a comma! Surprisingly, some subjects gave these two taglines a difference of a full 2 points.
  • That “Real problems and their effective solutions” did better than “Real problems, effective solutions”. We (the 3 of us in the room at the time) liked the sound of the second one a bit better.

I’m afraid I’m unable to properly calculate the p-values for either of these claims. They might very well be just noise. Our sample size is shit.

Still, we ended up going with “Real problems and their effective solutions”, at least for now, and I like playing the statistician/data scientist. It’s nice to have data to support your decision. One of my big TODO’s for the future is to get a better understanding of statistical tests, experiment design and scientific methodology. Since math and CS at our uni was mostly “definition, theorem, proof, repeat”, we didn’t get much of a background in how does one formulate and test a hypothesis, and I think it’s a very useful and transferrable skill to have.

We used a pretty similar system to select which topics should we focus on at the conference, and I’m glad we did. Initially, we thought we’d rather not talk too much about far-future outcomes and global risks and that it would be better to play up the animal advocacy angle, because our target group (students and non-profits) would be easier to attract that way. Our survey’s results surprised me by putting animal advocacy well below global prioritization and far-future outcomes. I have updated my belief in the sophistication of our attendees upwards.

Estimating number of applicants

One problem we have had with the conference is that since it’s the first EA event in Czech Republic, there is little info from which we can infer how many people will come. Also, it is a problem with many variables: the amount depends on how aggressively do we market the event, how high do we set the ticket cost, and so on.

To make the amount of applicants as high as possible, we set the price low by covering the losses with our own money and with sponsorships: standard price is just 400 CZK, and students and people from the non-profit sector pay just 150 CZK (~$7).

The room we booked fits up to ~120 people and we would like to, ideally, fill it.

Other pieces of information we have are:

  • We did a pre-conference event that we marketed minimally, just by sharing an event invitation by 3 people on Facebook. 15 people came there, we collected their e-mails and they were enthusiastic about the EAGxPrague idea.
  • The LessWrong Group Prague on Facebook has 97 members. I’d guess about 10 or so people come to most meetups.
  • The Czech EA group on Facebook has 55 members. There’s not too much intersection with the LW group.
  • Our venue, Paralelní Polis, will promote the event on their Facebook page, which has ~11K likes.

Our hive-mind’s estimates were that we could, optimistically, get about 80 people to attend. I am fairly certain this is a number that’s based on anchoring to the ~120-person capacity figure and then adjusting down to account for not expecting to fully succeed.

I am optimistic. We are doing as much as we can. We shall see later how well were we able to draw inferences on relatively little information.


The most important tool CEA gave us was a clear framework to use to plan the goals of our conference, choose our target audience based on the goals, choose a program that would fit and attract the target audience, and so on. This transformed our fuzzy confused thinking into a clear picture where it’s easy to understand why exactly are we doing something. Where we previously had “Oh, so we want to do a conference on EA and invite students, and I guess it would be nice to also have some entrepreneurs and maybe do a giving game”, we now have “We want to build a solid EA base. To do that, we need people who have time and energy to put into that. These are mostly students and non-profit workers. To attract them, we need to do thing X, Y, Z and market through A, B, C.”

The importance of planning cannot be underestimated. I wish we started planning properly as soon as the idea of a conference emerged. We would have saved months of time spent doing less than effective work.

Personal status update

In the last ~2 weeks, I have been getting lots of self-esteem boosts, mostly I’d guess from how well things are going for me work-wise and conference-wise and thanks to some instances of unexpected acceptance, which had a soothing therapeutic effect. My psychiatrist also recently doubled my citalopram to 40 mg a day.

Unfortunately, in the last few days, I realized I made a huge mistake that caused people I really care about a lot of pain, and that I had to fix it. Now, I hate myself A) because I made the mistake in the first place, B) because I hurt people by making the mistake, C) because the mistake was probably just rooted in me trying to use other people to boost my self-esteem and fear of abadonment, D) because I was too much of a coward to even own up to my mistake and apparently subconsciously tried to shift responsibility. At least that would be my interpretation. My depression came back really hard in the last few days.

I have a few pieces of advise I want to give others who might be in a similar position as me, that is, confusion about personal relationships:

  • Don’t try to ignore away any nagging feelings in the back of your mind.
  • Never say anything like “I like you” or “I love you” or perform any actions associated with affection or love unless you are absolutely sure you are expressing your sincere emotion and that the message being broadcasted and the message being received are both as accurate as possible.
  • Never lie about your feelings to people you care about. Lying doesn’t always feel like lying. Sometimes it just feels like a little pause before you say something, or a word you say while slightly twisting its meaning inside your head. Or it may be an action that carries an implicit meaning you may not realize.
  • Others may understand your emotions better than you yourself do. I haven’t done that, but if you feel confused about what do you feel, you may try asking your friends. You may not notice verbal or behavioral clues you yourself broadcast, and others might.

The level of how OK I am depends on how much do I think about how stupid, hurtful, abadoned, unacceptable and unlovable I am, and how much do I think about the chances of that ever getting better. Right now, my level of OK-being fluctuates between “too devastated to get up from the floor” and “so immersed in exciting work that everything looks fine”. I’m not sure how long will this last, but I might be somewhat-acceptably-OK-most-of-the-time again in a few weeks.

Until next time. Onwards!

2016-10-25 - Thesis commitment

I want to finish my master’s thesis. However, since I will also start working at Google in February, I’m in danger of not finishing it on time. I estimate the likelihood that I will finish by the winter deadline (2017-01-04 – by the way, YYYY-MM-DD is the only correct way to write dates IMO) as roughly 30%, given how busy we are nowadays with organizing EAGxPrague.

Once I come to Google, my short-term incentives will probably set me up for procrastination and for never finishing my degree. So, in order to shift my incentives once I’m in Google, I’m making a commitment. Sorry, me2017-02. The sunk costs of your degree are really high and I think it’s a good idea for you to get it.

I promise that if I don’t submit my thesis to my university by 2017-07-21 or if I don’t have a master’s degree by 2018-01-01, I will donate $8000 to a charity of my thesis advisor’s (Petr “pasky” Baudiš) choice, above my prior commitment of 10% of my income (between 2016-10 and 2017-10).

2016-10-05 - Knowledge base completion

This blog post is mirrored on on eClub’s blog.

My name is Michal and I came to eClub Prague to work on an awesome master’s thesis. I am interested in AI and ML applications and I sought the mentorship of Petr Baudiš aka Pasky. The project we settled on for me is researching knowledge base completion.

You may already know something about knowledge bases. Knowledge bases, also known as knowledge graphs, are basically knowledge represented as graphs: vertices are entities (e.g., Patricia Churchland, neurophilosophy, University of Oxford) and edges are relations between entities (e.g., Patricia Churchland studied at University of Oxford).

A small neighbourhood of Patricia Churchland in a hypothetical knowledge base

Knowledge graphs are useful[citation needed]. The most famous knowledge graph is Google’s eponymous Knowledge Graph. It’s used whenever you ask Google a question like “Which school did Patricia Churchland go to?”, or maybe “patricia churchland alma mater” – the question is parsed into a query on the graph: “Find a node named Patricia Churchland, find all edges going from that node labeled studied at, and print the labels of nodes they point at.” Look:

How Google uses knowledge bases

Google’s Knowledge Graph is based on Freebase (wiki), which is now frozen, but its data is still publicly available. Other knowledge bases include DBpedia, which is created by automatically parsing Wikipedia articles, and Wikidata, which is maintained by an army of volunteers with too much free time on their hands.

Because knowledge graphs are useful, we would like them to contain all true facts about the world, but the world is big[citation needed]. And since we want to represent everything in knowledge graphs, we’d need a really big number of editors. Real-life knowledge graphs miss a lot of facts. Persons might not have their nationalities assigned, cities might be missing their population numbers, and so on.

Someone had the bright idea that maybe we could replace some of the editing work by AI, and indeed, so we can! When we try to add missing true facts into a partially populated knowledge base, we are doing knowledge base completion.

Researchers have thrown many wildly different ideas at the problem, and some of them stuck. For example:

  • Extracting relations from unstructured text. This means I take a knowledge base, some piece of text (I’m using Wikipedia articles), and I try to fill the gaps using the text.
    The canonical approach is to train a classifier for each relation type, for example the relation actor played in movie. The classifier takes a sentence as its input, and outputs a number between 0 and 1, which represents the classifier’s estimate on the likelihood this sentence represents the relation. So, on sentences like University of Oxford is in Oxford, UK. or Marie Curie died of radium poisoning., we’d like to see low scores. On the other hand, sentences like Arnold Schwarzenegger played in the movie Terminator. should score close to 1.
    A problem with this approach is that we’d need a really large training set to train our classifier well, and who has the time to label 10k+ sentences those days? Fortunately, we can use a neat trick called distant supervision. Interested? Read about it in this paper.
  • Mining for graph patterns. In real life, we know that if Peter is the father of John and Kate is John’s mother, it’s pretty likely that Peter and Kate might be married. So, if our knowledge base contains the facts Peter is the father of John and Kate is the mother of John, then if the knowledge base doesn’t say that Peter is married to Kate, we could expect that to be an error of omission. On the other hand, if we add the fact that Peter is married to Marie, that counts as evidence against Peter being married to Kate.
    There are algorithms that look for such patterns (and more complex ones) in the incomplete knowledge graph and then use these patterns on the same graph to assign likelihoods to missing relations. One is called PRA (Path Ranking Algorithm), another one SFE (Subgraph Feature Extraction). Matt Gardner has an implementation of both.
  • Embeddings. This means that we invent a space with, say, 50 dimensions, and somehow represent entities and relations within that space. We choose this representation so that the embedding then informs us about which relations might be true, but missing in the knowledge graph.
    For example, say we represent people as points in a 2D plane, and we represent the is mother of relation as a step to the right and up, and the is father of relation as a step to the right and down. Of course, you can’t really represent all the complexity of family relationships this way, but if you tried to get as close as you could, you’d end up with a figure where two people who are siblings would probably end up close together. Behold: embedding according to is mother of and is father of just told us something about who is sibling of who!

In my thesis, I plan to replicate the architecture of Google’s Knowledge Vault (paper, wiki).

Google created Knowledge Vault, because they wanted to build a knowledge graph even bigger than The Knowledge Graph.

The construction of Knowledge Vault takes Knowledge Graph as its input, and uses three different algorithms to infer probabilities for new relations. One of these algorithms extracts new relations from webpages. The second one uses PRA to predict new edges from graph patterns. The third one learns an embedding of Knowledge Graph and predicts new relations from this embedding.

Each of these different approaches yields its own probability estimates for new facts. The final step is training a new classifier that takes these estimates and merges them into one unified probability estimate.

Finally, you take all the predicted relations and their probability estimates, you store them, and you have your own Knowledge Vault. Unlike the input knowledge graph, this output is probabilistic: for each Subject, Relation, Object triple, we also store the estimated probability of that triple being true. The output is much larger than the input graph, because it needs to store many edges that weren’t in the original knowledge graph.

Why is this useful? Because the indiviual algorithms (extraction from text, graph pattern mining and embeddings) have complementary strengths and weaknesses, so combining them gets you a system that can predict more facts.

Simplified Knowledge Vault architecture

My system is open-source and extends Wikidata. The repository is at https://github.com/MichalPokorny/master.

So far, I have been setting up my infrastructure. A week back, I finally got the first version of my pipeline, with the stupidest algorithm and the smallest data I could use, running and predicting end-to-end!

The system generated 116 predictions with an estimated probability higher than 0.5. Samples include:

Subject Relation Object Probability Is this fact true?
Northumberland occupation Film director 0.5913 False
mathematician occupation Film director 0.6201 False
Jacob Zuma member of political party Zulu people 0.5159 False
Mehmed VI country of citizenship Ottoman Empire 0.5479 True
Brian Baker country of citizenship Australia 0.5523 False
swimming occupation Film director 0.6229 False
West Virginia member of political party Tennessee 0.5107 False
Tamim bin Hamad Al Thani country of citizenship Princely Family of Liechtenstein 0.5289 False
Sheldon Whitehouse member of political party Washington, D.C. 0.5086 False
Liberation Tigers of Tamil Eelam country of citizenship United States 0.5349 False
Italian Communist Party country of citizenship United States 0.5545 False
Henri Matisse country of citizenship French 0.5004 False
Lawrence Ferlinghetti country of citizenship United States 0.5471 True
Michael Andersson occupation Film director 0.6283 False
Brian Baker country of citizenship Canada 0.5187 False
John E. Sweeney member of political party Republican Party 0.5036 True

Okay sooo… not super impressive, but pretty good for a first shot. At least it does a bit better than rolling a bunch of dice :)

It’s basically a logistic regression over a bag of words. The dataset are 10 000 Wikipedia articles about persons. My task now is to use smarter algorithms to get better results, adding other algorithms (graph patterns and embeddings), running over a larger dataset and fleshing out the architecture.

I’d enjoy talking at length about the various design choices and cool tools I’m using, but I was told 1 A4 page would be quite enough, so I’ll cut my proselytization short just about now.

Let’s get back to work. Have a fine day, and may your values be optimally satisfied!

2016-09-22 - Tracking thesis progress

I’m currently writing my master’s thesis. I’d like to have some idea of how to answer questions like: How well am I doing this week? Have I been stalled for some time? How fast can I write when I’m in the zone? How long until I’m finished?

To help me answer those, I’m gathering data about it using a cron script that logs the number of pages of my the PDF of my thesis and the number of lines of code I’ve written every hour.

This is a technique I copied from a video from the excellent screencast series Destroy All Software. The author uses it in several videos. One variant of this data collection idea he uses is going over the Git history of a project and collecting data ex post by checking out every historic revision and running a data collection script over it.

My use of this technique lets me produce a pretty graph that looks like this:

Other really nice uses of this technique include asking:

  • How many tests were failing in each revision?
  • Which authors commited how many lines of code, over time?
  • How has the speed of a POST request to /clients/create evolved over time? Which changes affected it positively and negatively?
  • How has the speed of my website’s rendering evolved over time?

My crontab line looks like this:

0 * * * * log-pagecount

The log-pagecount script in question is dead simple:

set -e

cd /home/prvak/master/text
make >/dev/null
COUNT=`pdfinfo /home/prvak/master/text/thesis.pdf | grep Pages: | cut -d\  -f11`
DATE=`date +%Y%m%d%H%M`
echo $DATE $COUNT >> /home/prvak/misc/master-pagecount-log.log

echo "---- CUT ----" >> $SLOC_LOGFILE
cloc /home/prvak/master/code >> $SLOC_LOGFILE

The lines-of-code counting is done by the cloc tool (AlDanial/cloc on GitHub). In Arch Linux, you can install it by running pacman -S cloc.

Then, in ~/misc/sloc-count-to-log.py, I have a simple script that changes the format of the lines-of-count logfile:

with open('master-sloc.tsv', 'w') as f:
    for line in open('master-sloc-log.log'):
        line = line.strip()
        if line.startswith('SUM'):
            f.write("%s %s\n" % (date, line.split(' ')[-1]))
        if line.startswith('2016'):
            date = line

Then, I have this Gnuplot script in ~/misc/plot-thesis-stats.gnuplot:

set datafile separator ' '
set xdata time
set y2tics
set timefmt "%Y%m%d%H%M"
set key right bottom
plot \
	"master-pagecount-log.log" u 1:2 w lines axes x1y1 title "Pages", \
	"master-sloc.tsv" u 1:2 w lines axes x1y2 title "SLOC"

To see the pretty graph, I do this:

~ $ cd ~/misc
~/misc $ gnuplot
gnuplot> load 'plot-thesis-stats.gnuplot'

I have enjoyed procrastinating by writing this post more than looking at my script munching away training samples for my classifiers.


2016-09-19 - Trip to Chernobyl

I went to visit Ukraine and the Chernobyl exclusion zone in particular with some old and some new friends. It was awesome and I can wholeheartedly recommend the folks from Expedition Club, who kindly arranged the trip for us. I’ve wanted to do this way back since I first played S.T.A.L.K.E.R., probably about 9 or so years ago.

I have a bunch of photos on my Facebook.

Aside from Chernobyl, we also spent 2 days in Kiev. I didn’t enjoy the atmosphere and architecture too much - it’s full of socialist high-rises. Not saying Prague isn’t, but Kiev looks like 90% of it was built in the 80’s. The Statue of Mother Ukraine, which is slightly larger than the Statue of Liberty, has a pretty good museum of WWII inside. They also show off army vehicles (mostly tanks, and at least one helicopter) nearby. The statue and its surroundings are a pinnacle of socialist realism.

Then, we spent 2 days in the exclusion zone, and after that, we went to Neptun, which is a boat-turned-fishing base/hostel/restaurant in the delta of the Dnepr. The way there was really adventurous: let me tell you, you don’t know bad roads until you see the villages of Ukraine. When we finally arrived to the riverbank, a speedboat from Neptun took us and our things for the night and we sped towards Neptun. The ride there around all the tiny islands of the Dnepr delta under the moonlight was amazing. The next day, we said goodbye to Neptun and all its fuzzy kitties, doggies and puppies and headed back to Kiev.

On the way back to Kiev, our gearbox decided to kick the bucket - shifting gears was an ordeal for Ondra. Accidentally, we made a wrong turn at one point and headed toward a military facility and got stopped at a checkpoint. All right, let’s turn around and head back. Only the gearbox decided to not let us shift into reverse. So, we stood in front of the gate for like 20 minutes, Ondra frantically trying to shift to reverse and the guard getting more and more amused. Slowly, more and more soldiers from the checkpoint looked at the spectacle, until one hero went and helped us shift the gears, letting us leave a full squad of ~15 laughing servicemen. Fun times!

On our second day in Kiev (after Chernobyl and Neptun), we ziplined from one end of Dnepr to the other one, which was fun, if somewhat shorter than expected. We also saw some old churches, the Majdan and so forth.

More experiences: Ukraine is crazy cheap, which I’m saying having spent most of my life in Czech Republic, already a pretty cheap country. Once you figure out the alphabet, the language is very easy to read. Speaking in Czecho-Slovako-Polish is also a good supplement for English.

Radiation exposure

We couldn’t agree about how large the dose you get in Chernobyl actually is, so I decided to do a little bit of research. The second day of our visit in the Zone, I wrote down the value of the dosimeter roughly every 10 minutes plus every now and then.

Time μSv/hour Notes
08:47 0.15
09:05 0.21
09:26 0.21
09:47 0.48
09:57 0.30
10:08 0.18
10:29 0.32
10:38 0.18
10:48 0.30
10:53 1.00 Entering campground
10:57 1.24
11:14 1.53 Couldn’t find Petra, who had the dozimeter :)
11:18 0.95
11:22 0.95
11:28 0.27
11:35 0.44
11:39 0.32
11:42 21.7 Measured in hot spot around school by the village Kopachi.
11:43 2.65
11:49 0.91
11:51 6.79 Driving through Red Forest
11:52 12.6
12:00 0.30 Hospital
12:04 118 Measurement of highly radioactive glove in hospital (77 μSv/h a bit further by) - some idiots went to the basement where they kept and buried the first-response firemen and used the glove to hold one boot of the firemen. And then left the glove upstairs. And the glove is itself dangerously radioactive. Didn’t go nearby.
12:10 0.20
12:20 0.20
12:25 1.10
12:26 3.06 Small hot pocket by Pripyat river shipyard
12:26 3.06 Small hot pocket by Pripyat river shipyard
12:28 0.96
12:28 ~15 Random radioactive piece of wood our guide pointed out. (“Don’t step on this.”) Didn’t go nearby.
12:39 1.40
12:50 0.14
12:59 0.70
13:09 0.31
13:16 0.87
13:17 1.06
13:20 0.84
13:25 0.74
13:30 0.22
13:42 0.35
13:45 0.47 ~2 minute drive through Red Forest; next few entries show range of fluctuations.
13:46 2.68
13:47 1.58
13:49 0.27 Out of Red Forest
14:00 0.15 Lunch
14:24 0.27
14:33 0.35
14:35 58.8 Random piece of graphite from the cooling rods, laying in grass by unfinished cooling tower.
14:41 2.5 Radiation in unfinished cooling tower. It wasn’t yet sanitated, so the background radiation level is much higher than elsewhere.
14:43 3.40
14:54 0.39 Out of cooling tower
15:04 0.95
15:15 0.31
15:27 0.21 Coming back to Chernobyl town
15:40 0.15 Chernobyl town
15:51 0.15

The background radiation level in normal cities is (ballparking it) about 0.12 μSv/h. My idea was I would just look at the dosimeter every 10 minutes and then approximate the dose we received by representing each 10 minute interval by the value I measured by its end.

After seeing what the dozimeter did during the short ride through the Red Forest, I think that might be the wrong approach to go about it – the dose you receive in Chernobyl might not be dominated by the elevated level of background radiation (which is only 2×-4× higher than in uncontaminated areas, from my data) - the more important factor might be very short intervals spent in radiation hot pockets, which would be hard to pick up by 10-minute measurements. Look at the Red Forest ride: during it, the radiation levels were 20-30× the normal levels.

Next time, I’ll just bring my own dosimeter. With logging, and blackjack and hookers.

2016-07-14 - Summer

So, what have I been doing since last time?

Effective altruism in Czech Republic

I decided I want more effective altruism in general, and also in Czech Republic in particular. Me, Jirka Nádvorník, Radim Lacina and Dan Hnyk started working on organizing a conference on effective altruism in Prague, probably some time in fall. The work is fulfilling and interesting: I’ve never done anything similar and I think I’ll learn a lot from this. Our current idea is a weekend with 1 day of events aimed at educating the broader public about EA and related crucial issues, then 1 day of an “unconference” mostly aimed at community building.

Unfortunately, progress has been pretty slow so far.

Our main priority is securing a venue, then fixing a date. We quickly agreed on a sweet venue in Prague we’d really like to have (Paralelní polis), but unfortunately communication with them has been sluggish. I think we didn’t dedicate enough attention to this - we should have contacted potential venues sooner and more broadly. We’ll fix that.

We’d like to talk with the organizers of EA Global to see if we could make our conference an official EAGx event, but communication has been slow. We’re (so far unsuccessfully) trying to reach anyone from LEAN (Local Effective Altruism Network), which is the org behind Effective Altruism Hub. It seems they tried to start a small Czech online EA community, but it didn’t take off and it seems inactive now, so we’d like to see what could we do about that.

We’d like to use the conference to bootstrap the Czech EA community: have EAs know each other and talk to each other, regular meetups, materials in Czech, talking to Czech influencers and media. We are working on establishing a small non-profit. We currently just have a bare-bones site at efektivni-altruismus.cz.


I talked with my psychologist a few days after publishing Recent icky personal stuff. The session was basically just my huge mind-dump, maybe just a bit more verbose than that public post. There was relatively little back-and-forth - I mostly gave a long, prepared spiel and got just a few questions. I was a bit surprised by what in particular interested my psychologist: my ideas about polyamory and my experiences with recreational drugs. Discussing both made me a bit anxious. It’s probably nothing to analyze, just something to expect when dumping personal stuff on strangers.

The next step is a personality test, which I’m taking a few days from now. It should take about 4 hours. I was wondering what’s taking so long to test, and there’s an interesting reason the test is so long: it’s supposed to be tedious, because when you’re tired, your answers are less biased (e.g., you put up less effort to look like a nice person).

I was mostly well the last month. I felt sad a few days and cried a few times, because of my own anxieties, because I worry about everything, because sometimes I feel I have no idea what I’m doing. Mostly around personal relationships. Working on it.

Actual work

I apologized to my thesis advisor for not doing any work yet, explained I have been depressed, and promised to send him a draft text for my thesis assignment the next day. I still didn’t do that, and it was some weeks ago. That was all I did about finishing my degree. I sometimes feel a bit bad about not making any progress. Last year, I had hoped I would be finished by now.

I didn’t get the H-1B visa, so I’m not moving to Mountain View this year. I’ll probably have the option of working in some office in Europe. I’m currently optimistic about the prospect. If I want to finish my master’s, employment would probably have to wait until February 2017.

Many questions I need to answer, many things I want to do, many tradeoffs I’d rather not have to decide.


I was in Rome for a week. I’m not usually one to highly value museums and historical buildings, but I really enjoyed Rome’s antiquities. People in Rome have been building the city since ~900 BC to the modern day. Everywhere you dig, you’ll eventually find something Etruscan or Roman or at least medieval. After you make it through all the Renaissance built on top of that. The remains are aesthetically nice, but what I enjoyed more was a feeling of frisson I got from the inscriptions.

Take a look at this one. (Quoted from the Colloseum website.)

Decius Marius Venantius Basilius v(ir) c(larissimus) et inl(ustris) praef(ectus) urb(i) patricius consul ordinarius arenam et podium quae abominandi terrae motus ruina prostravit sum(p)tu proprio restituit.
Decius Marius Venantius Basilius, very famous and well known prefect of the city, patrician, regular consul, repaired the arena and the podium which a dreaded movement of the earth had cast into ruin, at his own expense.

What gives me frisson is this thought:

Once upon a time, there lived a man called Decius Marius Venantius Basilius. He was an actual human being, like you and me. There were probably people he hated, and people he loved. He had friends, he had hobbies, sometimes he felt good and sometimes he felt bad. And, 1500 years later, we know he was there. There was a horrible earthquake. And Decius Marius Venantius Basilius went and had it repaired at his own expense.

History is not finished. We’re writing it every day with our actions.


I’m slacking off a bit with running and jiu-jitsu. Win: I’ll be running my first 10k in September. Fail: I mostly stopped going to jiu-jitsu the last 2-or-so weeks. I’ll try to pick up the slack.

I’m visiting Vienna next weekend to see their local rationality meetups, talk to a few people who might be interested in our EA conference, and to generally hang out.

In September, I’m going with a group of friends (mostly from high school) for a trip around Ukraine, mostly to see the Chernobyl exclusion zone. They’re putting a new sarcophagus on the NPP this year, so this is my last opportunity to see it the way I remember it from STALKER :)

2016-06-18 - Recent icky personal stuff

So far, 2016 has been a pretty interesting year of me. I discovered a lot about myself and I had both the happiest and saddest time in years. I hope you like icky personal stuff, because this post will be unusually full of it.

The first time in my life, I had a crush on someone and I told them about it. My previous method of dealing with love was mostly hoping that maybe senpai will notice me. That, of course, didn’t ever work. I don’t claim rationality.

I was lucky and a relationship followed for a few months. I felt very much in love. But there were problems that weren’t properly dealt with and I didn’t pay nearly enough attention to. And so, suddenly, poof, no relationship no more.

I had depression for the following ~4 weeks. (I concluded this was actual depression from my results on the Beck Depression Inventory.) At first, I mourned losing someone I loved. After I first successfully applied CBT on myself (with the help of talking it over with others), I wrote Updating. You can read that with X set to something like He loves me.

I noticed that the bad thoughts I have been thinking were familiar - I have thought some variations of them many times in the past. A hard one to verbalize feels like a searing mental pain from being unloved, or from being rejected. Some were variations on Nobody likes me and I have no real friends. These bring back painful memories of the times people have been mean to me, mostly in my childhood.

Then, I looked very hard for answers, probably thinking maybe there was some way I could fix whatever broke the relationship, or at least have it not happen again.

I realized that this was probably a textbook dependent relationship on my part. I sincerely felt that this totally best person was the center of my world. I derived my feeling of satisfaction with my life from the relationship.

I came to the conclusion that a spiral of my dysfunctions played a large role in the breakdown of the relationship. It starts with one tiny problem that makes me feel a little bit insecure, because it looks like a threat to a relationship that’s the center of my world. One way I deal with insecurities is emotionally detaching, which creates communication problems. Communication problems lead to more problems, which make me feel more insecure. And more detached. And when I’m detached, I can completely miss emotional clues. Or the fact that things are not going well and that the current trajectory leads downwards. Which might be why the breakup surprised me so.

I turned my attention inward.

Two young fish are swimming in a fish tank. An older fish comes by and asks: “Morning, boys, how’s the water?” The two young fish swim on for a bit, and then one looks at the other and goes, “What the hell is water?”

On proper reflection, I have a lot of issues. When your issues have been with you long enough, you don’t see them floating in the corner of your vision. The way I saw them was looking backward. Once I knew what to look for in my personal history, I saw them at work undoing my happiness all over the place. Noticing the way you think is harder than it sounds. I’m working on spotting my issues at work more readily so I can course-correct faster.

Why am I writing this? The true reason is just because I want to, it feels good to talk about myself. I also have a few rationalizations.

A: I did well for myself in school and in work and some people look up to me, admiring my abilities in CS and math. And yet, I, the guy who can program his way out of anywhere and who never got a C on an exam at uni, have problems. This sends a message: nobody’s perfect, everyone has problems and it’s OK to talk about them.

B: Maybe you’ll recognize someone you know or maybe even yourself. Maybe me talking about things I’m working on will help you see opportunities for your own personal development.

Yay, issues!

Social anxiety

One symptom I call (for now) social anxiety. It doesn’t usually manifest as actually feeling anxious when dealing with strangers. I just avoid doing anything that means dealing with strangers. Say, even something as stupid as buying new pants. I never actually think OK, I need to avoid buying new pants because I don’t want to deal with people. I just never go buy new pants. Ask me why? I’ll probably whip up a rationalization.


Another one is the detachment I mentioned earlier. I think I developed that in middle school. I had a crush on a girl and I couldn’t for the love of god bring myself to do anything about it. Then, by a coincidence of my stupidity and my classmates’ nosiness, my entire class found out I liked boy parts. I haven’t been very well-educated about sexuality by then, so my thought process was mostly OK, now everyone thinks/knows I’m gay. That’s a bad thing. People think badly about me because of that. Nobody can find out, especially not my parents. If people found out, I could never be happy again. Also, now since everyone thinks I’m gay, any chance I ever had of being with the girl I love is ruined beyond repair. (Of course, probably not a single one of these statements was actually true.) So, I felt I couldn’t be helped by anyone, so I didn’t talk to anyone. And, maybe to prevent my parents from finding out how sad and vulnerable I felt (because that would only harm me further), I started acting like a tough, emotionless, hostile robot. If you see me spitting venom with an empty expression on my face, it probably means I feel threatened on some level. (It just so happens Spitting Venom by Modest Mouse is one of my favorite songs. Synchronicity.)

Fig. 1a: Me, uncertain about the future and detached:

Fig. 1b: Compare to happy me a few weeks later:

I think the most common reason I go detached is that I feel I’m being left out or ignored for some reason.

Aside: In the end, I think the aforementioned thought process is what eventually led me to believe I was gay, which I still believed in 2015. But, on proper reflection, while I seem to prefer man parts, the fact of the matter is that there are men I like and there are women I like. Would I say I’m bisexual? Maybe it’s the right word to describe my experience. But I no longer think a label on my sexuality is an important part of my identity. (Yet I still exclaim that in a public post. I like showing off. Shoot me.)


I think I placed too much value on my work even before high school. Even on my first small side-gigs I did for random people, I put in very long hours for peanuts and I tried to make everything perfect. I also always liked learning scientific stuff. In high school, I took a lot of electives and worked more side jobs.

By the end of high school, I think I got the idea of becoming a Successful Software Engineer, which I worked towards up until now.

In my university, you basically get a free reign over your schedule. I got to work and optimized my first-year and second-year schedules. To the extent that my schedule looked like a huge rectangle all over every day of the entire workweek. (I even wrote a schedule optimizer to optimize my schedule for me. Hello, Twilight Sparkle.)

A 3-year bachelor’s costs you 180 credits. After 2 years, I had 211.

On top of that, I kept on taking side jobs, and in my second year, I started my internship at Prizeo. My schedule slipped and I ended up going to work as one of the first people and leaving very late. I worked on useful features, yes. But I actually spent huge chunks of my time doing useless busywork I created for myself in retrospect. Like fixing bugs nobody cared about, refactoring the packing optimizer the 8th time, changing spaces for tabs. Embarassingly enough, I also looked a lot at GitHub’s contribution charts. I was almost always first in number of commits and pull requests. I know, right? If I remember correctly, I probably had a vague expectation of recognition. Did I realize there was anything pathological about what I was doing? Nope.

I also started tracking my net worth in a graph, which I looked at several times per day. It’s nice to see your score go up, isn’t it?

At Google in Paris, it got even more out of control. I almost never got around to doing anything I liked outside of work, so I spent my time at work morning to night. I got a slight twinge of satisfaction when I got a peer bonus for working so well.

In general, I think most of the work I did I didn’t do for money to do things with. That was just a side-effect. It was probably just so I could have less free time alone to fill with feelings of sadness and loneliness.


That might have been my first unhealthy (unhealthiest, too) coping mechanism. I’ve had problems with overeating since the first years of primary school. Food, especially sugar, is satisfying and numbing, and it feels better to eat than to think about how everyone hates you for being fat (and a smart-ass).

And so on

Very low impulsivity: I often am just about to do something or say something, but stop myself before I do. Probably something about fear of criticism or rejection. I also think I often act not the way I want to or the way I am, but the way I think other people expect me to act. There’s an interesting concept called true self and false self on Wiki.

Scarcely having fun on purpose: Before 2016, I almost never did anything fun myself because I wanted to. Lunch in a nice restaurant? A walk in a park on a sunny day? This easy fun thing I had on my bucket list for ages? Nope, let’s just browse Reddit all day. I seem to act as if I were incapable of having any fun on my own, so I end up having no fun on my own, which undermines my self-esteem.

“I am unacceptable”: I act as if I can’t open myself up to other people, because then they would hate me or reject me. Before I came out as gay, I thought something like “if people knew I’m gay, they’d hate me, so I must be careful so that nobody can tell”. After that, there’s always a ton of irrelevant bullshit my brain can substitute. “Hey, remember stupid embarassing thing #71? I bet everyone would shun you if they knew.” The consequence is problems opening up to other people, which sucks. I even do that with close friends, family, and romantic interests or partners.

“Other people don’t like me”: thinking that is an easy way to get people not to like you. Sample intermediate steps: “Huh, this random sentence she just said could be possibly interpreted as criticism/teasing/… . She doesn’t like me, so it indeed is, and that’s a purposeful attack on me.” A: “Let’s fight back.”, B: “Let’s be passive-agressive to her now.”, … “I have no real friends” is another thought that can ruin my enjoyment of any activity, especially one I’m enjoying with my friends.

Bad self-image: I think my idea of my looks and fitness developed in high school at the height of obesity, and I didn’t yet properly update after fixing that.

Abuse of recreational drugs: I have used marihuana, and I think at least some of it was for the numbing effect.

“I need a relationship to be happy”: This one undermines happiness and self-worth when you think it while single.

I read that “I have wasted my life” is also frequent and destructive. The Near Future is practically dripping with it.

I like helping people. In high school, I got a ton of satisfaction when I wrote exercises on complex numbers for Khan Academy, which helped a lot of people learn, and I dreamt of working there one day. I might have a tendency to attach myself to people I can help. I have strong feelings about effective altruism. “Helper’s syndrome” might be part of my mix.

Finally, I easily get jealous when I perceive someone as being more successful than me, when it comes to relationships, friendships and doing fun things.

What now

Save a day or two here and there, I have been mostly OK for the last few weeks. I’m seeing a psychologist in a few days to get some professional advice and possibly treatment. (Since I have been reading Feeling Good just before I became full-blown depressed and reading more psych stuff afterwards, there’s some possibility I’m just imagining most of it and being a hypochondriac with confirmation bias. We shall see.) There’s some serious self-improvement I’m working on.

I’m purposefully organizing my free time to maximize fun. I’m using a Pleasure-predicting Sheet, which is a technique from Feeling Good by David Burns. (It’s intended to build confidence that you don’t need other people to have fun, but I also use it to force myself to have fun on purpose.) I push against my social anxiety by doing more people things and seeing that people bite way less than my stupid lizard brain thinks. I took on running and jiu-jitsu - sports are supposed to help with depression. My self-esteem is particularly low when it comes to my looks and my fitness and running a 5k in 26:30 helps with that. I use Zombies, Run. Talking also helps.

My original plan for this year was finishing a thesis before October, grabbing my master’s, and then working for Google as a software engineer (I got an offer).

Stupidly (and workaholically), I spent the winter semester working on Factorify instead of on my thesis. In the summer semester, I had my failed enmeshed romance, and then my depression. Now, I mostly don’t work on it. I usually procrastinate or start getting bad feelings after an hour or two. I make a very small step every week or two. If I pushed myself, I might be able to finish it this year, but it’s not very likely. I’m also no longer so sure I want the degree enough.

I’m ~99% certain I didn’t get the H-1b visa for Google Mountain View, so it’ll probably come down to deciding whether would I want to work for them in Europe, and if so, where and when. When I’m in a good mood, I think Zurich or London would be nice. But I worry that might be just a cached dream of the career-obsessed past-me and that moving would just put me under more stress than I can safely handle. On the other hand, making software used to make me happy before. Would I be happier on a year-long vacation without any programming? One question I’ll have to reconsider as well is: Do I actually want to work in software?

I think “Yes”. I have at least one other idea. Do I want to work in AI safety? The question of the importance of AGI has been lingering in my mind for months. It’s confusing to my intuition, which is, of course, not a LessWrong-rational argument. And I don’t (yet?) defer to LessWrong-rationality when confused. I applied to MIRI’s 2016 Summer Fellowship, mostly hoping it would convince me either way, but I didn’t make the cut. (My impression is that I didn’t have enough research and math credentials, which means there’s probably someone who has more of those than me working on AI safety now, which is good news.) Before my depression, I was slowly reading up on MIRI material and I was hoping of getting more information and meeting AGI researchers once I got to Bay Area. Alas, no Bay Area for me, and since my depressed brain is vulnerable to the issue, I’m putting it on hold.

For now, I’m leaving the question of my future open until it comes knocking. I don’t like to think about it too hard. Wherever I go (or not go) next, I want to feel comfortable in my skin.

Thank you for reading. I thrive on your attention.

2016-05-05 - JVM Tool Interface

At school, I gave a short, roughly 15-minute talk on JVM Tool Interface. It’s a part of the JVM that people use to build debuggers, profilers, and similar tools that affect or observe the running JVM. I focused mostly on the interesting technical parts: the architecture, how do they make the JVM run fast while being instrumented, how they deal with native code, and such.

You can find more in the archive.