• Personal Infrastructure

    It’s useful to think about the underlying utilities that go into running one’s life and business with the same rigor used to build something significant. Afterall, the things we rely on every day can have an outsized impact on our own performance so why not treat it that way?

    What’s important

    If we are going to intentionally design personal infrastructure, we should be clear what it’s all for. For me, personal infrastructure is in service of a few top level priorities.

    • Notes Creating bits of knowledge for myself through writing, journaling, and publishing.
    • Work Building a business, focusing on the most important goals, recalling and sharing information, and solving problems.
    • Personal Taking care of myself and my family, organizing projects, not forgetting something important.

    Principles

    Next, a set of principles to help guide choices and make it more obvious what the to priorities should be.

    Below are the list of principles I keep in mind.

    Centralized

    Tools and systems should be as accretive as possible. Improvements to one area should improve many things at once. Everything should work coherently as a whole.

    • Emacs and org-mode is the central interface to all information and systems
    • Graft it together with reusable building materials (elisp)
    • Either everything is run in Emacs or everything can be run in the browser (including emacs)
    • Specialized OS tools notwithstanding (VPN, Screen caps, password manager, AV, etc.)

    Portable

    • Run everything locally with few exceptions
    • I should be able to take the entire setup onto any machine within a day
    • It should be possible to get work done without an internet connection
    • It needs to work on mobile, with a form factor that makes sense (e.g. ssh’ing from a phone might work but doesn’t fit)

    Open

    Favor building in the open and using materials that are inspectable, changeable, and long lasting.

    • Whatever I build does not intend to be commercialized
    • Share knowledge with others by making it open-source to those who might try to solve similar problems

    Secure

    Security and privacy needs to be designed in. Sensitive information is constantly being created and shared—I want to be a good steward of that.

    • Endpoint security controls with good defaults and practical
    • Use a password manager and make it easy to use everywhere (1Password is still the go to)
    • Privacy controls built into what information goes where

    One of one

    Built specifically for me and my workflows without consideration another user of the system.

    • Favor application building over library building
    • Optimize convenience in maintaining and running tools

    What should I build?

    Finally, with a more clear understanding what it’s all for and the principles behind it, what should I actually build?


    Published

  • Org-Mode Count the Number of Headings in a Region

    Sometimes I want to see how many headings are in an org-mode file I’m working in. For example, I like to know the number of items I have to refile.

    This function will count the headings in a marked region:

    (defun count-headings-in-region (start end)
      "Count the number of level 1 headings in the region."
      (interactive "r")
      (save-excursion
        (save-restriction
          (narrow-to-region start end)
          (goto-char (point-min))
          (let ((count 0))
            (while (re-search-forward "^\\* " nil t)
              (setq count (1+ count)))
            (message "Number of level 1 headings: %d" count)))))
    

    This code was generated using ChatGPT with Emacs.


    Published

  • Internet Speed and NordLayer

    I tested my internet connection with and without NordLayer VPN to compare speed using Cloudflare’s new tool. Here are the results.

    NordLayer Home
    Download 40.7 Mbps 80.5 Mbps
    Upload 13.4 Mbps 16.6 Mbps
    Latency 89.1 ms 21.1 ms
    Jitter 4.41 ms 3.33 ms
    Packet Loss 0% 0%
    Video Streaming Average Average
    Online Gaming Average Poor
    Video Chatting Good Average

    There’s quite a large drop in download speed and increase in latency when using the VPN which is to be expected.


    Published

  • Sink That First Stake

    Physically making progress on a project makes it much harder to undo due to loss aversion and the sunk cost fallacy.

    In The Power Broker, we see an example where Robert Moses learns that by intentionally underfunding a large scale project to make it easy to pass but taking the first steps to physically build it, officials had no choice but to continue to support it financially. Officials facing elections would need to stand before the electorate and undo what was already done (not just on paper) and therefore take an unfavorable position that could cause them to lose their place. Essentially this would force officials to go against building parks which would be hugely unpopular.

    Once you sink that first stake they’ll never make you pull it back up.

    See also:


    Published

  • When I First Started Programming

    When I first started programming, I thought everyone else was better than me at coding. I read about something new and thought I should do that too because they must know better.

    Then my skills improved a little bit. I wrote my own solutions and rejected what others said because I knew better.

    Then I gained experience. I trusted my judgement and realized I don’t always know better, but sometimes I do.

    See also:


    Published

  • Multiple Google Account Calendars With Combined Availability

    When you have multiple Google workspace accounts with calendars, it makes scheduling difficult (e.g. an external account and an internal working account). Others can’t see your overall availability without knowing to check both calendars. Tools that don’t support multiple account calendars for one person (like Ashby) will end up scheduling conflicts.

    How do you fix that?

    The easiest way I’ve found is to sign up for a free account from Reclaim AI. There you can sync multiple calendars into one so that anyone looking at your main calendar can see the aggregate of all the calendars.

    Now you can still have multiple accounts and calendars for different purposes (I have a sales account and a internal account) without disrupting others or scheduling conflicts.

    See also:


    Published

  • Knowledge Decay for Managers

    All working knowledge has a decay curve of usefulness. If you rely on having up-to-date, deep technical knowledge as a manager, you will eventually lose the thing that makes you effective. From personal experience, this happens after 6 to 12 months from when your primary activity becomes managing people.

    This is especially bad for managers that try to make technical decisions themselves—it works until it doesn’t. The results can be truly bad when the manager doesn’t know they are far out on the decay curve.

    What can you do about it?

    For managers, it’s a lesson in delegation and leadership. Support others with the right depth of technical knowledge to drive the decision and manage through them. Stay involved but moreso to apply good judgement—delegation not abdication. It’s possible to stay close to the details but try not to fool yourself into thinking it is at the same level of proficiency.


    Published

  • The Personhood of Self-Driving Cars

    Personhood of self-driving cars and autonomouse vehicles might matter much more than we expect for everyone’s safety. By treating them as soulless objects, people are making roads more dangerous.

    The other day I was in a dangerous situation. At an intersection I was about to walk through, a Cruise autonomous vehicle was waiting to turn right. A Tesla behind the Cruise got frustrated and went around it by going into the other lane, turning right and cutting off the Cruise. I was in the middle of the crosswalk and I got mad for the Cruise.

    I suspect the Tesla driver cut off the Cruise because it was an autonomous vehicle. The annoyance I had was due to the Tesla driver not respecting the personhood of the Cruise.

    Clearly this situation was more dangerous because of the interaction of a human and autonomous vehicle. This isn’t the only time this has happened and I’m sure we will see more examples.

    See also:


    Published

  • LLM Web Browsing

    By combining headless browser automation tools with LLMs, you can create an agent that can navigate to websites. This opens up all sorts of new capabilities like scraping and summarizing web content.

    What works well?

    • Going to a news website and extracting a list of articles
    • OpenAI gpt-4 works better than gpt-3 when using langchain to prompt to get headlines (e.g. asking for the top headlines on HackerNews gpt-3 fails without some hints about the HTML structure while gpt-4 works in one shot)

    What doesn’t work well?

    • Large web pages will hit the context limit for language models
    • Logging into a website doesn’t work because OpenAI will reject completion requests that contain sensitive data

    What else have others tried?


    Published

  • Thinking in Scenarios Simplifies Scoping

    When scoping out and planning work, an easy way to get a comprehensive understanding of everything that needs to happen is to enumerate every scenario. I find this technique saves a lot of time and clarifies what to do in a way that avoids surprises later.

    How do you do it?

    Start by laying out each variable (try using a scenario table). For a product feature it might be some aspect of the user and the action. For example: is the user new or existing?, did they take the action yet?, is the action complete or in-progress?, did something go wrong?

    This gives you a set of scenarios to enumerate: a new user who hasn’t taken the action, a new user who has taken the action but it’s not done yet, a new user who completed the action, a new user that encountered an exception (same for an existing user). Now you can trim down the list of permutations to the ones that makes sense and decide how to handle each one.

    That’s a trivial example, but I find the same technique is just as useful when negotiating a contract and wanting to make sure all your bases are covered.

    See also:

    • Many more things can be explained with finite state machines but it’s a little harder to understand compared to the scenarios technique
    • This also helps spot potential issues early like a pre-mortem exercise

    Published

  • Right of First Refusal

    A right of first refusal (RoFR) in an agreement is a deterrent to other acquirers. The acquirer wants to be in control and this automatically makes it a multi-bidder situation. The acquirer might not want to make an offer knowing that it might not go through and result in a different acquirer winning the deal.


    Published

  • The Pareto Principle and Chatbots

    Support cases at many businesses follow the Pareto principle. For example, DoorDash and Uber 87% of support requests relate to 16 issues. Deploying chatbots to solve high concentration issues makes it economical to build and maintain conversation trees by hand. What about the remaining 20% and what about businesses that have a wider distribution of issue types?

    Advancements in large language models might make the last 20% tractable if not economical. The general reasoning skills and ability to respond to unique situations with mostly right answers could be a boon for chatbot based support. What’s more, businesses can use their existing data to fine tune and supplement resolution paths using support materials they have already produced for human agents.


    Published

  • Reduce Damage of Shipping a Bike by Pretending It's a TV

    When Vanmoof started shipping bikes to the US, they experienced a high number of returns because the bike arrived damaged, despite there being warnings on the box to be careful. Rather than try to fix the US shipping industry’s practices, they did something very clever—they changed their packaging to make it look like it was a flat screen TV.

    The US shipping industry has many years of experience delivering flat screen TVs as the demand for them skyrocketed since the early 2000’s. I can imagine the big retailers had significantly more pull with the likes of UPS, FedEex, and even the US Postal Service to reduce damages during deliveries.

    By piggybacking off of years of safe flat screen TV delivery practices, Vanmoof’s shipping damages dropped by 70-80%.

    Read VanMoof files for bankruptcy protection from the Pragmatic Engineer.


    Published

  • Zapier NLA Is Bad at Generating API Parameters

    I tried out Zapier Natural Language Actions API and found that it’s not particularly good for the one thing I needed it to be good at glueing together other APIs with natural language. API endpoints that are simple and straightforward are easy for large language models to generate the right inputs but more complicated (and poorly designed) like HubSpot are unusable.

    This is a shame because mashing up simple APIs is trivial and the things that would relieve the most effort (like poorly designed APIs), NLA can’t do.

    Maybe this gets better eventually and Zapier adds enough special handling for HubSpot. I still think this could be extraordinarily powerful if it can become the substrate for interop rather than people.


    Published

  • Compounding Is Unintuitive Because the Initial Curve Feels Flat

    I’ve always wondered why the nature of compounding and any exponential relationship feels unintuitive. That is until I read this quote from Paul Graham’s essay How to do great work.

    The trouble with exponential growth is that the curve feels flat in the beginning. It isn’t; it’s still a wonderful exponential curve. But we can’t grasp that intuitively, so we underrate exponential growth in its early stages.

    We tend to understand immediate relationships easily, but when it comes to exponential growth over time, the outsized gain occurs at the end. That’s simple to visualize (draw and upward facing curve) but hard to know when you’re on it.

    It will feel closer to flat or linear when you are at the head of the curve over short time windows. Even more difficult, results are not always easily as observable. For example, how would you know you are thinking better thoughts?

    The point is, you might need to slog through some things for awhile to begin seeing the result of exponential growth that was already happening.

    See also:


    Published

  • Zoom Note Taker Bots Are Disruptive

    Several products these days have an AI bot that will join your Zoom call and take notes. That’s bad.

    It puts everyone in the meeting on edge. It’s like a courtroom stenographer sitting in on your call. I don’t want to be in a courtroom, I want to be in a semi-private conversation with other human beings.

    The UI of a bot joining a Zoom meeting is that they are an equal participant. They have a square filled with a black screen like someone without their camera on. They have a name. If multiple people use this kind of service, multiple bots join the meeting.

    This UI makes the bots feel more “there”, making it even harder to ignore.

    It’s okay to take notes (I would have no problem with a human participant typing up some notes as we go) but somehow I feel weird about a carbon copy transcript or video of the meeting. It feels like a permanent record that can never be expunged. What if I said something wrong?

    I don’t want to be “on the record” all the time.

    See also:


    Published

  • What's So Great About Michelangelo's David

    I am by no means an art buff but this is my explanation about what is so moving about Michelangelo’s David 500 years after it was made.

    When I first saw him at the Accademia in Florence, Italy it immediately struck me how large he is. At a height of nearly 17 feet, it’s immediately impressive, but that’s not what pulled me in.

    The most striking thing about this David is that we don’t know if the scene is before or after killing Goliath.

    Imagine for a moment that this is before the fateful moment—here he stands facing down an overwhelming force in Goliath. He shows courage, determination, composure, and vulnerability (literally standing there naked) knowing that all he has is his wits.

    That feels like life sometimes. We all have conflicts and problems. I get a clear sense of David’s interiority and see a piece of myself in there.

    Then the realization hit me and I couldn’t help welling up inside. Let me try to explain.

    Michelangelo encodes a humanist message here. David is massive in stature. He is facing a giant but what you feel looking at him is how immense he is. And that’s precisely the message—we are all David, confronting our hidden Goliath and we too can face it because we too are giant.

    What remains is an incredible sense of hope that is impossible to capture in words. That’s why Michelangelo’s David is great.


    Published