• Compliance Is a Limiting Factor of Opportunity

    Opportunity comes in many shapes and sizes but a consistent limiting factor complianceโ€”the set of rules (written or unwritten) that one must follow to participate in a prosperous endeavor.

    Examples of products that make compliance easier:

    • Mosey automating employment and tax compliance to simplify hiring remote and staying compliant
    • Stripe Atlas start a company and get access to financial infrastructure from anywhere in the world
    • Legalpad solving immigration and work visas
    • Gusto payroll and benefits without having to figure out tax filings
    • Vanta navigate security certifications to sell to regulated customers

  • Startup Investing Is Investing in Options

    Startups don’t have information about them needed for techniques you would typically use to value an investment. There is little history, cash flows, and even assets to do a discounted cash flow. As a result, public market investors are confused at how early-stage startups carry the valuations they do. That’s because these companies are like investing in options.


  • Three Body Problem Book Review

    The Three Body Problem captures your imagination and uses science as a plot point that I haven’t seen before. Some spoilers ahead.

    I loved that the book is framed around the Cultural Revolution in China and told in unforgiving detail. It was a unique experience for me to have science fiction told through the lens of Chinese politics and history.

    The dimension of time becomes a mind bending consideration for the decisions Earth and Trisolaris make. It’s interesting to think about how things might play out when the incoming danger is 400 years away and the advancement of technology in the intervening time between launching an invasion fleet and arriving at the destination. (Although, this does presume that no advancement can be made along the journey when matter, energy, and evidence are all that’s needed for knowledge creation).

    Some of it is admittedly far fetched. The proton computer is super cool, but it’s stretched to the absolute limitโ€”AI + multi-dimensional transformation + quantum sensing, and so on.


  • Set a Contract Minimum for Redlines

    Prospective customers will want to review an order form and master software agreement. Their lawyers will want to propose changes. This causes a few issues: it increases the cost of the deal because now you need to pay lawyers to resolve the feedback and it makes it difficult to understand contractual obligations if every customer is slightly different.

    To reduce this complication, set a contract value minimum before you will make revisions to your agreement. If someone asks about it you can tell them the rule that you’ve set for sales. If they push back, you can give a clear reason whyโ€”the expense of making revisions and maintaining your obligations.

    See also:


  • Degrees of Souledness

    People tend to think of objects and living things as having a soul or not having a soul when really it’s a continuous scale of souledness. For example, people reject the idea of eating certain animals like cats but not chickens, we remark about how, after a major cognitive decline due to old age, that person “isn’t all there”. There is a continuous assignment we make as to the degree of souledness in everything we see and interact with.

    This isn’t to say this is correct (a souledness scale points out a lot of inconsistencies and contradictions) but it provides a good explanation for the moral issues we face todayโ€”a binary view of souledness (the predominant view) requires consensus and is therefore indeterminable.

    From I Am a Strange Loop.

    See also:


  • Contingency Recruiting Doesn't Work Well for Early-Stage Startups

    Contingency recruiting is not very effective for early-stage hiring. Since contingency recruiters get paid only if they are able to fill a job opening and charge 20-25% of the new hire’s first year salary, they tend to share candidate profiles with larger companies that pay higher salaries which make them more money.

    Early-stage startups tend to get candidate profiles that the larger companies passed on. This results is less desirable candidates and a lower volume than if a startup were to do recruiting in-house.


  • There Is an Iceberg of Content Within Organizations

    There is so much writing that goes into running modern organizations but very little of it is ever seen. Every email, chat, document, slides, spreadsheets that gets produced is limited in distribution to a handful of people or teams. What you can observe from the outside is only the most polished published content.

    So what?

    A common complaint about writing is that it’s too hard to do. Yet, everyone seems to create prolific amounts of writing every day. There is more capability than people give themselves credit for.

    How might this vast trove of content be utilized? Is writing primarily for communication so disposable that it ought to never be looked at again? Perhaps there is something there, maybe that’s how we can train a minto linter.

    See also:


  • Codespaces and Emacs TRAMP

    While you can use Emacs in the browser using Codespaces, it involves getting all of your emacs config set up on Codespaces. By using the GitHub CLI you can also use emacs TRAMP over SSH to work in the Codespace instance from your local emacs.

    To do that, update your init.el to create a new tramp method. (Copied this from the emacs-codeql readme).

    (let ((ghcs (assoc "ghcs" tramp-methods))
          (ghcs-methods '((tramp-login-program "gh")
                          (tramp-login-args (("codespace") ("ssh") ("-c") ("%h")))
                          (tramp-remote-shell "/bin/sh")
                          (tramp-remote-shell-login ("-l"))
                          (tramp-remote-shell-args ("-c")))))
      ;; just for debugging the methods
      (if ghcs (setcdr ghcs ghcs-methods)
        (push (cons "ghcs" ghcs-methods) tramp-methods)))
    
    ;; provide codespace name completion for ghcs tramp method
    ;; use C-j if you use ivy to kick in host completion
    (defun my/tramp-parse-codespaces (&optional nop)
      (let ((results '())
            (codespaces
             (split-string
              (shell-command-to-string
               "gh codespace list --json name -q '.[].name'"))))
        (dolist (name codespaces)
          ;; tramp completion expects a list of (user host)
          (add-to-list 'results (list nil name)))
        results))
    
    (tramp-set-completion-function "ghcs" '((my/tramp-parse-codespaces "")))
    

    Install the GitHub CLI, authenticate your machine, and create a codespace.

    brew install gh
    gh auth login
    gh cs create
    

    Now you can use TRAMP to open files directly in your Codespace! C-x C-f then type ghcs:/ and use autocomplete to choose your codespace.

    Everything that works with TRAMP should work including eglot and magit.


  • Understanding Michael Porter (Literary Notes)

    I’m currently reading and taking notes on Understanding Michael Porter by Joan Magretta.

    ISBN: 9781422160596

    What is competition

    Strategy explains how an organization faced with competition will achieve superior performance.

    If there were no competition there there would be no need for strategy or anything to outperform.

    Thinking about competition as being the best is wrong and leads to competitive convergence. Over time, everyone looks alike and the only distinguishing difference is price (e.g. airline tickets, PCs). This erodes value for customers and companies.

    War as a metaphor for competition is wrong. In business, there can be multiple winners so competition is more about serving customer needs than demolishing rivals.

    Sports as a metaphor for competition is wrong. In sports there is one set of rules to be the best in. Companies can choose to make their own game.

    Strategic competition is competing to be unique. Unique in value you create and how you create it. The focus is on creating superior value for the chosen customers, not imitating or matching rivals.

    Competition is more like the performing arts than sports or warfare. Itโ€™s positive sum and innovative not zero sum and imitative.

    Five forces

    Most people think competition is a direct contest between rivals. Competition is about earning profits not winning a sale.

    The industryโ€™s structure is defined by:

    • Intensity of rivalry among existing competitors
    • Bargaining power of suppliers
    • Threat of substitutes
    • Threat of new entrants

    The structure explains the industryโ€™s profitability.

    The strength of each force varies but are present in every industry.

    Industry structure tends to be stable over time. Things change but structure takes a long time to change.

    Profits is more complex with producers, suppliers, customers, and even future entrants.


  • Web Browser in Emacs

    There is a builtin emacs web browser (eww) but it’s text-based. There are a few options for getting an actual browser in emacs.

    Using xwidget-webkit

    Update: Emacs 29 has vastly improved support for webkit, including multiple instances in buffers and it seems more stable

    You can compile emacs to include xwidget and use xwidget-webkit-browse-url.

    I found this to be significantly better than EAF. It works with buffers the way you expect. You can even get to the console by right clicking and selecting ‘Inspect element’.

    The railwaycat homebrew formula for emacs is the best way to get xwidget support on a Mac.

    brew install emacs-mac --with-natural-title-bar --with-native-comp --with-xwidgets
    

    So far the only downside I can find is that you can’t open more than one browser and it crashes somewhat regularly.

    Setting up eaf using straight

    The EAF (emacs-application-framework) package integrates a number of apps into emacs. The browser is a full webkit browser that is overlayed onto a buffer.

    It works but it’s really janky. If you move the emacs window around the browser window might not move. It doesn’t work in fullscreen.

    Installing using straight.el and use-package:

    (use-package eaf :straight (eaf :type git :host github :repo “emacs-eaf/emacs-application-framework” :files (".el" “.py” “core” “app” “*.json”) :includes (eaf-browser) ; Straight won’t try to search for these packages when we make further use-package invocations for them :pre-build ((“python3” “install-eaf.py” “–install” “browser” “–ignore-sys-deps”) (“npm” “i” “-g” “mac-app-frontmost”))))

    (use-package eaf-browser :custom (eaf-browser-continue-where-left-off t) (eaf-browser-enable-adblocker t))


  • Start a Personal CRM as Early as Possible

    Now that I’ve used a CRM from scratch for startup sales and support, I’m coming around to the idea that you should start a personal CRM as early as possible in your career.

    Seeing who you’ve talked to from which company over time can be incredibly useful for making connections. Those connections are useless if you don’t engage with them (meeting, hang outs, events, or social media). A CRM helps you keep track of these connections and offload some of the mental overhead of engaging with them.

    I’m not quite sure about separating personal/professional, but it is certainly important that your CRM is portable. You should not lose all of your connections when you change jobs.


  • How to Use Twitter for Business

    Twitter is no longer viable. Use LinkedIn.

    Old version:

    Kinds of content to build your audience

    • Share stories: How others are solving an import problem or answering a key question
    • Threads that rollup interviews
    • DM people that match your target audience
    • Reply to older threads you created to give them new life