• Steven Wolfram - Seeking the Productive Life - Literary Notes

    I read about Steven Wolfram’s personal infrastructure. He develops his approach to just about everything using the tools that he built. I’m guessing this approach works great for building Wolfram as a giant feedback loop but not directly transferable to others.

    Some of the ideas I liked were combining emails and notebooks as primary sources for working on various projects. The starting point and rallying point for all his work are notebooks though.

    Over the years, I’ve accumulated over a hundred thousand notebooks, representing product designs, plans, research, writings, and, basically, everything I do. All these notebooks are ultimately stored in my filesystem (yes, I sync with the cloud, use cloud files, and file servers, etc.) And I take pains to keep my filesystem organized—with the result I can typically find any notebook I’m looking for just by navigating my filesystem, faster than I could formulate a search for it.

    He files them all manually using a simple strategy of active vs archive laid out as projects. The filenames themselves are ordered but that’s about the extent of the filing schema.

    That seems like a more useful way of organizing things (what am I trying to do? or what am I trying to answer?) rather than generic buckets of “work”, “personal”, and “refile” like I use. Maybe it’s time to start bucketing things more intentionally (though for org-roam, I’ll stick with structure notes for that) and stop worrying about cross listing.

    He also talks about writing in notebooks, mixing them with screen captures and sometimes running computations in them. This reminds me of org-mode and using org-babel to evaluate code and display the results in the document (or even in-line using org-macros).

    There is an extensive indexing system he uses for personal search. This includes emails and notebooks, which again, seems very useful than the disjointed experience most of us have because our digital lives are siloed. He seems to have solved that for himself and building a company to do it (half joking).

    Then there is a personal dashboard that serves as a jumping off point between all of his resources that he revisits many times per day. I find that using org-agenda for work is starting to serve a similar role (for example, listing goals as well as tasks).


    Published

  • Merging Task Management for Work With Org-Roam

    I want to combine org-roam setup with my task management setup for work.

    This will:

    • Add the concept of a ‘project’
      • org-capture can be used to create projects, capture tasks, and refile them to the correct project
    • Make agenda view more flexible to organize around what I’m trying to do instead of partitioning by work or personal
    • Add the ability to organize using backlinks (e.g. find associated people, related projects)
      • Mention an entity by inserting a link and typing
    • Resolve the split-brain problem between work and private life

    Biggest risks:

    • Notes are publishable and public by default, accidentally leaking information would be bad
    • Latency of org-agenda could make it unusable if all org-roam notes can become projects

    See also:

    DONE Implementing org-roam for work

    [2022-11-05 Sat 08:45]

    • Create a project template for org-roam-capture Add project tag and private tag to the tag vocabulary
    • Create a person template for org-roam-capture This will be used to link a person to notes and projects. It will also be used to generate tags automatically to make finding tasks grouped by person easier
    • Create a project note template Add a private tag to make sure it’s never published add a project tag so we can search later for only projects
    • Migrate one project to the new format
    • Project names look ugly when using org-roam slugs Is there a way to use the title instead of the filename in org-agenda?
      • Can set the CATEGORY property to the title of the project
      • Modify org-agenda-prefix-format but you can’t template the title property and I couldn’t find an expression that would work inline
        (org-agenda-prefix-format " %i %?-12(org-format-outline-path (list (nth 1 (org-get-outline-path)))) ")
        
    • How will this work on mobile?
      • Use Beorg? Hooking up my zettelkasten files will slow it down/crash it
        • Is there a way to limit which files Beorg picks up?
          • There is todo-exclude-files but there is not a way of specifying add just these files
        • Maybe just use it for capture on the go but not an agenda
        • There is a “subfolder” feature that adds a notes tab but it won’t pull in tasks automatically
      • Use Working Copy and sync with git pull/push
        • Would need to remember to commit and push when stepping away from the computer
      • Decided on only using Beorg for capture on the go, that’s it and that’s all it can really do in this system without significant effort to sync a dynamic list of files to Dropbox
    • [-] Should all work tasks be tagged? Will that make it easier to partition? Will come back to this
    • [-] Update the find note commands to exclude work or personal notes Will come back to this when it’s needed

    DONE Update org-agenda to always include org-roam files tagged as projects

    [2022-11-19 Sat 07:53] For now, add each project to the agenda list files C-c C-[

    DONE Search for only projects not all notes

    • State “DONE” from “TODO” [2022-11-19 Sat 08:06]

    [2022-11-19 Sat 07:43]

    (defun my/org-roam-node-find-project ()
      (interactive)
      (org-roam-node-find
       nil nil
       (lambda (node)
         (seq-contains-p (org-roam-node-tags node) "project"))))
    (global-set-key (kbd "C-c n p") 'my/org-roam-node-find-project)
    

    Published

  • Documentation as Customer Success

    Self-serve businesses that sell complicated software (like an API) can use documentation as a way of augmenting or replacing customer success. For example, early Stripe did not have sales or support but created outstanding technical documentation that was always available—you didn’t need to schedule a call to discuss implementation or answer questions, you could figure it out yourself.

    Having really good documentation enables a different kind of go-to-market plan. It wouldn’t make sense for a business to build a Customer Success organization to spend a lot of time with customers spending very little. Documentation enables selling to segments of the market at scale that would previously be cost prohibitive.

    See also:


    Published

  • Some Brain Functions Might Be Quantum Processes

    An experiment suggests that quantum processes (entanglement) might be used by brain functions which could explain memory performance and conscious awareness.

    The researchers used a quantum gravity experiment to measure the proton spins in ‘brain water’ using an MRI. They deduced that the likely explanation for entanglement they observed is that the brain must have quantum process mediating it.

    If the brain has quantum processes the implications for AI research and quantum computing could be huge. The two fields might be more closely linked than we thought.

    See also:

    • This sort reminds me of the book Hard-Boiled Wonderland and the End of the World—if the multiverse theory is correct, might we experience infinity in our thoughts?

    Published

  • A Strange Loop and the Illusory Self

    One of the key points of I Am a Strange Loop is how the “I” develops into consciousness. The constant reinforcement (and self-enforcing) of the “I” gives rise to perception, symbols, meaning, and reality. On the other hand, the key point of mindfulness (at least to me) is recognizing the illusory self.

    If the self is an illusion then it must not be real. The “I” is merely an abstraction over consciousness that disappears upon closer inspection (in meditation, this is the “look for the one who is looking” idiom). However, abstractions themselves are real.

    Does the “I” give rise to consciousness to begin with or is it the other way around? Does the failure to inspect the strange loop in consciousness make it an illusion?

    Maybe both are true. Everything arises in consciousness and the “I” is inseparable from reality.


    Published

  • Org-Mode Inline Macro in the Buffer

    In org-mode, macros can be used to expand text but are only visible when exported. However, by combining org-macro and emacs' built in font-locking system, you can expand macros inline in the buffer.

    For example, here’s a macro that expands to the text returned by an elisp expression which gets today’s date. In the buffer, you don’t get to see the expanded value (though it does show up if you export it).

    #+MACRO: today (eval (format-time-string "%m-%d-%Y"))
    
    * Today's date is {{{today}}}
    

    Adding the following to your init.el tells emacs to font-lock text in org-mode buffers when it sees triple curly braces. Using the display overrides the text shown when there is a match. Then the macro is expanded programatically the same way (for the most part) org-mode does it during export.

    ;; Display macros inline in buffers
    (add-to-list 'font-lock-extra-managed-props 'display)
    
    (font-lock-add-keywords
     'org-mode
     '(("\\({{{[a-zA-Z#%)(_-+0-9]+}}}\\)" 0
        `(face nil display
               ,(format "%s"
                        (let* ((input-str (match-string 0))
                              (el (with-temp-buffer
                                    (insert input-str)
                                    (goto-char (point-min))
                                    (org-element-context)))
                              (text (org-macro-expand el org-macro-templates)))
                          (if text
                              text
                            input-str)))))))
    

    Now you can see the macro expansion inline in the buffer.

    #+MACRO: today (eval (format-time-string "%m-%d-%Y"))
    
    * Today's date is 2022-10-29
    

    Published

  • You Can't Be Normal and Expect Abnormal Returns

    This quote by Jeffrey Pfeffer, professor at Stanford GSB, sums up the difficulty of achieving something different by doing the same things. You can apply this to “success” or any venture really. For example, it’s highly unlikely that Tony Hawk became the best skateboarder ever by living a conventional life.

    There is an important nuance that I think people forget—it’s not about personality, it’s about behavior. Emulating Steve Jobs personality completely misses the point, his moodiness and assholery did not a good product make. It was the cultivation of taste and building a cathedral with maniacal focus and decision making. He was extreme, but I highly doubt being an asshole was the essential part.

    See also:


    Published

  • Using Org-Agenda for Work

    This is a work-in-progress as I’m still refining an org-agenda centric workflow. Here’s what I’ve learned so far.

    The key problem I think this system should solve is 1) trust that something wasn’t lost or forgotten 2) what to do next. Everything else is nice to have.

    You can’t get everything into org-mode. There will always be some incompatibility like getting your calendar synced using GCal. If you don’t accept that, you’ll never actually use it.

    The default org-agenda has too much stuff going on if you have 100s of items. I realized I need multiple views of the same things to keep focus. One for the day and another for a fortnight. I look at the day view the most because it has mercifully few items. I look at the fortnight view to think ahead and plan.

    Having separate org files is a bit cumbersome. It’s best to always use org-agenda to interface with tasks. Otherwise, there is a lot of manual file opening and searching.

    Including goals at the top of the agenda to help focus my attention on what matters. I wrote a small function to inline macros in the buffer so I can see things like how many days are left to hit the goal.


    Published

  • Bill Belichick on Long Snappers

    I watched a press conference of Bill Belichick being asked about long snappers and whether it’s worth having a dedicated roster spot for a specialist. I don’t particularly care about this but I was struck by how thorough and detailed Bill’s answer was.

    He explains how the league started with more generalists—players who could do special teams and long snap. As strategies changed, it became more important to have a specialist long snapper who could block. If you saved a roster spot by having a player who performs more than one role well, there is a risk they could be injured. The league evolved to specialized roles for punters, kickers, and long snappers as a result.

    I watched all 10+ minutes of it because it reminds me there is infinite detail in just about everything. Things can seem so simple and but is more likely a failure of imagination of how deep it goes.


    Published

  • UI Rule of One

    There should only be one primary action the user can take on the screen at a time. When there is more than one action to take it becomes confusing. Which should I do first (ordering)? Which am I supposed to do (decisions)?

    As a simple analogy, think of the difference between a plane’s cockpit and a soap dispenser. The former is filled with knobs and switches for all sorts of functions, the latter has only one thing you can do—get soap.

    If you want to make UI feel intuitive, requiring little to no explanation, distilling the interface into a series of single actions (choices) is your best bet.

    That doesn’t mean there isn’t a place for more complicated interfaces, but if you see this happening, you’ll know it increases the level of understanding needed by new users.


    Published

  • Tag Vocabulary

    Tags are used to create heterarchical systems that lets you iterate on retrieval. The tag names are abstractions like categories, projects, or ideas that are encoded on top of a set of items (like notes) to make it easy to find later.

    A built-in assumption with tag-based systems is that you will use tags consistently—a tag vocabulary. That’s why tags are much easier to develop individually than as a group. It’s easier to map your way of retrieving information than having others agree on how to collectively retrieve information. Twitter hashtags are the exception, but I would argue these are a form of Schelling points.

    See also:

    • org-mode uses projects (hierarchy) and tags (heterarchy) to manage large numbers of tasks
    • My tag vocabulary is used for driving functionality rather than organizing topics

    Published

  • Schelling Point

    Coordination in the absence of communication. For example, two players in a game can’t talk to each other but they want to team up for a quest. They show up at a time that seems most likely (noon) on a day that is most likely (New Years) in a place that’s most likely (an inn). This works because people can use the shared context of their world to superimpose coordination.


    Published

  • List of Boring Technology

    The following list of things are my choices for boring technology.

    Backend programming languages:

    • Python
      • Frameworks:
        • Django
        • FastAPI
      • Package manager
        • pip

    Frontend programming languages:

    • Javascript (TypeScript is nearly there)
      • Frameworks:
        • React
        • React router
      • Package manager
        • npm
        • Use create-react-app for as along as humanly possible

    Databases:

    • Postgres
    • MySQL
    • Redis

    Deployment:

    • Ansible

    Hosting:

    • AWS

    Notes:

    • I’m hoping terraform to become boring. It looks like more engineers have experience with it, but few have set it up from scratch.
    • There are no boring package managers or build tools for the JavaScript ecosystem.
    • Redis used to be novel, but now it’s boring which is good. Try not to use it in novel ways though.

    Published

  • Founders Should Write the Check for All Expenses

    For as long as possible, in an early-stage startup, one of the founders should write the check for any expenses of the company. That includes payroll, vendors, SaaS subscriptions, professional services, and how much you’re paying accountants and bookkeepers (whom you may incorrectly think are looking out for the company’s cash).

    The reason this is so important is that expenses tend to grow very rapidly as the company grows. Left unchecked, you can get surprised by large bills and overpay for a long time. Every dollar going out is a dollar less in runway.

    It takes money to grow, but startup failure is nearly always due to running out of money. Shouldn’t you keep an eye on that?

    See also:


    Published

  • Getting to 1,000 Clicks per Month in Google Search

    My personal site now gets 1,000 clicks per month from Google searches. It took two and half years of consistently adding content nearly every day to get to this point. There are 884 pages indexed by Google and 186 that are not (for mysterious reasons). It takes ~24k impressions to deliver 1,000 clicks. The majority of the content comes from my published notes rather than longer form content like blog posts or essays.

    It’s kind of incredible how much content is needed to generate a comparatively small amount of traffic through SEO. This could be because the things I write about tend to be fairly niche and far ranging in topic.

    See also:


    Published