• Reverse Chronological Content Took Over the Web

    The majority of websites of the ‘old web’ (1990’s) were hand crafted, highly customized places where creators acted more as librariansโ€”carefully maintaining a table of contents and some evergreen content. This all changed with the introduction of Moveable Type, a CMS that took the labor out of publishing content and democratized a minimal, organized, aesthetic.

    As a result of Moveable Type, reverse chronological content (blogging) became the majority of the web. This stemmed from the constraints of the software (only one way to sort content), but the effect was profound. A table of contents was replaced with a feed of content. It was far easier to publish new content so that’s what people did.

    See also:


  • Reflections on Writing 500 Notes

    I’ve now written 500 notes and roughly 84,000 words since May 25, 2020 in my Zettelkasten. Here are a few thoughts and observations.

    I started out writing too many notes that were definitions. For example, I would come across an interesting word or concept I want to recall later so I cut a new note for it. The problem with accumulating notes like this is that the collection becomes more of a dictionary which requires rote memorization to be put to use. I have a hard time remembering those notes and connecting them to other notes.

    Compared to definitions, notes written as a claim are far more interesting and useful. I find it avoids the wikipedia feel and leads to more creative ideas. I still write some definition notes, but they tend to serve as pointers to a group of related notes via backlinks.

    I’m certainly writing a lot moreโ€”adding notes at a rate of 1,000 per year[0]. I’ve built a durable habit of writing every morning[1] which I look forward to each day. I can see the daily progress because publishing notes visualizes growing knowledge.

    However, I’m not continuously synthesizing these notes into other durable artifacts like essays. There’s some amount of reaping and sowing that I’m missing. I’ll need to make this an explicit goal and set aside some morning writing time to work on essays occasionally.

    I have a better mental model for connecting content by adding links as if I am curating a path along a garden. The amount of links per note has noticeably increased over time[2]. I’m also better at spotting individual concepts and ideas so I can appropriately cut a new note. This leads to better connections because it’s easier to connect more specific things together than more general things.

    Publishing notes daily has resulted in twice the traffic to my personal site from search engine traffic. The effects of note blogging on SEO make it so I’m constantly extending the long tail of keywords the site is ranked for. This creates a virtuous cycle because my interests are wide and niche which adds more unique keywords which draws more impressions and clicks.

    I’ve evolved my workflow for writing and publishing over time to make it easier to contribute across devices (which I wrote about in Zettelkasten, Emacs, and Creative Thinking). It’s complicated, a bit clunky (need to constantly push/pull from a git repo), and would be difficult for others to adopt. This led to me starting a side project to focus more on note blogging and building tools that combine the benefits of a Zettelkasten with publishing.

    Finally, it takes some time to ‘get it’. I read somewhere that the benefits of note taking like this don’t kick in until around 500 notes and there is some truth to that. I have a much better idea of what I want to get out of it and I’m seeing evidence that my collection is like a second brain that I can consult when doing my own thinking. Pretty neat!

    [0] Notes per month

    Month Note count
    2020-11 25
    2020-10 88
    2020-09 73
    2020-08 110
    2020-07 108
    2020-06 86
    2020-05 13

    [1] Notes per day

    Month Notes per day
    2020-11 2.88
    2020-10 2.83
    2020-09 2.51
    2020-08 3.54
    2020-07 3.48
    2020-06 2.96
    2020-05 3.25

    [2] Links per note

    Month Links per note
    2020-11 2.57
    2020-10 2.20
    2020-09 1.79
    2020-08 2.17
    2020-07 1.90
    2020-06 1.86
    2020-05 2.50

    See querying stats from org-roam for how these queries were made.


  • The Garden and the Stream

    Streams are a metaphor for the majority of the Internet we interact with today characterized by time-ordered events that require context to understand.

    For example, try going back to a tweet from a few years ago and try to glean it’s full meaning. It requires contextโ€”when did it happen, what do we know about the author, what was it in response to, etc.

    Facebook, Twitter, Instagram are the pinnacle of the stream. Content is an argument (not even a dialogue, typically a nameless ‘them’), real-time reactions, and primarily ephemeral.

    Gardens are different. There is no singular relationship of elements (i.e. a heterarchy) in a garden, no strict hierarchy or chronology. It emphasizes the reader (or creator) to find their own connections between objects in and draw their own path.

    For example, content in a digital garden is evergreen and evolves over time. There are many links between content the creator places to connect meaning and generate context over time. Adding content and connections extends the meaning of what already exists without needing to rewrite it.

    As a counter example, consider a blog post. It’s a snapshot in time of a collection of ideas strung together. It’s unlikely to be updated and extended as the author acquires new information. They could write a ‘part 2’ sequel, but this introduces a new strict hierarchy of ideas and requires reading the previous parts to fully understand the context.

    Read the essay.

    See also:


  • Effects of Note Blogging on SEO

    Since I started publishing my Zettelkasten notes, I’ve noticed a large change in overall search engine traffic. My personal site and notes have doubled in impressions and clicks. Notably I receive more impressions from search engine visitors than I do from tweets from my Twitter account.

    I’ve noticed some compounding effects that lead me to believe these effects will continue. As more notes are published along a wider range of topics (I’m naturally curious!), notes rank for more keywords (a very long tail), which increases impressions and clicks which further improves ranking and page authority. Even better, this content is evergreen once it’s indexed by search engines and increases in value over time. This is the exact opposite of tweetsโ€”most impressions happen in the first few hours and is unlikely to be found again because they are primarily consumed in a stream.


  • Convenience Is King

    People tend to take the path that requires the least effort to satisfy a need or want. You can often predict people’s behavior by merely understanding the convenience of each option.

    See also:

    • Atomic Habits: you can improve the likelihood of forming a habit by making it easier to take an action (e.g. sleeping in your workout clothes so you don’t need to change to do a morning workout).

  • The Complexity of AWS Lambda Stems From the Need to Internalize the Runtime Model

    On it’s surface, AWS Lambda seems simpleโ€”it merely invokes a function with some arguments. However, the complexity is deceptively high. This is best highlighted when something goes wrong.

    Debugging can’t be done remotely so you need to rely on logging, which you need to get from CloudWatch (which is clunky in it’s own way). If you don’t have a log line in just the right place you need to do a full deploy which includes zipping all files that are needed to execute the functionโ€”for Node, that includes the entirety of node_modules which, even for simple things, can be 10s of MBs.

    You also need to contend with the async nature of Node. It’s easy to write your handler only to find that it runs, but doesn’t fully execute. Somewhere you are not awaiting a result and so an early return means the event loop is empty and the runtime thinks you are done. In one case, I could invoke the function locally and it worked just fine (using the serverless cli tool), but in Lambda it failed.

    Finally, the arguments passed in (an event and a context object) are themselves opaque. If you invoke a Lambda from a specific context, it may or may not include some authentication information when using AWS Cognito. You need to keep all of these details in your head, most of which can only be discovered by runtime failures (which I already mentioned are clunky to debug).

    The overall feedback loop is slow (slowness begets more slowness) and difficult to debug due to incidental complexity.


  • Replace Kb With Lbs to Better Internalize Website Bloat

    Modern websites are filled with javascript, assets, tracking, and third-party tracking. This makes websites slow and sluggish (bloat). This is partly due to developers not having the right mental models for how the size of requests impacts performance and taking for granted that modern network speeds and browsers are fast. By replacing kb (kilobytes) with lbs (pounds) when looking at request size you can better internalize the weight of the requests your website is serving.

    Imagine delivering a package (some page request) to a user based on weight. 10 kb -> 10 lbs, no problem! 500 kb -> 500 lbs and that’s like trying to deliver two refrigerators.

    See also:


  • Projections Onto Different Dimensions Aids in Understanding

    A way of making concepts and abstractions easier to understand is to project them onto another dimension and scale. For example, the passage of time and what you can do with it is difficult to fully comprehend so a common projection is ‘time is money’. We understand money as a tangible asset and generally how much things cost (another projection is what you can buy with that money) which makes it easier to value time appropriately.

    However, choosing the wrong dimension is a logical fallacy. For example, asking ‘how red is the temperature?’


  • Heterarchical Note Taking

    Notes can be organized and structured into heterarchies (nodes with multiple relationships without a strict hierarchy) by creating an entry note that encompasses other notes (a note of notes). In Zettelkasten, this is referred to as a ‘structure note’. This has the advantage of late binding, you don’t need to worry about the hierarchy of information up front and multiple associations can be created using the same notes (which would not be possible without duplication in a strictly hierarchical system).

    Heterarchies provide a layer of abstraction over the constituent notes which makes it easier to make connections between areas of thinking. For example, when creating a new note you could review a structure note’s contents to spark ideas for how it might be related without doing an O(n) search through every note in the collection to see if there are connections.

    See also:


  • Performance Archetype of Engineers I've Managed

    Below are some shapes of engineers I’ve managed in my career and what I’ve learned about them. Pattern matching based on experience is important in an experiential field like management.

    Trait Behaviors Lessons learned
    Brilliant, unfocused Extremely productive and helpful, spends time on the wrong thing and spreading their impact too wide Reduce quantity of extracurricular activities, taking on tasks outside of the team should meet the ‘uniquely capable’ threshold
    Unproductive, un-engaged Has the skills, but not delivering enough impact This is very difficult to recover, move them off to another team or manage out
    High output, needs to be pointed at the right problem Highest output on the team, but needs guidance on applying that raw output to be effective Defining the right problem on their own can be difficult, identify the right altitude of problem for them to work on to unlock their abilities
    Technically focused on a product team Tends to raise the importance of building higher quality or new abstractions not taking into account the context of the product, market, or user Set a decision framework for incremental code improvements, avoid rewrites, coach on the business needs and product thinking
    Hard working, low skill Works really late, always busy, but low output or low quality Improve hiring bar, don’t overvalue hard work and avoid spending large amounts of time with low-performers
    Learned helplessness, blames others or codebase often Avoids accountability, low quality output or slow, very unhappy or pessimistic Tends to be an environment mismatch, deliver strong and clear feedback and move quickly to manage out
    Self-righteous, dogmatic, disruptive Strong opinions tightly held, thinks everyone else is wrong or doing a bad job, teammates complain about code reviews Coaching can work, but if there is any negative impact (e.g. people don’t like working with them) need to act very quickly or top performers will leave
    Higher ownership, generalist Tend to act as the founders would act, with a wide range of skill they are company builders Nurture by giving stretch opportunities, encourage stepping out of role, build a better framework for measuring their success
    Disagrees in private, disruptive to management Talking to them everything is fine, even when addressing a disagreement, but shares resentment privately Disruptive for the management team, can be difficult to address. Address directly, if there’s a pattern then move on
    Low output, says all the right things When given feedback they say all the right things, some immediate improvement made, but same issue recurs Recurring low output feedback is a big red flag, especially for senior engineers
    Highly skilled, entitled Doesn’t feel fully utilized, complains about compensation, moves around a lot Ask if they really want to be here, turn their feelings into a challenge and action

    See also:


  • Lowering the Federal Funds Rate Causes All Asset Classes Increase in Value

    Lowering the interest rate has the effect of decreasing the risk for every asset class. This causes the expected return to go up and thus the value of the asset which leads to more buying of assets (for example getting a mortgage for fear of missing out) and greater optimism in the market (more risk taking). This is how the Fed tries to stimulate the economy.

    However, this also makes it harder for lower risk investing (for example pension funds with a 5-7% target return), they will need.

    Low rates make risk aversion harder to practice and risk taking more palatable.

    See also:


  • Perfomance Management Calibrations

    A process for managers and senior leaders to discuss the performance across the organization with the goal of consistently and fairly applying expectations for all roles and levels. This helps to decrease the importance of individual’s personal judgment and biasesโ€”managers are more of an instrument of the performance process rather than the sole arbiter.

    Calibration meetings are scheduled where managers and org leaders review all the performance snapshot packets for the organization and decide on final performance designations. The outcomes are reviewed by organizational leaders and the leadership team to spot check for consistency/fairness and review special cases (low performance, high performance, promotions). Sometimes follow-up information is needed to finalize the designation the manager will be asked to gather.

    See also: