• Inter-Generational Partnership

    Long term work on inter-generational problems (e.g. climate change) requires inter-generational partnership. Fostering these relationships is difficult because thinking long term is undervalued compared to solving short term problems and those in positions of power tend to be from the previous generation (Planck’s principle) which tends to favor themselves (i.e. in-group favoritism).

    One way to promote this inter-generational partnerships is through shared heirlooms. Another is to provide legal rights to a future generation and empower them through existing systems (e.g. suing the government for climate change action on behalf of a future generation).


  • American Values Are Incompatible With Managing the Pandemic

    It’s unfortunate American values and belief systems are incompatible with successfully managing the COVID-19 pandemic. We resent or measures that are effective, but inhibit our freedoms or are even mildly inconvenient (social distancing, wearing a mask).

    Wearing a mask is the perfect example. All of the ‘rugged individualism’ that people identify with as being distinctly American is counter to thinking communally and putting the good of others above yourself. It’s telling that wearing a mask is more to protect others than it is to protect you and so many are unwilling to wear one.


  • Interior Mutability

    In rust, a variable is declared as mutable or immutable and all of it’s fields (in the case of a struct) are declared the same–you can’t mutate a field while also making a borrow of another field.

    This presents a problem for self-referential data structures. For example, in game programming it’s typical to have a top level GameState object that is mutated each frame which often requires reading from a field while mutating another which would cause a borrowck error (trying to take multiple references of GameState).

    The solution to this access pattern is interior mutability, wrapping fields you need to mutate in a RefCell. This provides runtime borrow checks with the ability to mutate a field while holding a reference to the struct.

    See also:

    • Blog post on interior mutability that recreates Cell to explain how it works
    • Splitting borrows is a similar method for mutating multiple parts of a list

  • Building a Note-Taking Habit

    Make it obvious: Journaling is the first thing I do in the morning after I take the dogs out. That provides the cue that it’s time to add to my notes as I reflect on the previous day. I can also look at the list of notes I took which sparks the desire to record them.

    Make it attractive: Very satisfying to do with a mechanical keyboard, getting to type at full speed. Habit stacking with journaling.

    Make it easy:

    • Separate the inputs from the notes, confidence they are periodically reviewed
    • Don’t need to fill in notes right away (e.g. drafts)
    • Customize the setup so that it works nicely in the environment I am most productive in (Emacs)

    Make it satisfying:

    • After adding notes, pushing them to github and seeing them live on the beautiful, minimalist website makes me feel accomplished (I’ve added accumulated knowledge) and I’ve watched my accumulated knowledge visibly grow.

    This follows how Atomic Habits recommends structuring a new habit.


  • Roadmaps Drive Valuable Discussions

    Roadmaps turn strategy into discrete units that will be worked on to accomplish a set of goals. By drafting a roadmap, you are turning something abstract into something more real. Adding detail makes it more real and drives healthy discussion about whether it’s possible to do it all (i.e. resources, staffing, timeline) and whether it will actually accomplish your goals (i.e. back of the napkin estimates of each ship should roughly add up).

    See also:


  • Podcasts Are Programmable Radio

    Users choose which podcasts they want to listen to and manually curate them into a listening experience on their own terms. They can pause, stop, remind, skip, etc. which is a way of scripting over content to suit their needs.

    Compare this to traditional radio which is engineered to reach the maximum general audience and provide listeners to advertisers. All content is fixed and the songs play on repeat.


  • Tragedy of the Commons

    Shared resources used by individuals with no ownership end up depleting it. Common examples include fishing (over-fishing) and forests (deforestation).

    One way that has been shown to combat this phenomenon is to create collaboration and shared risk/reward. For example, a fishery that grants shares to a lake where fishermen now benefit from the improving the value of the resource and start collaborating on rules and policies to conserve it.

    See also:

    • Principal-agent problem is a similar issue that can result in the depletion of a shared resource. You could view the individuals as the agents and the ecosystem of animals and plants as the principals whose interests diverge.

  • Adjacent User Theory

    Funnel metrics tend to decline with each successive cohorts as a company grows and saturates segments that have strong product market fit. On closer inspection of retention, this reveals adjacent users (not the power users or what you think of as the primary user persona) who struggle to adopt or continue using your product.

    Adjacent users have different needs and present opportunities to unlock new audiences. For example, Instagram noticed many international users logging out or using fake email addresses because they prefer text messages, use pre-paid internet cards, and were worried about using bandwidth. They made it easier to log back in (rather than harder to log out) which helped them better retain international users.

    To acquire more adjacent users, one should also consider the sequencing of which user so that it’s additive and makes it easier to get other adjacent users.

    Read the blog post