TechWorkRamblings

by Mike Kalvas

Results: 52

  • Write less code

    2022-04-27 23:26

    #wip #new

    content


  • Optimize for change

    2022-05-03 14:49

    #new #wip

    content


    references

  • Modules should be highly cohesive

    2022-04-27 23:08

    #new #wip

    content


    references

  • Modules should be loosely coupled

    2022-04-27 23:09

    #new #wip

    content


    references

  • Monorepos make all the wrong trade offs

    2022-04-27 22:39

    #wip #new

    content


    references

  • The philosophy of water

    2023-04-21 20:16

    #new #wip

    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

    #wip #new

    • 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

    #new #structure #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

  • Digital streams vs gardens

    2022-05-02 17:01

    #wip #new

    Gardens are timeless, heterarchical, and defined by topological relations.

    202109060835 Knowledge is constructed, 202109060845 Knowledge is a heterarchy

    Streams are ephemeral and linear, defined by serial flow (202205021249 Stock and flow of knowledge).


  • Have fun and be terrified

    2024-08-22 20:21

    #wip

    Have fun and be terrified. I can do that.1

    On quitting your job and striking out on your own, or more broadly, daring to do something and put your skin in the game #wip


    1. Suresh, N. (2024, August 21). Quitting My Job For The Way Of Pain [Blog]. Ludicity. https://ludic.mataroa.blog/blog/quitting-my-job-for-the-way-of-pain/

  • The Last Lecture

    2022-05-19 13:14

    #new #wip

    • People only tell you what you're doing wrong if they still care about you. If they've stopped telling you what you're doing wrong, it means they've given up on you.
    • Experience is what you get when you didn't get what you want
    • Wait long enough and people will impress you. (Am I too cynical?)
    • I don't know but (one of my star people is|you're) excited so let me learn more. Tell me more.

    Randy Pausch last lecture

  • Beauty will save the world

    2022-08-22 16:35

    #new #wip

    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

    #wip #source #new #structure

    Chapter 2 - Agile

    Chapter 3 - Software Craftsmanship


  • You must test an idea to know if it works

    2025-08-19 23:13

    #wip #new

    The only way to truly know if an idea works is to test it.1 202203210830 When your model and reality conflict, reality is always right, which means that the only way to know for sure if an idea (which is just a mental model of a possible thing) works or is good, right, or accurate is to test it in reality.

    This also implies that 202508192317 If you want the best, test everything.


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

  • The tragedy of the commons

    2024-02-25 14:49

    #new #wip

    In a commons system there is a resource that is shared (e.g. a shared pasture for cattle grazing). For these systems to be tragedy, the shared resource must be erodible (i.e. the further it's degraded, the harder it is to regenerate the resource) and the users of that resource must be incentivized to use the resource even in the face of the erosion (e.g. immigrants may hurry or increase in numbers if they hear immigration laws are going to become tougher).1


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

  • 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.

  • Creativity is everywhere

    2025-07-23 22:51

    #new #wip

    Creativity does not have to mean artistic creativity. Creativity is not a rare ability and is not difficult to access.

    Creativity is a fundamental aspect of being human. It’s our birthright.1

    We are all engaged in creative acts all the time. We all perceive the world and create our worldviews unconsciously even. When we interact with the world we create outcomes, decisions, and responses that affect the world around us. This is a generative — a creative — act.

    Some are also engaged in actions that bring something into the world. 202109061338 Software Engineering, writing code, building software, creates something from nothing.


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

  • Quantify your cost of delay

    2023-09-01 13:33

    #thread #wip #new

    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/

  • Developers are effective relative to their systems

    2024-11-30 11:47

    #wip #new

    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

  • The Myth of Sisyphus

    2024-06-13 17:15

    #source #structure #new #wip

    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.

  • 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

  • Submerge yourself in great works

    2025-08-10 22:35

    #new #wip

    In order to develop and intuition for greatness, whether artistic, creative, technical, philosophical, practical or anything else, you should submerge yourself in great works that correspond to that intuition.1

    When starting out, it may be difficult to recognize greatness and we typically have to lean on the judgement of others. Slowly, we build our own intuition and judgement as well as personal style or particular lens for evaluating great works. We also become more discerning and capable of finding themes, threads, and pieces of greatness in many other works.

    This built 202408021018 Intuition and instinct are implicit knowledge that we retain and can draw on later to create our own great works (the height of 202107282144 Bloom's taxonomy of knowledge)


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

  • 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

  • Try to have a beginner’s mind

    2025-08-11 22:41

    #wip #new

    Sometimes we need to come at a situation from a fresh perspective and disregard our conventional wisdom or contextual information in order make progress. This is commonly referred to as “taking a step back” or “working from first principles”. Another way of putting this is to “try to have a beginner’s mind” about it.1 What would a beginner think or ask about this? What would I do if I didn’t have all of this conventional wisdom or normative bias? What do the fundamentals tell me about this situation? What does the data say?

    It can be hard to have a beginner’s mind (202406201458 I've lost the knowledge of how I learned what I know), but making the effort to disregard assumptions can be valuable.


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

  • Children are the greatest force of change

    2024-11-16 14:34

    #thread #wip #new

    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

  • If you want the best, test everything

    2025-08-19 23:17

    #wip #new

    It’s simple logic that you have to test everything in a set to find the best of that thing in the set. If you didn’t, then there could be one of the untested things that is better than the ones you tested.

    When dealing with open ended things like ideas or songs or creative output, this means that we have to test “everything”.1 This is obviously technically impossible, but is a good mindset for improving and producing great things.

    It also means that 202508192313 You must test an idea to know if it works in reality. We can’t simply think about them or model them out. We need to fail, disprove ideas, produce mediocrity, and work over and over at bringing ideas to life to find the best ones.


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

  • A moments thought

    2025-04-11 14:51

    #wip #new

    A moment’s thought would have shown him. But a moment is a long time, and thought is a painful process.1

    Accuracy

    On p. 315 of The Profit Motive in Ethics, Vol. 86, No. 4, pp. 312-322 (July, 1976), Flew quotes Housman differently:

    A moment's thought would have shown him this. But thought is a painful process. And a moment is a long time.

    Perhaps Flew was attempting to recall from memory the following passage from p. xi of the Preface to Housman's Juvenalis Saturae (revised edition, Cambridge University Press, 1931), which is reprinted on p. 56 of A.E. Housman: Selected Prose (edited by John Carter, Cambridge University Press, 1962):

    Three minutes' thought would suffice to find this out; but thought is irksome and three minutes is a long time.


    1. A.E. Housman. Quoted by Antony Flew (Thinking About Thinking, (Fontana/Collins, 1975, p. 5)

  • Programming as Theory Building

    2025-01-30 17:05

    #source #wip #new

    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

  • The Creative Act

    2025-07-23 22:40

    #new #thread #structure #source #wip


  • 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.

  • Proof of thought

    2025-07-26 12:54

    #new #wip

    For the longest time, writing was more expensive than reading. If you encountered a body of written text, you could be sure that at the very least, a human spent _some_time writing it down. The text used to have an innate proof-of-thought, a basic token of humanity.

    Now, AI has made text very, very, very cheap. Not only text, in fact. Code, images, video. All kinds of media. We can't rely on proof-of-thought anymore.[^martsinovich2025]

    This article by Alex Martsinovich was concerned mostly with the changes that AI is causing to writing as a proof that someone had to think about something to write it down. I agree with the article, but I still think the idea of writing (or other actions or outcomes) as a proof-of-thought is interesting.

    How can we prove that something was thought through? How can we prove something had any thought put into it at all or perhaps whether it had a great deal of thought put into it? I suppose that there are tells for these things and like the article mentions, they are getting harder to discern in the current "AI" context.

    I won't try to enumerate any specific proofs here because for every example, there are surely counterexamples. This alone complicates the notion of proof-of-thought a great deal though because it clearly makes the "proof" portion of it harder to ascertain or agree on.

    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

  • Zero to engineer

    2022-08-10 19:44

    #wip #structure

    How do get into 202109061338 Software Engineering?

    Let's go at this from a specific angle.

    What would it take for me to get an entry level job as a programmer?

    1. Get past the résumé screen
    2. Get past the recruiter screen
    3. Get past the coding exercise
    4. Get past the onsite interviews

    Preparing for these takes different amounts of time and require different skillsets. If we include the dependencies between each step and sort them by preparation time, we get a new ordering.

    1. Getting past the coding exercise — is the basis for 2 and 3, so it must be solid and come first.
    2. Getting past the résumé screening — requires things like example projects and raw time spent coding.
    3. Getting past the onsite interviews — definitely the point where not knowing your shit can bite you, but it's also possible to be great at interviewing and compensate for your rough patches with things like work ethic and initiative.
    4. Getting past the recruiter screening — easy to bullshit past if the résumé checks out, but always easier if you're confident and capable than faking it.

    Getting past the coding exercise

    Helps if you know what it will be. Many companies make things like this available in advance. If so, you have an obvious path.

    Continue reading

  • Willful ignorance of reality in organizations

    2024-08-22 08:51

    #wip

    In organizations, there's a tendency for people at higher levels or in roles further removed from the "doing" of a project to be vague to the point of harm. Some (bad) managers want something done and want other people to deal with how that gets done or indeed whether or not it's even possible to do it.

    [I]t boils down to a psychological distance from the fact that true reality exists, and that someone lower status has to handle it.[^suresh2024pain]

    I see this frequently in the interactions between (bad) product managers and engineers. The PM has an idea or a requirement to build something that they don't inspect closely or take the time to understand the reality of that idea. They don't understand what it would take to build it, what it would feel like to use, or whether it's a good idea once faced with all the edge cases involved. The idea of doing all that work is either too challenging or demeaning to these bad actors and it ends up falling on the individual contributor who actually produces the work output to solve these problems.

    I've alternatively called this "compression of reality" and "where the rubber meets the road" (break out Zettel #wip) to show that engineers don't have the luxury to hand wave or be vague when writing code. They have to specify — in exacting detail! — how it all works.

    Continue reading

  • Play long term-games

    2021-09-25 11:40

    #wip #thread

    Everything in here is a great #thread to pull on

    The days are long but the decades are short.

    In a lot of ways, our entire lives are unforgivably short. In other ways, they are long. We have the opportunity in some areas to play long-term games. We should be playing more long-term games and less short-term ones. Long term games take advantage of 202304102048 Compounding Interest.

    Continue reading

  • System design

    2022-08-13 13:27

    #wip #structure #source

    Designing systems is one of the common, critical tasks of a 202206112233 Staff-plus engineer. It's something that sets a 202206112236 Senior engineer apart. It proves that you can understand tradeoffs in technology and organizational size and maturity. It shows that you understand how to build things that are optimal for now and have a clear path to the future you're working toward. Many engineers plateau at a place where they can understand and implement any type of tech but aren't capable of planning out new systems from scratch based on some need of the business.

    Example systems to learn how to design

    • Rate limiter
    • Consistent hashing
    • Key-value store
    • Unique id generator in distributed systems
    • Url shortener
    • Web crawler
    • Notifications
    • News feed
    • Chat
    • Search autocomplete
    • YouTube
    • Google Drive

    Example: Scale from 0 to 1M users

    • start with a single server. DNS somewhere directs all traffic to the web server where everything from apps, to APIs, to DBs are housed.
    • The first interesting scale point is when you need to separate your database from your web servers. At this point you probably have enough reason to discuss the exact details of the DB you're using. Should you be using a relational DB or a NoSQL document store?

    Continue reading

  • The Entry Point

    2021-04-29 15:22

    #structure #thread #source #wip #new

    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

    #wip #new #source

    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

  • 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

  • Types, and why you should care

    2022-06-28 14:49

    #wip #new #source

    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

  • Curriculum design for software engineering

    2022-06-28 20:18

    #source #thread #new #wip

    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

  • The Pragmatic Programmer

    2023-07-24 10:42

    #structure #source #wip #new

    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

  • Category Theory in Life

    2022-07-18 19:46

    #source #wip #new

    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

  • 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