According to Google’s dictionary, a cacoethes is an irresistible urge to do something unadvisable.

I had thought “irresistable” was the standard spelling of the word. Actually, TWL19 does allow that spelling. But RESISTIBLE is the only spelling it likes of this latter word — the dictionary committee restrained themselves.


Leave a comment

Sitting on Your Knees

I just realized that, for my current desk arrangement, sitting on the floor on my knees, with some blankets and pillows to cushion and elevate, actually works pretty well! By placing my laptop atop books, I can get a good eye level. I’m curious to see how this goes, and excited to experiment more aggressively with different postures in the future.

Leave a comment

Loops between Python Objects

Epistemic Status: Trying to figure things out, so this is mostly for my own sake. Don’t trust this post, and please correct me if you see a mistake.

Wanting to implement the data structure in this post, I wrote the following Python (3.5.3) code. What do you expect it to do?

class Node:
    def __init__(self, name, links = []): = name 
        self.links = links

class Link: 
    def __init__(self, kind, value, children): 
        self.kind = kind 
        self.value = value 
        self.children = children 
        for child in self.children: 

n = Node("Grizzelda")
l = Link("pimpled", 3, [n]) = "Shmizzelda"

The answer is, it runs fine, and the


statement outputs “Shmizzelda”. The name changes correctly, and there is also no problematic infinite recursion of a node being in a link being in a node being in a… Why does this work?

I don’t totally understand, but I have a more sensible guess than I did before, thanks to a tutorial.

When you do


this gets converted by Python (the Python interpreter, or something?) into

Link(l, children)

So the Link class is what stores the data, not the individual links themselves. Same with Nodes. And when you do

l = Link("pimpled", 3, [n])

the data gets stored by the Link and Node classes are just the names of the links and nodes — not the links and nodes themselves.

The names act like pointers (I wouldn’t be surprised if this is how they’re actually implemented under the hood). So there is no infinite recursion, and when the data that the “pointer” is “pointing” to gets updated, we receive the updated data upon “dereferencing” it.

Leave a comment


Sometimes, I would like to explain something to someone. This may happen before some task can be completed, or maybe just as a natural part of the conversation.

Of course, my understanding of the thing will vary. I may understand it very well (how to add numbers). Maybe I can formally manipulate the concept, but don’t have a fast intuition for it (manipulating complicated summations). Other times still, I’m just learning about it myself.

I recently was explaining diagonalization arguments to a friend. In particular, how they can be applied to prove many different statements: they can show that the reals and natural numbers have different cardinalities, that some propositions are independent of Peano arithmetic, and that some programs cannot halt. They can show still more things that I don’t understand yet.

While explaining this to my friend, I was still trying to work out some of the formalism in my own head. (I’m still not sure I can write out a complete formal proof of Gödel’s theorem.)

This was a pretty tough situation. I noticed I was concentrating pretty hard. There was a slight worry in the back of my mind that I was going too quickly for my friend, thereby defeating the purpose of explanation. But I glossed over that feeling, and maybe rightly — trying to explain it perfectly to my friend might have caused me to make a mistake. It was hard to get the math right and manage to think about what my friend was thinking. (My friend did seem to end up getting it, though it’s often hard to tell whether someone understands.)

Understanding and explanation can be very hard without being combined. I’ve already talked about difficulties with understanding math, but when the math isn’t an issue, explanation is still challenging. Many people, myself included, have failed to show kids how to add one-digit numbers, even after spending a lot of time on it.

CFAR taught me a useful way of thinking about this problem: try to model the person, and make sure you don’t get too fixed on one hypothesis. I’ve thought about this a lot, and extended the idea for myself.

If you’re trying to explain something to one person, model them, keeping in mind that they have a complex brain you don’t understand. Most of their state is hidden. You only get some observations, but they can be very useful, since you can take advantage of near-universal human traits and shared background.

With this framing, generating multiple hypotheses doesn’t feel like a lot of work (though it may be that I’ve also gotten better at the skill of generating hypotheses in the past few months). This frame makes it seem that of course you should have multiple hypothesis! You’re talking to someone who’s been observing things for years, using a powerful system designed by evolution over billions of years. It’s to be expected that a lot of your first impressions will be way off base. You should still use your first impressions; just be willing to revise them, relentlessly.

Another thing that seems helpful is acting, or as John Salvatier called it, first-person modeling. Embodying the person and pretending you are them, in real time, seems very powerful for getting things across.

How to do this while also explaining something complex, though? It feels possible, but currently it gets tiring. I’ll certainly keep practicing. Explaining is fun.

Leave a comment

Sum of first n cubes is square of sum of first n numbers

I drew this for a friend and figured I’d post it, though it’s nothing new. It’s a proof without words that (1+\cdots+n)^2 = 1^3 + \cdots + n^3, made using YouIDraw

Screen Shot 2017-11-29 at 7.16.06 PM

Leave a comment

Avoid Seeing Your Own Face on Video Chats

I have searched multiple times for ways to avoid seeing my face on video chats, as it’s distracting. I never found options to control this on Google Hangouts or Skype. Recently, I found a simple solution, which works in Google Chrome on my MacBook Pro with Version 10.12.6 installed. Just zoom out, by holding down the command key and typing minus (that’s “-“). Your conversational partner’s video remains the same size, while the video of you gets really small. With this solution, I can see my own video well enough to know if they can see me, but not so well as to be distracted.

Leave a comment

Computation isn’t mere (Draft)

Epistemic Status: Highly uncertain, mostly impressions from reading about AI safety, without much rigorous backing.

Mathematicians often refer to a problem as now being “merely computational”. My thinking style has been bred mostly by mathematicians, and not programmers, so what follows is a wild guess. I think programmers probably find this statement strange. Mathematicians tend to be more concerned with principle, programmers with practice.

I think complexity theorists might also find it weird when a mathematician calls something “merely computational”. A Fervent Defense of Frequentist Statistics contains a helpful intuition pump:

My high-level argument regarding Dutch books is that I would much rather spend my time trying to correspond with reality than trying to be internally consistent. More concretely, the Dutch-book argument says that if for every bet you force me to take one side or the other, then unless I’m Bayesian there’s a collection of bets that will cause me to lose money for sure. I don’t find this very compelling. This seems analogous to the situation where there’s some quant at Jane Street, and they’re about to run code that will make thousands of dollars trading stocks, and someone comes up to them and says “Wait! You should add checks to your code to make sure that no subset of your trades will lose you money!” This just doesn’t seem worth the quant’s time, it will slow down the code substantially, and instead the quant should be writing the next program to make thousands more dollars. This is basically what dutch-booking arguments seem like to me.

I’ve noticed this come up in the debates about how we should build safe Artificial Intelligence systems . My sense is that this intuition is the source of tension between views of people who are approaching this more mathematically, e.g. researchers at MIRI working on the Agent Foundations Agenda, and people working on machine learning at places like DeepMind and OpenAI. It might also relate to the disagreement between Hanson and Yudkowsky, though I’m even less sure of this.


Slate Star Codex


Joscha Bach

Math for joy

Still Drinking

Math for joy

Unstable Ontology

by Jessica Taylor

Minding our way

Math for joy

Don't Worry About the Vase

Trying to dig out from minus a million points

Compass Rose

The territory is a map of the map.

Gowers's Weblog

Mathematics related discussions

What's new

Updates on my research and expository papers, discussion of open problems, and other maths-related topics. By Terence Tao