• Data Is Centrifugal

    The predominant system for managing data today pushes it far away from the people it represents. This is bad for the world because data is the primary way identity is represented (census, social profile, certification) and creates the grounds for exploitation (theft, ads, terrorism).

    Many attempts have been made to move data back to the person (blockchain, solid, IPFS), to provide the means for them to control it (permissions, consent banners, e2e encryption), and to own it as property (Web3) but existing solutions fail. Agency over data doesn’t work because few people are interested in managing their own data. Data is difficult to share because semantics require broad agreement to be reused (when has agreement ever been easy?). Data needs to be accurate and verifiable but existing systems (blockchain, CRDT) are slow for practical use in day-to-day applications.

    Read What If Data Is a Bad Idea?

    See also:


  • Thinking in Systems - Literature Notes

    Systems react to external events but behavior is entirely dependent on the internal workings of the system. That’s important because changing behavior can only come from changing the system.

    System structure and behavior

    Systems are interconnected sets of elements coherently organized that achieves something. It’s not a system of the elements aren’t interconnected. It’s not a system of it doesn’t do anything.

    Elements are the easiest to recognize and are often tangible (e.g. a tree has branches, roots, a trunk, leaves, etc.). However it’s easier to Leanne about a system’s elements than its interconnections.

    The function or purpose of a system is harder to recognize because it is often unwritten. The best way to discover the systems function is to deduce it from behavior not what it says it does.

    An important function of every system is to perpetuate itself.

    Elements, interconnections, and functions—in that order—have the largest effect of change in a system. For example, change all the players on a football team and it still functions as a football team, change the rules of the game and it becomes basketball, change the function from winning to losing and it’s unrecognizable.

    Stocks are the present memory of the history of changing flows within the system like the meandering of a river from centuries of floods and droughts. Stocks is a countable unit that changes through the action of a flow. Dynamics of stocks and flows is their behavior over time.

    Example: filling a bathtub shows you inflows (the faucet) outflows (the drain) stock (the water in the tub) and their dynamics (turning down the faucet lowers the water level in the tub, turning up the faucet increases the water level, matching rate of water from the faucet to the drain rate results in equilibrium)

    People seem to focus more easily on stocks and inflows over outflows. This leads to cognitive error because a system might be better off achieving its goals by altering the outflows than the inflows (e.g. decreasing oil usage by finding new energy sources rather than finding new oil deposits).

    A stock takes time to change even with sudden changes to inflows and outflows much like filling or draining a bathtub isn’t instantaneous. This has a stabilizing effect that is often underestimated. Flows take time to flow. Forests don’t grow overnight.

    Stocks and flows are decoupled. You don’t go to the bank to take out money every time you want to buy something. Most decisions made by individuals and institutions have to do with regulating levels of stocks.

    Feedback loops can be observed as controls of a stock, despite increases and decreases. For example, if your bank account balance goes down (stock), you reduce spending (outflow) to keep the balance within an acceptable range. It is a closed chain of causal connections through a decision/rule/law/action dependent on the stock that affect the flow of that stock.

    A balancing feedback loop is goal seeking or stability seeking—a “homing” pattern of behavior. It opposes whatever direction of change is happening (high -> low, low -> high) to maintain a stock within a range of values.

    A reinforcing feedback loop generates more input to a stock the more is in there. This is a vicious/virtuous cycle. For example, prices go up the more wages go up so to maintain profits prices must go up and so on. This happens anytime a system element has the ability to reproduce itself or grow at a compounding rate.

    It’s useful to think not just about A causing B but about how B causes A. It helps you think about systems and how that explains its behavior.

    One stock with two feedback loops (a thermostat)

    A flow can’t react instantly to a flow. That’s why a thermostat won’t hold the temperature steady if the heat leaking to the outside is too high and you need to set it higher than the temperature you want to counteract it. By the time the heat is pushed into the room, it leaks out at a higher rate so the two loops compete and cause the room temperature to fall.

    A stock with one reinforcing loop and one balancing loop (births and deaths effect in population)

    Shifting dominance is when one loop has a larger impact than the others. For example, when fertility rate is high, the reinforcing loop of births is dominant and so population grows. When fertility rate falls, the mortality loop is dominant causing more deaths than births.

    When evaluating a model, ask:

    • Are the driving factors likely to unfold?
    • in they did would the system react this way?
    • What is driving the driving factor?

    Taravangian intelligence test


  • Alternatives to LangChain

    I’m looking into alternatives for LangChain. Maintaining a few small apps that use langchain has been difficult with all of the breaking changes, CVEs, deprecations, and new packages your expected to keep up with. It’s also difficult to understand what is going on—something as straightforward as a prompt (a string) is wrapped in layers and layers of abstraction.

    Perhaps there is something more simple and straightforward for basic ReAct and RAG apps?

    Name Notes
    Semantic Kernal API looks straightforward, differences between c#, python, java sdk, and lots of Azure mentions gives me pause
    Guidance Looks very powerful but will take a lot of work to describe basic outputs in a constrained way that benefits from their approach
    Haystack Doesn’t seem any different from langchain but probably the closest equivalent. Sends telemetry data to by default.

  • Creative People Are More Associative in Their Thinking

    From a recent survey paper about associative thinking, the authors found that more creative people generate a broader set of associations compared to less creative people and tend to perceive distant associations as closer together. Researchers tested this using word associations games and measuring the vectorized distance which approximates the semantic distance between words.

    This offers an interesting clue about where creativity comes from and ways to use this to your advantage. For example, having a wide range of experiences and knowledge in order to have a more “richly connected semantic memory network” to draw from. Similarly different tools and exercises that support goal-directed and free associations can help with generating new ideas and finding solutions to problems.

    Read Associative thinking at the core of creativity.


  • Incompetent Management Kind of Works

    The essay Advantages of incompetent management by Yossi Kreinin, discusses how competent management isn’t always best and we overlook the desirable effects of incompetent management.

    Competent management sets goals and achieves them. Incompetent management does not.

    The problem with competent management is that it leads to perverse incentives. Each team is expected to do more and the optimal thing to do is always ask for more resources even if they are not needed. This in turn leads to bloat and sprawl in systems but little room for improvement (the author in particular is focused on code quality, optimization, and things working well).

    This is a tidy explanation for what we see at some larger software companies that have seemingly infinite resources but operate poorly.

    Incompetent management on the other hand has the virtue of laziness and slack. Because objectives aren’t set or don’t matter, it can be relied on that at least a few well-meaning workers will want to do the right thing. Without the constant haranguing of tightly-managed objectives of competent management, the well-meaning worker is free to pursue what is, in actuality, optimal.

    See also:


  • VirtioFS Cuts Vite Reload Speed in Half

    I use a docker container to build a fairly large hugo static website and vite to build some javascript. The reload time from saving a file and vite reloading the browser was exceeding 8 seconds. Enabling VirtioFS as the file sharing service (Docker Desktop -> Settings -> “Choose file sharing implementation for your containers”) compared to gRPC FUSE, speeds up builds 2x for me. That’s because hugo rebuilds every file every time it’s run which needs to be sync’d to the container before it’s picked up by vite and reloading the browser.

    Nice!


  • Remove Low-Velocity Work to Improve Overall Velocity

    In Double your productivity without more work or stress, the author makes the argument that the way to increase overall velocity is to decrease the amount of low-velocity periods of work. That’s because high average velocity (e.g. being “more productive”) is bounded by low-velocity activities over time.

    For example, say you want to average 60 mph over a 60 mile journey. If the first 30 minutes you go 30 mph, it’s not possible to average 60 mph by going faster over the second half of the trip.

    While working faster is a multiplier on the high-velocity work, the best bet is not to go faster but to eliminate low-velocity activity like email, meetings, scheduling, etc. that drag down your average velocity.


  • Differences Between California and New York

    Some anecdotes as I readjust to life on the east coast.

    When moving from San Francisco to New York City, the difference between movers was distinct. The foreman in NYC was intense, highly caffeinated, freaked out about parking the truck, and repeated the same line about how I’m responsible for trash about ten times. The SF foreman…literally high.


  • I Was a Non-Technical Product Manager Once

    A common question in product management that always seems to come up is some flavor of: should product managers be technical?

    My first job out of college was as a product manager working on B2B software. I was not technical. If you asked me back then, I would say it wasn’t an impedement.

    Along the way I changed my mind.

    I learned to code and that made me better at product. I started a company and that made me better at product. I did sales and that made me better at product.

    It’s not the technical bit that makes you better—there are plenty of engineers that are not good at product!

    Learning new areas like engineering, sales, operations etc. makes you more efffective. It increases your ability to reason about different problems. It’s increases your ability to work with different people, customers, and teams. It increases the set of solutions you can apply that is calibrated to reality.

    So, should product managers be technical? Yes, but I think we get too caught up in the coding part that we forget it’s really about growing knowledge.


  • Alex Hormozi - 13 Years of Brutally Honest Business Advice Notes

    Notes on the video 13 Years of Brutally Honest Business Advice. I reworded and modified things to make sense to me.

    1. Sell to the rich Don’t sell to the poor because you need to deliver a very large ratio of value to money. Rich people spend more to get less value. Start with the rich and then, eventually when the product/service is so good, sell to the mass market (poor).

    2. Priorities make problems easy Most entrepreneurs don’t run their business without priorities and so they have make very little progress. Setting good priorities makes the most important problems to solve obvious and helps others get things done.

    3. Raise your standards You need to be aware of what the best looks like and continue to raise the bar. For example, always hire someone better than you at the job will ensure the company gets better with each new person not worse (Peter Principle).

    4. Lots of rules means you have dumb people This one is really a sub-item of the previous. A sign you have the wrong people is you have to write down obvious rules for people to follow. You shouldn’t be spending your time doing that and should instead hire better people.

      (I dislike the oversimplification of “dumb” vs “smart”. It’s much better to think about this as “skill fit” rather than a judgment of intelligence.)

    5. Get better not bigger Getting bigger, hiring more, spending more, etc. can cover up many problems. Focus should actually be on getting better and constantly learning and adjusting. You’ll get bigger as a result.

    6. Let fires burn You need to spend you time on the things that move the business forward and that’s impossible to do if you have to be the one to always solve every problem.

    7. Brand is the most valuable thing you can own Brand is the durable way to get more out of all your marketing efforts. It’s built over a long period of time by making good associations between ideas and companies. Most of what we see this days is personal brand bootstrapping a company brand.

    8. Understand inputs and outputs of your business Get to the lowest level of detail about what is holding back the business and fix that then the next thing.

    9. Stop looking for hacks The problem with hacks is that they work for a time and then they don’t so you have to find the next thing and the next. The best strategies often don’t change like having really valuable content and product.

    10. The best people cost more but are worth it Good people pay for themselves in the amount of impact they have. There are many arbitrage opportunities with talent but people don’t recognize it because they cost more.

    11. The obvious thing is the main problem The main problem with the business is often the work you are avoiding not the hundred other things you think you need to do. Usually it’s the thing isn’t good enough.


  • Professional Services Spend Is Double Software Spend

    According to the Bureau of Economic Analysis, the contribution to US GDP in Q1 2024 of professional services industries was more than double that of information industries (which includes softare publishing).

    That means, technological advancements in artificial intelligence could be a larger disruption than the entire SaaS industry. At least Bessemer seems to think so in their State of Cloud 2024.

    From the report BEA report:

    In 2024Q1, Professional and business services nominal value added was 12.9 percent of GDP and increased to $3,654.1 billion.

    Professional and business services (PROF) is an aggregate of professional, scientific, and technical services (54); management of companies and enterprises (55); and administrative and waste management services (56).

    In 2024Q1, Information nominal value added was 5.4 percent of GDP and increased to $1,523.9 billion.

    Information (51) includes publishing industries, except internet (includes software) (511); motion picture and sound recording industries (512); broadcasting and telecommunications (513); and data processing, internet publishing, and other information services (514). Establishments produce and distribute information and cultural products, as well as data or communications, and process data.


  • Using Org-Roam as a CRM

    Using org-mode and org-roam can make a rudimentary CRM system for logging interactions with people, companies, or any other contact.

    Capturing associations

    1. Create a file for each entity (use org-roam and a capture template to automate it)
    2. Insert a link to the entity (org-roam-node-insert) in tasks, meetings, or any other notes to make the association with that entity
    3. Visit the entity file and view backlinks (org-roam-buffer-toggle) to see all related items

    Adding more CRM functionality to org-mode

    Now that there is a rudimentary CRM, we can use org-roam’s database to build more functionality.

    • Check-in with contacts: Use the list of backlinks sorted by date to see who you haven’t talked to in awhile.
    • Get a list of tasks waiting on a contact: Use backlinks that have a status of WAITING to bring up at the next meeting.
    • Adapt at mentions for org-mode to quickly tag contacts to make associations
    • Create a capture template for each kind of contact (company, person, etc.) to store standardized properties like company name and website

    See also: