diff --git a/chan.dev/src/content/guide_steps/homebrew/index.md b/chan.dev/src/content/guide_steps/homebrew/index.md index cb409b30..add3ff75 100644 --- a/chan.dev/src/content/guide_steps/homebrew/index.md +++ b/chan.dev/src/content/guide_steps/homebrew/index.md @@ -29,3 +29,24 @@ chan ## References -https://gist.github.com/ChristopherA/a579274536aab36ea9966f301ff14f3f#install-a-specific-brewfile -https://github.com/Homebrew/homebrew-bundle?tab=readme-ov-file#usage + + diff --git a/chan.dev/src/content/guide_steps/preparing-for-layoff.md b/chan.dev/src/content/guide_steps/preparing-for-layoff.md new file mode 100644 index 00000000..497c652e --- /dev/null +++ b/chan.dev/src/content/guide_steps/preparing-for-layoff.md @@ -0,0 +1,3 @@ +--- +title: A chantastic guide to preparing for layoff +--- diff --git a/chan.dev/src/content/guide_steps/raycast/index.md b/chan.dev/src/content/guide_steps/raycast/index.md new file mode 100644 index 00000000..8719223d --- /dev/null +++ b/chan.dev/src/content/guide_steps/raycast/index.md @@ -0,0 +1,27 @@ +--- +title: A chantastic guide to Raycast +--- + + diff --git a/chan.dev/src/content/guide_steps/react-components/index.md b/chan.dev/src/content/guide_steps/react-components/index.md new file mode 100644 index 00000000..8cf885d4 --- /dev/null +++ b/chan.dev/src/content/guide_steps/react-components/index.md @@ -0,0 +1,221 @@ +--- +title: A chantastic guide to components +--- + +## This is a component + +```tsx +function AComponent() { + return <>Hello components +} +``` + +## A component can compose other components + +```tsx +function AComponent() { + return

Hello components

+} +``` + +## A component can me bade composeable via the `children` prop + +```tsx +function AComponent({children = 'Hello components'}) { + return

{children}

+} +``` + +## This is another component + +```tsx +function App() { + return
Hello app
+} +``` + +## One component can render another + +```tsx +function App() { + return ( +
+ Hello app +
+ ) +} +``` + +## Options can be passed to components (these are called props) + +```tsx +function App() { + return ( +
+ Hello app! +
+ ) +} +``` + +## But props must be accepted and implemented + +```tsx +function AComponent({ + style = null, + children = 'Hello components', +}) { + return

{children}

+} +``` + +## props can have default values + +```tsx +function AComponent({ + style = {textDecoration: 'underline'}, + children = 'Hello components', +}) { + return

{children}

+} +``` + +## but these values are not automatically merged with incoming values + +## merging values must be done manually as well + +```tsx +let defaultStyles = {textDecoration: 'underline'} + +function AComponent({ + style = null, + children = 'Hello components', +}) { + let mergedStyles = {...defaultStyles, ...style} + + return

{children}

+} +``` + +## Control of merging can be delegated via prop callback functions — allowing component consumers to modify defaults + +```tsx +let defaultStyles = {textDecoration: 'underline'} + +function AComponent({ + style = null, + children = 'Hello components', +}) { + let mergedStyles = + typeof style === 'function' + ? style(defaultStyles) + : {...defaultStyles, ...style} + + return

{children}

+} +``` + +```tsx +function App() { + return ( +
+ ({ + ...defaultStyles, + ...{color: 'red'}, + })} + > + Hello app! + +
+ ) +} +``` + +## Default resolvers, and formatters can be exported for use by component consumers + + + +```tsx +let defaultStyles = {textDecoration: 'underline'} + +export function resolveDefaultStyles(incomingStyle) { + return typeof incomingStyle === 'function' + ? incomingStyle(defaultStyles) + : {...defaultStyles, ...incomingStyle} +} + +export function AComponent({ + style = null, + children = 'Hello components', +}) { + let mergedStyles = resolveDefaultStyles(style) + + return

{children}

+} +``` + +## to avoid manually clearlisting all valid HTML attributes, use rest and spread syntax for props + +```tsx +export function AComponent({ + style = null, + children = 'Hello components', + ...restProps +}) { + let mergedStyles = resolveDefaultStyles(style) + + return ( +

+ {children} +

+ ) +} +``` + +## This implementation makes it simple to opt out of defaults (where necessary) + +```tsx +function App() { + return ( +
+ { + color: 'red' + } + } + > + Hello app! + +
+ ) +} +``` + +## `children` can be an array + +```tsx +function AComponent({ + chant = false, + children = 'Hello components', +}) { + return

{[children, children, children].join(' ')}

+} +``` + +## `children` can be many types. + +```tsx +A string +{123} +{boolean} +[1, 2, 3] +[1, <>2, 3] +<>stuff +

stuff

+``` + +## So treat `children` as opaque + +React.children diff --git a/chan.dev/src/content/guide_steps/sm7b/index.md b/chan.dev/src/content/guide_steps/sm7b/index.md new file mode 100644 index 00000000..403bf043 --- /dev/null +++ b/chan.dev/src/content/guide_steps/sm7b/index.md @@ -0,0 +1,20 @@ +--- +title: a chantastic guide to theh Shure SM7B +--- + +This mic is the standard. + +Love it or hate it, it is the choice for content creators, podcasters, broadcasters and more. + +It’s an extremely compromised mic. But its versatility more than compensates for it. + +it looks good on camera. and not for any single reason but a lot of little reasons. + +- integrated pop filter +- integrated (and internal) shock mount +- matte black color +- integrated cable routing + +I wanted to hate this mic. With degrees in recording arts, I never understood why at-desk creators love this mic so much. + +The SM 7B microphone is not a perfect mic. It is the most versatile and that’s because of its shock mount system. I’ve seen a lot of mics attempt to compete on one aspect of the microphone quality. Would in fact it is easy to beat the S7 on one met. The problem is beating it on all metrics background noise isolation signal aesthetic and vibration injection diff --git a/chan.dev/src/content/guide_steps/supermotions/index.md b/chan.dev/src/content/guide_steps/supermotions/index.md new file mode 100644 index 00000000..8ed9ab86 --- /dev/null +++ b/chan.dev/src/content/guide_steps/supermotions/index.md @@ -0,0 +1,21 @@ +--- +title: A chantastic guide to supermotions +--- + +vim supermotions + +- destructive insert + - change full text object (inside) + - change partial text object (til) + - change line (C) + - change partial line + - (visualizing selections, understanding motion) +- positional insert + - above and below + - begging of line + - first character + - end of line + +* jump to occurrence + - next + - previous diff --git a/chan.dev/src/content/guide_steps/surviving-a-layoff/index.md b/chan.dev/src/content/guide_steps/surviving-a-layoff/index.md new file mode 100644 index 00000000..dd3b9028 --- /dev/null +++ b/chan.dev/src/content/guide_steps/surviving-a-layoff/index.md @@ -0,0 +1,3 @@ +--- +title: A chantastic guide to survivg a layoff +--- diff --git a/chan.dev/src/content/guide_steps/webcam/index.md b/chan.dev/src/content/guide_steps/webcam/index.md new file mode 100644 index 00000000..bd28fe03 --- /dev/null +++ b/chan.dev/src/content/guide_steps/webcam/index.md @@ -0,0 +1,10 @@ +--- +title: a chantastic guide to looking good on webcam +--- + +looking good with a webcam + +1. external keyboard (you can now get a more flattering angle - put it on boooks. benefit. no more keyboard clunking in someone’s ear) +2. square up with your background (this ads stability to your shot and therefor stabilityvto you) +3. orient your window so that the object of your focus is closest to the webcam +4. get lit. diff --git a/chan.dev/src/content/os/daily.md b/chan.dev/src/content/os/daily.md index 977977c6..40659cb5 100644 --- a/chan.dev/src/content/os/daily.md +++ b/chan.dev/src/content/os/daily.md @@ -18,3 +18,38 @@ date: 2023-11-14 ## Sleep https://www.hubermanlab.com/topics/sleep-hygiene + +## Daily blocks (potential) + +| | | +| ---- | ----------------------------------- | +| 0700 | [Morning routine](#morning-routine) | +| 0800 | Shake. Run. Wash. | +| 0900 | Work block #1: Biggest item first | +| 1000 | " | +| 1100 | " | +| 1200 | " | +| 1300 | Rest block (lunch and texts) | +| 1400 | Work block #2 | +| 1500 | | +| 1600 | | +| 2200 | Sleep | + +## Morning routine + +- Weigh in +- Drink up (16oz) +- Dress for action +- Move (mobility exercise) +- Set intention for day +- Make shake +- Let cooper out to pee + +## Work block #1 + +- 13 work block 2 +- 16 cleanup +- 17 cooper +- 18 family time +- 21 quiet time with nellie +- 22 bedtime routine diff --git a/chan.dev/src/content/posts/excellence-is-viral.md b/chan.dev/src/content/posts/excellence-is-viral.md new file mode 100644 index 00000000..7361096f --- /dev/null +++ b/chan.dev/src/content/posts/excellence-is-viral.md @@ -0,0 +1,17 @@ +--- +title: Excellence is viral +--- + +About 9 years ago I gave the best man toast at my brother-in-law's wedding. + +I'm a decent speaker. And I did a good job. + +But I didn't realize how good a job until hearing that brother-in-law deliver the toast at his brother's wedding. + +It was the best groomsman toast I'd ever heard. Flawless. + +Excellence begets excellence. + +When you try hard, take your responsibilities seriously, you set a bar for others to beat. And when they exell, they don't just bless you with their achievement. They bless others. + +Do the absolute best you can, in al things. It will come back to you. diff --git a/chan.dev/src/content/posts/how-to-ask-a-question.md b/chan.dev/src/content/posts/how-to-ask-a-question.md new file mode 100644 index 00000000..bf45a569 --- /dev/null +++ b/chan.dev/src/content/posts/how-to-ask-a-question.md @@ -0,0 +1,22 @@ +--- +title: How to ask a question +--- + +- Address your audience and illustrate intent: + - "Hey (implied), I'd like to know you're thoughts on (subject)…" +- Lead with context: + - "You have a PhD in human movement; how do you feel about breakdance in the olympics?" +- Pause between context and question + - "You have been vocally oposed to React. Do you really believe that we are better off without React? Or is this more of a stunt?" +- If you have a follow-up (and you're not setting a trap), include it in the question + - "You beat your personal record. Do you plan to beat it again? If so, how will your training regimine evolve to accomplish that goal? + +A specific question, that is off-base/incorrect/on in the wrong direction, is better than an open-ended question. + +Never apologize for a question based in misunderstanding. Appreciate (and express gratitude) for the correction. This will build trust and give them an increasing amount of space to correct you. This is good for everyone. +(Additionally, apologies are a momentum killer. Nobody want's to go backward. Role your mistake into a clarifying question. "wow, so that has me re-thinking everything. how does this apply then to (previous line of questioning or things you hadn't thought were in line)") + +Types of questions: + +- Highlights: what was the best part of (experience) +- Review: knowing what you know now, would you do (effort) differently? diff --git a/chan.dev/src/content/posts/jdl.md b/chan.dev/src/content/posts/jdl.md new file mode 100644 index 00000000..208a1877 --- /dev/null +++ b/chan.dev/src/content/posts/jdl.md @@ -0,0 +1,10 @@ +--- +title: Dick Joke Likelihood +date: 2024-04-15 +--- + +there’s a reason Ricky Jarvis keeps hosting the oscar’s (the thrill of the unpredictable). + +as dick joke likelihood drops to zero, so does urgency around tuning in. + + diff --git a/chan.dev/src/content/posts/manifesto.md b/chan.dev/src/content/posts/manifesto.md new file mode 100644 index 00000000..666ea79c --- /dev/null +++ b/chan.dev/src/content/posts/manifesto.md @@ -0,0 +1,20 @@ +--- +title: manifesto +--- + +personal manifesto + +- i want to be helpful but i don’t want to help +- i guarantee nothing +- i return nothing + +on content: + +- it’s not my job to make it fun. +- it’s to have fun with it. + +tricky bit + +- depth in my life has come thru reading and consumption of art +- breadth from sharing socially +- trap of social consumption diff --git a/chan.dev/src/content/posts/sous-vide.md b/chan.dev/src/content/posts/sous-vide.md new file mode 100644 index 00000000..26f9912c --- /dev/null +++ b/chan.dev/src/content/posts/sous-vide.md @@ -0,0 +1,15 @@ +--- +title: Sous Vide +--- + +## Favorite temperatures + +(sample data only, unverified) + +| | | | +| ------- | --------- | ----- | +| Chicken | breast | `140` | +| Chicken | tenders | `140` | +| Chicken | thigh | `165` | +| Chicken | wing | `165` | +| Chicken | drumstick | `165` | diff --git a/chan.dev/src/content/posts/start-with-published.md b/chan.dev/src/content/posts/start-with-published.md new file mode 100644 index 00000000..0c8e0e92 --- /dev/null +++ b/chan.dev/src/content/posts/start-with-published.md @@ -0,0 +1,12 @@ +--- +title: Start with published +--- + +A philosophy on publishing. + +Start work in public. Extend and privatize as work continues. + +- Stream (low effort publishing) +- Coures (high effort publishing) + +Tweet can grow into a post and/or eventually course. diff --git a/chan.dev/src/content/posts/this-is-a-square.md b/chan.dev/src/content/posts/this-is-a-square.md new file mode 100644 index 00000000..8ad5b6be --- /dev/null +++ b/chan.dev/src/content/posts/this-is-a-square.md @@ -0,0 +1,20 @@ +--- +title: This is a square +description: The power of teaching strongest truths first (and the nature of storytelling) +--- + + + +- This is a square. It is only a square. +- Squares are also rectangles. +- This is a rectangle. It is only a rectangle. +- Rectangles are also parallelograms. +- This is a parallelogram. It is only a parralelogram. +- Paralellograms are also trapazoids. +- This is a trapazoid. It is only a trapazoid. +- Trapazoids can also be quadrilaterals. +- This is a quadrilateral. It is only a quadrilateral. +- Quadrilaterals are also polygons. +- A Polygon is any shape with sides and angles. + +(Rhombus? Where) diff --git a/chan.dev/src/content/posts/trust.md b/chan.dev/src/content/posts/trust.md new file mode 100644 index 00000000..2208aa28 --- /dev/null +++ b/chan.dev/src/content/posts/trust.md @@ -0,0 +1,20 @@ +--- +title: trust +date: 2024-04-18 +--- + +the most important thing in my life is trust + +not trust that i will never fuck up + +but trust that i will show up for the cleanup, after i fuck up + +but i realized something this year… + +i wasn’t trusting others to trust me + +i was playing it safe — always in bounds + +that isn’t how trust works + +you don’t have trust if you never exercise trust diff --git a/chan.dev/src/content/posts/who-are-we-not.md b/chan.dev/src/content/posts/who-are-we-not.md new file mode 100644 index 00000000..0ef55943 --- /dev/null +++ b/chan.dev/src/content/posts/who-are-we-not.md @@ -0,0 +1,4 @@ +--- +title: Who are we not? +description: The dark matter that sets who we are in the light. +--- diff --git a/chan.dev/src/content/posts/you-can-be-good-or-you-can-be-early.md b/chan.dev/src/content/posts/you-can-be-good-or-you-can-be-early.md new file mode 100644 index 00000000..ba80d938 --- /dev/null +++ b/chan.dev/src/content/posts/you-can-be-good-or-you-can-be-early.md @@ -0,0 +1,3 @@ +--- +title: You can be good or you can be early +---