Reality is truth.
A mental model is our internal conceptualization of reality. Our brains are little scientists - they develop theories of how the world works, test them, improve on them, and use them to make decisions in life. We have mental models for everything - from how a combustion engine works to how a good pen should feel on quality paper. They are the frameworks through which we see the world. They are the shadows on our cave wall.
A mental model is a reduction of reality that exists to help us navigate life. Our brain is a latticework of mental models. They relate and intertwine.
In this post, we’ll explore the concept of mental models - what they are, why we need them, how they change and how to change them intentionally.
Every experience we have in life affects our mental model. Our mental models update regularly, in subtle ways and usually involuntarily. You go to history class as a kid, you learn about history (maybe), but you also update the social relationship of people in class, of the language of your teacher, of how the education system works.
About 12 years ago, when I moved in with my then-girlfriend (now wife), I was shocked that she turned off her desktop computer when she was done working on it. I asked her why she did it and she was similarly shocked I didn’t turn my desktop off, like, ever. When I was a kid, my dad told me that booting a desktop up took more electricity than turning it off, so we usually didn’t turn off computers in our house. This isn’t really true anymore with modern computers, but in my mind, computers are special things that are always on. In my wife’s mind, computers are another appliance, like a blender. You’d turn off a blender after you’re done, so why not a computer? 1
Let’s consider an example and compare how a mental model evolves over time, or for different people. What’s the mental model of gravity in the eyes of a…
Mental models are like field-of-vision: at the center where we focus our attention, everything is clear, sharp and detailed. As you go further away, things get murkier, fuzzier and ambiguous. We have blind spots where we think we see something real, but it’s just an illusion.
Quick, how does a bicycle look like? Yes, it has two wheels, a handlebar and a saddle, but how exactly does it look like?
Turns out most people can’t draw a bike correctly to save their lives, and you probably can’t either:
Gianluca Gimini, Velocipedia
Back in 2009 I began pestering friends and random strangers. I would walk up to them with a pen and a sheet of paper asking that they immediately draw me a men’s bicycle, by heart. Soon I found out that when confronted with this odd request most people have a very hard time remembering exactly how a bike is made. Some did get close, some actually nailed it perfectly, but most ended up drawing something that was pretty far off from a regular men’s bicycle.
Little I knew this is actually a test that psychologists use to demonstrate how our brain sometimes tricks us into thinking we know something even though we don’t.
Everything we do is based on mental models, though sometimes they are subconscious. It’s these subconscious mental models that I find interesting. Things we think about, but don’t think about thinking about them. A lot of our day-to-day actions, mannerisms and quirks are based off of hidden mental models.
Let’s take a look at a real-world example.
Creatine is a supplement that improves strength and is very popular among bodybuilders. If you search YouTube for “creatine” you’ll get dozens of videos explaining how to take it2: you take about 5g a day, and over about 30 days the creatine levels in your muscles reach saturation - that is, there’s no benefit to consuming more than the prescribed 5g daily dose. This phase, working up to saturation, is sometimes called a “loading” phase. It can be shortened by taking a larger daily amount (~20g) for a few days to get to the saturation point earlier.
I started taking creatine a few years ago. As is expected, I was very diligent about taking it every single day… for about a month or two. After that I started missing some days and eventually I stopped altogether. I had 2-3 more attempts that also failed. If I asked you for advice on how to be more consistent, what advice would you give me?
If you read this far, you might have a passing interest in personal productivity. You might suggest I set up reminders, use habits to “stack” taking creatine to another well-solidified habit or perhaps reduce friction by putting the creatine container right there on the kitchen counter.
That would actually be great advice! But I did many of these things and still failed to take creatine consistently. What eventually helped me was indeed to reduce friction, but it was mental friction, not physical.
At some point I noticed that as soon as I missed a few consecutive days of taking creatine, I would give up on it entirely. My mental model of how creatine worked was that as soon as I missed a few days, I need to load up again, and that I was missing out on the benefits of creatine entirely. When I noticed this, I realized that I had no freaking idea if that’s true or not. I had a pretty accurate model of loading and saturation, because all the videos I watched explained how they work in detail, but none of them explained what happens when you miss a day of creatine. Once I noticed my mental model, I could just, you know, check if it’s true. So I looked up “creatine” in Google Scholar to see if there’s a study on this. There was.
It turns out, muscle creatine levels decline slowly over about a month when you stop taking supplemental creatine. In other words, you load and de-load at the same rate. Also, the benefits of creatine are linear to your body’s muscle creatine levels. That is, if you take half the recommended dosage, you’ll get half the benefits.
I updated my mental model of creatine and the conclusion was clear - missing a day is just missing a day. If you reach saturation in 30 days, missing a day simply lowers the benefit by 1/30.
Realizing this dramatically reduced the friction I have for taking creatine after missing some days. I just realize that each day I actually take it, I get a small benefit. It has nothing to do with my consistency. I started taking creatine more regularly. I still miss some days, but missing some days doesn’t cause me to quit altogether anymore.
Let’s take a look at another personal example.
I got married when I was 23 years old and have been married mostly3 happily for 10 years now. During most of our relationship, I had a pretty basic mental model for love and romance - a generic what-you-see-on-TV idea of romance. Flowers and chocolate, gifts, vacations and quality time. It was good enough, but there were some issues.
Here’s an example: my wife has a tendency to “fish” for compliments. It would be anywhere on the spectrum from very hinted to outright telling me exactly what to say. It was a pet peeve of mine, because I always felt like any compliments I gave after being asked to were very artificial. “Does this dress make me look fat?” is always answered with “no babe, you look amazing”, so really there’s no point in the whole conversation, right?
Right??
Well obviously no, but I insisted. We argued about this a few times. I eyerolled my fair share. I told her I promise to give her more compliments if she stops asking for them. It didn’t help. I hated it and she hated how I reacted.
Then, I learned about Love Languages - a model for love and romantic acts toward your partner. The basic gist is this: there are five different types of loving acts you can do for your partner:
Everyone has a different preference on how they like to be given love (not that people are restricted into a single type, but that there’s a preference or ranking for each person) and here’s the interesting bit: people tend to give love in the same language that they like to receive love.
It dawned on me: my wife sees compliments as expressions of love. I do not. When she asks for compliments, she is asking for affirmation of how I feel about her. For her, asking for a compliment is like asking for a hug. Instead of showing her love, I showed her pettiness. I was embarrassed.
This realization radically changed my behavior, but also my perspective - not only do I always agree to dish out compliments (both when asked and spontaneously), but I also enjoy giving them. Now I see compliments as a simple way to make my wife feel better. It’s a tool in my relationship belt, and it’s a tool that I like to use.
And here’s the interesting bit: the “love languages” theory has no scientific, empirical basis. Gary Chapman, the author, isn’t a licensed psychologist4 and didn’t do any rigorous research to prove this theory. This theory might not be true, but that doesn’t stop it from being useful.
Oh, and love isn’t the only field where you can get great results from inaccurate mental models!
Adam Ragusea, 10 things Van Halen can teach us about food and cooking
Just because somebody is great at something doesn’t mean they understand it.
One of Eddie’s signature techniques is to take this string, the second string on the guitar, the second one from the top, and tune it down ever so slightly. A lot of Van Halen riffs sound a little out of tune on a “perfectly tuned” guitar, and Eddie can fix this by simply tuning the second string down a little bit. And he was given to saying in interviews that this phenomenon is the result of a fundamental design flaw of the guitar. [..]
At least that’s according to Eddie. That thing that Eddie Van Halen apparently believes simply isn’t true.
Eddie’s solution to the problem works, but he doesn’t quite understand the problem, or quite understand why his solution works. And I don’t blame him. It’s not his job to sit at a computer and be a music theory nerd. His job is to get on stage and melt faces. Like many professional chefs, he doesn’t have the time or the inclination to acquire much theoretical knowledge. He needs applied knowledge, and his application works.
Likewise, great chefs make great food all the time in spite of the fact that they often have mistaken notions of why their techniques work. Gordon Ramsay is the prime example. “Start the duck breasts in the pan cold. But we put them into a cold pan and turn the heat up gradually. It starts to release the fat. If we put them into a hot pan, it seals them in, and the fat stays in there. We want to render that fat down.” Yeah, cooking does not seal in meats. That’s a chef myth that has been disproven innumerable times, and yet: “Seal the duck.” So, Gordon’s reasoning for starting duck breast in a cold pan is flawed, but his method still works great, because fat renders at a much lower temperature than the temp at which meat browns. Therefore, if you start the duck in a cold pan and gradually bring up the heat, you’re giving the fat layer a head start. You’re giving it more time to render before the meat actually starts cooking. And this lets you render out a ton of fat before you overcook the meat. Gordon has the wrong idea, but the right technique, just as Eddie has the wrong idea but the right technique when it comes to de-tuning this B string. Just because they’re great doesn’t mean they understand fully why they are great. And that’s important for us to remember and keep in mind when we’re trying to learn from the greats.
Jordan B. Peterson, Potential, TEDxUofT
As you develop as a competent adult - which is precisely the direction towards which you should develop - much of what you’re doing is actually closing in and narrowing. You’re closing in and narrowing towards a particular goal and a particular way of being. And that’s necessary, because as you develop, you have to develop towards a particular way of being or you don’t develop at all, and you can’t stay a child forever. That goes sour of its own accord.
And so human beings are destined to close their perceptions in, to sharpen themselves and to focus on very little so that they can at least do that. But the price we pay for that is that we start to replace the relationship we have with untrammeled reality with the shadows that are only complex enough to let us do what we need to do and no more. And although we’ve become more competent, in other ways we’ve become more blind.
Mental models exist to help us cope in a complex world that demands too much of our attention. It’s impossible to face every new situation with an open mind, taking everything that happens to us with an inquisitive and fresh mind. No, most of the time, we just need to get shit done. Mental models allow us to have a reductionist view of reality so that we can operate in it without losing ourselves. Once we have a good-enough mental model of something, we start handling these situations more effectively and more predictably. Our actions become Habits™ - a groove in our brain that is deepened each time we automatically interact with something according to a simplistic model.
This is good. We need reductionist mental model to function as adults. The key is noticing when mental models are too reducing, too simplistic, too automatic. We need to know when and how to improve our models.
The goal with mental models is not to have your mental models as detailed as reality. It’s also not to have good mental models on everything. Almost by definition, these goals require too much effort to be worth it. The goal is simply to develop better mental models faster where they are useful. We need mental models that are good enough to be useful. If we don’t develop better mental models when we need them, we’ll just use the old models when they don’t really apply anymore.
Ender's Game, by Orson Scott Card
They finally got themselves together along the wall. Ender noticed that without exception they had lined up with their heads still in the direction that had been up in the corridor. So Ender deliberately took hold of what they were treating as a floor and dangled from it upside down. “Why are you upside down, soldiers?” he demanded.
Some of them started to turn the other way.
“Attention!” They held still. “I said why are you upside down!”
No one answered. They didn’t know what he expected.
“I said why does every one of you have his feet in the air and his head toward the ground!” Finally one of them spoke. “Sir, this is the direction we were in coming out of the door.”
“Well what difference is that supposed to make! What difference does it make what the gravity was back in the corridor! Are we going to fight in the corridor? Is there any gravity here?” No sir. No sir. “From now on, you forget about gravity before you go through that door. The old gravity is gone, erased. Understand me? Whatever your gravity is when you get to the door, remember – the enemy’s gate is down. Your feet are toward the enemy’s gate. Up is toward your own gate. North is that way, south is that way, east is that way, west is – what way?”
They pointed.
The first step is noticing an area of our life where we function well, but want to improve. Something we do by habit, but with mixed results. This isn’t easy! Noticing things is a skill, and I have a long blog post on how to practice capturing thoughts.
Next, you need to decide whether the effort of developing a better mental model is actually worth the investment. Sometimes, you can hold off on that and accrue knowledge debt, areas in your life where you’re at least aware that you have a lacking model.
But what do you do when you actually decide to improve a mental model? You need to research - read a book, watch some YouTube videos, stalk a subreddit for the subject. But mostly, you need to think about the subject in a structured and productive way. And the best way I know to do that is to write for yourself.
I’m a strong believer in writing and that writing is the best way to think. If thinking is developing mental models and writing is thinking, then writing is the best way to develop mental models.
We’re already at over 3,400 words, and if you read all the way here, you have my deepest thanks. My next post will cover writing for yourself - be sure to sign up for my newsletter to get it straight to your inbox (usually less than an email a month!)
My mental model won this round, by the way. She doesn’t turn off her computer anymore either. But other than childhood memories, this has practical benefits as well, if you can afford the cost. ↩
Here are two I recommend: The legal strength supplement that actually works (not an ad) by Adam Ragusea and TOP 5 SUPPLEMENTS | SCIENCE EXPLAINED (17 STUDIES) | WHEN AND HOW MUCH TO TAKE by Jeff Nippard ↩
I say “mostly” because of course there are also hard patches. Anyone telling you differently is either lying or making their partner miserable. ↩
As far as I can tell, Chapman has B.A. and M.A. degrees in anthropology ↩
While I love reading nonfiction books, over time I realized I have very little retention of most books I’ve read in the past. While I wouldn’t say it was a waste of time1, I wanted to have better recall of what I read.
In this post, I’ll describe my solution to the retention problem - a process for creating literature notes for nonfiction books. I find that when I do this, I don’t only increase retention. I get much more out of the book than just remembering what it says. I interact with the subject matter. I think about it deeply. I connect it to other ideas. I think, and I learn. I get these benefits even if the book is mediocre - thinking about the subject matter elevates it. Nonfiction becomes a thinking tool, a jumping-off point to improving my mental models of how I see the world.
At this point you might be thinking “ain’t nobody got time for this shit”, but here’s my pitch: you can spend 10 hours reading a book and vaguely remember maybe one or two different points it makes. If you go through the trouble of using this method, you could spend twice as much time on the same book, BUT you’ll remember more than twice the content. Minute for minute, this is a better deal. Those minutes would be harder, but it’s worth it. Even more, every book you digest like this has a compounding effect - you’ll have more connection to make from previous books, more insights, you’ll be able to contrast one book with another and find the truth amidst multiple points of view. The more you do this, the more it pays off.
That said, I don’t do the whole shebang for each and every nonfiction book I read. More on this below.
Literature notes (or litnotes as the cool kids say2) vary from person to person, but here’s how I see them: literature notes describe a source of information, such as a book, article, blog post, YouTube video, conference lecture, etc. Literature notes describe what the source is saying and don’t attempt to be objectively true. It is useful to have an accurate description of the source regardless of whether or not I buy in to the idea itself. When I research a topic, I might read a lot of resources about that topic and I may agree or disagree with what those resources are saying, but it makes sense to pull out important information to synthesize my own thinking on the topic in the form of a permanent note later on.
You can keep literature notes however you like - analog, digital, anything goes. As for me, about two years ago I started using Obsidian, a note-making tool. It’s my second brain - I use it for everything from a shopping list to working on my social anxiety, from writing down a comedy skit draft for TikTok (I don’t do comedy or TikTok, but hey!) to documenting how to create 3D models using code. All of my literature notes go in Obsidian.
First, when I get a book recommendation, I head over to its Goodreads page and create a book note template (under a “Literature Notes” directory) using Booksidian3. This creates a note that looks like “Thinking in Bets (book)”. My book note template has some basic fields and also a “Recommended by” slot which I make sure to fill out. People in my life each have their own note, so I use the linked name of the person who recommended me the book. If there’s a specific context, like “Mark recommended this because I told him I liked the movie Memento”, I add that too. It’s kinda nice to see that from that person’s note in the backlinks. In addition, if applicable, I try to write out if there’s a specific reason I’m inclined to read the book - am I looking to get something specific out of it?
At this point, it looks like this:
I then add the book as a direct link from a “Reading List” note. That’s it for now, until I actually start reading the book.
As I start reading the book, I add a link to it from my “Home” note under “Reading now”. Now, my system involves reading the e-book and the audiobook intermittently. I use a physical Kindle with audiobooks from Audible. The killer feature of this combination is that they offer Whispersync™ - the e-book and the audiobook can sync up to where you are in the book. This means I can listen to it in the car on the way home and continue from where I left off when I open my Kindle before going to sleep. It changed how, and mostly how much, I read.
While reading on the Kindle, I occasionally highlight some passages of interesting or for-whatever-reason noteworthy, but the majority of my highlighting happens later. There’s a bookmark feature in the Audible app for keeping sound clips, but I wish there was a way that it’ll automatically be converted to a Kindle highlight so it’ll show up on my Kindle notes. Alas, I just don’t use this feature.
After finishing the book, I move the book note link from “Reading List” to my “Books” notes, which contains links to books I’ve actually read. I do this for fiction books, too, by the way - everything so far I do for both. But the next part is for nonfiction only.
Next, after either finishing the book completely - or, with a long book, after reading a substantial part of it - I do a cycle of highlights, summary and synthesis on each chapter. Let’s grab a cup of coffee and get to work.
First, I go back and make highlights in the e-book version. I do this on my tablet or laptop with the Kindle app. Since I just finished the book (or the specific chapter), I have some feeling for what topics would have some interesting ideas to capture, so I’m quickly skimming the book for some gold nuggets.
There are a few reasons for doing this:
After skimming through and highlighting, I use the Kindle “Note and Highlights” page to copy and paste all the highlight to the book’s literature note, under the correct chapter.
Now, I go over the highlights and try to extract a short summary of the point that it’s making. I keep some of the highlights in place, as sometimes having specific quotes is valuable for the tone of the book, or where the highlight is already to-the-point. But I try to rephrase most of them and write with my own words.
The extent to which I do this changes a lot depending on the book. The more the book is aligned with my current interests at the moment, the more detailed the write-up. If the book is meh, I might just leave the highlights in the note and leave it at that. This isn’t school - there’s no extra credit for doing pointless busywork.
I might even choose different resolutions for different chapters. Some chapters might get hundreds of words while others I just skip.
Up until now, I tried to be somewhat objective and describe what the book is claiming (and I’ll use language like “{author} claims that…” when a point made in the book is iffy) - now, I want to focus on what I think.
Easy recall requires multiple contexts and connections, so I try to attack a point that I want to remember from multiple angles. I do this mostly intuitively, but I also have a more analytical method that I use if I get stuck. It’s also very useful if you’re just starting out and don’t really know how to proceed.
The method is really simple - I have a bunch of prompts that I try to answer for any given point. I don’t force it - if one prompt doesn’t look promising, I move on to the next one.
Here’s my current collection of prompts:
Do I already have a note on this topic? I search my notes for something similar. If I do, I re-read the existing note. Does this new source add something valuable to the argument?
Do I agree with this point? Why (or why not)? What personal experience has led me to think that? Is this just a gut feeling or do I have proof?
What does this remind me of? I try to think about distinct and seemingly unrelated areas of interest. Does this relate to computer science? Personal productivity? Bodybuilding? Cooking? You’ll be surprised how common it is to find unexpected connections if you try hard enough. And if you do this enough, it gets easier and easier.
Can I make this point actionable for me in the near future? I think about current projects (work and personal). Can any of them be a testing ground for experimentation based on what I read?
Why is this not only true, but important?
Is this a special case of a stronger claim? Can this “prove” something more abstract?
Did I hear this claim from another source already? It can take a few times of hearing an argument before I decide to write a note for it. I try to think back if I’ve heard it before and write down some hints for more sources.
Does this apply to something I did in the past? Did I, or do I, unconsciously do it already and just never thought about it analytically?
Who in my life might agree or disagree with this?
Let’s take the first prompt, “Do I agree with this?”, and expand on it a little.
If I agree with the point and I feel like I want to dive deeper into it in the future, I’ll try to extract out an evergreen, atomic note from it. In short, these are notes that don’t describe a source, but rather make a very specific claim. For example, in Steal Like an Artist, author Austin Kleon says in the dedication:
It’s one of my theories that when people give you advice, they’re really just talking to themselves in the past. This book is me talking to a previous version of myself.
While reading this, I recalled that CGP Grey said that he also does this for his videos - thinks of past-him as the audience. Since I write a lot of notes, the audience question comes up a lot (in how to phrase things, how much to explain, etc.) and I find that targeting me-without-this-knowledge is a good way to be productive. When I read that line in the book, all of this came together and I created a note titled “Write with your past self as the audience”. And actually, once I did that I realized I already had a note “Write notes for future you”, so I merged and refactored both to “Write notes with yourself as the audience”, where I go over how to write both for your past-self (e.g., to explain something in a way that you’d understand if you haven’t had that specific knowledge) and for your future-self (e.g., to capture enough context so that it’ll be understandable in the future).
Now, sometimes I disagree with something. That’s just as good. If that’s the case, I try to think and explain why I disagree. This sometimes leads to the exact result - I’ll write a new atomic note with the opposite claim. It means that it doesn’t really matter if I agree with a source or not. The only important thing is thinking about a topic, and writing is thinking.
Sometimes, I already have some atomic evergreen notes on a subject. This is common, because I usually read books that align with my interests, so it’s safe to assume I’ve already read some other books on the same topic. In that case, I just link from the literature note to the evergreen note and sometimes I edit the evergreen note with new ideas. Sometime, it’s enough to add a link - I can also see backlinks (links to the current note) when I read the atomic note, so the next time I read it, it will point back to this new book as a source for the claim.
Let’s bring the abstract method down to concrete example. I think the only way to do this is sharing a real-life literature note I worked on recently. Below I’m attaching my note for Steal Like an Artist. Most “blue-link” text in the note is an Obsidian link. This means that either there’s a note with that title, or I’m planning to write one later.
Click here to see my note on Steal Like an Artist
If you also write literature notes, I’d love to hear how your process looks like!
Your brain is literally a neural network. Your attitude towards the world can change imperceptibly, ever-so-slightly changing weights when accepting new training data, even if the original input is gone. ↩
I doubt any cool kids say that, but I own this domain, so what are you gonna do about it? ↩
Full disclosure: I created Booksidian :) ↩
They didn’t get a monitor yet? The PM haven’t gotten around to showing them the product your team is working on? Their badge doesn’t work and they have to ask for teammates to walk them to the bathroom? This is the perfect time to sit them down and explain all the details of the new project. Is there some component that they haven’t ramped up on yet? Save time by not explaining it to them just yet - they’ll get to piece it all together themselves when the project is done.
This is essential. Make sure the project involves as many components as possible. Ideally, it should take the most senior person at least 2-3 months to get done. Picking a big project makes sure they don’t get any small wins or feel good about themselves. If they manage to break the project down into smaller parts, you need to make sure they understand you only care about the end goal, and that you’re worried they are “wasting time on project management” when they should be working!
If someone objects to your pick of project, just tell them you want the new person to feel “a sense of ownership”.
This increases the odds that the project is not fun and that no one on the team really knows what’s going on.
If at all possible, pick a project that some people object to. Maybe it’s the technical direction; maybe the PM and the designer don’t agree on the UX; maybe some people just think users are going to hate this.
If you manage to find a controversial project like this - don’t tell them! But do make sure they interact with whoever objects to the project. Bonus points: if the objector is a team member, let them be the mentor.
Make sure to only select an ambiguous project that doesn’t have a known set of requirements. Describe the project with as little details as possible and send them away to figure out the rest on their own.
Choose a project that involves as many other teams as possible. Here’s a possible list of cross-team collaborations:
We are going for the sweet spot of both not understanding the existing tools everyone on the team uses every day as well as being the only person on the team familiar with the new technology.
Don’t let them compartmentalize! Make sure they have to do anything and everything:
The project shouldn’t just be hard on it’s own. We want the new person’s negative emotions to work against them. We do this by adding stress and low self-esteem. Let them know other people depend on them. Bonus points: commit to a strict schedule on their behalf while they’re in the room. In most cases, they’ll just freeze and accept whatever you said. When they complain the deadline is too tight - just remind them that they could have said something at the time!
Make sure that whoever’s helping them has a lot going on. They should have plenty of meetings and perhaps an irregular schedule. Maybe they work remotely or come in at 05:00 AM to beat traffic. Bonus points: pick someone who’s about to go on leave for a while.
Most new people take too long to figure stuff out on their own before asking for help. This means that if you leave them hanging when they’ve already asked for help, you’re making sure that they cannot accomplish anything while they wait. This delays the project, causing stress. But it also cultivates a general feeling of helplessness and low self-worth. Remember: you reap what you sow, so sow some misery!
Sync meetings can be a great tool to advance a project when used properly - so don’t use them properly! Start scheduling them as early into the project as possible and include as many people as possible. Have higher-ups expect rapid progress and let them know who’s responsible. The rule-of-thumb here is that every sync meeting should make the new person feel like a failure and a disappointment. Let them know you expect them to present something for the meeting - that way, you make sure that they waste their time preparing for the meeting instead of moving the project forward.
Ah, this is embarrassing. You thought they said they liked jazz, but they actually clarified that they like to hate jazz. And their face is growing on you. Hmmm. Maybe we should pick the best project instead, okay?
People underestimate how hard it is to make a single change to their codebase. You’re thinking about lines of code, but it’s so much more than that. What does your team call the action of making a change to your codebase? Submitting a diff, pushing a commit, sending a merge request? Every team does it differently enough that we don’t even use the same terms. Every team has different source control, issue tracker, ticket handler, command line tools, etc. It might be second nature to you, but starter tasks are supposed to help ease a new person into this. This shouldn’t be a sink-or-swim situation.
Start trivially small. No, smaller than that. Even smaller. A little bit smaller…. great! Let someone fix a typo. Let them fix some coding convention on that one module you haven’t gotten around to lately. Let them add their name to the project’s CONTRIBUTORS
file. It should be something that is absolutely not a challenge. Figuring out the development flow is challenge enough.
Then, work your way up in small increments. Let them fix a small bug. You should generally know how the solution is going to look like before you assign it to them. Starter tasks shouldn’t break new grounds for you. Let them add a test for that one bug. Let them figure out how to run tests, how to make sure the continuous build caught their change. Let them track it to production. Don’t rush it.
Small tasks provide a lot of easy wins, but they also function as a small tour of your code base. The new person will get to touch a little bit of everything. They’ll start to recognize component names, associate a specific technology and “look” for each of them, figure out where their code is stored in your source control. They’ll have some sense of what you do and how you do it.
Every team has something they are optimized to do more of, the bread-and-butter. A team that works on a payment platform might consider “adding a new payment provider” as their bread-and-butter. A team that works on a to-do app might be optimized to add new task properties and filter capabilities. What is not bread-and-butter is for a free to-do app team to implement payments or for a payment system to add cool avatar selection for users.
Let them do whatever it is your team does best and frequently. This will mean that everything they learn while doing the project is useful, that the skills are transferrable to future projects. It also means that everyone on the team can help them, so they’ll never get stuck waiting for a specific person.
Ideally, the new person should only need to talk to people from the core team to complete starter tasks. Sure, if a task is small and well-defined, it’s not a huge deal if we need to run it by the PM before pushing it. But allowing new hires to feel a little more sure of themselves before starting to collaborate with other functions will make those interactions much more positive for them.
Self-contained also means that there are no complex cross-task dependencies. They shouldn’t rely on someone else’s diff that they’re “just about to submit in 2-3, maybe 15 days” nor should anyone else depend on their change. There’s no point in introducing more stress. They’ve just started a new job, they’re stressed enough as it is (and the stress will come later, for sure).
Ask folks on the team about their onboarding experience. Ask for help from the last person who joined the team, not the most senior. The newest member probably has better recollection of the experience. They probably have a better sense of which component maintained by the team are hard to grasp (and should be avoided) and which tools are essential to cover during the onboarding.
The best developer on the team isn’t always the best person to mentor a new hire. Pick someone who likes to teach and can be available for the new hire. They should probably clear the first few days of the new hire in the office, if they usually have a lot of meetings going on.
However, a single person is not enough. They can be busy, sick or on vacation. The mentor and the new hire might just not have chemistry and find it awkward to talk to one another. Make sure that everyone on the team is approachable, and that the new person feels comfortable asking for help. You can facilitate this by:
As I mentioned above, most new people take too long to figure stuff out on their own before asking for help. Preempt this by proactively offering help. However, this should be done with caution, as it can be stressful, too. Offering help might imply that you think they’re late and that you expected to see some progress by now. Let them know that you’re there if they need you, without pressuring them.
When you help them out (whether proactively or not), try not to overwhelm them. Many (mostly senior) engineers tend to answer questions with a flood of intricate detail and long theatrical renditions of how the current situation came about (“It is the tale of a time long ago, when source control was but a rich man’s game…”). Tell them what they have to know, and ask them if they want to dig deeper. Or let them finish the (small) task first, and then give some more context, when they have hands-on experience of what that component does, exactly.
I would love it if you could share your starter project experiences in the comment section below. What horrible choices ruin someone’s experience in a new job? How did your awesome manager make your onboarding easy and fun?
]]>When opened with Obsidian, this opens a note called “my note” in a vault called “my vault” (if it exists). This works if you enter the above URL into any web browser.
Each operating system has a different way to support such URIs. In Linux, this mechanism is called XDG.
Note: you must have a desktop / GUI environment for this to work - no headless servers.
There are two options on how to set up Obsidian UI handling on Linux: you can set it up for a particular user (especially useful if you’re using a Linux machine that’s managed by someone else, for example at work) or for everyone. Choosing the second option requires root access.
Note: The single-user guide currently doesn’t work for Chrome for some reason. Waiting for answers on my Unix & Linux Stack Exchange question: Custom URI handling: xdg-open and Firefox work, but Chrome doesn’t
If anyone has any leads into how to solve this, I’d appreciate it if you could share your findings in the comment section below.
1. Install dependencies if needed:
$ sudo apt install xdg-utils desktop-file-utils
2. Download the latest Obsidian [[AppImage]] file from the Obsidian homepage and put it somewhere where you can reference later1. We’ll use ~/obsidian/
, but this can be anywhere you’d like:
$ mkdir -p ~/obsidian
$ wget https://github.com/obsidianmd/obsidian-releases/releases/download/v0.12.15/Obsidian-0.12.15.AppImage -O ~/obsidian/Obsidian.AppImage
3. Optional: download an image file to serve as an icon (thanks Craig from the Obsidian Discourse!):
wget https://forum.obsidian.md/uploads/default/optimized/2X/6/6df43bc4ee96f0a1b67ff3600caf6879b758a743_2_500x500.png -O ~/obsidian/icon.png
4. Give the AppImage
execute permission:
$ chmod +x ~/obsidian/Obsidian.AppImage
5. Run the AppImage
file:
$ ~/obsidian/Obsidian.AppImage
The Obsidian GUI should open up. Make sure you either already have a vault or create a new one. I’m assuming below that the vault name is notes
, change to whatever vault name you used accordingly. You can close Obsidian now.
6. Let’s make sure that nothing is currently trying to open obsidian://
URIs:
$ xdg-open "obsidian://new?vault=notes&name=note&content=content"
gio: obsidian://new?vault=notes&name=note&content=content: The specified location is not supported
Cool. That’s how we’ll check that everything works when we’re done (the quotes are there so the shell doesn’t parse the &
character).
7. Now we’ll create a .desktop
file for our AppImage
file. We’ll put it under ~/.local/share/applications/
. First, make sure the directory exists :
$ mkdir -p ~/.local/share/applications/
8. Now let’s write our file. Create a new file called obsidian.desktop
in the above directory with the following content:
Some notes on the .desktop
file:
%u
in the Exec
line! It makes sure the URI is passed to the AppImage
file when invoking it.~
) sign. My username is rachum
so I used /home/rachum
. Use your username instead.Icon=
line from the file - it will make the desktop file invalid.MimeType=
line is where most of the magic happens. It registers Obsidian to handle obsidian://
URIs.Icon=
line results in the icon not being displayed. 9. Run the following2 to read our newly created obsidian.desktop
file (if things break for some reason and you’re trying to debug this process, you can add the -v
flag to have more detailed output):
update-desktop-database ~/.local/share/applications/
10. Make sure everything works by running xdg-open
again:
$ xdg-open "obsidian://new?vault=notes&name=note&content=content"
This should open the Obsidian UI focused on the newly-created note:
The above instructions are for setting up Obsidian URI handling for your own user. If you want to set it up for all users, make the following changes:
AppImage
file in a non-user directory (e.g., /opt/obsidian/
)obsidian.desktop
file in /usr/local/share/applications/
update-desktop-database
with sudo
Exec
keyupdate-desktop-database
not working as expected #670Obsidian AppImage binaries check for updates on each run, so it’s generally safe to omit the version from the file name. ↩
The XDG Base Directory Specification claims that “$XDG_DATA_HOME
defines the base directory relative to which user-specific data files should be stored. If $XDG_DATA_HOME
is either not set or empty, a default equal to $HOME/.local/share
should be used.” However, I found through experimentation that this isn’t the case. Because of this, we’ll manually specify the directory when calling update-desktop-database
. ↩
Quick! What’s the 8th letter of the English alphabet?
It’s “H”, and I know that, but I can’t recall that because I never “stored” this information in this particular way. What I do is that I say the entire alphabet in my head and count. It’s easy for me to recall the alphabet by-order, because that’s the way I stored it in memory - every letter is a “recall cue” for the next one (though it’s more complex than that - I usually need 2-3 letter to know the next one, otherwise I need to start from the top).
Another easily relatable example is how our reading vocabulary can be larger than our speaking vocabulary, especially when speaking in a second language. How’s this possible? Either you know the meaning of a word or not, right? Well, when we try to memorize words, we usually store the meaning of the word from the word itself (the recall cue is the word), but if we omit storing it the other way around (where the meaning is the cue), we won’t be able to recall the word when speaking.
You reap what you sow and you recall what you store.
This is how our mind works, and it’s pretty interesting. But how can this be useful and actionable? When intentionally attempting to memorize information (e.g., with a Spaced Repetition system like Anki), it’s advantageous to store the same piece of information in multiple context and with connection to other memories.
Whether you are using Anki (for example, when learning a new language) or any other flash card based system, the basic idea is the same. You prepare questions, test yourself and check the answer.
For example, let’s say I want to remember the word “obtuse” and add it to my English speaking vocabulary. First, we can add the obvious notes of word <–> meaning:
Q: What's the meaning of the word "obtuse"?
A: "difficult to understand" or "unable to understand what is obvious"
Q: What word means "difficult to understand" or "unable to understand what is obvious"?
A: obtuse
The next step up would be to include it in context (in Anki, this would be a cloze note type):
Q: The attorney explained the [...] language in the contract to her client
A: obtuse
Q: Maybe I am being [...], but I didn't understand the end of the movie.
A: obtuse
This will help us internalize the meaning of the word, but we still haven’t connected it to a tangible memory in our mind. Let’s try going personal:
Q: Even afer four years working at Google, I still feel [...] in team meetings when I don't follow the conversation
A: obtuse
Another way to make things personal is to invoke the situation where you came up with the word. If you want to remember “obtuse” because you read it in a book, you can use the quote from the book:
Q:
“Ain’t nothing wrong with being a woman, gancho,” Lopen said. “Some of my relatives are women.”
“Of course they...” He trailed off at Lopen’s grin. Storming Herdazian. How much of what he said was to deliberately sound [...]?
(from Words of Radiance by Brandon Sanderson)
A: obtuse
Sometimes in conversation you have to recall a word from its opposite, so let’s use that as a cue, too:
Q: I was surprised by how the contract was short and easily understood even by a layman. It was the opposite of [...]
A: obtuse
When I speak English and a word is on the tip of my tongue, I can sometimes figure out the Hebrew word instead and try to translate. Let’s add that, too:
Q: What's the English translation for: אטום, איטי להבין?
A: obtuse
Q: What's the Hebrew translation for "obtuse"?
A: אטום, איטי להבין
This can go on - the more cues we have for a a piece of information, the easier it is to recall in different situations, and that makes it all the more useful.
]]>Ideas are the foundation for any creative or knowledge-based endeavor. If you want to write a fiction book, you can take a writing class, study the classics, or read essays on James Joyce’s Ulysses. These would maybe improve your writing technique, but they won’t help you with what you want to write about. To do that, you need to develop ideas, and that’s where capturing (and later, processing) thoughts can help you.
Capturing thoughts is a skill, and as a skill it requires practice and experience to get good at it. It is fundamental in both task management systems (namely Getting Things Done) and personal knowledge management systems.
It’s worth noting that inboxes (where you dump your unprocessed thoughts) are only useful if you consistently process them, so while capturing thoughts is a skill that’s worth getting better at, it may be pointless if you don’t actually process thoughts from whatever inbox you capture them to.
When we have a great idea, it’s tempting to assume we’ll remember it later. Unfortunately, that’s not true. We just have too many ideas a day to recall all of them. Additionally, an idea might be great, but simply not actionable at a particular moment in your life. It might require a new perspective, a different idea to mesh with (see “Synergy” below) or simply needs to incubate more. Capturing thoughts throughout the day ensures that they’ll be remembered and given more chances to spark into something actionable.
Tynan Sylvester, RimWorld creator, says that reducing friction in capturing game ideas helps “retain inspiration”:
Have you ever written something in a notebook and then open it up two years later? Like, you forget about it entirely? You open up your notebook, you look at your ideas from three or four years ago and you just don’t recognize any of them. It’s like another person giving you ideas. That’s inspiration retention. You’ve forgotten the ideas. I’ve had this happen to me so many times.
So what’s good about having an ideas reservoir, that you’re always putting things in, is you capture every idea, every valuable thought from every day all the time. You don’t just capture from your brainstorming sessions - you capture from the shower, from the car, you capture from stuff you read, or movie you saw. Some of these ideas can we use years after the fact and some of them are layered. You put an idea in, it inspires another one and then you compare it to a third and they combine together into something new that goes into the game two and a half years later, that’s happened.
I think a few months of random note-taking beats a three-hour brainstorm session every single time
– Tynan Sylvester, RimWorld: Contrarian, Ridiculous, and Impossible Game Design Methods (YouTube)
A single idea might be interesting on its own, but many ideas are better when combined synergistically with others. You can wait for two complimentary ideas to strike you at the same time, but you can increase the odds by capturing ideas and then comparing new ideas to old ones.
Fantasy author Brandon Sanderson says that a book is never just one idea, and that many of his books are a mashup of ideas he had separately:
I write down all these ideas. They just go in my notebook, or in my file in my computer that’s called Working Ideas right now. It’s just big lists of ideas. A book grows out of multiples of these ideas combining together.
When I have something that feels like the seed of a novel that’s working, I’ll often go back to my book and say, are there any other ideas in here that mesh really well with these ideas.
I often describe, ideas are like these little atoms bouncing around. When they mash into each other, they create some core reaction, become something new. It’s not how actual science works, but, you know, it’ll work for the fantasy author.
Suddenly you’ve got this thing growing of all these different atoms coming together and making some cool new thing that is somehow more than the sum of its parts, more exciting at least. That’s the story for me.
– Brandon Sanderson, Where Does a Book Begin for You?—How I came Up with Mistborn
If we only process thoughts as they occur to us, we limit our insights and actions to thoughts that randomly occurred to us when we were in a position to process them. Capturing thoughts separately from processing them allows us to take advantage of thoughts that come up when it’s uncomfortable to process - in the car, while waiting in line, when busy with something else.
You go to the laundromat and suddenly you think “wouldn’t it be great if there was a service that, for a monthly fee, mails you a washing machine with the quarters already inside it?”. Great idea, but you’re at the laundromat now, and you can’t actually do something about this.
If you were at home with computer access, you could maybe think about this some more, decide if you actually want to pursue this, do some market research, try to find a friend to go into the business with you. This may generate some action items you want to achieve.
Maybe this isn’t a good business idea to do some action on, but can generate some insight from it - what makes a good subscription service? Why don’t laundromats work on credit cards? Is there some economic reason? These could be good writing prompt that generate insight.
Your mind is for having ideas, not holding them.
– David Allen, Getting Things Done
Ever had a recurring thought that demanded attention, distracting you from what you’re currently doing? Thoughts aren’t always the sudden realization of how to solve world hunger. Even just remembering to call back someone who’s phone call you missed can have detrimental effect on focus (especially if you’re trying to engage in Deep Work).
Having a place to dump thoughts from our brain allows us to be calmer, knowing that these ideas aren’t lost, they’re just waiting for a convenient moment for us to process them. It makes it easier for us to focus on the task at hand and allows us to more quickly enter Flow.
Capturing thoughts sounds easy. You have a thought - you write it down, right? In practice there are a few steps involved, and some of these appear to be skills. This is important to know because knowing something is a skill means you can improve at it.
Thoughts will strike us many times a day and at inconvenient times. We need to bring the friction of capturing ideas to a minimum to ensure we’re able to do that even when we’re busy or distracted. The less friction capturing requires, the more we’ll actually do it, and the more epiphanies will be stored and used.
Say you’re working on your computer and suddenly think “hey, isn’t it weird that Family Matters started out as a blue-collar family sitcom and ended up being practically a Sci-Fi romance?”. Maybe this is an idea worth exploring - let’s capture it. Now you need to think about how to do that. You decide to email yourself. Just thinking about doing that already leaves you kinda wanting to just let this one slip. How useful would this actually be? Fine. FINE! You open up your browser, open a new tab, wait for Gmail to load… Maybe give up now? No no no, it’s already loaded, see, you can do it. Where’s the compose button? Isn’t it weird that I don’t usually send out emails but actually reply to - beep, new WhatsApp message from my boss, I just need to take a quick look and NO NO NO okay TO: amir@rachum.com subject: hmmmm, was Family Matters actually a romance? I’m not sure if this is accurate enough, maybe I need to think about this some more…
What if capturing looked like this: Ctrl+Shift+M from anywhere, type the thought, click “Enter”, DONE. This isn’t just faster. It’s so easier you would do it more. This method has less friction. And, boy, the things you can do with that idea.
In practice, capturing with less friction can be, for example:
You need something to capture ideas whenever and wherever they pop into your head. Whatever you use, it should not require any thoughts, attention or multiple steps to write it down. It can be a notebook, a napkin, an app on your phone or iPad. These notes are not meant to be stored permanently. They will be deleted or chucked soon anyway. They only function as a reminder of a thought and are not meant to capture the thought itself, which requires time to phrase proper sentences and check facts. I recommend having pen and paper with you at all times. It is really hard to beat a notebook in its simplicity. If you use other tools, make sure everything ends up in one place, a central inbox or something like that, where you can process it soon, ideally within a day.
If you’ve never captured thoughts systematically before, I hope you give it a try. Start simple - take a small notebook with you, set up a Google Doc or an Evernote account that’s accessible from everywhere. Make sure that capturing is easy. If you find yourself letting ideas go because of the anticipation that capturing the thought would be a hassle, remove some friction. Keep doing it for a while. This is like working out; you don’t see results right away. As for processing, you can start by reading the entire list every few days. If some ideas are things you need to do - extract them out to a to-do list. If some ideas are just interesting, try writing about them some more (I use Obsidian for writing, more on that in a later post). You can try sorting the list by ideas you like.
Whatever happens, these ideas can’t slip away - they’re yours to use now, like they should be.
]]>There’s an endless field of possible development methodologies. Even with Scrum “by the book”, there are endless parameters to tweak: iteration length, planning method (points? t-shirt sizes?), commitment models (do we go by a calculated focus factor or use our gut feelings?), team structures, etc. And if the team is “brave” there are a lot more. Maybe we don’t feel like the daily standup is beneficial, and we want a 2-per-week team meeting where we get to sit like adults?
People, and therefore teams, have their own quirks, preferences, strengths and weaknesses. One team might find that mandatory story templates with a “definition of done” section helps a great deal, because team members tend to take forever dotting the i’s and crossing the t’s. Another team might be well practiced in sharing small tasks and will do that naturally. For them, having a mandatory template feels like annoying bureaucracy; it will only cause friction, putting them off from the whole process. One team’s heaven will be another team’s hell.
That means there’s absolutely zero chance that the first set of rules a team decides on for their first iteration is the global maximum for that specific team. Iteration on the process itself is the difference between success and failure.
Iteration on the process is what the retrospective meeting is for. It is the way we move on the methodology field to get better and better results: reflecting on the past iteration, figuring out what is working and what is not. That only happens in the retrospective meeting.
If you don’t do the retrospective meeting (or don’t take it seriously), then you’re stuck with whatever system you started out with, and that system is definitely not the best for your team. That’s why the retrospective is necessary.
The rest of the Scrum meetings and artifacts (sans the retrospective) are simply a good starting point in the vast methodology field. They are the result of countless teams trying out new approaches, experimenting in how they develop software and sharing what they learned with the world. Scrum is software lore. It jump-starts your team to a reasonable position so your team can make small, incremental changes to get to an optimal place. It saves you the trouble of making monumental decisions and wild experimentation on your own.
There’s a danger in Scrum, though. It is lore, a “body of traditions and knowledge on a subject held by a particular group, typically passed from person to person by word of mouth”. That also sounds awfully like religion. The danger is that teams don’t take the retrospective meeting with the appropriate freedom it gives them. They circle themselves in the “Scrum” definition and tweak it so lightly that they effectively stay in place. They feel the need to the Scrum “by the book”, as if some Scrum god will be angry if they do their daily meeting sitting down.
Consider Gall’s Law:
All complex systems that work evolved from simpler systems that worked.
[And conversely…] A complex system designed from scratch never works and cannot be patched up to make it work.
This is true for software systems that we, as software engineers, build. But it’s also true for the system we use to build that software. And Scrum is a very complex system.
Now, you could say that Scrum is indeed a complex system, but that it was evolved from simpler systems that worked. It just that it was evolved by someone external to your team. The danger is still there, though. Sometimes you have to learn some lessons yourself.
You can try to have daily sync meetings when everyone sits down. It might work. You might also experience endless meetings where everyone is juuuuuuust comfortable enough to let that one guy talk forever while they ignore what he says. When you do switch to standing meetings, you’ll have a better sense of why you’re doing it.
Some teams will have an easy time learning and adopting using other people’s experiences. They can take the initial Scrum lore, play with it and mold it to their needs. Other teams will resist; they’ll find Scrum to be an endless well of bureaucratic busy work. The friction will be so high that it’ll just be a bad experience for everybody.
Teams which have a strong (perhaps justified) resistance to Scrum will eventually, in my experience, throw the baby out with the bathwater. They’ll resist the retrospective alongside all the other crap that’s making them miserable. They’ll usually also grasp to the idea of having a Scrum Master - one person who does All That Annoying Scrum Stuff™ while the rest just do the actual work.
But what’s the alternative?
Forget about Scrum - maybe it isn’t a good fit for your team. Set up a recurring retrospective meeting. You don’t need to do any of the other Scrum stuff; you don’t even have to call it “retrospective”, but do make sure you talk about meta stuff - your methodology, not your actual projects. Discuss your development processes. Are they working for your team? If “yes” - great! Otherwise, maybe Scrum is the solution, maybe not. Talk among yourself. Reach a consensus. Agree on the next steps. Start small. Course correct when needed (make sure this meeting is recurring; don’t skip it!). Have everyone be involved. Work together, as a team.
This is why the retrospective is sufficient. As long as you constantly move on the field of possible methodologies, as long as you actively tweak and change your process for the better, as long as you keep talking and improving, you have a chance to get to a place where things just work. But the important thing here is moving (doing the retrospective), not your starting point.
]]>My wife and I have been happily married 1 since 2013. In this post I’ll try to cover our own financial agreement and how we came about to implement it. This is how we handle money as a couple and a family. We’ll start with some general principles, but feel free to jump ahead into the details of our personal arrangement.
Now, a prenup is a legal document and I am definitely not a lawyer. This post aims to provide a framework for agreeing on the principles behind a prenup. It’s more of an engineer’s exploration of the different financial incentives involved in marriage and how we, specifically, overcame them. If you break up over this, remember that you took relationship advice from an engineer, so you only have yourself to blame.
And lastly, even if you don’t intend on signing a legal document, agreeing on a financial arrangement with your significant other is always a good idea. It’s perfectly reasonable to adopt some of the ideas put here without an official prenup.
Before you go and decide on the details on any financial plan, you have to talk and agree on a set of principles to guide the mechanism. And there are a bunch of different options you can go for.
The default “50/50 split on divorce” mechanism is based on something like the following set of principles:
For example, imagine a high-earning CEO who has to work 24/7 and provides for her family while the husband is a stay-at-home dad, taking care of the children, house chores, event planning, etc. While the CEO makes all the money, she couldn’t have spent as much time in the office advancing her career if she had to do half of all the chores. Both spouses work “for the family”, even if the stay-at-home dad’s contributions are less measurable. This makes the 50/50 split fair.
If we forgo the 50/50 split and split the monetary possession based on monetary value generation (i.e., in case of divorce, each person gets the relative amount of money they put in), it’s clear that the stay-at-home dad is getting a raw deal - you’re essentially saying that anything other than money has no value. In fact, you’re incentivizing each partner to focus on their career rather than doing what’s right for the family. If you decide on splitting based on income, you can imagine the husband objecting to becoming a stay-at-home dad and insisting on getting a job and hiring a full-time nanny instead, just to prepare for a possibility of divorce.
So 50/50 can work, but that depends on your specific financial situation and starting points.
Let’s consider a few edge-case scenarios for your financial starting point.
This scenario involves one partner being the only breadwinner (imagine, for example, a small business owner who has to work late hours to keep the business going to provide for their family) while the other partner either works fewer hours or is a stay-at-home parent: taking care of the children, house chores, day-to-day activities and other household responsibilities. We’ll call it “The Breadwinner”.
This scenario involves one person entering the relationship with big sums of money, while the other person contributing less in practically any other field. There’s some sense in the idea that “it makes no sense for me to work full-time to make our overall income larger by 10%”, but that decision is not being offset by contributing in other areas of the relationship (whether it’s household chores, mental support, child rearing, etc.) This situation can be malignant (entering the relationship for money rather than love) or benign. Either way, to make it easier to remember, we’ll call it “The Gold Digger”.
This scenario involves two partners being relatively equals, except that one of them has potential to earn huge sums of money unassisted by their spouse. Examples can be a startup founder on their way to selling for millions (before the relationship started); a person owning a home they rent, and might make a lot of money depending on the real estate market; a partner that will likely inherit assets and money. We’ll call it “The Heir”.
Our relationship starting point was financially complex:
As you can see, we have a certain mix of all the aforementioned scenarios: one cup of The Heir, a quarter cup Gold Digger and a tablespoon of The Breadwinner. What’s interesting here is that over time, we believe we’re pretty much on equal grounds. So if we go with the classic 50/50 split, I will have the incentive to divorce early (before I bring in too much money) and my wife has the incentive to divorce late (after my salary covered the difference in current assets or inheritance.)
We both like our jobs, but have aspirations to either retire early, work part-time or take long unpaid vacations for personal projects. We’d like to be able to do that independently of one another, so we need a system that allows each of us to find a different equilibrium point in the work-life spectrum. We’ve also decided that as a principle, we want to share the responsibilities of raising our children equally - so we’d like to somehow neutralize the effects of our Breadwinner situation - for example, if someone needs to stay home with a sick child, we don’t want our financial situation to affect that decision (”you stay because my workday is worth more / my career advancement is more important”).
Additionally, we wanted to make sure we are entering the marriage because we love each other and that there’s no financial incentive to do so.
Essentially, we want a mechanism where each person:
To satisfy our principles, we came up with the following mechanism:
This might seem convoluted, but in practice it’s very simple - we each get our salary deposited in our private accounts and set up an automatic monthly deposit from our private accounts to the shared one. Unusual deposits are rare and require a few seconds to update the spreadsheet. When we buy stuff, we just have to use the right credit card. We also don’t squabble over details and err towards using the shared account.
Here’s a visualization:
If you have some questions or objections you’d like me to answer, please leave a comment below!
There are a few advantages of using a fixed sum over a fixed percentage:
If the default split works for you, that’s great. But not discussing money because it’s awkward or volatile is just plain wrong. If you can’t sit down and discuss your finances with your significant other, marriage is not the right choice for you right now.
Look, I get it. Sitting down with your beloved spouse-to-be to show them an Excel sheet and explain your incentives in case of divorce is not the best pillow talk. But marriage is not about “nice and easy”, it’s about weathering the storm of life, together; money is a huge part of that. If discussing money is painful for you now, it’s going to become a hundred times more painful after you pass the point of no return. Even if you stay married happily-ever-after, you’re going to go through rough patches in your marriage. If your relationship can’t take a little bit of “we are both individuals and we sometimes have conflicting interests” at the start, how can you be confident it’ll weather a “FILL YOUR FAVORITE MARRIAGE ARGUMENT HERE” fifteen years in?
We do. We also love common sense and diagrams with arrows. We split the arrows in case of a divorce, though.
Good question. First - we have one daughter and a baby boy on the way.
We don’t offset the burden of actually carrying a child to term financially, but we do share the responsibilities of child raising equally - spending quality time, spending non-quality time, picking up from daycare, bathing, feeding, playing, changing diapers, potty training - everything. I also took (and plan to take for our boy) same-length paternity leave as my wife took her maternity leave. I am doing my best to make up for my wife’s pregnancy with doing more than my share of both taking care of our first daughter and general house chores and family tasks during the pregnancy.
The information provided on this website does not, and is not intended to, constitute legal advice; instead, all information, content, and materials available on this site are for general informational purposes only.
I am not a lawyer.
She reviewed and approved all drafts of this blog post.
Technically, we’re in a common-law marriage. ↩
The fundamental issue is this - if there’s nothing in the cheat sheet you don’t already know, you’ll never use it. If you never use it, you don’t even know what’s in it and if you don’t know that, you won’t point others to it. No one else will contribute and so it’ll die.
Sometimes cheat sheets prevail by having their owner be their champion: the owner adds all the entries and keeps everything in tip top shape, updating, trimming, and keeping a close eye on things.
But I can’t be that champion. I’m way too lazy. And my teammates won’t bother adding entries to an empty or otherwise unuseful-to-them cheat sheet. So what do we do?
Enter our hero: the new person on the team.
The beautiful thing about new teammates is that they know nothing. Well, they know nothing about your team’s particular way of doing things, which is the sweet golden nugget that every good cheat sheet is built upon.
So my strategy is this: whenever someone asks me how to do something, I sit with them and help as much as I can, and very politely ask that they document what they did in the cheat sheet. This is beneficial in so many ways:
Once you’ve reached critical mass, the rest is easy. But I still have a few more tips for maintaining participation from the rest of your team. The golden rule here is keep friction as low as possible:
Don’t nitpick: if a teammate sends you an entry to approve, hold back only if there are factual errors. After their entry is in, feel free to fix typos, clear up some phrasing and adjust the formatting. Keep their friction to a minimum.
Go easy on the structure: Categories and menus and order are great, but maintaining taxonomy is hard. Let others just add their entries to the bottom and either sort it out later, or keep it that way.
Optimize for copy and paste: It’s great to explain the rationale of how something works, but cheat sheets are mainly useful for repeated tasks that are easy to forget. For programming, this is likely to be command line operations (e.g., an entry on how to run a local version of your server). Make sure snippets can be easily copy and pasted in the command line. This includes:
$
out of the $ cp /path/from /path/to
snippet).mytool <file> --flag --another-flag
with mytool --flag --another-flag <target>
, so that it’s easier to copy, paste, edit and run. Another options is to use environment variables, e.g., mytool ${TARGET} --flag --another-flag
so that readers could set that once and use the exact copied command.Keep it as a one pager: Regardless of whether you keep your cheat sheet in Google docs, Confluence, Wiki or a Markdown file under version control, keep everything in one “document”. It’s easier to search in a huge page than navigate a complex structure.
Make it searchable: If you can’t (or won’t) use the one-pager approach, make sure entries can be easily found by adding relevant keywords. If you’re using a dedicated system (such as Atlassian’s Confluence), add as many relevant labels as you can for each page.
Make headers linkable: If possible, make sure you can link directly to specific entries inside the cheat sheet, so new folks can get what they want quickly and not feel lost in a huge block of text.
]]>All Tool Reports:
I practice Getting Things Done to manage my day-to-day tasks and activities. I use MyLifeOrganized to manage all my actions, someday/maybes, projects, etc. Watch this space for a blog post on how I use it.
MLO is very different to other tools I’ve tried. It’s extremely, aggresively, over-the-top configurable. So it allows me to use whatever system I want. In exchange, it required to give up the hand-holding approach that was so comfortable in FacileThings, like the “Weekly Review” wizard.
MLO is the best tool I tried, but the biggest disadvantage is the total lack of APIs and it doesn’t seem like it’s going to get any, anytime soon.
I use Gmail as my one and only mail client.
I use Google Sheets to track my health measurements and a few financial details, but not so much otherwise.
IFTTT is a great tool for integrating different services. I use it to automatically create a project in MLO whenever a Pull Request is open in one my projects, to record body measurements in Google Sheets, etc.
A couple of years ago, I took a course in Spoken Arabic. I use Anki daily to memorize vocabulary and grammar. It’s a great application (both desktop and phone), but it’s very… involved. I have over 1000 notes in my system. I wrote a post about my 10 Tips for Learning a Language with Anki.
Currently, I use Anki to teach my almost-4 year old daughter to read!
Whether I’m driving, walking the dog or doing the dishes, I’m most likely listening to a podcast. I like Pocket Casts because they have a very polished UI and they allow to cast the audio to a Chromecast or Android TV device.
Here are the podcasts I’m currently subscribed to, in order of descending preference:
If I’m not listening to a podcast, I’m probably listening to an audio book, and Audible has a huge variety of them. I used to have a subscription, but I noticed that it’s usually cheaper to buy the kindle version of a book and add narration than it is to buy just the audiobook or pay for a subscription. It’s a really weird pricing model, but that’s the way it is.
Whenever I actually read and not listen to a book, I do it on my Kindle Oasis. I like the Oasis because it has actual physical buttons and a wide margin to hold on to.
I’ve grown to love Google Play Music, so of course it’s going to shut down. These days, syncing my music is mandatory, and Google Play Music had the best upload and automatic sync experience of all the apps I tried. You’ll have to take it from my cold, dead hands.
I use different headphones for different purposes. If I’m at work and I want some god damn peace and quiet, I put on my Bose QuietComfort 35 ii Noise Canceling Headphones. (recently upgraded from QC25 - and love that it’s wireless!)
My go-to listening device whenever I’m out on the town, walking the dog, doing chores at home or at the gym, I use my Jabra Elite Active 65t. They’re really comfortable and flush with the ears, which I like.
My Aftershokz Air headphones got demoted from the go-to slot to my bike-riding device. They work on bone conduction, so that your ears are free to hear cars coming to run you over. Also, wireless.
When I got a new TV, I made sure the OS was Android TV. Partly because that’s what I had in my now-dead Nexus Player, partly because I rather choose an OS that isn’t tied to a specific manufacturer.
Connected physically to an Ethernet port for maximal 4K viewing pleasure.
Plex is a media server you can run locally and then access from any web browser or (like I do) Android TV. I use it to watch downloaded (totally legal) movies and series and my TV.
I think Netflix is self-explanatory at this point, don’t you think?
Let’s get down to business!
PyCharm is my favorite Python IDE. It has a great interface, a really customizable configuration and most importantly - a pretty solid Vim plugin (IdeaVim).
When I need to edit one-off files (or posts for this blog) I use Sublime Text 3. It has a reasonable Vim plugin (Vintage).
I use Github for both public and private repositories need. While I prefer Mercurial over Git (yes, I mean that), Github is so good that it’s worth suffering Git for (pitchforks in the comments, please).
(Got a new Pixel 2 3!)
Man, I love me some USB Type-C!
My trusty desktop is still alive and in good condition:
Both my personal and work laptops are Lenovo ThinkPad Carbon X1s. I just love those little, err…
Oh, man, it took me some time to get my home network running smoothly (30 years, give or take), but it finally happened. I changed my infrstructure provider to one that uses fiber optics cable to the apartment complex and routes a single Ethernet cable to each apartment. This is great because it doesn’t require a modem, and most modems suck. But I still have a complex home network because I have multiple devices that I want to connect with an actual cable: in the home office I have 2 desktops (for me and my wife), a docking station for my corporate laptop and one of two Google WiFi mesh points that provide WiFi coverage to every place in my house. From there, I have an Ethernet cable going through the wall all across the house to the living room, where I have another mesh point connected by wire, alongside the smart TV and (sometimes) a Steam Link.
But the secret sauce is this: to get all of this working, I need two “dumb” switches. Since I had a bunch of old routers lying around, I just configured them to act as switches. But we still had recurring network issues, so I’ve decided to buy the actual dumbest switches I could find - no web interface, nothing to configure, no options whatsoever. And it Just Works™.
I currently have a three
Google Home Minis:
on the kitchen counter, in the living room and in our bedroom. I use them mostly
to play music or podcasts for my daughter, while I cook, and maybe the
occasional timer.
(switched from 1Password, though I don’t recall exactly why?)
Having a different password for each login is secure, but hard to organize. I use Dashlane to generate random, secure passwords while storing them in vault that is itself secured by a very strong password which is the only one I need to remember.
F.lux makes the color of your computer’s display adapt to the time of day, warm at night and like sunlight during the day. I’ve been using it for years and it has definitely improved my sleep.
When I’m not programming or writing blog posts, I play video games (also, to a lesser extent, spending time with my wife and daughter or play board games).
My current recommendation, plus the reported time I spent on them, according to Steam:
I have an Oculus Rift, though I rarely play with it. When I do, I recommend:
]]>