Pithy Sayings
- Chaos theory
- When the present determines the future, but the approximate present does not approximately determine the future. - Edward Lorenz
- Code
- If you can’t write it down in English, you can’t code it - Peter Halpern, via Jon Bentley
- Prioritize
- There is no such thing as two equally urgent projects, only priorities that haven’t been made clear yet. - Unknown
- Regular expression
- Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems. - Jamie Zawinski
- Science
- When people thought the earth was flat, they were wrong. When people thought the earth was spherical, they were wrong. But if you think that thinking the earth is spherical is just as wrong as thinking the earth is flat, then your view is wronger than both of them put together. - Isaac Asimov
(DRAFT) Naming of Things
Writing about why Emacs is hard for new users, I can’t help but think back to how important it is to name things well. This is not the first time I tried to write about this idea. I don’t think I’ve ever done a great job at it.
The thing is, naming things is really the most important way we capture ideas. Every single word we learn is an idea that has been captured and named. Let’s set aside that an idea like “cow” may mean different things to different people – that is a discussion to have elsewhere. The point I’m making is that you have now named some thing “cow” and you can use it in your thought process. Now you can in your mind imagine what a cow might when it is surrounded by predators. You might imagine what a cow might do in a crowd of people. You might imagine how that cow might behave differently based on how you and other people behave around it. You can do this because you have given a useful definition to the word “cow”. In a similar vein, useful definitions and words can help you think more clearly and hopefully, make better decisions.
Vocabulary
- bind
- Sometimes a synonym for “map”
- conflate
- combine
- disjoint
- separate, e.g., odd numbers and even numbers are disjoint
- disjunction
- inclusive or – if one of the inputs is
True
- extrinsic
- not intrinsic
- federated
- Top-down delegation of responsibilities; Has a single point of failure at the top.
- PID controller
- control loop feedback mechanism
- e.g., curise control
- 99%ile
- Abbreviation of percentile
- EBNF
- Extended Backus-Naur Form
- Useful for defining the syntax of a programming language
- EBNF terminal
- a token/word/chunk in EBNF
- Alpha
- Αα
- Beta
- Ββ
- Gamma
- Γγ
- Delta
- Δδ
- Commonly denotes ‘difference’
- Epsilon
- Εε
- Used in Greedy-Epsilon algo for multi-armed bandit problems
- Error margin in floating point comparisons.
- Zeta
- Ζζ
- Eta
- Ηη
- Theta
- Θθ
- Iota
- Ιι
- Kappa
- Κκ
- Lambda
- Λλ
- Mu
- Μμ
- Nu
- Νν
- Xi
- Ξξ
- Omicron
- Οο
- Pi
- Ππ
- Rho
- Ρρ
- Sigma
- Σσς
- Tau
- Ττ
- Upsilon
- Υυ
- Phi
- Φφ
- Chi
- Χχ
- Psi
- Ψψ
- Union
- ∪
- Aleph
- ℵ
- Symbol for cardinal numbers. ℵ is pronounced as Aleph-null.
- Empty Set
- ∅
- Such That
- Commonly represented as a colon,
:
- Example,
D={x^2|x ∈ N, x >=1, x <= 4}
. This reads D is the set of all x^2 SUCH THAT: 1) x is a natural number; 2) x is greater or equal to 1; 3) x is less than or equal to 4. - Intersection
- ∩
- Subset
- ⊂ or ⊆
- e.g., if A = {1,4,9} and B = {1,4}, then B ⊂ A (B is a subset of A).
- Belongs To
- ∈
- ∉ Means “not belong”.
- To say that 1 belongs to S, we write 1 ∈ S.
- e.g., if A = {1,4,9} and e = 4, then we say e∈A, meaning “e belongs to A”. However, one would not say e⊂A – e is a single element, not a set. Similarly, if B = {1,4}, one would not say B∈A or “B belongs to A”, as B is a set not a single element.
- Complements
- Difference between two sets
- Relative Complement
- A\B means objects that belong to A and not to B. i.e., {1,2,3}{3} == {1,2}
- Omega
- Ωω
- P(A|B)
- The likelihood of event A occurring given that B is true.
- P(A^C)
- The probability that A doesn’t happen
- Precision Recall
- Precision = probability that some retreived doc is relevant; Recall = probability that some relevant doc was retreived.
- Narrow Integration Tests
- exercise only that portion of the code in a service that talks to a separate service; uses test doubles of those services, either in process or remote; thus consist of many narrowly scoped tests, often no larger in scope than a unit test (and usually run with the same test framework that’s used for unit tests)
- Broad Integration Tests
- require live versions of all services, requiring substantial test environment and networ access; exercise code paths through all services, not just code responsible for interactions
- Balanced Binary Search Tree
- For example, red-black tree or AVL tree.
- Natural Numbers
- ℕ
- double-struck N
- Cardinal numbers,
- Complex Numbers
- ℂ
- double-struck C