TechWorkRamblings

by Mike Kalvas

Results: 43

  • Ubiquitous language

    2025-11-15 12:11

    #new #wip

    content


    references

  • Optimize for change

    2022-05-03 14:49

    #wip #new

    content


    references

  • The philosophy of water

    2023-04-21 20:16

    #wip #new

    Water is life. Connection to humanity through water and rain. The smell of the earth after a warm rain.


  • Normalization of deviance

    2022-09-18 20:13

    #new #wip

    • Pay attention to weak signals
    • Resist the urge to be unreasonably optimistic
    • Teach employees how to conduct emotionally uncomfortable conversations
    • System operators need to feel safe in speaking up
    • Realize that oversight and monitoring are never-ending

    https://danluu.com/wat/

  • Rescuing a failing project

    2023-10-30 11:05

    #new #wip

    Cure the lack of momentum and feedback.

    1. Add some (very few for now) tests even if they verifies a bug continues to be a bug.
    2. Set up CI/CD that tests and pushes always.
    3. Continue to add tests
    4. If it hurts, do it more and automate it more.

    Crafting Code Podcast Ep. 2

  • Senior engineer

    2022-06-11 22:36

    #structure #new #wip

    Defining what makes an engineer a “senior engineer” is a murky task. There will always be differences from one company to another, but there are some general patterns that most people agree on.

    Skill

    • Achieved mostly independent ability to solve any task given.
    • Knows when they need to involve others for things that they don’t have the skills for or believe should be group efforts

    Responsibilities


  • Use a simple heuristic to guide gradual adoption

    2023-04-05 10:01

    #wip #new

    unless you have a good reason write it in [new tech]

    Have to give autonomy, have to spend the effort to justify the reason not to, have to allow people to do the right thing without you dictating what that is.


    Software unscripted change management minute 30

  • Beauty will save the world

    2022-08-22 16:35

    #wip #new

    Beauty will save the world.1


    1. Dostoyevsky, F., McDuff, D., & Todd, W. M. (2004). The idiot. Penguin Books. (Original work published 1868)

  • The Software Craftsman

    2023-12-09 13:23

    #source #new #wip #structure

    Chapter 2 - Agile

    Chapter 3 - Software Craftsmanship


  • Feedback can only affect future behavior

    2024-02-17 14:55

    #new #wip

    While mostly tautological — or physical based in relativity and information transfer — the statement that feedback can only affect future behavior is important. It describes “lag” and requires our attention to the lag time — if I’m ordering stock for my store inventory, I need to account for the continued outflow of inventory as the resupply of inventory is arriving after ordering it.1

    More generally, it means that flows can’t react instantly to other flows. They can only react to changes in stocks and after a delay. (huh? #wip)


    1. Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 39). Chelsea Green Pub.

  • Quantify your cost of delay

    2023-09-01 13:33

    #new #wip #thread

    If you're only going to quantify one thing, quantify the cost of delay.1

    We simply have no business trading money for cycle time if we do not know the economic value of cycle time.

    202402251224 Delays are ubiquitous, so the cost of delay is the measure that returns the most value while building an economic framework for a project. It will lead to our ability to quantify other important variables such as the cost of queues, batch sizes, and variability.1

    How to quantify it? #wip #thread (should be answered later in the book)


    1. Reinertsen, D. G. (2009). The principles of product development flow: Second generation lean product development (pp. 31). Celeritas Publishing. 2

  • Migrations are the only solution to tech debt

    2022-05-11 13:10

    #new #wip

    Migrations are both essential and frustratingly frequent as your codebase ages and your business grows: most 202205131318 Software only supports one order of magnitude before becoming ineffective, so rapid growth makes them a way of life.

    In fact, if your software survives an order of magnitude increase, it may have been over-designed in the first place. Add to that the simple fact that they are usually the only available avenue to make meaningful progress on technical debt1 and it follows that we have to know how to do them well.

    So how are we going to deal with these inevitabilities?


    1. Larson, W. (2018, April 15). Migrations: The sole scalable fix to tech debt. https://lethain.com/migrations/

  • The Myth of Sisyphus

    2024-06-13 17:15

    #new #structure #wip #source

    The fundamental subject of The Myth of Sisyphus is this: it is legitimate and necessary to wonder whether life has a meaning; therefore it is legitimate to meet the problem of suicide face to face. The answer, underlying and appearing through the paradoxes which cover it, is this: even one does not believe in God, suicide is not legitimate. Written fifteen years ago, in 1940, amid the French and European disaster, this book declares that even within the limits of nihilism it is possible to find the means to proceed beyond nihilism.

    – Albert Camus, Paris, March 19551


    1. Camus, Albert, and Justin O’Brien. The Myth of Sisyphus. Second Vintage international edition. New York: Vintage International : Vintage Books, a division of Penguin Random House LLC, 2018.

  • Walden

    2025-10-04 11:19

    #new #wip

    Some quotes from Walden.1 This note should probably go away in favor of individual things once recorded better.

    202112291821 The things we own end up owning us

    Pause! Avast! Why so seeming fast, but deadly slow? P103

    Classics end of 108

    Books are the treasured… 111

    Loneliness relative to working p144-145

    Be a Columbus to whole new continents and worlds within you, not of trade, but of thought. Every man is the lord of a realm besides which the earthly empire of the Czar is but a petty state, a hummock left by the ice. P338 except criticizing travel as a way to avoid thinking or being alone. I believe travel helps one chart interior and exterior

    Paragraph beginning “I learned this, …” on p341


    1. Thoreau, H. D. (2016). Walden (Macmillan Collector’s Library edition). Macmillan Collector’s Library.

  • To everything there is a season

    2025-07-23 23:08

    #wip #new

    To every thing there is a season,
      and a time to every purpose under the heaven
    
    A time to be born,
      and a time to die
    A time to plant,
      and a time to reap
    A time to kill,
      and a time to heal
    A time to break down,
      and a time to build up
    A time to weep,
      and a time to laugh
    A time to mourn,
      and a time to dance
    A time to cast away stones,
      and a time to gather stones together
    A time to embrace,
      and a time to refrain from embracing
    A time to get,
      and a time to lose
    A time to keep,
      and a time to cast away
    A time to rend,
      and a time to sew
    A time to keep silence,
      and a time to speak
    A time to love,
      and a time to hate
    A time of war,
      and a time of peace.
    

    Ecclesiastes 3


    references #wip

  • Domain Driven Design

    2025-11-12 08:46

    #wip #new #source

    Eric Evans's seminal book about domain driven design in 202109061338 Software Engineering. Also referred to as The Blue Book among DDD aficionados.

    As an outcome of reading this book, I created a 202511151207 Domain modeling exercise to help me apply these concepts.

    Part 1 - Putting the Domain Model to Work

    Chapter 1: Crunching Knowledge

    Chapter 2: Communication and the Use of Language


    1. Evans, E. (2003). Domain-driven design: Tackling complexity in the heart of software. Addison-Wesley.

  • Developers are effective relative to their systems

    2024-11-30 11:47

    #new #wip

    In economics, someone can be 10 or 100 times more effective (in terms of the wages they make) just by crossing a border. A taxi driver in one of the poorest countries on earth would make a lot more money doing the exact same work in New York City.

    In 202109061338 Software Engineering, we talk about “10x developers”. Many people talk about it derisively while others believe in it fanatically. The idea is that one developer can be better than 10 others. Whether you believe in that interpretation or not, the economic interpretation of a 10x developer can hold water. If a developer makes the system they’re in better and more effective, they can leverage those changes to be 10x or w/e… #wip had to stop writing finish this note better and cite sources


    Crafting code podcast 027

  • Children are the greatest force of change

    2024-11-16 14:34

    #wip #new #thread

    Why should we have children in an age where everything seems to be going wrong? First off, consider that we may be biased and it's a good time to be alive 202109100838 Positive History (and #thread on how now is the best time to be alive as a human. But also acknowledging how there's problems that we need to fix).

    Tom Whyman proposes the idea that even if we are in the worst of times, children, new generations, and just more time passing have always been the greatest forces of positive progress in our world. Things have — though wanderingly — always been getting better and people have driven those changes. Therefore, we need to have more people and more time for that to happen. We also need to treat our children like the invaluable resource that they are, tending to their education and upbringing.


    Infinitely Full of Hope

  • Domain

    2025-11-15 11:48

    #wip #new

    A Domain in the context of a model, is the actual subject of the model. It is the reality that we are modeling.

    [A domain model] is a rigorously organized and selective abstraction [...] loosely representing reality to a particular purpose.1

    It is important to remember that 202203210830 When your model and reality conflict, reality is always right, 202203210831 Models are immutable but reality isn't, and 202203210832 Models are necessarily incomplete. In these ways, our modeling of a domain will never be perfect. Therefore we should strive to model the relevant domain as closely as we can, but also enable the continued iteration and evolution of the model as we learn more about the domain or require adding more of the domain to our model. In fact, domain modeling is not an attempt to make the most realistic model possible. We choose the parts of the domain and the abstractions used for a particular purpose.


    1. Evans, E. (2003) (pp. 2–3). Domain-driven design: Tackling complexity in the heart of software. Addison-Wesley.

  • Rebound Effect

    2024-11-29 23:05

    #wip #new

    Also known as the Jevon’s paradox or The Coal Problem. Initially formulated as

    Why did coal consumption not drop when engines became more efficient?

    The answer is that people did more work with those engines and had the same “cost homeostasis”. That is, they were always willing to spend that amount on coal or put up with that amount of “cost” whether monetary or labor or whatever, so when the engine got more efficient they adjusted their consumption to meet that new equilibrium.

    This concept was introduced to me through the excellent talk from Peter van Hardenberg from Ink and Switch titled Why Can’t We Make Simple Software (23:29 cite this and maybe even make a source for it. It’s a really great talk #wip) In it, he discusses our threshold for tolerating complexity and how we’ll put up with it in a system until it crosses that threshold. Once it does, we’ll make the changes needed to bring it back under the threshold and repeat this cycle.


    references

  • Programming as Theory Building

    2025-01-30 17:05

    #wip #new #source

    Programming as Theory Building by Peter Naur is an amazing, thoughtful, penetrating understanding and description of the act of programming. It suggests that the act of programming is an act of theory building. This contradicts with the common view of programming as industrial production (e.g. queues, assembly lines, lean, scrum etc.)

    [P]rogramming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to the what appears to be a more common notion, that programming should be regarded as a production of a program and certain other texts.1

    • quality is related to understanding 393
    • theory as technical term (what is a "theory") 395, 396 w/ links to Bloom's taxonomies.
    • intellectual activity vs intelligent behavior 396 (maybe)

    1. Naur, P. (1985). Programming as theory building. Microprocessing and Microprogramming, 15(5), 253–261. https://doi.org/10.1016/0165-6074(85)90032-8

  • Domain modeling exercise

    2025-11-15 12:07

    #wip

    An attempt at structuring a domain modeling exercise for a team.

    Pre-requisites

    1. Who will be in the exercise? Who are the domain experts? Who are the developers who will own the implementation? The ideal group to do true domain modeling is domain experts and developers. It's possible to do subgroups iteratively until there's a time to do a larger full group exercise.

    Outline

    1. Overview of this exercise, discussion of relevant ideas depending on team's familiarity with domain modeling.
    2. Domain knowledge sharing

    Overview and definitions

    Ensure everyone knows what exactly these terms mean and what we're trying to achieve in this exercise.

    Domain knowledge share

    Start with turning 202110231457 Tacit knowledge into 202110231459 Explicit knowledge. Externalize all the thoughts and ideas we have about this domain at a high level.

    This portion should not last too long. We know that #wip

  • The Creative Act

    2025-07-23 22:40

    #new #source #wip #structure #thread


  • Creative work takes place in the imagination and in reality

    2025-07-23 23:18

    #new #wip

    Turning something from an idea into a reality

    can make it seem smaller.

    It changes from unearthly to earthly.

    The imagination has no limits

    The physical world does

    The work exists in both1

    There is a fundamental difference between an imagined idea and a reified one. Even the most faithful creation of an idea will lose some quality that is present in our minds.

    Sometimes this is because of something as simple as the differences in my experience vs yours. If an idea evokes in me a feeling because of a related memory, then it won’t evoke that feeling in you. Other times it’s simply impossible to describe the full scope and nature of the idea precisely. There are countless ways that this can manifest.

    A good example of this is this Zettelkasten. I attempt to make my ideas explicit and show the connections between them, but it’s not always perfect. Sometimes the ideas connect in strange ways too.

    This concept reminds me of “the compression of reality” discussed in the 202408220851 Willful ignorance of reality in organizations Zettel (update link when breaking out that Zettel #wip)


    1. Rubin, R., & Strauss, N. (2023). The Creative Act: A Way of Being (pp. 17). Penguin Press.

  • The DevOps Handbook

    How to create world-class agility, reliability, & security in technology organizations

    2025-09-23 17:08

    #wip #source

    Cross-functional teams rigorously test their hypotheses of which features will most delight users and advance organizational goals. They care not just about implementing user features, but also about actively ensuring their work flows smoothly and frequently through the entire value stream without causing chaos and disruption to any internal or external customer. [...] This allows organizations to maximize developer productivity, enable organizational learning, create high employee satisfaction, and win in the marketplace. These are the outcomes that result from DevOps.[^kim2021]

    Part I: The Three Ways

    Chapter 1: Agile, Continuous Delivery, and the Three Ways

    Note: #wip reading this book has been put on hold temporarily since joining a different engineering book club reading through the two DDD books.

    Continue reading

  • Friedrich Nietzsche

    2022-06-09 08:53

    #wip

    German philosopher (philologist by training) whose works centered around themes of 202206051528 Moral Philosophy and the history of morality.

    On the genealogy of morals

    Comprised of 3 essays, this is perhaps the most well known work of Nietzsche.[^nietzsche1887]

    The first essay centers on the history of morality. Nietzsche contends (through some philological argumentation) that “good and bad” is not the same as “good and evil”.

    ”Good or bad” is a delineation between “good = aristocratic = beautiful = happy = loved by the gods = strong = vital” and “bad = common = plebeian = stupid = lacking”. The “knightly-aristocratic” caste are good insomuch as they have noble qualities whereas the “bad” people were simply people who lacked those qualities. It’s not a moral judgment in itself, it’s a descriptive categorization of humans.

    “Good and evil” then comes from a “priestly” caste at a later date. The purpose of this new distinction is to reverse the judgment and to assign moral weight to it. The priestly caste creates a world in which the strong, dominant, rich, powerful are evil for using those traits (Nietzsche precisely sees no issue in “Man” wielding his strength and dominating others) and the new “good” are the downtrodden, meek, subservient people who require things like neighborliness, timidity, humility to survive against the “blonde beasts”. This results in the Judeo-Christian tradition and (according to Nietzsche) a self-abnegating inward focus of the mind and instincts. Instead of being strong, vital, active, and forgetful[^1] of wrongs done to us, we become cruel, resentful, vengeful people who spend our time thinking about the abuses of others and competing to be the most “debased” type of human.

    Continue reading

  • The Entry Point

    2021-04-29 15:22

    #new #structure #wip #thread #source

    This is the main entry point into my knowledge graph. At the risk of being prescriptive about categories and connections, a single top-level entry point is useful to maximize discoverability. If you're looking for other things I do, check out my home page.

    The lofty goal of this project is to contain all of my knowledge. I hope this will be a lifelong project where I can learn, collect, and create a record of my thoughts in a simple, plain-text format that should never become obsolete.

    Workflow

    This will change drastically over time, but in an effort to keep myself organized, here's my process.

    1. Find a source of information
    2. Create a #source note with solid citations (managed in Zotero) for taking notes while consuming the source.
    3. Create, link, and manage the Zettel and my Zettelkasten.

    For more information on the why and how of using a Zettelkasten, see 202107272242 The Art of using a Zettelkasten.

    Tags

    • The #structure tag is used for structure notes. These are hubs of Zettel that are connected under some sort of idea. They help with discoverability and maintenance of the Zettelkasten as a whole.
    • The #source tag is a single Zettel to organize the notes I take while working through some source material. Each Zettel that's a #source is also a #structure Zettel. For example, I take notes while reading a book in a Zettel that's named for the book's title and tag it with the #source tag. These notes aren't technically needed if we do a good job citing sources, but it's helpful during the initial reading and note taking for long-form content that requires multiple sessions.

    Continue reading

  • The Private Library

    Being a More or Less Compendious Disquisition on The History of the Architecture and Furnishing of the Domestic Bookroom

    2024-07-28 12:42

    #source #wip #new

    The Private Library is the domestic bookroom: that quiet, book-wrapt space that guarantees its owner that there is at least one place in the world where it is possible to be happy. The history of its architecture and furnishing extends back almost to the beginning of history and forward toward a future that is in equal parts amazing and alarming.

    All libraries are magical rooms. All their windows look out onto Faërie, and all their carpets can fly. […] Entering our library should feel like easing into a hot tub, strolling into a magic store, emerging into the orchestra pit, or entering a chamber of curiosities, the club, the circus, our cabin on an outbound yacht, the house an old friend. It is a setting forth and a coming back to center. [^byers2021] (pp. 1, 3)

    A visitor standing before this instantiation of language must have felt the true, right sense of the numinous.[^byers2021] (pp. 14)

    A private library is a place for rest and relaxation, but also contemplation and thought. It is a place for the individual to find respite and transport oneself to new worlds. In its purest form, a library is only a library if that is its sole purpose. A study or an office can have many of the qualities of a private library but it may not truly be one if it can’t provide the enveloping nature of a pure library.

    Continue reading

  • Types, and why you should care

    2022-06-28 14:49

    #source #wip #new

    From a talk[^minsky2019] by Yaron Minsky of Jane Street.

    Typed vs. Untyped

    • Untyped — scripting, lightweight, friendly, and slow.
    • Typed — Serious, professional, unfriendly, verbose, and fast.

    Some definitions

    • Values — data, things
    • Variables — can be different values, part of the lexical portion of the language
    • Expression — composed out of variables, values, and other things
    • Types — categorization system for values; groups values into named groups; strings, integers etc.
    • In untyped language, values have types
    • In typed languages, values, variables, and expressions all have types. (For instance, variable is typed when it always contains a variable of that type)

    Why types?

    • Make programs faster, typically through compilation/interpretation loop having “hints” and more information.
      • V8 for instance can be super fast, within a factor of 3 or so from a compiled language (but this is through herculean effort of thousands of people over tens of years and complicated things like tracing compilers and things)
      • This is predictable performance vs V8
    • Make programs more understandable

    So why don’t people always use them?

    • Often make programs more verbose — when the language doesn’t have a convenient way to express something, it’s difficult to express it at all or in a good way

    Continue reading

  • Freedom and Responsibility

    2024-07-01 09:52

    #new #wip

    People must have the freedom to act and the responsibility to act wisely. Without the freedom to act, responsibility is pointless; the system decides what actions can be taken and the responsibility or lack thereof for those actions is vested in the system, not the individual. Without the responsibility to act wisely, the freedom to act is risky and unfair; consequences for those free actions have to be upheld, both positive and negative; accountability for outcomes and whether the act was taken with proper consideration lie on the free person.

    Note that this doesn't mean that we all have to be risk-averse. Just because you are responsible for your actions, doesn't mean we have to exact painful consequences. We can create a culture that gives freedom, demands responsibility in return, and then is benevolent with punishment for bad outcomes. If the action was taken in good faith — responsibly — and didn't work out, we can accept that as one of the tradeoffs for the other benefits we gain from F&R. If someone makes an honest mistake, they don't need to be shamed, hurt, or expelled. In fact, this honesty and transparency about outcomes combined with the lenient forgiveness of failure is what drives true freedom to do, build, create, innovate, and achieve.

    Continue reading

  • Curriculum design for software engineering

    2022-06-28 20:18

    #thread #source #wip #new

    I want to teach computer science, what should I do?

    vs

    I want to make software, what should I do?

    Need to ask questions about the desired solution to figure out things like goals, constraints, and methods before you can build that solution. In the education case, the “solution” is the curriculum.

    Ask things like:

    • What age are the students?
    • What exposure have they had before?
    • Is this required? An elective? An extracurricular?
    • How long is the class? How often does it meet?
    • Is it even a class or something else?
    • How many students are in the room?

    etc. but also think about things like

    • Is there internet access?
    • Is the teacher new to programming?
    • Can the students type?
    • Are there students with disabilities?
    • Do the students have regular computer access at home?
    • Do the students have regular computer access at school?

    Think about

    • Equity, Rigor, and Scale

    Methods

    1. Required courses
    • Don’t scale though, need certifications for teacher. The economy for experts means that they’ll go to Jane Street and learn a huge amount more than public HS
    • Rigor has to take a hit because everyone has to pass the course to graduate
    1. Elective courses
    • Not equitable. Hugely biased (currently) to white and asian males, failures and achievement gap #thread lead to further disparity.

    Continue reading

  • Staff engineers should provide technical clarity

    2025-12-04 14:33

    #new #wip

    In an organization, technical clarity is when non-technical decision makers have a good-enough practical understanding of what changes they can make to their software systems.[^goedecke2025clarity]

    Technical clarity in an organization can be the difference between a functional engineering group and a completely dysfunctional one.[^goedecke2025clarity]

    The default quantity of technical clarity in an organization is very low. In other words, decision-makers at tech companies are often hopelessly confused about the technology in question.[^goedecke2025clarity]

    From the perspective of non-technical leaders, those engineers are an abstraction around technical complexity.[^goedecke2025clarity]

    If I say “no problem, we’ll be able to roll back safely”, I’m not as confident as I appear. When I’m giving my opinion on a technical topic, I top out at 95% confidence - there’s always a 5% chance that I missed something important - and am usually lower than that. I’m always at least a little bit worried.

    Why am I worried if I’m 95% sure I’m right? Because I’m worrying about the things I don’t know to look for. When I’ve been spectacularly wrong in my career, it’s usually not about risks that I anticipated. Instead, it’s about the “unknown unknowns”: risks that I didn’t even contemplate, because my understanding of the overall system was missing a piece. That’s why I say that shipping a project takes your full attention. When I lead technical projects, I spend a lot of time sitting and wondering about what I haven’t thought of yet.

    Continue reading

  • The Pragmatic Programmer

    2023-07-24 10:42

    #source #new #structure #wip

    Book Website

    Preface to the Second Edition

    Chapter 1 - A Pragmatic Philosophy

    Chapter 2 - A Pragmatic Approach

    • Good design is easier to change than bad design. Almost all other patterns boil down to "easier to change" or ETC or 202205031449 Optimize for change or 202204262114 Write code that's easy to delete, not extend.
      • This is a value (spectrum) not a rule.
      • This is why I don't like frameworks that lift a lot (tailwind style string classes everywhere in code) or rails magic. It's everywhere and pervasive and not good. Or things w/lots of non-standard tooling (bit or graphql)

    Continue reading

  • As We May Think

    2021-09-08 08:47

    #wip #source #structure #new #thread

    A seminal essay on machine augmented thinking written by Vannevar Bush in 1945.[^bush1945]

    He urges that men of science should turn to the massive task of making more accessibly our bewildering store of knowledge. For years inventions have extended man's physical powers rather than the powers of his mind. [These inventions] are new results, but not the end results, of modern science. Instruments are at hand which will give man access to and command over the inherited knowledge of the ages. The perfection of these pacific instruments should be the first objective of our scientists as they emerge from their war work. Like Emerson's famous address of 1837 on The American Scholar this paper calls for a new relationship between thinking man and the sum of our knowledge.

    Consider a future device [...] in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory.

    Knowledge evolves and endures throughout the life of a race rather than that of an individual

    Publication of research has been extended far beyond our present (1945) ability to make real use of the record.

    Continue reading

  • Category Theory in Life

    2022-07-18 19:46

    #source #new #wip

    Category theory is abstract, but its abstraction makes it apply to many things around us in ordinary life.

    What is category theory?

    Category theory is the mathematics of mathematics

    Mathematics is the logical study of how logical things work.

    In order to study things logically, we have to ignore some details of reality that make things behave illogically. It's only in the abstract world where things do behave perfectly logically

    Category theory is the logical theory study of the logical study of how logical things work.

    The map of the London underground is a good example of a "mathematics", where the geographical map of the exact tubes are not the purpose. The slightly unreal, more representative version helps us in a certain situation navigate more easily. We choose to ignore certain details to represent things more logically.

    Objects and morphisms

    $A \rightarrow B$ means there's a $morphism$ between $A$ and $B$.

    So if we have

    $$A \xrightarrow{\text{is the mother of}} B \xrightarrow{\text{is the mother of}} C$$

    We can deduce

    $$A \xrightarrow{\text{is the grandmother of}} C$$

    Instead of looking at things based on their intrinsic characteristics, we can learn a lot about them (and other things) by their relationships to other things: hence the "Category". This gives us more context

    Continue reading

  • The Complexity of Simplicity

    2025-11-14 14:10

    #thread #souce #wip #new

    Absolutely fantastic keynote tech talk given by Bryan Cantrill at TalosCon 2025 on simplicity in programming.

    Abstraction

    The essence of software systems is the creation of abstraction. They allow us to build software systems that do sophisticated things. They are the shoulders we stand on and provide to others. Abstractions are qualitative. The good ones allow us to hide gory implementation details in order to build "castles atop them and tunnels beneath".[^cantrill2025] The bad ones leak, seeping implementation details instead of sealing them, yielding systems that are unwieldy and brittle.

    One of the primary roles of any software or computer science engineering education is imparting the humility that anything works at all.[^cantrill2025]

    Complexity

    Complexity blossoms in bad or non-existent abstractions. Fred Brooks famously called this accidental complexity in his essay No Silver Bullet. (Where are my notes from this when I read it? #thread #wip) This is differentiated from the essential complexity endemic to a particular problem. Complexity can explode. Accidental complexity in one component can become the essential complexity in something that must interact with it! Complexity doesn't merely accrue.

    Continue reading

  • Limit work in progress to increase throughput

    2021-10-18 12:46

    #thread

    Limiting the amount of work in progress can increase the total throughput of the system. 202110181247 Humans can't multi-task in a literal sense of concentrating on two things at once. We also can't multi-task in the sense that trying to switch between two tasks repeatedly slows down our ability to understand and complete those tasks. We are much better off pursuing deep 202109091123 Flow state work.

    Taking this one step further, we see that it's better to deeply focus on one thing at a time in order to actually increase our total output.

    Another extrapolation is that teams of individuals should reduce their WIP as much as possible, but may be able to sustain multiple threads. The size of the team, the threads of work, and the knowledge/skills of the members likely contribute to the optimal number. Is there a way to estimate this ideal number of threads? #thread