TechWorkRamblings

by Mike Kalvas

Results: 71

  • CodeMash 2020 - Review

    A More Formal Report on a Conference

    2020-04-01 00:00

    #work #tech #blog

    A review of the sessions I attended, what I learned, and how I liked the overall experience of CodeMash 2020.

  • Making a Fitbit Sense Watch Face

    Time for a Better Watch

    2022-05-01 00:00

    #tech #blog

    There are a lot of good first- and third-party watch faces out there for the Fitbit Sense, but none of them are exactly what I want.

  • The value of a great tech stack

    Non-technical reasons to have a great tech stack

    2022-08-13 09:54

    #tech #work #blog

    I’ve been doing some thinking lately about how much value to place on a great tech stack. There are two lenses in particular that I’m looking at this through: value to a product organization and value to the individual engineer as a measure of the desirability and enjoyment of working there.

  • The Silent Majority of Engineering

    A Bit of Perspective

    2021-05-01 00:00

    #ramblings #blog #tech #work

    Most engineers aren't using all the new shiny tools. Most are quietly coming to work every day, writing code in tried and true ways, and getting things done.

  • Idea Gardening

    An Organic Process for Developing Thought

    2021-09-15 00:00

    #ramblings #blog

    Idea gardening is the practice of sitting on ideas so that they can germinate on the back burner of your mind.

  • Revamping My Blog

    A New Coat of Paint

    2020-06-01 00:00

    #blog #tech

    You may have noticed that the blog got a new look and feel recently. The changes weren't purely cosmetic though. Let's take a look at how I migrated from a Bootstrap and PHP based blog to React, Next.js, and Styled Components.

  • My Brand New Blog

    An Exercise in Futility?

    2016-10-28 00:00

    #ramblings #blog

    Maybe it's the infinite hubris of a millennial or maybe its just that I doubt anyone will actually read this, but I found a few reasons to convince myself to do it anyway.

  • Advent of Code 2024

    A season of code

    2024-11-30 23:59

    #structure #blog #tech #project

    We're back for another year or saving Christmas through the power of programming.

  • Making a Rust Roguelike

    Making a Game Out of Learning

    2022-08-01 00:00

    #blog #tech

    In the process of learning Rust, I'm following a great tutorial for building a roguelike game.

  • Unifying My Domain

    A Question of Scope

    2021-07-01 00:00

    #work #blog #tech

    Bringing all my projects under one roof.

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

  • Working in Public

    A Way To Be More Open

    2021-07-15 00:00

    #work #blog #ramblings

    Finished things don't spring up out of the ground in their final state — people have to work hard on them. This is my way of pulling back the curtain on how I work.

  • Advent of Code 2024 Day 03

    Mull It Over

    2024-12-03 00:00

    #blog #project

    Today we're visiting the toboggan rental shop from 2020 day 2 and need to help the elves with corrupted data in their computers.

  • Prototype Expand Consolidate

    A Method for Building Maintainable Systems

    2021-09-01 00:00

    #blog #tech #work

    Today we look at an efficient, sustainable engineering loop — prototype, expand, consolidate.

  • Cleaning Out the Skeletons

    An Effort to Put My Best Foot Forward

    2016-12-01 00:00

    #blog #ramblings

    Growing up at the start of social media has its downsides. Today I talk about cleaning up my online presence.

  • Advent of Code 2024 Day 05

    Print Queue

    2024-12-05 00:00

    #project #blog

    Today we found the printer from 2017 day 1 and need to help sort it out.

  • Advent of Code 2024 Day 10

    Hoof It

    2024-12-10 00:00

    #blog #project

    Today we're back at the Lava Production Facility from 2023 day 15 helping reindeer find the best hiking routes around their floating island.

  • Piping Code With GitLab CI

    A Simple Way to Make Your Life Easier

    2018-09-01 00:00

    #blog #tech

    I finally got around to adding continuous integration pipelines to my personal projects.

  • Advent of Code 2024 Day 08

    Resonant Collinearity

    2024-12-08 00:00

    #project #blog

    Today we're visiting the roof of a top-secret Easter Bunny installation and need to put a stop to their plot to get people to buy Easter Bunny brand Imitation Mediocre Chocolate as a Christmas gift.

  • Advent of Code 2024 Day 04

    Ceres Search

    2024-12-04 00:00

    #project #blog

    Today were visiting the Ceres monitoring station from 2019 day 10 and helping the station chief solve her word searches.

  • Advent of Code 2024 Day 02

    Red-Nosed Report

    2024-12-02 00:00

    #project #blog

    We've made it to our first location in our search for the chief elf historian, the reindeer reactor from 2015 day 19. The reindeer need some help finding out which series of readings from their reactor are safe.

  • Designing for Big Screens

    An Experiment in Adding More

    2021-08-01 00:00

    #blog #tech

    I've always wanted to see what was possible on the web when we use all the space we're given. Today we look at my take on how to add more for those who have the extra real estate.

  • Advent of Code 2024 Day 09

    Disk Fragmenter

    2024-12-09 00:00

    #blog #project

    Today we're back under the sea with our amphipod friends from 2021 day 23 and need to help one of them defragment their hard drive.

  • Willful ignorance of reality in organizations

    2024-08-22 08:51

    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" 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

  • The abyss gazes back

    2024-08-23 23:59

    He who fights with monsters might take care lest he thereby become a monster. And if you gaze for long into an abyss, the abyss gazes also into you.[^nietzsche1886]

    Firstly, we must not fall into the mindset or actions of the things we’re examining when studying evil, immorality, or even lesser undesirable things.

    More abstractly, there’s a danger of being absorbed into the thing that you “gaze at.” This can apply to academia and learning for learning’s sake, where we lose sight of reality, purpose, or reason.

    It also works to illustrate that merely observing something is not a totally detached process. It’s not possible to completely detach from the observed phenomenon. The mere act can change you and affect you in unintended or undesirable ways.

    Lastly, it speaks to the dangers of romanticizing things that should not be: depression, abnegation, loneliness, and more. If I allow my mind to spend time gazing into depression for instance, I’ll be swallowed by it. 202408221304 Desolation tries to colonize you.

    We can call the depression void-gazing. Everyone does it sometimes, but step two has to be wrenching your gaze away from the void and doing something. There's nothing in the void but more void and the curse[^suresh2024angry]

    Continue reading

  • Optimal line length for readability

    2022-07-06 16:26

    The optimal line length for readability on a screen is 50-75 characters.1


    1. Scott, E. (2022, May 10). Readability: The Optimal Line Length – Articles. Baymard Institute. https://baymard.com/blog/line-length-readability

  • Advent of Code 2024 Day 01

    Historian Hysteria

    2024-12-01 00:00

    #blog #project

    This year finds us helping elf historians track down their chief historian who has gone missing and needs to be back for the sleigh launch on Christmas. Today we're comparing lists of numbers for historians.

  • Rewrites Are (Almost) Never the Answer

    A Difference Between Desire and Reality

    2021-06-01 00:00

    #blog #work

    Rewrites are tricky to get right. Despite how often we're drawn to them, they're almost never the right solution.

  • Advent of Code 2024 Day 07

    Bridge Repair

    2024-12-07 00:00

    #project #blog

    Today we're visiting the rope bridge from 2022 day 9 and need to help the elves repair it by sorting out there test calculations.

  • Advent of Code 2024 Day 06

    Guard Gallivant

    2024-12-06 00:00

    #blog #project

    Today we visit the suit manufacturing plant from 2018 day 5 and need to avoid creating time paradoxes by hiding from the guard.

  • Shades of Self

    A Look at Who We Are

    2018-05-01 00:00

    #ramblings #blog

    A rambling, philosophical look at how we exist as distinctly separate individuals in different situations.

  • First Reactions to React

    A Review of Building My First React App

    2018-06-01 00:00

    #blog #tech #work

    We're moving our corporate site in house and I thought it would be the perfect time to try out a new javascript framework.

  • Architecting a More Modern System

    A Look at Microservices

    2018-07-01 00:00

    #work #blog #tech

    Making the move from one monolithic service to many microservices can be a complicated process. Here are some reasons why we decided to make the move anyway.

  • 2019 Work Reads

    A Slew of Short Book Reviews

    2020-07-01 00:00

    #work #ramblings #blog

    My professional reads from last year, rated and reviewed.

  • Advent of Code 2024 Day 11

    Plutonian Pebbles

    2024-12-11 00:00

    #tech #project #blog

    Today we're visiting the ancient civilization on Pluto from 2019 day 20 and find some interesting physics-defying stones.

  • Think week

    2021-10-23 14:33

    Popularized by Bill Gates, a think week is a week spent in solitude, focused on thinking.1

    The purpose of a think week is to remove distractions and stimuli that will detract from our ability to think deeply on topics and ideas for an extended period of time. A think week can include books or other information sources but shouldn’t include distractions like social media, TV, and the like.

    Seclusion, solitude, peace, quiet, light exercise, simple healthy food, and simple living arrangements focused on the environment are all conducive to effective think weeks.

    Similar to, but more deliberate and less frequent that 202304112203 Ten percent time.


    1. Runaway Suitcase. (2019, June 18). How to do a Think Week Like Bill Gates. Runaway Suitcase. https://www.reservations.com/blog/resources/think-weeks/

  • Delivery Performance vs Value Delivery

    2022-06-17 12:06

    #blog #thread

    An alternate title for this essay is The "How" Matters.

    I want to talk more about performance — the act of executing, building, delivering, how our team works together and with other teams, and how these stack up against our potential.

    I don't want to stop talking about product value — the product, its value, our direction, how we choose what to build, or if what we built was valuable or not.

    I just want to additionally talk more about performance.

    Here's the way we typically talk about the product, its value, and our performance.

    At an individual level you know if you’re doing a good job based on how effectively you’re contributing.

    At a team level you see if the things the team built were valuable over a longer period of time.

    Directors and executives plan for years out and it can take a long time to get feedback about the value of their decisions.

    Therefore, we can’t know as easily or quickly if leaders (or groups of people as a whole) are doing a good job over these long, ambiguous timelines

    See 202104291527 Live in the ambiguity and 202104291528 Leaders have to accept a slower feedback loop for more support of this position.

    Continue reading

  • Gestalt Principles of Design

    A Crash Course on the Whole

    2020-06-15 00:00

    #blog #work #ramblings

    Today we're looking at 'die Gestalt', the result of early 20th century studies in psychology that described how humans perceive the world, and how it can help us make outstanding user interfaces.

  • Types are not a substitute for tests

    2022-08-11 22:28

    Type systems cannot and should not be viewed as a replacement for testing. Types cannot ensure that the code you wrote produces the actual outcome that you want it to. Tests on the other hand, can be used to verify and maintain that correctness.

    Tests can never provide an unbroken chain of checks, from the database all the way to the frontend React props, guaranteeing that all of the data has the right shape [emphasis mine]. Types can't (usually) tell us when we accidentally put a "!" in front of a conditional. Focusing on one or the other means sacrificing quality, work efficiency, or both.1

    Conversely 202208112226 Tests are not a substitute for types.


    1. Bernhardt, G. (2020, April 13). Execute Program. https://www.executeprogram.com/blog/are-tests-necessary-in-typescript

  • CodeMash 2020 - Live

    An Informal Report on a Conference

    2020-01-08 00:00

    #tech #blog #work

    Live blogging from CodeMash 2020

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

  • Lightning Talks

    A Great Way to Teach and Learn

    2018-05-15 00:00

    #tech #blog

    Lightning talks are a great way to share knowledge in your organization. Here's how to get started and get everyone to love them.

  • The great stagnation

    2021-10-22 09:05

    The 202110220859 Utilization adjusted total factor productivity of the US from 1947 through 1972 was 2.1%. Since then it decreased until the dotcom boom in the late 1990s and early 2000s. In 2005 though, the rate plummeted and has been a paltry 0.17% despite a rapid rise in the rate of scientific and theoretical technological progress.1

    One lesson to take from this is that science alone isn't enough to end the stagnation. We need science to be applied to goods and services that affect the general public before we'll see a new period of sustained growth.1

    One way to understand the forces at play here is to study 202110220853 Second-order thinking and make predictions about what technologies are capable of making an impact on the general public in the next 10 years or so.


    1. Dourado, E. (2020, December 31). Notes on technology in the 2020s. Eli Dourado. https://elidourado.com/blog/notes-on-technology-2020s/ 2

  • PARA Method

    2021-09-07 16:20

    A universal system for organizing digital information.[^forte2017]

    Projects

    Series of tasks linked to a goal, with a deadline

    • Complete app mockup, develop project plan, execute business development campaign, write blog post, finalize product specs, attend conference, etc.
    • Goal has to be achieved (completely checked off at some point) and has a deadline

    Areas

    Spheres of activity with a standard to be maintained over time

    • Health, finances, professional development, travel, hobbies, friends, apartment, car, productivity, direct reports, product development, writing, etc.
    • Standard to be maintained with an indefinite end date
    • Areas for me are hierarchical. All projects must belong to an area and all tasks may belong to a project, but must belong to an area.

    Resources

    Topics and themes of ongoing interest

    • Habit formation, project management, transhumanism, coffee, music, gardening, online marketing, SEO, interior design, architecture, note-taking.
    • I use resources as my reference manager. For this reason, transient items like projects, areas, and tasks should reference resources and update them with relevant information that comes out of the doing of the item.

    Continue reading

  • Development Estimates

    A Different Take on a Contentious Practice

    2018-10-01 00:00

    #blog #work

    How to get value from development estimates and why I've learned to love them.

  • Tests are not a substitute for types

    2022-08-11 22:26

    Tests cannot and should not be viewed as a replacement for a type system. Imagine needing to test all function arguments against all permutations of possible variable types in a dynamic language. It's certainly possible, but it's not done in practice and would bloat your test suite immensely. Instead tests should be used to verify the code under test is logically correct and produces the intended outcome.

    Tests can never provide an unbroken chain of checks, from the database all the way to the frontend React props, guaranteeing that all of the data has the right shape. Types can't (usually) tell us when we accidentally put a "!" in front of a conditional [emphasis mine]. Focusing on one or the other means sacrificing quality, work efficiency, or both.1

    The constraints, invariants, and information encoded in type systems also serve more purposes than just ensuring things like correct usage. They also serve as documentation and communication mechanisms about intent.

    Conversely 202208112228 Types are not a substitute for tests. These two systems need to be used together to achieve the best outcome.


    1. Bernhardt, G. (2020, April 13). Execute Program. https://www.executeprogram.com/blog/are-tests-necessary-in-typescript

  • Timeout Killer

    2024-05-05 12:51

    #link #microblog

    Timeouts and Cancellations for Humans

    Nice article on the difficulties of actually doing timeouts correctly. And an idea for a malicious endpoint that returns 1 byte every second or so for the same request to keep poorly coded timeouts from triggering.


  • Learning Rust

    A Quick Lesson in Ownership

    2022-05-15 00:00

    #tech #blog

    I'm learning rust

  • Cloud Native Computing

    A New Way to Build

    2018-08-01 00:00

    #tech #blog

    First Salesforce revolutionized IT with SaaS, then other service platforms extended those ideas for the full stack. Cloud Native Development is here to stay.

  • Second-order thinking

    2021-10-22 08:53

    Second-order thinking is the process of going beyond the immediate impact of a decision or event.

    For example, if the USA shifts to renewable energy and electric cars in the 2020s, we'll have no need to be allied with Saudi Arabia anymore. This is a first-order consequence. Going further, we can see that things like a Saudi-Iranian war or general instability in the middle east could come from the dissolution of that alliance. Take it another step — if China and other East Asian cultures aren't able to modernize to renewable energy and electric transport in a similar time-span and the middle east's oil production is destabilized, then their economies could be disrupted. The possibilities in that event are vast and wide-ranging.[^dourado2020]

    Here’s the thing about electric cars: they are better than regular cars. They have lower fuel costs. They have fewer moving parts and thus lower maintenance costs. They have higher low-end torque and faster acceleration. If you mainly drive to and from work and have a charger at home, you never have to stop for gas. Electric cars will win because they are better, and the shift will happen suddenly.

    A list of specific 202211020929 Second-order thoughts about the 2020s.

    Continue reading

  • What React and Kubernetes Teach Us About Resilient Code

    A Similarity Among Widely Different Tech

    2019-11-15 00:00

    #tech #blog

    A brief intro to control theory and declarative programming

  • Masonry Layout CSS

    2024-04-23 21:22

    #link #microblog

    Help us invent masonry layouts for css grid level 3

    I remember getting this working in ~2013 with flexbox columns, but I had to do a complicated interleaving operation to make the sequence correct from left to right then top to bottom. Cool to see this happening finally.


  • Abstractions and future-coding are actively harmful

    2022-04-03 10:33

    Abstractions and future coding are the single greatest cause of convoluted, complex, unintelligible, inflexible, and unusable code.

    “Saving typing” is the most inane excuse for any piece of code to exist. It’s completely divorced from any measure of why that code is good or bad.

    Future coding is gambling and dictated by random chance.1


    1. Sylvan, S. (2013, August 16). The Perils of Future-Coding [Blog]. A Random Walk Through Geek-Space. https://www.sebastiansylvan.com/post/the-perils-of-future-coding/

  • Bartosz Ciechanowski and the promise of the web

    2024-12-18 12:27

    #link #microblog

    Bartosz Ciechanowski's blog is one of the best blogs or even websites at all on the internet. His explanations of interesting things from first principles is a master class on teaching and learning. The amazing visualizations are simple, no-dependency javascript files utilizing WebGL and other modern web tech. The markup is clean, and despite each article being lengthy with interactive visualizations, runs on my phone without breaking a sweat.

    This is what the web should be. This is how technology can enhance education.


  • Architecture Decision Records

    2022-04-02 12:18

    An Architecture Decision Record (ADR) is a document that captures a decision, including the context of how the decision was made and the consequences of adopting the decision.[^blake2020]

    While the name implies that these would be used for mainly architecture level decisions, many people advocate for using them for nearly any decision, no matter how mundane.[^blake2020][^perkins2020] The purpose of recording as much as possible is to facilitate the 202110231449 Externalization of knowledge for software projects and product organizations. (202110231440 Knowledge is the backbone of a product organization)

    ADRs are beneficial because they enable persistence and transfer of knowledge. They’re a great example of the 202110231445 The SECI model of organizational knowledge in action. They take 202110231457 Tacit knowledge and transform it into 202110231459 Explicit knowledge

    ADRs can be used proactively to propose changes, or retroactively to record decisions that were already made.

    My experience with ADRs has been split across two levels of use.

    1. Organization-wide — Valuable to an extent, but can be used poorly to push things that shouldn’t be approved under the guise of seeking wide consensus. The important thing for these to work are having good, competent coworkers and/or to have people who are not afraid to actively dissent in a widely public forum. They can be an invitation for people to engage in costly bike-shedding or an indispensable log of the collective mind of a group. Which side of this your group falls on is hard to tell and requires some radical candor to identify.

    Continue reading

  • Project structure notes should answer a question

    2021-07-29 23:12

    Ask a question to start a knowledge project. This could be as simple as focusing your interest to an area worth reading, exploring, and adding to the Zettelkasten. Or this could be something as final as the thesis for an article, essay, paper, blog post etc.

    Once you have your question to focus your project, answer it with the standard workflow while making sure to do your thinking inside of the structure note for that project.

    Conversely, there are good structure notes that are organizational in nature. They implicitly ask the question "what do we know about this topic?" but they are not "project structure notes" as described here. They aren't about a specific project to learn research, learn, or develop ideas.

  • Teams exist for a reason

    2021-08-19 10:25

    Teams only exist because something needs to be done by that specific team. It's clear from this perspective that 202104291524 Execution is the priority of team management because without execution, we could never be addressing or fulfilling the reason that the team exists.

    We could always have a new VP tomorrow - and that the VP's first order of business could be asking, "why do you have so many people here and how do I know they are doing the right thing?"1

    It's not sufficient to simply 202106221152 Define success for a team though. It's also important to 202108191029 Measure what you do to ensure that your purpose is truly being fulfilled. It's possible for the team to perform excellently while working on the wrong things.

    Another reason that teams exist at all is because 202202011405 Teams abstract individuals over time. Our purpose — our raison d'être — isn't important enough if we don't want to safeguard against its failure through personnel changes.


    1. Zalewski, M. (2018, February 24). Getting product security engineering right. Lcamtuf’s Blog. https://lcamtuf.blogspot.com/2018/02/getting-product-security-engineering.html

  • The Only Correct Way to Organize Code

    A Joking Rant About Keeping Code Neat

    2020-09-01 00:00

    #1 #4 #2 #tech #3 #blog

    Why we need a system for code organization and what that system should look like.

  • Staff-plus engineer

    2022-06-11 22:33

    #thread #structure

    Staff engineering is a complex topic. As nebulous as it can be to get promoted to a 202206112236 Senior engineer role, it’s considerably harder to move into staff-plus roles. Whereas the definition varies a bit from company to company for senior engineering, the definition or even existence of staff-plus roles is completely irregular across the industry. Will Larson wrote an excellent book, Staff Engineer: Leadership Beyond the Management Track[^larson2021staff] on what it means to be a staff-plus engineer. This structure note and its children mostly come from that resource, but also other citations where noted. That book is also (mostly) publicly available at staffeng.com.

    [!important] Being a staff engineer is not just a role. It’s the intersection of the role, your behaviors, your impact, and the organization’s recognition of all those things.

    The value of the title

    • Bypass informal gauges of seniority (especially useful for underrepresented groups)
    • Facilitating access to “the room”
    • Increase current and career earnings
    • Access to interesting work
    • Different rather than better

    Archetypes

    Continue reading

  • Go is not worth it

    2024-08-22 09:39

    #microblog

    I had to spend a lot of time recently — yet again — debugging weird edge case Go code in production. The person who wrote it had no idea how far off they were from writing something that behaved reliably and correctly. But they're also one of the people who I constantly hear proclaiming how easy it is to use Go, how simple it is, and how productive they are with it. To be fair, they're very productive at churning out bugs. But I'm tired of being on call for it.

    This experience triggered me so hard, I almost wrote a whole blog post about how bad Go is. It constantly papers over real world complexity, has a whole arsenal of guns to shoot yourself with, and the people who don't realize that are the ones who love it and make my on-call shifts hell.

    I hear the same arguments over and over about "simplicity" in the language that just don't hold up. I really don't understand if I'm just an absolute idiot or if there are loads of developers who don't realize that they're writing half-assed, buggy Go code while thinking it's "so easy and simple".

    But honestly, I just couldn’t be bothered to write it all out. I'll never get through to those people. They'll have to learn it for themselves.

    Continue reading

  • Sturgeon's Law

    2023-12-20 14:32

    #new

    Ninety percent of everything is crap.[^wikipedia2023sturgeon]

    Coined by Theodore Sturgeon in a 1957 edition of Venture Science Fiction, the quote was used in the context of critique. Sturgeon argued that science fiction — which at the time was derided for its low quality — was no different than other genres. He argued that all genres were mostly poor and therefore valid criticism against a genre (or anything really) should be leveled against the best examples of that genre rather than the 90% that's crap.

    This is one of the most common problems that I have with modern writing, argumentation, and criticism. Many books, articles, blog posts, etc. level arguments in bad faith against a poor example of how something works in order to advocate for some other thing.

    There is a small counterpoint, or perhaps more accurately, footnote to this idea though. It can be valuable for criticism to be leveled against the whole of an idea. For instance, if you focus your criticism against the best 10% of the idea and feel you've come to a conclusion or alternate idea, it can still be valuable to talk about the other 90% as an example of the scope of the downsides. If the worst 90% of my position result in better outcomes than the worst 90% of another position, that's a valuable data point.

    Continue reading

  • Prefer duplication over the wrong abstraction

    2022-04-26 20:54

    Notes from Dan Abramov's talk The Wet Codebase[^abramov2019]

    Start with two modules

      flowchart BT
        a((a))
        b((b))
    

    Abstract

      flowchart BT
        a((a))
        b((b))
        c((c))
        a-->c
        b-->c
    

    Awesome, we’re reusing it and everything. But then something comes along and there’s a slight difference.

      flowchart BT
        a((a))
        b((b))
        c((c+))
        d((d))
        a-->c
        b-->c
        d-->c
    

    but then there’s bug in c+ that requires a special case for b’s use-case.

      flowchart BT
        a((a))
        b((b))
        c((c+*))
        d((d))
        a-->c
        b-->c
        d-->c
    

    And then another slightly different one from a

      flowchart BT
        a((a))
        b((b))
        c((c+**))
        d((d))
        a-->c
        b-->c
        d-->c
    

    So we pull those cases out and parameterize the call sites in a, b, and d.

      flowchart BT
        a_((a_))
        a*((a*))
        b_((b_))
        b*((b*))
        c((c+__))
        d_((d_))
        d*((d*))
        a_-->a*
        a*-->c
        b_-->b*
        b*-->c
        d_-->d*
        d*-->c
    

    Later, after small fixes over time, logging, minor changes, you end up somewhere like this.

      flowchart BT
        a_((a_))
    
    [Continue reading](/notes/202204262054)
    
  • Second-order thoughts about the 2020s

    2022-11-02 09:29

    Much of these excellent thoughts are from Eli Dourado's great post on the subject.[^dourado2020]

    • Bring science to market in order to end 202110220905 The great stagnation.
    • mRNA vaccines are amazing. They can be developed quickly and cheaply. There is an HIV/AIDS vaccine in trials and it could be eradicated this decade. There are also "miraculous" treatments for cancer in this vein that aren't true vaccines, but could improve outcomes drastically.
    • There are a number of anti-aging techniques coming out that are backed by more credible science than before (therapeutic plasma exchange, aging clocks, other senolytic drugs). Expect people to live longer and healthier by the end of the decade.
    • Solar and wind costs were drastically cut in the 2010s and in the 2020s deployment will accelerate. We need a storage price of $20/kWh for a grid powered completely by today's tech. The closest we come is a $542/kWh battery based solution from Tesla.
    • Instead of solar and wind we need scalable zero-carbon baseload energy — nuclear or geothermal. Current tech for nuclear targets around 6.5¢/kWh but is delayed until at least 2030. More likely is geothermal which looks to crack 3.5¢/kWh. Not only this but geothermal's drilling advancements mean that even Lockheed Martin's promising compact fusion reactor might not be able to compete if it comes to market this decade. This is because digging the wells this decade means we just have to replace the heat exchange pieces but not re-dig the wells, effectively halving the cost of new wells for the following 15 years, meaning 1¢/kWh energy by the 2050s. Fusion will kill in space though.

    Continue reading

  • Stock and flow

    2022-05-02 12:52

    The fundamental observation of systems thinking is that the links between events are often more subtle than they appear.[^larson2018systems]

    Big changes appear to happen in the moment but there is usually a slow accumulation of small changes that lead to that moment.

    Static values or accumulations are called stocks. They are how changes are stored over time. Stocks are the elements of the system that you can see, feel, count, or measure at a given time.[^meadows2011]

    Changes to the stocks are called flows.[^meadows2011] These are rates of change. They can be inflows or outflows.

    System dynamics are the relationships between different stocks and flows. For example, the rate of water pouring into a tub can be less than, equal to, or greater than the rate of water draining from the tub. This system dynamic can result in different long term outcomes like overflowing, equilibrium, or emptying.[^meadows2011]

    Keep in mind that stocks take time to change because flows (as units over time) require time to flow. As such stocks often act as delays or buffers in systems. They also produce lag in indication. Additionally, they allow the inflow and outflow rates to be different and temporarily out of balance. This creates feedback processes by which we monitor the inflows and outflows to keep a stock at some acceptable value.[^meadows2011]

    Continue reading

  • Knowledge is constructed

    2021-09-06 08:35

    #structure #thread

    Constructivism and also Constructionism are theories of knowledge that requires there to be a learner for knowledge to exist. Until someone learns information, connects it to things they already know, and internalizes the information in a personal context, knowledge cannot exist.

    Supporting arguments

    • Having a text or reference at hand does nothing to increase knowledge, we have to create something, do the work, wrestle with the ideas, and engage effortfully to create our own knowledge.
    • Research works better one thing at a time. Find a source, process it to completion, then use your newfound knowledge to find another source. If we don't, we run the risk of picking sources that are useless by the time we get around to reading them. Processing to completion includes writing about what you've read. This is where these notes come in. We take transient notes as we're reading and then write our thoughts here or in drafts of actual writing. (Iterative accumulative approach to writing #thread and writing is important #thread)
    • Consider that data patterns and descriptions mean nothing on their own. For instance, strongly correlated but spurious patterns may be obviously meaningless.[^vigen2013] Instead, we require a pattern or description (what), an interpretation of that pattern (why), and — critically — to synthesize multiple interpretations, hypotheses, theories, or models into a bigger picture and create something useful or interesting (why why or higher level why). Patterns and interpretations are the main work of our knowledge management system here. Synthesis happens when we write about (or just read and string together all the knowledge we accumulate in the system).

    Continue reading

  • The Art of using a Zettelkasten

    2021-07-27 22:42

    #structure

    Using a Zettelkasten is more of an art than a science. It's a personal relationship with an extension of your knowledge. Above all, it's important to just consistently work and think in this system to get the most out of it.

    Personal preferences

    Workflow

    There are categories of things that I do regularly, and my Zettelkasten has a specific single place in a broader workflow. It's important to understand how we think and how the processes we use to do that thinking and synthesizing affect your ultimate knowledge (202109080847 As We May Think).

    Continue reading

  • Career checkup template

    2022-06-12 20:47

    Sourced from Will Larson's blog Irrational Exuberance[^larson2022checkup]

    This is a simple template for checking in on your career. Here’s how to use it:

    1. Look through the sections. If there are any sections that don’t resonate with you at all (as opposed to just feeling hard to fill in), then remove or edit them.
    2. Fill in the sections. Feel free to jump around to answer the parts that you have the most energy for.
    3. Revisit a few days later: anything you want to change after sleeping on it?
    4. If possible, find peers or friends to share and discuss each others checkups together.
    5. Store it away somewhere to review a year from now.

    Summary

    Write this section last! How would you summarize everything else you wrote below? Try to keep it to max of two paragraphs.

    <start writing here!>

    How are you feeling about your career right now?

    Write a few paragraphs about how you’re feeling about your career right now. Don’t worry about writing this for consumption, focus on finding words that resonate with you!

    <start writing here!>

    What did you expect / what happened in the last 5 years?

    When you think back to five years ago, what did you expect to happen over the following five years? What has happened? How do you feel about the difference between those two?

    Continue reading

  • Computer Science

    2022-06-19 13:00

    #thread #structure

    The nitty-gritty of computation and technology. Contrasted with 202109061338 Software Engineering which is more about the practice of writing software and careers or organizations in that field.

    Curriculum

    Programming Languages

    Asynchronous computing

    Continue reading

  • Software Engineering

    2021-09-06 13:38

    #structure #thread

    Maybe this should be a structure note of structure notes only since this is a huge topic that I'd like to really dive deep on. There is also the 202206191300 Computer Science structure note that I’ve split out to dig in to the more technical, theoretical stuff in order to keep this one focused more on the practice of writing software and careers or organizations in this field.

    Topics

    Documentation

    Abstraction

    Measurement

    Continue reading