Results: 46
-
Differentiate between self-doubt and idea-doubt
2021-10-21 22:31
All humans feel fear and doubt when creating. The process can look something like this
- This is awesome
- This is tricky
- This is crap
- I am crap
- This might be ok
- This is awesome
Original thinkers and those that are consistently creative can skip step 4. Instead of saying “I’m crap” we should be saying “the first few drafts are always crap”.1
There are two things at play here.
- We shouldn’t doubt ourselves, we should doubt our ideas. We should test, iterate, think, revise, and build the best thing without being attached to the original idea or taking setbacks personally.
- 202112180923 Don't fear failing, fear failing to try
-
Grant, A. & TED. (2016, April 26). The surprising habits of original thinkers. https://www.youtube.com/watch?v=fxbCHn6gE3U ↩
-
Value of employee time
2022-11-12 12:53
A simple table to relate an employee’s time cost to proposed time savings.
All values are per $100,000 in total compensation cost to the business and use average values for time, which is calculated as follows.
Given days per year and .
We have weekdays per year and weeks per year.
Using this and the rate of 8 work hours per weekday our total work hours per years and weeks are
work hours per year and (unsurprisingly)
-
Ice cream resolution
2024-12-31 18:12
my wife to my 4 year old: what’s your New Year’s resolution going to be?
my 4yo: ice cream
I think she has her life more figured out than I do tbh
-
Advent of Code 2024 Day 11
Plutonian Pebbles
2024-12-11 00:00
Today we're visiting the ancient civilization on Pluto from 2019 day 20 and find some interesting physics-defying stones.
-
Rescuing a failing project
2023-10-30 11:05
Cure the lack of momentum and feedback.
- Add some (very few for now) tests even if they verifies a bug continues to be a bug.
- Set up CI/CD that tests and pushes always.
- Continue to add tests
- If it hurts, do it more and automate it more.
Crafting Code Podcast Ep. 2
-
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.
-
Protein folding
2021-10-22 09:37
Protein folding is the process of determining the 3D shape of a protein from its amino-acid sequence. The 3D shape determines the protein's function and linking the amino acid sequence to the structure therefore links the sequence to the function. This has long been regarded as one of if not the hardest problem known to humanity due in part to 202110221009 Levinthal's paradox.
DeepMind's Breakthrough
DeepMind's program for determining the 3D shapes of proteins stands to transform biology[^callaway2020]
The Google owned AI company DeepMind made a massive leap in 2020 in our ability to predict how protein folding works. DeepMind's AlphaFold outperformed all the competitors by a wide range in the biennial Critical Assessment of Structure Prediction (CASP) contest. One scientist even went so far as to say, "in some sense the problem is solved."
It's a game changer. This will change medicine. It will change research. It will change bioengineering. It will change everything.
— Andrei Lupas, Max Planck Intitute for Development in Biology[^callaway2020]
In many cases, the structure predicted by DeepMind was indistinguishable from the state of the art experimental methods of directly measuring protein shapes.
-
The SECI model of organizational knowledge
2021-10-23 14:45
Developed by Ikujiro Nonaka, the SECI model of organizational knowledge describes a repeating loop of four activities that individuals in an organization undertake in order to create (202109060835 Knowledge is constructed), commemorate, and expand upon knowledge.1
- 202110231448 Socialization of knowledge
- 202110231449 Externalization of knowledge
- 202110231450 Combination of knowledge
- 202110231451 Internalization of knowledge
When the loop completes, it starts over again as the input to the next iteration. In this way it can be considered a 202110231515 Feedback loop.
-
Diffey, S. (2020, October 26). The ‘Knowledge-creating’ Product Organisation. Medium. https://productcoalition.com/the-knowledge-creating-product-organisation-6ec80870647b ↩
-
Joe the Axolotl, Clever Closet, & Demonic Robots
2024-05-03 15:30
- Anyone can start a girls who code club and if you have enough people sign up, you can get free resources like lessons, notebooks etc.
- Dept of Ed standards alignment
- 7x more likely to go into STEM than national avg
- She led the Otterbein one, it does something a little different than the provided web lessons
- Build things “clever closet” and others (had never seen clueless so they thought it was original which is cool)
- Pololu 3 Pi Robots pre-built 4 AAA batteries, hokey pokey robot, Rube Goldberg machines, etc
- LEGO Robots now, loved those
- Game dev
gwcotterbein@gmail.com afholcomb72@gmail.com @gwcotterbein insta
-
Zero to engineer
2022-08-10 19:44
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?
- Get past the résumé screen
- Get past the recruiter screen
- Get past the coding exercise
- 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.
- Getting past the coding exercise — is the basis for 2 and 3, so it must be solid and come first.
- Getting past the résumé screening — requires things like example projects and raw time spent coding.
- 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.
- 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.
-
Simple stress measurement questions
2021-10-22 08:40
Here are a few questions we can ask ourselves and others to measure their level of stress and burnout.1
- How stressed are you right now?
- What is your ideal stress level? Ideal meaning the stress is useful and not debilitating.
- What is your max stress level?
- What behaviors do you see in yourself when you close or at max?
Another similar question can help us identify stressors and guide a path to a more healthy lifestyle.
- Food, exercise, sleep, and time are the most important things. What's keeping me from them?
-
Lopp, M. (2021, June 25). The Hotel Giraffe. Rands in Repose. https://randsinrepose.com/archives/the-hotel-giraffe/ ↩
-
Advent of Code 2024 Day 01
Historian Hysteria
2024-12-01 00:00
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.
-
Closing calls
2021-09-07 20:35
Offering a closing call will substantially improve your odds of hiring a candidate.1 Not many people will take you up on it, but those that do will be highly engaged in the process.
How to do closing calls
- Offer the call.
- Show up prepared with their background and ready to articulate why you're at the company and why they should join.
- Ask what the candidate wants to talk about before you start talking.
- Tell them why the role addresses their concerns. If it truly doesn't, then it's better to learn that now.
- Clarify next steps and offer more time.
Abbreviated Version
- Ask for their concerns.
- Answer by telling the best version of the truth.
-
Larson, W. (2021, August 26). Closing calls: Tell the best version of the truth. Irrational Exuberance. https://lethain.com/closing-calls/ ↩
-
Advent of Code 2024 Day 02
Red-Nosed Report
2024-12-02 00:00
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.
-
Everybody loves an existence proof
2022-08-13 14:31
Everybody loves an existence proof.
– John Carmack1
There is nothing that spurs progress more quickly and easily than an existing, working thing.
If you want to get funding, clearance, approval, investment, adoption, etc. for something, there is undoubtedly no better way to go about it than to show the thing does what you say it will and already works.
If you want to change the world’s energy supply, build a small, cheap, working fission reactor, power your company with it, and then the world will change.
If you want to code a new system, build part of it and show that it works and is solving a real problem. Prove through its existence that it’s not only doable, but already so near to being fully realized that there’s no conceivable reason not to continue with it.
The benefits of something are obvious to anyone if they already exist.
-
lexteam. (2022, August 4). Ep. 309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast. Lex Fridman. https://lexfridman.com/john-carmack/ ↩
-
-
Advent of Code 2024 Day 06
Guard Gallivant
2024-12-06 00:00
Today we visit the suit manufacturing plant from 2018 day 5 and need to avoid creating time paradoxes by hiding from the guard.
-
OODA loop of action
2022-05-03 12:47
Developed by USAF Colonel John Boyd, the OODA loop is a cyclic method for decision making. The steps are designed to be carried out repeatedly in overlapping, differently sized feedback and feed-forward loops.
The eponymous steps are
- Observe — Gather information from a range of sources
- Orient — Understand where we are and where we want to be
- Decide — Develop a plan of action
- Act — Carry out the plan
flowchart TD OBSERVE --->|feed-forward|ORIENT ORIENT --->|feed-forward|DECIDE DECIDE --->|feed-forward|ACT ORIENT -->|feedback|OBSERVE DECIDE -->|feedback|OBSERVE ACT -->|feedback|OBSERVE subgraph OBSERVE direction RL o((observations)) o1([unfolding\ncircumstances]) --> o o2([outside\ninformation]) --> o o3([unfolding interaction\nwith environment]) --> o o4([implicit guidance\nand control]) --> o end subgraph ORIENT end subgraph DECIDE end subgraph ACT end
The loop has been adapted for business uses under different names. One such popular name is the Plan-Do-Check-Act (PDCA) Cycle.
-
Approximations compose poorly
2021-10-11 11:06
Approximations do not hold up to composition with other approximations. The error of approximation is magnified when we combine them so that the total error becomes egregiously large.
Here's a simple example with basic math
2.00 ~= 1.99 2.00 ^ 2 = 4.00 1.99 ^ 2 = 3.96 2.00 ^ 3 = 8.00 1.99 ^ 3 = 7.88
You can see how the error is growing much larger after combining multiple approximate values.
In programming, this can be devious. We're not always sure where approximations will come in to play (including things like floating point precision problems).
In systems design, it's important to understand how approximations contribute to the stability and instability of a system. 202207271958 Stability or instability dominates a system and approximations can magnify this effect.
Haskell offers a unique way around this problem with its laziness characteristic. Since things are evaluated lazily, we can specify a representation of infinite precision for our approximations and the precision we need at the end and Haskell will evaluate all our approximations to the necessary precision to get a correct precision in the outcome.1
-
Jelvis, T. (2015, June 17). Thinking with Laziness. Begriffs. https://begriffs.com/posts/2015-06-17-thinking-with-laziness.html ↩
-
-
Understanding How Your CPU Thinks
2024-05-03 11:00
- Two most important skills for a developer
- Break problems into smaller problems
- Communication (with people and with the computer)
- Talked about pipelining
- increases µops throughput
- think about doing multiple loads of laundry in washer and dryer
- f# nice
- this point was a little off from my understanding of schedulers and the term "pipelining" specifically.
- Caches and different memory locations: registers, L1, L2, L3, RAM, DISK etc.
- Don't use 0V–1.3V and 3.7V-6.3V anymore for memory and heat efficiency. They've shrunk those voltages and tolerances.
- Got into machine code and micro-ops for assembly
- Importantly, the op and params and everything are all encoded.
- This is why ARM ops have variable bit sized parameters. They're all encoded into 32 bit instructions, so the specifics of the encoded instructions/params might change the available bits for parameter store.
- Showed the circuit for a 4 bit adder, arbitrarily chainable for higher bits, 32/64.
- youtube videos:
- domino computing by standupmaths
- water computer steve mould
- how to do multiplication
- f# "Freestylecoding.Math" bit math lib
- interesting idea of returning division with remainder as tuple with
/%
operator
- youtube videos:
- Two most important skills for a developer
-
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]
-
Virtue ethics
2022-06-05 07:55
Virtue ethics defines ethical behavior as that which facilitates the fulfillment of a person’s telos of 202206050810 Eudaimonia through the attainment and proportioning of different virtues.
202206050754 Aristotle is the father of virtue ethics and developed the subject in his work Nichomachean Ethics.
More simply put, in order to explain what makes a person good, Aristotle defines
- Which qualities a good person ought to have
- In which amounts
- Whether every person has the capacity for those qualities
- How we acquire them
- What it will look (or feel) like when we actually have them[^schur2022]
Virtue ethics differs from 202206051530 Deontology by guiding us to try and be a specific type of person while deontological ethics guide us on which actions and choices we should make.
Virtue ethics also differs from 202206051524 Consequentialism by having less concern for the ends and more concern for the means than a pure consequentialist ethic would.
Virtue ethics [...] emphasizes the virtues, or moral character, in contrast to the approach that emphasizes duties or rules (deontology) or that emphasizes the consequences of actions (consequentialism).[^hursthouse2022]
-
Creative accomplishments happen over time
2022-11-03 09:58
We need to allow our ideas to germinate (which requires time) in order to come to fundamental, novel understanding of interesting problems.
History shows that the typical pattern of creativity is as follows:[^hamming2020]
- There is at least some dim recognition of a problem.
- A short or long period of problem refinement. This stage is important because it's likely that our experience will phrase the problem in a conventional way leading only to mediocre or conventional solutions. We must give ourselves time to fully understand the problem for what it is outside of our pre-conceptions. We might even abandon the problem for some time (allowing our subconscious to work on it 202109090947 Idea gardening). However, we must be emotionally involved and want to find a fundamental, novel solution.
- The moment of insight or creativity. This may only be an attempt and might not work but it leads back into step 2. There are also times when we can change the problem itself to fit the solution or perhaps ask ourselves "If I had a solution, what would it look like?"
- Often there is still much work to be done cleaning and refining even the closest, most correct solutions once the problem has been "solved".
-
Block model for maximum capacity
2021-08-03 13:51
The block model for maximum working capacity is as follows:1[^auzenne2014floor2]
- There are small blocks and large blocks that represent tasks, projects, or any responsibility a person has to manage or work on.
- Small blocks take up 1 unit of capacity
- Large blocks take up 5 units of capacity.
- Each person in an organization has a box of maximum capacity equal to 15 regardless of how it's split up. A person could have 15 small blocks or 3 large ones or something in between.
- There are no exceptions or ways to expand that capacity.
- There are only two options for units of work: do or delegate. Nothing can move around or leave the system in any other way. If you do the task, it's in your capacity box. If you delegate it, it travels down a level and is in that person's capacity box.
This model is useful for describing a few phenomena such as how 202108031350 Delegating increases the significance of tasks and where we need to 202106241530 Delegate to the floor.
-
Auzenne, M., & Horstman, M. (2014, October 11). Delegating To The Floor—Part 1. Manager Tools. https://www.manager-tools.com/2014/09/delegating-floor-directs ↩
-
Always bet on text
2021-10-22 16:53
Text is the most powerful, useful, effective communication technology ever.[^hoare2014]
- Text is the oldest and most stable communication technology (assuming we call speech a natural phenomenon). You can read text from 5000 years ago and can engrave granite that will outlast the human species.
- Text is the most flexible communication tech. Text can convey ideas with a precisely controlled level of ambiguity and precision, implied context, and elaborated content, unmatched by anything else. It is not a coincidence that all of literature, poetry, history, philosophy, mathematics, logic, programming, engineering, and everything else rely on textual encoding for their ideas.
- Text is the most efficient communication technology. By orders of magnitude.
- Text is the most socially useful communication technology. It works well in 1:1, 1:N, and M:N modes. It can be indexed and searched efficiently, even by hand. It can be translated. It can be produced and consumed at variable speeds. It is asynchronous. It can be compared, diffed, clustered, corrected, summarized and filtered algorithmically. It permits multiparty editing. It permits branching conversations, lurking, annotation, quoting, reviewing, summarizing, structured responses, exegesis, even fan-fic. The breadth, scale and depth of ways people use text is unmatched by anything. There is no equivalent in any other communication technology for the social, communicative, cognitive, and reflective complexity of a library full of books or an internet full of postings. Nothing else comes close. Nothing.
-
Bloom's taxonomy of knowledge
2021-07-28 21:44
One of the three sections of 202110260923 Bloom's taxonomy of educational objectives. The taxonomy of knowledge focuses on the cognitive (knowledge-based) domain of development.[^wikipedia2021bloom]
All knowledge is built on prior knowledge, so I shouldn't worry about feeling like I'm only creating a collection of other people ideas. I can apply bloom's taxonomy to these ideas you've collected.[^nick2021]
Remember
Knowledge involves remembering facts, terms, basic concepts, or answers without necessarily understanding what they mean. One can remember specifics (terms or facts), ways and means of dealing with specifics (conventions, trends, categories), or universals and abstractions (principles, generalizations, theories, or structures).
Example: "Name three common varieties of apple."
Understand
We then have to demonstrate an understanding of the facts and ideas by organizing, summarizing, translating, generalizing, giving descriptions, or stating main ideas.
Example: "Summarize the identifying characteristics of a Golden Delicious and a Granny Smith apple."
Apply
After understanding comes application. We use our acquired knowledge to solve problems in new situations. We should be able to use our prior knowledge to solve problems, identify connections and relationships, and understand how the knowledge does or does not apply in this new situation.
-
Impact vs effort model of task value
2022-04-09 10:39
The impact vs effort model of task value is a simple two axis graph that's split into quadrants.
Along one axis we have the value/impact of a task from low to high. Along the other we have the effort it takes to complete that task from low to high.
The quadrants then break down as follows:
- Pit of despair — low impact, high effort tasks. There's nothing good about a low value task that's incredibly difficult and time consuming. It's our job to stay out of this quadrant at all cost. The good news is that it's typically easy to detect these pits and avoid them.
- Snacks — low effort, low impact tasks. Tempting to indulge in because they're quick to build, but they don't offer much value and amount to busy-work. This is an easy and insidious quadrant to get trapped in. Many many organizations reward performative work #thread in this quadrant.
- Quick wins — low effort, high impact tasks. These are the best things to work on. The only downside is that a mature organization will soon run low on items here and need to fill their time with tasks in other quadrants.
- Deep work — high effort, high impact tasks. These are what we should be filling our time with when the low effort high value tasks are dried up. Instead of drifting to "snacks", we should deepen our efforts, dig in, and apply ourselves to long-term, valuable work. It can be hard to get buy-in for this type of work because many people favor short-term games, but as we know, we should be trying to 202109251140 Play long term-games
-
Expertise is required to create useful simulations
2022-07-27 15:30
It is necessary to have a great deal of special, expert knowledge in a field in order to create an accurate, useful simulation or program.[^hamming2020]
The argument for the requirement of deep practical knowledge:
- We know that a simulation cannot be 100% accurate to the real world (202203210832 Models are necessarily incomplete)
- Ergo, we will have to accept inaccuracies somewhere in the simulation
- Ergo, we need to know which inaccuracies are acceptable and which are not
- Ergo, we need to understand the field, the purpose of the simulation, the way people will interpret it, and how to make a simulation feel accurate even if it's slightly unfaithful to reality (e.g. a flight simulator giving pilots the right feeling for flying)
- Ergo, we have to be an expert to make a good simulation
A correlated, responsible first question when faced with a simulation of anything is "why should anyone believe this simulation is accurate or useful?" This question will make you better at creating simulations as well as more capable of detecting when others have not done well at this.
We need to be suspicious about getting too many solutions and not doing enough careful thinking about what we've seen. Volume output is a poor substitute for acquiring an intimate feeling (through deep thought about the underlying situation) for a situation being simulated.
-
Thinking in Systems
2024-01-29 14:11
- 202401291425 Definition of system
- 202401291441 Systems thinking benefits all thought
- 202401291458 The purpose of the parts may not be the purpose of the whole
- 202401291554 All systems thinking is a simplification
- 202308281423 Ship of Theseus
- 202205021252 Stock and flow
- 202110231515 Feedback loop
Chapter 2 - A Brief Visit to the Systems Zoo
- One Stock Systems
- 202402171439 One stock with two competing balancing loops
- 202402171455 Feedback can only affect future behavior
- 202402171507 A stock with one reinforcing loop and one balancing loop
- 202402171512 The principle of shifting dominance
- 202402171520 Ask questions to assess the validity of a model
- 202402241530 One stock with delays
- Two Stock Systems
Chapter 3 - Why Systems Work So Well
-
Work on what matters
2022-06-11 23:10
Make the most out of your time.
Hamming has a good quote about this in 202205092134 The Art of Doing Science and Engineering.
To the extent you can choose, work on the problems that you think will be important.[^hamming2020]
[...] how to do great things. Among the important properties to have is the belief you can do important things. If you do not work on important problems, how can you expect to do important work?[^hamming2020]
Working on what matters is important because the only viable long term bet on your career is to focus on work that matters, do projects that develop you, and steer towards companies that value genuine experience. (202109251140 Play long term-games)
- Avoid snacking — 202204091039 Impact vs effort model of task value and 202106241531 Eisenhower matrix of task value
- 202206112313 Stop preening
- 202206112312 Stop chasing ghosts
What does matter?
This section was written specifically with the responsibilities of a 202206112233 Staff-plus engineer in mind, but is generally adaptable to other situations as well.[^larson2021staff]
Companies operate in eternal iterative elimination tournaments
- Existential issues — nothing else matters if your company stops existing. Note that this isn’t the most efficient place for effort but it should be swarmed on by everyone.
-
Category Theory in Life
2022-07-18 19:46
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
-
Stir Trek 2024
2024-04-30 10:34
Selected Sessions
time room rank speaker track session 08:45 could not attend -
The Entry Point
2021-04-29 15:22
#new #source #wip #thread #structure
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.
- Find a source of information
- Create a #source note with solid citations (managed in Zotero) for taking notes while consuming the source.
- 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.
-
Essential XP Emergent Design
2024-06-27 12:56
An article we read as a group for a discussion in our engineering organization. The author explicitly offered all his conclusions as fact "without much justification" noting that "at some later time, perhaps I’ll try to justify this view."[^jeffries2001] I did not agree with what little it did contain.
There are many well-known modeling and design techniques that can be used to bring about a "good design". An incremental process may limit the applicability of these techniques, which are most powerful when applied and committed to "up front". Test everything; eliminate duplication; express all ideas; minimize entities: These few simple rules, applied locally, can help a high quality global design to emerge.[^jeffries2001]
Ron asserts that good design is highly modular, consisting of separate components (typically objects) which are highly cohesive, loosely coupled, and given expressive names that enable us to grasp quickly what the modules mean and why they are there.[^jeffries2001] This statement is the most reasonable of the article. I agree with it, but I find it to be vague to the point of being unhelpful. For example, I'd rather be the right temperature than very hot or cold, but that doesn't offer much as to the nature of "the right temperature". Being the right temperature is tautological. His design principles aren't as self-evident, but they can be interpreted in almost any way to fit or reject a design as "good".
-
Advent of Code 2024 Day 10
Hoof It
2024-12-10 00:00
Today we're back at the Lava Production Facility from 2023 day 15 helping reindeer find the best hiking routes around their floating island.
-
Knowledge is constructed
2021-09-06 08:35
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).
-
Value reciprocity in the insurance industry
2022-04-05 10:48
This is a social ecosystem structured around reciprocity of value. The way that people earn social connections and trust as good actors in this ecosystem is by providing value to their connections. This is the whole ball game.[^wikipedia2021reciprocity]
Reciprocity in market-based societies
David Graeber argues that balanced gift exchange and market exchange have more in common than normally assumed. Since both are balanced, the social relationship created through the sense of debt and obligation is constantly in danger of being ended by the return gift/exchange. He thinks it better to contrast "open" and "closed" reciprocity. Open reciprocity "keeps no accounts because it implies a relation of permanent mutual commitment." This open reciprocity is closed off precisely when it is balanced. Thought of in this way, we can see the relationship as a matter of degree, more or less open or closed. Closed reciprocity of gifts is most like market exchange. It is competitive, individualistic and may border on barter.[^graeber2001]
Comes down on the substantivist side of the formalist-substantivist debate arguing for a study of how humans make a living in a social and natural environment.
-
Advent of Code 2024 Day 08
Resonant Collinearity
2024-12-08 00:00
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.
-
My next level
2021-09-06 08:25
I'm 30, what do I want to do by the time I'm 40? 10 years is a long time, but will be here before I know it.
Some candidate ideas that have consumed mind-share before now:
- Continue down the tech leadership path
- Blaze an entrepreneurial trail of my own
- Research and create something completely new
- Write a book
- Are any of these what I want?
- What would it take for me to pick one and follow it relentlessly?
- Is there a way to do more than one in a meaningful way?
The first thing is 202205231130 Knowing when to leave.
- Leave
- Stay
After that our paths diverge:
- If I leave, where do I go, how do I decide, what would I want to work on, what areas would I want to grow in?
- If I stay, what do I want to work on, what areas do I want to grow in, what is my future, what goals do I have?
A note on open-ended work
For much of the ground-breaking work, the challenge lies even in figuring out what to do. Not just how to do it. Breaking things down and checking things off a list day in and day out isn't satisfying looking back on a year's time span or more. If things can be broken down that easily and checked off, it must not be all that interesting.
-
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:
- 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.
- Fill in the sections. Feel free to jump around to answer the parts that you have the most energy for.
- Revisit a few days later: anything you want to change after sleeping on it?
- If possible, find peers or friends to share and discuss each others checkups together.
- 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?
-
The Pragmatic Programmer
2023-07-24 10:42
Preface to the Second Edition
- 202308141544 Make the future less painful
- 202308281423 Ship of Theseus
- What makes a pragmatic programmer?
- 202308271610 Quarry workers' creed
Chapter 1 - A Pragmatic Philosophy
- 202308282340 No broken windows
- 202312091400 Be the exemplar of change
- 202312091413 Know what's good enough
- Think critically
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)
-
Revamping My Blog
A New Coat of Paint
2020-06-01 00:00
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.
-
2019 Work Reads
A Slew of Short Book Reviews
2020-07-01 00:00
My professional reads from last year, rated and reviewed.
-
Lightning Talks
A Great Way to Teach and Learn
2018-05-15 00:00
Lightning talks are a great way to share knowledge in your organization. Here's how to get started and get everyone to love them.
-
Development Estimates
A Different Take on a Contentious Practice
2018-10-01 00:00
How to get value from development estimates and why I've learned to love them.
-
What React and Kubernetes Teach Us About Resilient Code
A Similarity Among Widely Different Tech
2019-11-15 00:00
A brief intro to control theory and declarative programming