46 Matching Annotations
  1. May 2020
    1. High levels of income inequality corrupts political systems since wealthy individuals and corporations can use their wealth to influence electoral outcomes (e.g., through donations to political campaigns), policy decisions (e.g., through job blackmail) and political culture more generally (e.g., through financing cultural productions such as movies, newspapers, advertisements and think tanks that normalize a state of inequality).

      but is this necessarily a problem with the richest individuals? isn't it more the rich billionaires that are 'in the middle of the rich' that do this sort of shit

    2. Poverty also increases the vulnerability of populations to natural hazards such as such as earthquakes, tsunamis, flooding and landslides. Calling these events "natural" disasters is a problem for two reasons: human activities contribute to creating many of these hazards, e.g., through climate change or deforestation; and the consequences of these events in terms of death and injury as not inevitable (i.e., "natural") but rather conditioned by levels of investment in infrastructure and support systems.

      this is such a bold claim... are the effects so drastic that they change the rate of natural disasters?

  2. Apr 2020
    1. Lifetime names for struct fields always need to be declared after the impl keyword and then used after the struct’s name, because those lifetimes are part of the struct’s type.

      lifetimes are a part of struct type

    1. These ampersands are references, and they allow you to refer to some value without taking ownership of it.

      under the hood, it creates a new temporary memory that is effectively a pointer to the pointer variable that it is referencing.

      also note that the dereferencing is done automatically

    1. Returning either a NewsArticle or a Tweet isn’t allowed due to restrictions around how the impl Trait syntax is implemented in the compiler. We’ll cover how to write a function with this behavior in the “Using Trait Objects That Allow for Values of Different Types” section of Chapter 17.


    1. Then you’ll learn how to use traits to define behavior in a generic way. You can combine traits with generic types to constrain a generic type to only those types that have a particular behavior, as opposed to just any type.


    2. Generics are abstract stand-ins for concrete types or other properties. When we’re writing code, we can express the behavior of generics or how they relate to other generics without knowing what will be in their place when compiling and running the code.

      generics provide zero-cost abstractions

    1. Rust’s standard library also includes a number of other string types, such as OsString, OsStr, CString, and CStr. Library crates can provide even more options for storing string data. See how those names all end in String or Str? They refer to owned and borrowed variants, just like the String and str types you’ve seen previously. These string types can store text in different encodings or be represented in memory in a different way, for example. We won’t discuss these other string types in this chapter; see their API documentation for more about how to use them and when each is appropriate.


    1. In contrast, if we make an enum public, all of its variants are then public

      unlike struct, where each field is private by default; needs to be declared as public. Also, note that private fields mean that we cannot use the default constructor to initialize the private fields. New constructors need to be created.

    1. Rust has a special annotation called the Copy trait that we can place on types like integers that are stored on the stack (we’ll talk more about traits in Chapter 10). If a type has the Copy trait, an older variable is still usable after assignment. Rust won’t let us annotate a type with the Copy trait if the type, or any of its parts, has implemented the Drop trait. If the type needs something special to happen when the value goes out of scope and we add the Copy annotation to that type, we’ll get a compile-time error.

      Either Copy / Drop

    2. Each value in Rust has a variable that’s called its owner. There can only be one owner at a time. When the owner goes out of scope, the value will be dropped.

      ownership rules:

      • one owner because if it goes out of scope with two owners => double free bug => memory corruption => potentially lead to security vulnerabilities.
  3. Dec 2019
    1. But as someone who suffers from a rare disease where I think I’m one trip abroad away from self-actualizing

      I think I'm one article or movie away from self-actualizing...

    1. Dissatisfied single people should actually consider themselves in a neutral, fairly hopeful position, compared to what their situation could be.

      It seems that everyone can, at minimum, be placed into one the of the following buckets. Perhaps the concern isn't that anyone is one of these things, but rather the extreme degree that they are any of these things.

  4. Aug 2019
    1. Tech debt can be reframed a value-neutral proposition; where the value depends on intentional circumstance and planning. We need to keep in mind the prioirity: build software faster by focusing your time on things that matter the most. The common issue with tech debt is that it doesn't feel as real as financial debt; so we don't pay them off until our development grinds to a halt.

      Tech debt, in certain contexts, can be properly encapsulated and fostered such that they allow us to focus on things that are important. Framed in a financial perspective, taking on tech debt is flexibility that allows us to be more powerful. But only do so when you know:

      • you can minimize the interest that the debt takes on (understand that it is an exponential fn)
      • the debt created can be re-invested into something that yields more than the interest

      Rules of the game:

      • be intentional about what you invest in; be aware of the interest/cost that you take on
      • err on the side of building little because you can build more later
      • metric: clear, well-known limitiations, documented.
      • Delineation between branches and leaves. If it’s a branch, solve the real problem. If it’s a leaf, consider just getting it done.

      Examples of manageable tech debt and the rules of the game applied:

      1. scaffolding:
        • validate the riskiest parts -- easiest to get wrong, complicated, hard to defined, not well understood, and generally parts that scare you -- of the project
        • leverage the smaller and more flexible codebase
        • commit to your estimate: moving beyond means exceeding expected complexity
        • throw it away if it becomes a branch
        • well defined limitations and minimized harm
      2. hardcoding:
        • avoids existing patterns
        • consider hidden costs: additional work? maintenance work?
        • consider if this breaks the main requirements
      3. not fixing all the edge cases:
        • bugs are just tech debt that users can see
        • higher priority work instead of addressing a practical non-issue
    1. The soul speaks its truth only under quiet, inviting, and trustworthy conditions. The soul is like a wild animal — tough, resilient, savvy, self-sufficient, and yet exceedingly shy.

      reiterates importance of not evaluating yourself when you're already super emotional

    2. Let’s take a necessary pause here to acknowledge


    1. Not applicable to all cases because there are many instances where speed is irrelevant, but generally: speed creates momentum, which rids of the powerful effects of inertia. Speed greatly decreases the projected activation energy cost, making us more likely to start and continue.

      Important caveat: speed should not come at the cost of correctness or direction. If either of the two factors are sacrificed, speed instead becomes multiplier to a negative feedback loop: doing tasks for the sake of feeling, and not actually being productive.

    1. If your reading session is over, this helps synthesize what you just read. When you pick up the book tomorrow start by reading the previous two chapter summaries to help prime your mind to where you are in the book.


  5. Jul 2019
    1. Most people who say they want career planning advice aren't actually looking for advice -- they just want validation of the path they have already chosen. Because of that, giving someone career planning advice is one of the surest ways to end up feeling like an a******.


  6. Jun 2019
    1. So much for the perfect day. But what of the perfect life?

      this feels too dismissive. the more accurate conclusion could instead be: our baseline for perfection ie the criteria we use to determine perfect changes as we get closer. A strategy could be the commonly suggested one: expect less and lower your baseline.

    2. boring collection of secondhand dreams
  7. app.getpocket.com app.getpocket.com
    1. perhaps the increase of a size of a discussion board increases the idiots willing to comment stupid shit. which frustrates the best and they no longer want to post. then the community just devolves.

      reddit walks the line between social media (the best parts) and the worst parts (needy, stupid).

    1. What I know for certain.


    2. all the self doubt and uncertainty I speak of can be traced back to some subtle ways of thinking about things.

      a significant part is in the details. it sounds stupid to say, but yeah it's not something we are actually aware of. Positive self-talk is super important for this reason.

    3. You try to optimise a decision so deeply, You try to think about every possible outcome, You spend weeks, months, years thinking about the right choice, Only to not make a decision and postpone your journey that little bit longer, Because heavens forbid it turns out to be the wrong decision.


    4. Because you know there is so much to do, so many possibilities yet you do nothing or very little. But why?

      a feeling of guilt

    1. Above all else, pragmatism: You cannot make readablecode by blindly following some rules.

      and in order to exercise pragmatism you should

      1. be able to analyze the current situation
      2. express understanding of the best practices/rules
      3. compare the two


    1. tl;dr: understanding reading styles for better reading

      Approach: An outline, high-level overview approach is taken since the article is so clearly structured. Specific ideas are highlighted and annotated.


      Reading optimally means applying the suitable reading method for the suitable reading material you've selected, to fit the object you're trying to accomplish.


      • Information vs Understanding
      • All the true value & growth is in understanding
      • Heuristic for information: anything easily digested is information.

      Reading Styles:

      1. Inspectional Reading: systemic skimming and superficial reading
      2. Analytical Reading:


      • Classify the book according to kind and subject matter
      • tl;dr
      • outline
      • defining problems/issues
      1. Syntopical Reading:


      • find relevant passages
      • understand in your own context
      • getting the questions clear
      • defining the issue
      • analyzing the issue
    2. 4. Syntopical Reading

      Think of it as an abstraction over the other three. It is a higher-level process that includes additional steps needed to synthesize the benefits of the other reading types.

      It's almost like writing a report.

    3. After an inspectional read, you will understand the book and the author’s views.

      this implies that a lot of the times analytical reading can only be -- or rather is best -- done after inspectional reading.

      actionable: I should be mindful of when I'm engaging in analytical reading

    4. 1. Elementary Reading

      ignoring this because it isn't super applicable. I shouldn't ever want to read like this.

    1. Be Wary of Incentives
      • ex paul graham beware the prestige
      Be careful of the relationships you keep
      • dont work under someone who you don't respect or want to be like them
      Just do it.


      Just sit on your ass until you do the work.

      See tragedy as an opportunity

      This goes back to not indulging in self-pity. A minor setback for a major comeback. Epictetus: a slave to a man favou`red by the gods.

    1. Sliding Window:

      Sliding window is a subset of dynamic programming because it uses a 'key insight' to reduce the amount of duplicated work and achieve an optimal result. For example, in the minimum window substring problem the key insight is that our the optimal result will always be bounded by the letters we are searching for.


      • ordered and iterable input data structure ex. array/string
      • looking for a subrange
      • keywords: optimal, longest, shortest that satisfies a given condition exactly

      Implementation Details:

      1) setup:

      • window is what we're looking at
      • there are many constants, including:
        • best solution so far
        • current information about the window O(1)

      2) iterating/grow/shrink:

      O(2n) at most because each pointer only visits each element once.

      types: (refer to graphics for more detail)

      • fast/slow
      • fast/catchup
      • fast/lagging
      • front/back
    2. subset of dynamic programming problems, though the approach to solving them is quite different from the one used in solving tabulation or memoization problems

      key: sliding window subset of dynamic programming problem because we are reducing the amount of duplicated work

    3. The key insight here is that the smallest window will always be bounded by letters that we are searching for. If it weren’t, we could always shorten our window but lopping off unused characters at the start or end.
      1. the key insight is put really well.
      2. instead of just lopping off the front of the window.
    4. optimal substructure property of the problem

      == "insight", but more clear and accurate

    5. Hopefully, it will show that the approach is actually relatively straightforward if you have the right thinking, and once you solve a few of these problems you should be able to solve any variation of them that gets thrown your way.

      this feels super hopeful

    1. It is, quite literally and exactly, ten illustrated essays about The Office, one of the very greatest television shows of ever.

      an example of using flow in writing. I read this like a rap verse.

    2. Writing Style:

      It really strikes me how little he actually cares for grammar for the sake of grammer. He's clever; he accomplishes that through whatever writing works. He writes with a voice.

    3. There was nothing interest-ing on —it was around 3 a.m. when this was happening, meaning my choices were either (a) softcore porn on whatever cable station it was that was playing softcore porn at that moment, or (b) The Big Bang Theory, which sounds like softcore porn but most assuredly is not1— and so I turned on The Office on Netflix.
    4. RequiReMent 6:the most perfect couple from The Office has to have overcome at least one real breakup.

      this feels like a dumb fucking rule...



    1. It didn’t matter if people called him selfish; Leonard looked out for himself, because ultimately, the fans never do.

      connection: we shouldn't seek external approval because that approval is unreliable.

      a corollary is that by doing so, we get more external approval. We are more grounded.

    2. Kawhi Leonard a different kind of fan favorite: one who offers very little of himself, yet is still rewarded with affection.

      perfect description. his story begins and ends on the court.

    3. This commitment to a mood has made Leonard’s brief flashes of humanity delightfully jarring.
      • The benefit of pushing away the focus from yourself comes from the trust that you will get that recognition anyways. It isn't possible without the skill either.
      • Interesting that he gets more attention because he doesn't want it. He goes about his fucking job.