• Zealio V2 Keyswitch

    I’ve been using the Zealio V2 keyswitches on my primary keyboard for around 1.5 years so now is a good time to write about the experience. This has a distinctive feel to every keystroke that feels heavy at first (requiring more force than a standard switch) but ends up feeling crisp and snappy. The reason for that is the tactile design puts the actuation at the very top of the keypress with no pre-travel. Coming from more traditional MX keyswitches (I was using MX clear and MX copper) everything else now feels mushy.

    The sound is loud for a tactile switch. It has a higher pitch sound to it than the MX clears and because the actuation is at the top, you almost certainly will bottom-out on every keystroke. This is good for sound (thock!) but probably not great for any impact related repetitive stress injuries. The only negative is that there is a high-pitched spring ping on certain keys (the X key for me).

    See also:


  • Gazzew Boba U4T Keyswitch

    The latest hyped tactile keyswitch I’m trying out on my primary keyboard, replacing Zealio v2.

    Initial impressions

    To help me compare, I changed half of my keyboard to use the new Boba U4Ts and the other half using Zealios.

    It is noticeably quieter. The Bobas have a much lower-sounding ‘thock’ compared to Zealios which is very pleasing. There is also no spring ping on any of the keys. This might be because the Bobas came lubed but definitely an upgrade.

    The activation is noticeably more mellow than the Zealios. It still feels crisp (I may need to compare these to the MX Clears to remember what pillow-y feels like again) but it’s smoother. I tend to be a heavy typer so a more muted sound will pair better when taking notes during a meeting.

    The spring weight is about the same between the two (62g) but the Bobas feel a bit heavier. Too early to tell if it will lead to fatigue.

    Finally, something I almost never notice is key wobble—the Bobas have almost none. It makes the Zealios feel rattle-y in comparison. Any wobble makes no sound so there are no shuffling sounds with my fingers resting on the keys—I like this!

    Long-term review

    I’ll update this once I’ve had a chance to use these for longer.


  • Preview Note While Searching Org-Roam

    When searching for an org-roam note, the title isn’t always enough to tell if it’s what I was looking for. I want to preview the note without leaving the search interface (using helm).

    To do that, I adapted this helm source for org-roam.

    (defun helm-org-roam (&optional input candidates)
      (interactive)
      (require 'org-roam)
      (helm
       :input input
       :sources (list
                 (helm-build-sync-source "Find note: "
                   :must-match nil
                   :fuzzy-match t
                   :candidates (or candidates (org-roam-node-read--completions))
                   :persistent-action (lambda (x)
                                        (--> x
                                             (view-file (org-roam-node-file it))))
                   :action
                   '(("Find File" . (lambda (x)
                                      (--> x
                                           (org-roam-node-visit it t))))
                     ("Preview" . (lambda (x)
                                    (--> x
                                         (view-file (org-roam-node-file it)))))
                     ("Insert link" . (lambda (x)
                                        (--> x
                                             (insert
                                              (format
                                               "[[id:%s][%s]]"
                                               (org-roam-node-id it)
                                               (org-roam-node-title it))))))
                     ("Follow backlinks" . (lambda (x)
                                             (let ((candidates
                                                    (--> x
                                                         org-roam-backlinks-get
                                                         (--map
                                                          (org-roam-node-title
                                                           (org-roam-backlink-source-node it))
                                                          it))))
                                               (helm-org-roam nil (or candidates (list x))))))))
                 (helm-build-dummy-source
                     "Create note"
                   :action '(("Capture note" . (lambda (candidate)
                                                 (org-roam-capture-
                                                  :node (org-roam-node-create :title candidate)
                                                  :props '(:finalize find-file)))))))))
    
      (global-set-key (kbd "C-c n f") 'helm-org-roam)
    

    Now when I have a list of search results I can preview the file using the C-j without leaving the search session.


  • How to Work Asynchronously

    One of the greatest advantages that remote-first companies have is that work happens asynchronously. I lead to a culture of writing things down. It allows teams to be flexible between working styles and time-zones (up to a point). It creates a more equitable environment regardless of physical location.

    Despite the advantages, setting up an asynchronous working process can be tricky. Here’s a few simple playbooks to follow.

    This is a work in progress!

    Running a project

    If you’re running a project and the team works asynchronously, here’s what you need to do.

    1. Write a project brief Take the first stab at answering a key question. Talk to people as needed to get the information you need and be sure you have an initial answer.
    2. Share a link to the document in public channels, tag specific people for feedback, and ask that all feedback is added as comments to the document Comments in a document are naturally asynchronous. They act as an inbox for feedback and there should be no expectation that they will be answered immediately. If you get other feedback in Slack for example, direct people to add it to the doc (conversations get lost, are more synchronous, and chat apps are not a good place to find things later).
    3. Resolve the comments, have ad-hoc discussions as needed to gather more input Be editorial. Resolve what is necessary and decide what you won’t address. Anyone should be able to give feedback, but that doesn’t mean everything needs to be resolved.
    4. If you are unable to make all of the decisions, hold a meeting to resolve them and kick off the project

    Saving meetings for the end of the process reserved for making decisions (if needed) leads to a more inclusive environment. The interface for providing feedback is clear and avoids the tyranny of structurelessness.

    Even better, you now have a document you can reference as the project progresses and point people to if they have questions. (Documents are better than people at answering questions).


  • Levels of Accountability

    Accountability is a distinguishing feature of progressing into leadership roles. As a general rule, moving “up” means more accountability. Being a high performing contributor means being accountable for yourself. Being a leader means being accountable for others. Being an executive means being accountable for what you can not control (e.g. the market). There are many counter examples where leaders are not held accountable or getting promoted doesn’t increase the level of accountability, but acting as a principal is still the best strategy.

    The opposite of this (and something to screen for when working with others) is learned helplessness—there is a belief in one’s agency needed to take accountability. That’s why founders, who are accountable for things outside of their control, seem to require a controlled self-deception or they wouldn’t start anything. That’s why default optimism is rational.


  • Never Share Your Desktop When Screen Sharing

    When screen sharing, never share your whole screen. There is too much information that will be viewable on your desktop and infinite ways to accidentally leak private stuff. I can’t count the number of times someone screen sharing over Zoom accidentally had their personal chat messages showing or a browser tab with something embarrassing.

    A few simple rules for safer screen sharing:

    • Always select the option to share a specific window, never share your whole desktop (your desktop will show all of your open applications, new notifications, thumbnails of pictures, document names, and so on)
    • If you are sharing your browser, open a new window (not a new tab!) and share only the new window (your tabs contain a lot of information that is unnecessary to expose)
    • If you need to open a new link, open a new window and navigate to the link then copy the link to your sharing window (Google Chrome will autocomplete search history which may leak sensitive information)

    See also:


  • Principles for Living a Rich Digital Life

    I’ve been thinking more about how to live a rich digital life and what that means in a world of abundance. The following is a work-in-progress list of principles that are starting to form. (Epistemic status: low).

    Stay connected: The digital age has made it easier than ever to stay connected with others, whether through social media, messaging apps, or other online platforms. Make the most of this abundance of connectivity by reaching out to others and building a network of supportive relationships.

    • Healthy social media?

    Learn continuously: The digital world is constantly changing, and it’s important to keep up with the latest developments and trends stay relevant and competitive. Look for opportunities to learn new skills and technologies, and be open to trying new things.

    Mold it to you: code and connect things so that your stack does what you want it to do. Don’t settle for the out-of-the-box experience. This means having the skills to do so by learning to code and keeping up with technology.

    • Being efficient with keyboard shortcuts
    • Customizing your keyboard to be faster
    • Writing elisp to extend emacs

    Stay organized: With so much information and content available online, it’s easy to get overwhelmed. Stay organized and focused by setting goals, prioritizing tasks, and using tools like calendars and to-do lists to stay on track.

    Protect your privacy: The abundance of personal data available online can also make it more important to protect your privacy. Be mindful of the information you share online, and consider using privacy tools like virtual private networks (VPNs) and password managers to keep your data secure.

    • Avoid ads

    Take breaks: It’s easy to get caught up in the constant flow of information and distractions online, but it’s important to take breaks and disconnect from time to time. Make sure to set aside time for offline activities and relaxation, and prioritize self-care to maintain a healthy balance.

    Make money from the internet: The internet economy is booming and making money from anywhere is a reality with remote work.

    See also:


  • Roman Concrete Was Self-Healing

    Roman concrete used thousands of years ago is significantly more durable than modern concrete. One of the key differences is self-healing properties—when Roman concrete cracks, it reacts with water which quickly fills in the crack with calcium carbonate.

    A recent study looked into how Roman concrete was made and tested these properties. They found that hot mixing must have been used to create quicklime instead of slaked lime. This creates more surface area within the mortar area and is the source of reactive calcium which fills in cracks over time.

    See also:


  • Containing Multitudes on the Internet

    The internet is a place of digital abundance with zero friction to publishing. Building an audience is increasingly important for one’s long-term prospects. This leads to deep niches filling the internet.

    This is mostly a good thing—interesting content for more people and diversity of things—but also makes it harder to contain multitudes on today’s internet.

    There are penalties built into the way we publish and consume content. For example, you can find your 1000 true fans in some obscure automatic watch community but they probably don’t want to hear about you learning to program Rust. Platforms like Facebook, Twitter, TicToc, and to a lesser extent, forums and chat groups, aggregate audiences that only want to hear from a limited part of you.

    As a founder, tinkerer, programmer, and writer, I find myself in this generalist dilemma all the time. How do you contain multitudes on the internet?

    Somewhat inspired by this post, The internet wants to be fragmented by Noahpinion because I don’t want to be fragmented.


  • Tools for Thought Are Necessarily Monolithic

    I read Unbundling Tools for Thought and I find myself agreeing and disagreeing. They are correct that people over invest in tools for networked thought and can get stuck in an unproductive cycle of rebuilding the system over and over again. They are incorrect that the solution is to unbundle into multiple tools and interop between them—point solutions are good at what they do but don’t provide as much building material needed to make it a home.

    A good tool for thought is necessarily monolithic. It must cover the surface area of your life in order to be useful (for me that’s personal and professional work). It must be flexible to accommodate the idiosyncrasies of how you think. The combination of coverage and fit means that an effective tool for thought needs to do a lot of things for a lot of different kinds of people.