Home Archive About
Home Archive About


2018-03-21 - Triage

I am tired and feel like I shouldn’t go to sleep yet. The Soylent thing has been working only very very slowly. I assume the first few days were just losing the contents of my bowels and now I just want to keep it up. Maybe in the hope that it will remove the habit of snacking when I feel stressed/bad.

The thing about feeling stressed at work has gotten a little bit better. But somehow I don’t feel that much like I’m winning.

Tomorrow a pretty useful thing would be to wake up reasonably early, then ~8 hours of work. I could really use some emotional support. Something’s wrong, actually a bunch of things feel wrong. I feel lonely. I don’t want to be fat. Work sucks and looks like my attempts to hoist myself into an AI safety, or at least AI-related position might fall flat. I might have reached beyond what I am currently good enough for.

I guess the last part feels pretty close to it. Work sucks. If I could do anything with my life, I would do X. Solve for X.

My feelings about it are, … I feel like I kind of grew up with the implicit assumption that work matters. Like, when you are the best at school or at work, people will like you and you will be happy. I want to feel, …, okay? loved? like, I want to cry about how hard and painful things are. Speaking of which, dental pain sucks.

So what’s so painful. First answer is “the fact that I feel I don’t have anyone to cry to”. (At this time. Growth mindset I guess.) I guess compared with that the other things which come up are much lesser. Actually maybe not. I also feel that I have no idea where I’m running, but I’m running there as fast as I can. And stopping where I am, or even the entire idea of stopping, feels dangerous and scary and I don’t want that.

Huh. It would be pretty funny if the function of snacking was to make this cluster of things not hurt. On the other hand, I might still be in the period where going off SSRI’s can do funny chemical things to your head, so there’s that. I guess there might be some fancy antidepressant I could start on to make me itch less right now, but would I want this to stop itching? Maybe not medicating it and not trying to shut it down might be good signal to do something differently…

With that off my chest, it’s still almost midnight and I feel like there are things I should be doing tomorrow. I have a pretty good idea of work things that need doing.

Things on my mind are:

  • Work on my master’s thesis.
  • Check that my mass transit card in ZRH still works (been here a year, it might run out).
  • Buy batteries for my bank’s card reader 2FA machine.

Feeling of having to come up with more stuff.

  • Errrr…

  • I guess, I’m still fat, what do I do about it? Well, that feels kind of forced…
  • I don’t really want to do anything exercise-typey tomorrow. I even have a semi-good excuse for why not to, my ankle is still swollen.
  • But I feel that makes me bad.

Huh. Does it? It feels like it makes me bad, though S2 would publicly say it doesn’t. I also feel tired so probably not gonna IDC on that… Bookmark I guess.

I’m probably not going to reach a point of “yeah I have a plan for tomorrow and it’s a plan which totally resonates”, because I’m pretty tired.


Let’s also put some things into Complice. Record weight, eat just Soylent. (Hmm. My calendar reminders are also getting a bit unwieldy. Maybe cancel some of them. Or reevaluate why they’re there. Or start behaving by them…?)

Get the goddamn batteries. And while I’m getting the goddamn batteries, also get some (goddamn) laundry detergent. And check out what other things I’m missing. Lowest-effort way to do that would be coop’s delivery service to the Google office. Yeah, sure, that sounds good.

My room is again slowly becoming a mess. That felt good fixing last time, let’s add that.

Feeling of having to do more.

Okay, when I’m home, I’m going to try to write some Python code that will run in Kubernetes on Google’s cloud to download a dump of Wikipedia for my master’s thesis. Oh, also, I might be able to download it in chunks so it doesn’t have to be loaded into the backing store (probably some kind of BigTable or whatever) in a single thread.

Actually let’s change around my Complice goals, too.

I should also make plans for Easter break. Not sure about what’s the deliverable for that. There’s a bunch of ways I could spend Easter. Baseline, lounging around in Prague chatting with friends. Working intensely on my master’s thesis. (That sounds good in some way.)

Triage done? Argh doesn’t feel entirely like it. I should also make some better plans for one of my partners visiting Zurich.

Itch. But well, I guess this triage will do. The parts which are most important on it are keeping on track with not overeating or snacking, and making some progress on the thesis.

Part of me feels like this is just not enough. Just getting that one Kubernetes script done in one day? Hah, don’t make me laugh. At this rate, you’ll be stumbling around at roughly the same spot in the thesis until time runs out.

Oh, and also, I want to some day go and implement a bunch of ML papers so I can learn TensorFlow and get the confidence to say “I can write AI”. That might actually have higher priority than the master’s thesis, if I were to only care about getting a job in AI.

Sigh. 3, 2, 1, chaaaaaaaarge, and let’s go to sleep. And if we can’t, maybe we can try to probe this “nothing is enough” thing.

2018-03-15 - Against goals

First off, it’s morning so I want to plan out today. An unexpected thing that happened yesterday was misstepping on my run down the stairs when I was going to work, and spraining my ankle. My right ankle, in which I had arthroscopic surgery some years ago. So I had to go to see (another) doctor, and probably will be working from home until the swelling stops. Hopefully it’s just a simple sprain and will be alright in a couple of weeks.

Because I had been home and not at work, I didn’t have Joylent available - I just grabbed the ~1/4th a packet I had at home for breakfast, and then when I came back from having myself drilled in the mouth and touched on the legs, I had been hungry. And I ended up just very quickly cooking whatever was in the kitchen, which was a big can of beans from Denner, 5 eggs and a packet of Chinese noodles. (Since I switched to not cooking and going with Joylent instead, my kitchen is mostly free of any ingredients of my own…) I munched all of that down very quickly, and then felt bad, because my stomach was disturbed and I felt that I had slipped into bad eating habits. I think it was the beans - they were not very good, predictably. When I started cooking the stuff, I did not have much agency, and had the opposite of reflection and mindfulness. I had entered some mode like “gaah eat all the food”. It was lucky for me to not have much actual food at hand, otherwise I might have eaten much more. I actually think I still was under the 2000 kcal I’m getting daily from the Joylent.

I don’t really know what to do next time. I guess something like a TAP like “omg want food → remember to breathe and not eat everything in sight”. Doing mindful eating on the meal would probably also stop it.

Rationality Zurich went fine yesterday. Just 3 people, but we had a nice conversation about an alternative system of self-development brought up by my roommate. My summarization of it is:

Goals are pleasant when you meet them, but painful if you don’t. If you tell yourself “today I will run a mile” and then you don’t, you get an “ow”. The “ow” makes you feel bad, and so the consequence of missing the goal is is feeling bad about yourself for a while. If you can stay on a streak of successfully doing all the things you commit to doing, you will ride a nice wave of “yay I’m doing all the things and I’m doing well”. But miss once, and now you’re a bad bad person (ow) and if you’re like me, on a deep level, you just want to curl up and cry.

Also, my goals are sometimes about “forcing myself to do things good for the long-term, even if they are aversive in the short-term”. That can feel like the part of me which set the goal is grabbing control of everything and dragging along all parts which might be protesting, which is painful.

An alternative is looking at self-development as a process. In that process, you do not set goals which you have to achieve or it’s bad. You don’t try to create a master plan with 34 steps that will perfectly fix everything if you follow them perfectly. Instead, you do small things in the now which are available to you, things which you want to do (or might enjoy doing but aren’t sure yet) that will bring you a very short distance in the general direction of where you want to be. “Where you want to be” might also best be thought of as kind of an emotional “this is who I really am, this is what is really important to me” - not a S2-type explicit list of SMART goals like “I want to weight <= 90 kg by 2019-01-01”.

I really like some things about this view. It’s comparatively very non-violent, and it natually allows for “okay, so a year ago I thought I wanted to be more fit, and I started swimming because I like it, and I met this person and talked with them and changed my goals, so now I want something a bit different”, and you can change what you are “aiming for” (though “aiming for” in a very weak sense, more like “what kind of thing would feel right”) without feeling you’re betraying an earlier commitment.

On the other thing, parts of me seems to want some enforcement device - like the pain you get from missing a goal. Like for some reason I don’t want to stop feeling bad if I e.g. overeat. Maybe a way to make this part feel better about it would be building some self-trust, or what the internal family systems model calls “Self-leadership”. Having some Self which makes sure that parts get along without being violent at each other, and which makes sure that everyone’s needs are met and that parts don’t enter prolonged conflicts. Like, part of me wants to make sure I do get fit, and it’s afraid that if it lets punishing me for not getting fit, I will not get fit.

So, as for today. I’m staying home to nurse my ankle and having a MRI and a chat with a friend in the evening. My plan today is to go on one container of Soylent. I should probably also add another luggage to my flight home.

Part of me feels like this is “a bit too little”. Like “I should also argh be finishing this master’s thesis and argh getting fitter”.

Well, actually I’m doing really good so far. I feel good about the new system/the new process I’m putting into place. Writing about how yesterday went and thinking about the things I will do today felt nice, and I am now not in traps in which I used to be (e.g., the “feel bad → overeat” trap).

I just realized there’s one trap which I haven’t mentioned here yet, and maybe it’s one for which I don’t yet know how would I avoid it long-term. It’s the trap of the work environment pressuring me into acting not fully authentically in it.

Say that I am feeling stressed because there’s too much noise in my office and it hurts and I stayed up all night because I was playing Civilization 5. And what I really want at this point is to go get some sleep.

But it’s work, and if you are not at your post without explanation, your boss will reproach you for that.

But if you tell your boss “hey, sorry, I stayed up all night playing Civilization 5 and I feel really bad about it and I just want to sleep please”, that costs you social points. Because you’re socially-supposed to be a strong independent adult, and strong independent adults are not fragile. And also, you don’t want to show how fragile you are, because you have already had your fragility abused by others plenty of times.

So (barring the opportunity to actually get some sleep), you stay at your post, and you feel bad about yourself, and you just want everyone in your open space to shut up, but you can’t, because they’re allowed to talk at their work place, so aaaaaaaa :’(

Google’s research into effective teams identified this attribute called “psychological safety”, which seems to predict lots of good things, and it seems to me like the belief that it’s okay to make mistakes, that you will not be personally-judged for what you do, that you are not on thin ice, that you are free to be yourself here. I’m not sure if it’s supposed to be mostly work-related - i.e., “it’s okay to break the build for a few days and we won’t be mad at you”. What I think would make me feel better at work and more free to be authentic (and also like it more, because I would not feel forced into putting up a performance of a solid worker drone that I actually am not) would be a kind of “psychological safety” less about the content of my work and more about “it’s okay to be fragile, it’s okay to be disturbed by people talking a lot, it’s okay to cry if you’re overwhelmed”.

Feeling psychologically unsafe is also kind of self-perpetuating. If you don’t feel safe to e.g. express an overwhelming sadness when you feel you’ve done something wrong, and hence you don’t do it, you will use it later as more evidence that you are not psychologically safe here.

Maybe if my current work environment is actually supportive of everything like that and most of my fears/expectations-of-judgement are from this kind of self-driven feedback loop, some CoZE-type experiments could help. Like, maybe when I tell my boss I’m feeling bad, don’t say it while wearing the mask of “I’m an efficient worker and emotions are my slaves”, and instead let it drop and shed a few tears or let my voice break. Meh. Probably actually something weaker than that. This would already feel unsafe.

There’s a thought lingering in my head about the “think of it as a process” thesis. Maybe things which you have to force yourself into doing (by way of e.g., Complice or calendar reminders or willpower or what not) are not really worth it. Because being forced into something hurts. And maybe the thing to do instead is to start with where I am, and making progress through a sequence of comfortable expansions at the margins, all of which feel good and not forced and don’t make me feel bad if I don’t end up doing them.

2018-03-14 - Murphy-jitsu for today

An experiment in writing out and publishing my Murphy-jitsu for today. I have put this in as a reminder for the last ~5 days. The implementation so far has been just “grab a tablet and plan out the day, without real Murphy-jitsu”. Let’s see what happens if I give it some more structure.

What am I planning to do today?

  • I want to eat just 1 packet of Joylent today.
  • I have to go to the dentist.
  • I am organizing a Rationality Zurich meetup tonight.

I need to remember around 13:00 that I have the dental appontment, and to go home by ~18:00 so I am around by the time people start appearing. Let’s set an alarm at 13:00 and 18:00. Done.

The way eating just 1 packet of Joylent might go wrong is:

I feel frustrated and tired and depresssed sitting at my desk, and I default to going for a snack.

What has helped me avoid such situations the last ~5 days was instead going to a sleep pod and having an hour or so of sleep.

I feel annoyed by the feeling of hunger, and also I have slight heartburn for some reason. It would be nice to solve both of those.

Yesterday, I decided to work on implementing a new system. Let this be one step. But still, there’s things which I am not working on towards today. Like maybe getting some exercise to burn off more calories, and I am also not doing anything about my master’s thesis. Part of me feels a bit annoyed, but I think it’s actually fine that I’m not doing anything about those things today. I have a full-time job, a dentist appointment and a meetup in the evening.

I feel that there’s more I could be doing as the current organizer of Rationality Zurich. Maybe there needs to be some soul-searching. I currently don’t actively care as much about rationality-as-actively-trying-to-believe-true-things. Good things I like are tribe-type feelings and what could help could be accountability and goal-setting and stuff. However, those things are pretty different from epistemic-rationality things some rationalists do, like explicitly betting on beliefs. After I arrive home, I could see if I can come up with some cool thing people could do at today’s meetup.

Actually a good thing would be building a scaffolding of “you can always do better than you are doing and that’s a thing to celebrate”.

So, plan for today:

  • Go to work, skip Milliway’s (name of cafe at Google’s ZRH-BRA-110 site where I work), sit at desk, make some Joylent, break fast.
  • I will count how much Joylent is there left in my Joylent box, and probably order more.
  • If I feel overwhelmed and need some quiet, go to a nap room and have a nap.
  • What do I plan to work on today, actually…?
    • There is a task that I could get fully handed off to me from my teammate, and when that’s done, that will give me a nice chunk of useful work to do.
  • If I notice I’m working on some refactoring, I’ll go sit on a couch and think about whether there’s something more useful I could be doing.
    • There’s at least one minor change I could make in another teammate’s project.
  • In the afternoon, I’m going to the dentist.
  • At 18:00, I am leaving work to go back home.
  • Before the Rationality Zurich meetup, I’ll unwind and think about whether there’s some cool thing we could be doing today.

Intentions are entered into Complice, and I can look over them in the evening to see how things went.

2018-03-13 - I need a new system

It’s now March 2018. I have been working at Google for a year. A few days after I started, my personal laptop broke, along with all my meticulously tuned personal infrastructure. I have procrastinated on getting a new one, mostly because I hoped I would fix it myself, or because I did not want to make a big purchase like that.

There’s a lot of problems that keep bugging me and that I need to solve, and after that’s done and my head stops screaming bloody anxiety at me, there’s aspirations. I feel that I need a strategy. It’s useful to take a step back to think about what things are important, what’s working for me and what’s not working, and such. Over the last year I have had a few times where I picked up a piece of paper and started scribbling some strategical stuff on it, but it was always spare moments and not very connected to other such times. I would always start from scratch.

That’s bad. I am obese and need to change that, and changing a thing like that can’t be done by getting a spark of inspiration one day, running on an agenty high for 10 hours, and then it’s fixed. I weigh 124 kg, which is very near my lifelong maximum. The Internet says that you lose 1 pound of fat by burning 3500 kcal (of course, not a figure to take seriously, goodness, I’m just doing a Fermi calculation here, leave me alone), so to get to my optimal weight of let’s-say-78-kg, I’d need to lose 353 500 kcal. The last 5 days I’ve been trying to attack the snacking habits through which I balooned to this weight by eating just a Soylent packet a day. A Soylent packet is 2082 kcal and my basal metabolic rate is 2300 kcal. At this rate, I would get down to 78 kg in… 4.4 years :/ (And that’s not accounting for the fact that BMR decreases the with weight. But on the other hand, I am not completely sessile.)

A goal like this needs some system for coming back to the drawing board every now and then, learning from which things work and which don’t, safety nets for not losing hope and determination if I inevitably fall short at some point. And of course there’s other things in which I could use more wisdom/strategy.

For example, at work. A thing which often happens is that I spend most of the day kind of switching between not-very-useful tasks, like some refactorings or minor features, and feel very frustrated when I get blocked. And I don’t often take a moment to step back to prioritize, and I recognize that if I want to optimize for promotions and recognition (which I do want, among other things), I have gotten myself into a trap.

Or, happiness - optimizing for being happy, being with people I love.

And when things I want conflict, without the opportunity to “detach” from the conflicted parts and allow for some higher-level strategy or prioritization, I just burn cycles feeling bad because of something I also do. Example: I want to move to the Bay, because I think I’ll like the rationalist and furry communities there, but I also feel scared of looking for a new team within Google or scoping for options outside. I want to work in AI safety (part of it is probably about feeling it’s a super high-prestige thing to do), but I also want to be rich and have an upwards career trajectory. And such stuff.

And often, when I feel bad about something, I find myself walking through some conflict I have walked through many times before. Maybe I have walked through that conflict before even with a piece of paper and doing some kind of exercise to reduce internal conflict (like compassion with parts or internal double crux) but somehow that piece of paper is never anywhere to be found.

So, I want a new system for strategical stuff and I want to turn it into a kind of keystone habit which I have. Let this post be a commitment that I want to flesh this out. I’m setting up a weekly 2-hour goal in Google Calendar called “Systems Maintenance”.

What I want from the system

I’ll try to put into words what I want from this system.

I want the system to align my short-term wants (e.g., “I want a cupcake”) with my long-term goals (“I want to lose weight”).

I want the system to track the really important things. I don’t want the system to track things just for the sake of tracking things, or just for the sake of “getting good-boy points for doing an agenty-looking thing”.

If, on reflection, it turns out that a thing that I am doing because of the system is a thing I don’t really want to be doing, then sometimes that will be a fault of the system for picking that thing - not of me for not doing it.

The system is not a system for losing weight or for tracking work.

Some specific things that are bugging me at this time

Here’s a few candidates for things the system might, but also might not lead to me making some progress on. Here, I am deliberately using non-commital language. I am not going to say that I absolutely have to do something. I have found that commitment-mechanism-bombs are sometimes self-blackmail and end up to me causing violence to myself.

But there’s a few ideas for things which often bug me. They do often bug me now, but that does not necessarily mean that dealing with them directly on their own terms is a good idea. Maybe some of them point at problems I actually on reflection want to address. Maybe some of them are distractions, to which the correct solution might be “just stop worrying about it” or “get some fancy antidepressant / do a mind hack to realize those things are not important”.

  • Weight.
  • Unfinished master’s thesis.
  • I want a “feeling that I’m home” - a feeling like “I am safe, I won’t be hurt, things are fine and not fragile, I don’t have to try hard to fight off bad things”. This one feels important.
  • More generally, long-term non-depressed mood.
  • Stress at work. “I have no idea what’s going on higher-level. I am not in control. I feel like a small gear/pawn in a machine.”
  • Feelings of being forced into things by myself.
  • On the other hand, there is a specific thing which I’ve felt the last few days (though I’ve not always been feeling all that well), and which is associated with happiness and also productivity: something like “I can do this”, “things are actually okay”, “I am doing a good job”. “I have committed to a thing and look, I am actually making progress on it.”

There’s also a few aspirational things in mind, which might be candidate goals, but might also be distractions which should be abandoned or shelved. Actually, now that I think about it, they’re mostly “maybe I want to work in AI safety research” and “maybe I want to do some serious EA-planning”. Right now, I’m mostly feeling like setting those aside and focusing on getting myself in order and feeling good without trying to string on specific goals like that.

Sidenote: I don’t think I want to be religious in a certain sense

Relatedly, I’ve gotten somehow less certain about EA stuff - in particular, the role that I want it to play in my life. I have been a religious effective altruist (for a wide sociological take on religion). Independently of whether or not do I want to continue or discontinue some EA-type behaviors (like identifying as an EA, going to EA/rationality meetups, etc.), it’s not healthy to be too identified with a particular belief system.

In my understanding, religions are community plus belief system plus value system. Hang out in the community, and you’re prone to soak up all the rest. And you may see your own (possibly implicit) value system and belief system come into conflict with that of the community. And if you don’t want to leave the community, maybe because you by now know few people outside of the in-group and because you (like me) are deeply pained by loneliness, the part of you which wants to do the right in-group signalling is going to fight the parts of you which want something else.

Say that you identify as an EA and a rationalist and to get social points, the right thing to say is “I want to work on AI safety in the Bay Area”. That’s called a load-bearing belief by analogy with a load-bearing wall: if it comes down, you can lose a lot.

And earlier this year, largely due to talking with a person highly critical of rationality/EA, I have become worried of the fact that I apparently have load-bearing beliefs about EA and rationality. Note that a belief being load-bearing does not imply that it’s false. (Though after reading The Elephant in the Brain, I wouldn’t be surprised if there were some argument for why group-cohesion-beliefs would tend to be outlandish, honest-costly-signalling-something.) So I have become concerned that I might be acting out some beliefs because they’re load-bearing for my need for community and acceptance. I think what’s warranted is a gentle de-identification from the community, by mixing with more people who are not in it and diversifying, and a kind of retracing of my steps in how I came to do EA things.

If I remember correctly, they came mostly from moments when I expanded my empathy over the suffering of all things, and wanted to make things okay, and I expect I will still prefer to try to make the world better on reexamination. But a sort of scary thing is that I think it would feel bad if I came to discover I don’t really care about making the world better.

On the other hand, the general form of this reasoning is: “Huh. Maybe I don’t actually want X. And the thought ‘Maybe I don’t actually want X’ makes me feel bad. That’s a reason to re-examine whether I want X.” Substituting for “X” anything I care about will have the effect of making me doubt whether I actually do, and I’ve had this particular security hole exploited by the said person-critical-of-rationality/EA.

Something for me to maybe think over when I feel like it. But after this writing-it-out, I don’t feel the need for doing anything in particular about it.

Back to the system.

Broad failure modes I want the system to avoid

I know about at least two failure modes I want to avoid.

First, I want to avoid the failure mode where some bump makes the system fall apart.

That is, I want the system to fail gracefully and recover. If part of me wants the system to fail for some reason, the means I should bring things into harmony not by forcing the part to behave, but by accomodating the system to meet the needs of all relevant parts.

Second, I want to avoid the failure mode of “doing all the rationality techniques just so I can get the points for doing self-improvement”.

After attending my CFAR workshop in May 2017, I fell into the second one. I’ve had a document with TAPs that I practiced every day. When I started using Complice, I picked ~5 goals and didn’t revise them, and felt bad when I stopped working on them. I want to put the system in place so I can be awesome. If I am doing self-improvement-type things just because I would feel bad if I would skip them, I have fallen into a trap.

Specific tools that could figure in the system and their failure modes

Every TODO system that grows with time ends in bankrupcy

Something that I guess maybe?? Miranda Dixon-Luinenburg might have remarked on in a document that I have no idea how to Google now (a document discussing productivity tools by some members of the CFAR alumni community) is that everything which looks like a TODO list or inbox is doomed to fail. My Google Inbox, my Google Keep and all the other places which I have used to try to keep track of tactical concerns have over time become full of items which I don’t want to address immediately, but also don’t want to shelve indefinitely. The system’s working memory has to stay constant-size over time. Not keeping the system’s working memory constant-size would lead to the second failure mode, in which obsolete tactical concerns end up dominating, and the system becomes a bother to keep running. The inevitable consequence is that some day, I would declare bankrupcy and start over from scratch.

The thoughts which come to mind upon seeing this are:

  • Zero is the limit of constant-size working memory. Perhaps just regularly reflecting would be better than trying to keep explicit track of all tactical concerns. Maybe my brain will automatically garbage-collect.
  • On the other hand, the principle of Getting Things Done is that the brain does not automatically garbage-collect, and that putting “okay some day I should learn crotcheting” into a TODO list lets the brain be like “okay, now it’s in the TODO list and it won’t get lost, so I can stop thinking about it randomly at 2 in the morning”.
  • A thing which could be good would be explicitly keeping just a few “live tactical concerns”, and keeping everything else in non-working memory. I’m thinking of a DAG growing to the right in time, and keeping a few of the leaf nodes as “working on this”. A thing I tried before my laptop went “lol I won’t turn on now” was storing my collection of personal notes in a git repo, so I could even safely delete from them without losing the things forever.

Writing things down is useful

Yep. It lets reasoning be explicit. When I write down my thoughts, I’m more likely to notice thinking going askew.

Publishing things for other people to look at feels nice and works as a commitment mechanism slash reward signal. On the other hand, things I publish go through my social filter. Probably some balance to strike here.

Too much automation is bad, but I also want the system be my own

As I mentioned, I used to have a whole scaffolding of scripts on my old laptop which would do things like plot my net worth over time, try to mount and unmount an encrypted partition (mostly because of NSFW stuff in it), synchronize Anki decks with a human-readable Git repo of information, and such. And over time, this scaffolding tended to accumulate bugs, like when a service I was relying on changed its API.

I like to program, but time spent programming the system is time not spent being object-level awesome.

I have tried to reduce the custom scaffolding I used (partially out of necessity, because I just didn’t have access without a personal laptop), by supplementing with Keep and such, but I ended up not, for example, keeping up with writing my diary. The more I use general tools, the less will they fit my personal idea of ergonomy.

Also: I’m a programmer and I love programming a nice system. That’s both a blessing and a trap.

Taking up too much time is bad

The system I had in place some time after CFAR accumulated more and more small things, which I would check off every day. The final version was something like: every morning, do a boot-up with a few free-text questions, pick up ~5 Complice daily tasks and maybe put in a few extra Complice goals. Every evening, do a self-improvement round which lasted probably more than 1 hour. It included practicing TAPs, a kind of Murphy-jitsuing around possible problems in my daily routine (a free-form text exercise) and checking in with some of my parts (also free-form text).

I have kind of hard-committed into doing all of this daily, and when it crossed some threshold, I just stopped doing all of it at once.

A way I could have avoided this would be keeping the “mandatory” part constant-time. And also having a looser schedule, in which I could easily spend, say, a whole evening reflecting and improving the routine (as opposed to having very little time and so not feeling like I have the time for meta-stuff, so just chugging along the overly long routine). And by coming into peace with the fact that there are 24 hours in a day, and that if my self-improvement routine takes 2 hours, those are 2 hours less of sleep or fun or whatever.

That feels important. Time is a scarce resource.

It has to be okay to stop doing some things

If I have decided at some point that I want to, say, write a diary entry every day and I end up not doing that, that does not mean that I have failed. If I today decide that something is important, but tomorrow I no longer think it is, that’s okay. I have the right to revise what is important - in fact, revisions are good and welcome.

At one point, I felt that I could change a bunch of bad habits by doing TAPs. But later, the TAP practice routine became very long, but I felt bad about the prospect of just saying “this is no longer the thing to be doing and so I will stop doing that”. A more productive and less conflict-producing way to look at it would be: “I am not feeling like doing this TAP routine, and that’s okay. I deserve rest.”

Tactics are contingent on being useful.


  • Need a new system
    • System to do good things
    • System to keep me doing well and feeling well
    • System to enact long-term plans
  • Want system to recover from bumps in motivation/mood
  • Specific possible goals:
    • Weight
    • Unfinished master’s thesis
    • Internal conflicts
    • Feeling good
  • Known antipatterns:
    • System becomes a boring chore
    • System bloats over reasonable size
    • System stops tracking what’s the thing to be doing
    • Overly strict commitments
  • Ideas to leverage:
    • Writing
    • Automation, but not too much of it
    • Time is a scarce resource
    • Changes are good

Wall of text ends here

I have an idea of how could a software implementation of a part of the system look like for me - something like a versioned directed graph where nodes would be free text, ideas, tactical priorities, or resources like links to websites, or nodes grouping events or people. It would probably be very fun to implement. However, also time-consuming.

I’ll let my thoughts sit in my mind, and my next action is to sit down in a few days and think some more.

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.


You can find more in the archive.