{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Philosophy as a service",
  "home_page_url": "https://dijonkitchen.org/",
  "feed_url": "https://dijonkitchen.org/feed.json",
  "language": "en",
  "authors": [
    {
      "name": "Jonathan Chen",
      "url": "https://dijonkitchen.org"
    }
  ],
  "items": [
    {
      "id": "https://dijonkitchen.org/notes/raw/",
      "url": "https://dijonkitchen.org/notes/raw/",
      "title": "raw",
      "content_html": "<p>I\u2019m still learning to focus on the good and connecting with people before solving problems.</p>\n<p>There\u2019s a certain flow you get when you\u2019re focused on a great conversation with and old friend. AI may know more, but it doesn\u2019t inspire from raw experience and scar tissue a person can have.</p>\n<p>It\u2019s like progressive load on the mind for longevity.</p>\n",
      "date_published": "2026-06-04T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/assert/",
      "url": "https://dijonkitchen.org/notes/assert/",
      "title": "assert",
      "content_html": "<p>Sometimes you need some breathing room from anxiety.</p>\n<p>By taking that space, you can improve your responsiveness and perhaps still defy authority and surprisingly be proven in the right.</p>\n<p>Keep the connectedness with everyone though. You never know what others are going through or thinking.</p>\n",
      "date_published": "2026-05-28T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/meld/",
      "url": "https://dijonkitchen.org/notes/meld/",
      "title": "meld",
      "content_html": "<p>The mind is so interesting.</p>\n<p>There are all these layers in your day to day and night.</p>\n<p>You can go from feeling fear of disappointment to reminiscing with old friends that you are going to leave soon. The vulnerability and anxiety of miscommunication to the productivity of actualizing a move. From seeding your brain before you sleep with affirmations that your dreams are meaningful and important to navigating the feelings that entails when you actually remember more of your dreams in the morning.</p>\n<p>Remember you can change your mind when the facts change. Give it some chia seeds too.</p>\n",
      "date_published": "2026-05-21T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/wonder/",
      "url": "https://dijonkitchen.org/notes/wonder/",
      "title": "wonder",
      "content_html": "<p>As the world shifts back to working closer together, I wonder if it\u2019s a good thing long-term. Sometimes we reminisce about old times.</p>\n<p>Loneliness is not a disease; we shouldn\u2019t treat the symptoms of the lack of community.</p>\n<p>Sometimes it\u2019s just as simple as walking with a little extra weight on you to get more blood pumping and improving your baseline.</p>\n<p>People are like this too. May not need therapy all the time, but it\u2019s a good way to open a conversation.</p>\n<p>It\u2019s a wonderful world.</p>\n",
      "date_published": "2026-05-14T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/how-this-bliki-works/",
      "url": "https://dijonkitchen.org/notes/how-this-bliki-works/",
      "title": "How this bliki works",
      "content_html": "<h2>Authoring</h2>\n<ol>\n<li>Open the <code>content/</code> folder as an Obsidian vault.</li>\n<li>Write notes in plain markdown. Use <code>[[wiki links]]</code> to connect ideas.</li>\n<li>Tags via front-matter (<code>tags: [foo]</code>) or inline (<code>#foo</code>) \u2014 both work.</li>\n</ol>\n<h2>Drafts</h2>\n<pre><code class=\"language-yaml\">---\ntitle: A half-formed thought\ndraft: true\n---\n</code></pre>\n<p>Drafts are excluded from the build but still render in Obsidian.</p>\n<h2>Aliases &amp; redirects</h2>\n<pre><code class=\"language-yaml\">---\ntitle: My canonical title\naliases:\n  - /old-slug/\n  - /another-name/\n---\n</code></pre>\n<p>Each alias gets a tiny redirect page pointing at the canonical URL.\nOnce added, never remove an alias \u2014 URLs are forever.</p>\n<h2>Publishing</h2>\n<pre><code class=\"language-sh\">git add . &amp;&amp; git commit -m &quot;new note&quot; &amp;&amp; git push\n</code></pre>\n<p>CI runs the full harness (HTML validity, microformats conformance, link\nintegrity, feed validity, idempotency) and only deploys if everything\nis green.</p>\n<h2>Syndicating</h2>\n<p>Each deploy sends new posts to <a href=\"https://brid.gy\">Bridgy</a>, which reposts\nthem to Mastodon and Bluesky, and to <a href=\"https://fed.brid.gy\">Bridgy Fed</a>,\nwhich federates them to the fediverse. The copies always point back here\nas canonical. Replies, likes and reposts come back as webmentions and show\nunder the post on the next deploy.</p>\n<p>When a syndicated copy goes live, add its URL to the post's front-matter:</p>\n<pre><code class=\"language-yaml\">syndication:\n  - https://mastodon.example/@me/12345\n  - https://bsky.app/profile/me/post/abc\n</code></pre>\n<p>Those URLs render as <code>u-syndication</code> links, closing the POSSE loop.</p>\n",
      "date_published": "2026-05-10T00:00:00+00:00",
      "summary": "A short tour of the conventions used in this vault.",
      "tags": [
        "meta"
      ]
    },
    {
      "id": "https://dijonkitchen.org/notes/memory/",
      "url": "https://dijonkitchen.org/notes/memory/",
      "title": "memory",
      "content_html": "<p>Less can be more if it focuses on memorability.</p>\n<p>Even failed experiments can give you peace.</p>\n<p>This kind of adaptive thinking allows you to both reminisce and plan for ownership of the future.</p>\n",
      "date_published": "2026-05-07T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/lemonade/",
      "url": "https://dijonkitchen.org/notes/lemonade/",
      "title": "lemonade",
      "content_html": "<p>Fighting against the randomness of entropy is hard. Maybe one way is to schedule important things at awkward cadences. While not truly random, they can be forcing functions to redirect your attention.</p>\n<p>I recently discovered apps for gathering people together with public events. It\u2019s nice to easily schedule informal things and have them connect you with family, friends, and strangers. It doesn\u2019t have to be just annual birthday parties.</p>\n<p>Make every lemon crisis an opportunity for new lemonade.</p>\n",
      "date_published": "2026-04-29T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/control/",
      "url": "https://dijonkitchen.org/notes/control/",
      "title": "control",
      "content_html": "<p>We\u2019d all love control and a mutual web of trust with others in our life and communities. Even if there was conflict, we\u2019d have people to confide in and mediate.</p>\n<p>The reality is we\u2019re all likely average and should lower our expectations for ourselves and others. Give ourselves some grace when we can\u2019t control everything.</p>\n<p>What we can control is continual learning and taking what works into our life. Perhaps it\u2019s the best way to cope. And with that, we still have hope.</p>\n",
      "date_published": "2026-04-22T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/intention/",
      "url": "https://dijonkitchen.org/notes/intention/",
      "title": "intention",
      "content_html": "<p>Moving and doing with intention is important. Otherwise, you\u2019d never take a vacation.</p>\n<p>That flexibility helps you and your relationships grow too.</p>\n<p>Exploring how to hand-make cavatelli pasta with your kids with semolina flour that you\u2019ve never used before is an enlightening experience.</p>\n<p>Something I can never reproduce is the how often the first time I make things, they often go particularly well. There\u2019s something about the wonder and newness of something you haven\u2019t done before that brings excitement to the product itself. It\u2019s like when people say they taste the love put into it. You can taste the enthusiasm!</p>\n<p>It can be a lot of work to gather quality, foreign ingredients and make things yourself, but it\u2019s an experience no one can take away or replace either.</p>\n",
      "date_published": "2026-04-16T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/distance/",
      "url": "https://dijonkitchen.org/notes/distance/",
      "title": "Distance",
      "content_html": "<p>It\u2019s kind of an innate human trait, the search for productivity and efficiency through leverage. It\u2019s allowed our species to grow and expand.</p>\n<p>There is a cost though.</p>\n<p>Leverage certainly does provide more power with the same amount of strength. What we often forget is the distance it also brings.</p>\n<p>Archimedes said that if you gave him a  lever and he\u2019ll move the Earth. Even if he could, he\u2019d be very far away.</p>\n<p>Technology has probably been this siren call for us. We love all the creature comforts it provides us being able to do anything we want around the world and communicate with anyone anywhere.</p>\n<p>That distance is unnatural though. Our experiences of the wonders of the world are only stimulated a small part of our senses. A lot more people are disconnected from where their food comes from or how it\u2019s made. We are more, anxious, burnt out, and lonely than before despite our advances. We don\u2019t have the understanding of those near us like our neighbors.</p>\n<p>Heal with wisdom, peace, and love for each other. Hug each other or it\u2019ll be a bitter lesson.</p>\n",
      "date_published": "2026-04-08T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/cleanse/",
      "url": "https://dijonkitchen.org/notes/cleanse/",
      "title": "Cleanse",
      "content_html": "<p>They say cleanliness is next to godliness.</p>\n<p>Maybe in more ways than one.</p>\n<p>Spring gives fresh hope to the world with new things that can grow.</p>\n<p>To make room, we clean out the house, and maybe even our bodies to make room for healthy things we really need and want.</p>\n<p>Giving away old things is like letting go of things you once loved so that others can enjoy them too.</p>\n<p>Even sifting through old books I haven\u2019t read yet, I skim them to assess whether they\u2019re still worth reading versus given away. They are like time capsules to an older, curious me.</p>\n<p>I wonder how we can shed habits and emotions in a similar way. Peeling away to the core. Finding our innermost imperfections, holding them, repairing them for our wiser selves in the modern age.</p>\n",
      "date_published": "2026-04-01T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/resilience/",
      "url": "https://dijonkitchen.org/notes/resilience/",
      "title": "Resilience",
      "content_html": "<p>Life throws you many roller coasters.</p>\n<p>From the pure joy of kids laughing to the depression escalated from small disagreements.</p>\n<p>There probably is no meaning to life, but life gives us meaning. We have the choice to live and be present with whatever we\u2019re going through. Nothing can take that free will away, even concentration camps.</p>\n<p>The hardest thing to be resilient against is gradual erosion of trust and reliability. It\u2019s very difficult to get that confidence back. Both parties need to want to work actively at rebuilding without getting too burned out and stressed in the process.</p>\n<p>It\u2019s interesting when one chooses stoicism and the other denies that viability.</p>\n<p>All we can do is keep connecting with people to gain understanding and validate with empathy.</p>\n<p>Much like a chess match you may feel you\u2019re losing, you haven\u2019t lost yet. You can keep trying to make the best of the situation and see if things change.</p>\n<p>Unlike games, you don\u2019t get start over. The fast may often be hardest before you break it. But the benefits of the resilience pay for itself.</p>\n",
      "date_published": "2026-03-25T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/supplements/",
      "url": "https://dijonkitchen.org/notes/supplements/",
      "title": "Supplements",
      "content_html": "<p>Supplementing life and body with games, reading, and nutritional supplements.</p>\n<p>Researching and exploring intermittent fasting (again), protein powder, undenatured type II collagen, creatine, fish oil, and psyllium husk.</p>\n<p>It\u2019s been good to not eat until noon and only through dinner. Good black coffee or matcha in morning every other day is a ritual and a treat.</p>\n<p>Psyllium husk as soluble fiber before lunch, plus some fish oil.</p>\n<p>Protein drink as snack mid-afternoon or after workout at night.</p>\n<p>Creatine and collagen with carbs at dinner.</p>\n<p>Indulge yourself for special occasions like Pi Day, anniversaries, and hysterically happy kids.</p>\n",
      "date_published": "2026-03-19T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/todo-diy/",
      "url": "https://dijonkitchen.org/notes/todo-diy/",
      "title": "TODO: DIY",
      "content_html": "<p>In an age where AI agents can do so much for you, there is still room to do things yourself. The agent-principal problem still exists. Perhaps even more from a safety perspective.</p>\n<p>From home repair, to coffee, or learning, you need to keep that curiosity and experimentation for yourself. It\u2019s beyond satisfaction too, it\u2019s about skin in the game, and accountability.</p>\n<p>This game, where you get mini rewards along the way as you figure out what kind of coffee beans there are and their differences, different local coffee roasters, and all the exact ratios and temperatures to brew them at. Tasting a coffee over time as it cools and noticing the subtle chocolatey notes and smooth body. Or when you roughly follow a french toast recipe, but realize why they said to use stale bread, rather than fresh bread. You\u2019re always learning.</p>\n<p>I\u2019ve been liking AI learning modes, that exercise the socratic method. Questioning what I\u2019m questioning and what I may already know. Making me fill in the blanks. It\u2019s more a partnership than pure consumption.</p>\n<p>Like the old coins you\u2019ve worked hard to collect as a kid, there\u2019s something special about the hard work you put into thinking, \u201cis this coin special or old in some way?\u201d</p>\n<p>Reading long-form on your own, rather than summaries is still important. You form your own opinions and perspectives as you go, slowly, rather than all at once.</p>\n<p>It\u2019s something movies seem to often lack compared to books. There\u2019s a more multi-sensory, immersive experience, but there\u2019s less room for your own imagination. People are left to wonder about subplots and plot holes, rather than how things were presented.</p>\n<p>Assessing people on this is particularly difficult given how quick advances are changing the capabilities of an individual. Not everyone may adopt new technologies, and some may not be able to do anything when those services are down.</p>\n<p>Writing this is the same. Maybe it\u2019s not the most well-formed, but it\u2019s mine. Maybe I\u2019ll get better, maybe not, but it\u2019s still mine.</p>\n",
      "date_published": "2026-03-11T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/structure/",
      "url": "https://dijonkitchen.org/notes/structure/",
      "title": "Structure",
      "content_html": "<p>There is something very satisfying about great architecture.</p>\n<p>It has a strong foundation, with high tolerances, and yet can allow extensions only limited by your creativity.</p>\n<p>Law is a piece of this for society.</p>\n<p>When times are tough, it is something there that is stable.</p>\n<p>Sometimes, people may feel it changes too slowly, but that\u2019s a feature and not a bug.</p>\n<p>Adapting to a world where technology compounds at an accelerating pace makes providing a strong structure tough.</p>\n<p>Ideally, the law can at least help those most in need, in the worst of times.</p>\n<p>The rest can be positive optionality for the masses.</p>\n",
      "date_published": "2026-03-04T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/crafting/",
      "url": "https://dijonkitchen.org/notes/crafting/",
      "title": "Crafting",
      "content_html": "<p>As things are abstracted from us, we need to manage more.</p>\n<p>Whether it\u2019s AI agents for our children, placing safe guardrails so they can safely explore and possibly surprise you.</p>\n<p>This control must be not too strong or too loose. You want to have a strong foundation like your own domain, hosting all your writing, and also be able to distribute it widely in the latest fashionable products.</p>\n<p>It allows you to choose the ethics and morality you agree with while still benefiting from technological advancement.</p>\n<p>You can\u2019t really get angry when things don\u2019t go as you would like. Failure is really learning.</p>\n<p>When assessing others and crafting questions that may push their limits, you can also push your own. In surprising you, you may also surprise and promote yourself.</p>\n<p>I\u2019ve noticed this in a lot of Asian culture. The pride in mastery and instruction in K-pop to Japanese sword techniques and strategy.</p>\n<p>It\u2019s interesting that even in the modern day, proximity to these cultures leads to more similar character. I\u2019m excited to leave the four seasons behind and enjoy warmer weather and more craftsmanship.</p>\n",
      "date_published": "2026-02-26T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/fun-and-games/",
      "url": "https://dijonkitchen.org/notes/fun-and-games/",
      "title": "Fun and games",
      "content_html": "<p>Having an adventure time cooking and making matcha for family. Learned you can\u2019t really trust much that you see. Need to learn about craftsmanship and good primary sources. Just like career advice is biased by the experiences of the giver. You need to try to gain your own first-hand experiences to really learn and know what to do and if something is for you.</p>\n<p>Lots of growth in delegating to agents, AI or otherwise, but good to have always done something yourself to know the nuances and difficulties. It keeps us sharp to go back to basics and doing things ourselves once in a while. Not sure what\u2019s the right ratio. Must keep experimenting.</p>\n<p>Experiments should have good hypotheses that you\u2019ve got an educated prediction on. These help shape the specifications and outcomes you want to test for. They provide a safety net as you continually change.</p>\n<p>From cooking to sports, you\u2019ll want a recipe you\u2019ve worked on and refined, but also testing small changes to it. Often times, these nuances are crucial for higher performance.</p>\n<p>Even as just a consumer, you can order your favorite dim sum, and try out new dishes to expand your palate. The 1/e (37%) balance of breadth vs depth or explore vs exploit is applicable to so many parts of life.</p>\n<p>In teaching the kids, you want them to master basic life skills like reading and writing. By working on colors, then, letters and phonics with games like \u201cI spy,\u201d you can quiz them for fun with easy things they know 2/3s of the time and new, harder things 1/3 of time.</p>\n<p>It\u2019s been great to see the kids grow as they naturally have new experiences with family members. From sliding down the snow on their butts, to their feet, to watching olympians at the highest level.</p>\n<p>Growing is more fun when it\u2019s like the entrepreneurial hustle. You keep discovering new things that people want and you help them get it. Money is just an easy way to keep score.</p>\n<p>When you play games like Puzzle Fighter, no one really cares about the points you get. The fun is in the process, the back and forth, and only finally the victory.</p>\n<p>Much like probabilistic games like poker, sometimes you can do the right thing and still lose. There\u2019s always that chance. You need to be consistent and resilient despite these so you can survive and thrive longer term.</p>\n",
      "date_published": "2026-02-18T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/balance/",
      "url": "https://dijonkitchen.org/notes/balance/",
      "title": "Balance",
      "content_html": "<p>Writing for my ideal customer: myself.</p>\n<p>Been maintaining mental and physical fitness with explorations of research-backed supplements like creatine, protein, caffeine, and L-theanine. The latter two lately through the ceremony, or at least my minimalist version, of matcha.</p>\n<p>It\u2019s been interesting while listening to Musashi\u2019s Book of the Five Rings, thinking about strategy in the large and in the small, much like software abstractions. The evolution of tea ceremonies from fancy rooms to show off to guests, to the simplicity and focus of the tea itself along with minimal decorations.</p>\n<p>Embracing the asymmetry, the broken renewed is much like life\u2019s creative destruction. Things don\u2019t always go to plan, but you can make the best of it by using that wall to push against to another direction.</p>\n<p>In constructing some derby cars with my son recently, I dove into the minimal physics elements, but saw in practice that there were lots of ways to win a race.</p>\n<p>This view of many, if not all sides, allows us to think and feel like others. That connection may be all we have as AI advances. We may be the modern day Dr. Frankenstein creating something beyond our control. Or perhaps, like in Brazilian Jiu-Jitsu, we must flow like the river by learning and teaching.</p>\n",
      "date_published": "2026-02-12T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/the-selfish-meme-of-productivity/",
      "url": "https://dijonkitchen.org/notes/the-selfish-meme-of-productivity/",
      "title": "The Selfish Meme of Productivity",
      "content_html": "<p><a href=\"https://api.substack.com/api/v1/audio/upload/7e9e45e8-6830-4623-83bd-7d8eb30cb7fd/src\">Listen to the episode</a></p>\n<p>listening to sapiens and the history of humankind thinking about if productivity is</p>\n<p><strong>0:15</strong></p>\n<p>really a curse it's perhaps our greatest strength and differentiator between us and</p>\n<p><strong>0:22</strong></p>\n<p>other species or things but it's also led to</p>\n<p><strong>0:29</strong></p>\n<p>us kind of hurting ourselves where we have more specialization,</p>\n<p><strong>0:37</strong></p>\n<p>we're almost too hyper focused on one thing,</p>\n<p><strong>0:42</strong></p>\n<p>all to just kind of grow our population and genes or memes.</p>\n<p><strong>0:48</strong></p>\n<p>And actually, maybe not even be really that happy or peaceful about it.</p>\n<p><strong>0:57</strong></p>\n<p>maybe then the learning is to figure out what is enough to do whatever you like and</p>\n<p><strong>1:08</strong></p>\n<p>you'll kind of find a way,</p>\n<p><strong>1:11</strong></p>\n<p>but maybe you won't take over society with your thoughts,</p>\n<p><strong>1:17</strong></p>\n<p>but that's okay.</p>\n",
      "date_published": "2025-02-04T00:00:00+00:00",
      "tags": [
        "podcast"
      ]
    },
    {
      "id": "https://dijonkitchen.org/notes/governance/",
      "url": "https://dijonkitchen.org/notes/governance/",
      "title": "Governance",
      "content_html": "<p><a href=\"https://api.substack.com/api/v1/audio/upload/48a00e5f-5e07-4325-817c-957c0227f7f8/src\">Listen to the episode</a></p>\n<p><img src=\"https://substack-post-media.s3.amazonaws.com/public/images/483b7bd3-e2ac-4633-a96a-31c8c4a00465_1024x1024.png\" alt=\"\" /></p>\n<p>Not even the perception of corruption, guilty until proven innocent for officials as a deterrent</p>\n<p>Paid well as an incentive to get best people and keep corruption away</p>\n<p>Small area of governance to have focus</p>\n<p>Long term rationality for compounding</p>\n<p>May not want two parties to focus on population rather than politics</p>\n<p>Breadth of theories and depth of practice for your specific circumstances</p>\n",
      "date_published": "2024-12-21T00:00:00+00:00",
      "summary": "Parental leadership at scale",
      "tags": [
        "podcast"
      ]
    },
    {
      "id": "https://dijonkitchen.org/notes/death/",
      "url": "https://dijonkitchen.org/notes/death/",
      "title": "Death",
      "content_html": "<p><a href=\"https://api.substack.com/api/v1/audio/upload/4af47756-2ab5-48af-b5e6-43916717b629/src\">Listen to the episode</a></p>\n<p><img src=\"https://substack-post-media.s3.amazonaws.com/public/images/6149b500-7c7e-4551-b16e-34e0d2043450_800x512\" alt=\"\" /></p>\n<p>You\u2019re going to die in 1, 2, 5, 10, 20 years.</p>\n<p>What would you do?</p>\n<p>Are they different?</p>\n<p>It probably doesn\u2019t matter what you predict after 10 or 20 years.</p>\n<p>That\u2019s too far in the future to get right.</p>\n<p>Too much can change from now until then.</p>\n",
      "date_published": "2024-12-14T00:00:00+00:00",
      "summary": "Survive or thrive",
      "tags": [
        "podcast"
      ]
    },
    {
      "id": "https://dijonkitchen.org/notes/the-price-of-productivity/",
      "url": "https://dijonkitchen.org/notes/the-price-of-productivity/",
      "title": "The Price of Productivity",
      "content_html": "<p><a href=\"https://api.substack.com/api/v1/audio/upload/d2ada661-4797-48ba-953c-46b856f8491f/src\">Listen to the episode</a></p>\n<p>Technology has led people to new heights.</p>\n<p>But not everyone uses it the same way.</p>\n<p>This creates a bigger and bigger gap between those that create and those that consume.</p>\n<p>As creators, consumers, and companies converge, it may be only a few big platforms that provide all the tools cheaply and take all the value.</p>\n<p>Existing laws haven't adapted well to this change in everything being &quot;free.&quot;</p>\n<p>This may be why advertising has been one of the few long-term profitable ways to run a technology business.</p>\n<p>Which companies do you think benefit from this the most?</p>\n<p>Those that best know the most people?</p>\n<p><img src=\"https://substack-post-media.s3.amazonaws.com/public/images/5881f1fc-cf49-4dea-ad1f-cbf6440bd5bd_1108x752.png\" alt=\"\" /></p>\n",
      "date_published": "2024-12-06T00:00:00+00:00",
      "summary": "Technology's extraction of value",
      "tags": [
        "podcast"
      ]
    },
    {
      "id": "https://dijonkitchen.org/notes/regimen/",
      "url": "https://dijonkitchen.org/notes/regimen/",
      "title": "regimen",
      "content_html": "<p>Ideal regimen:</p>\n<ul>\n<li>[ ] 2.0 hours personal, fun, hard, creative work/writing</li>\n<li>[ ] 0.5 hours meditation/breating/stretching/exercise</li>\n<li>[ ] 2.0 hours deep focus work</li>\n<li>[ ] 1.5 hours lunch/walk/siesta nap</li>\n<li>[ ] 2.0 hours deep focus work</li>\n<li>[ ] 2.0 hours prep/eat/clean up dinner</li>\n<li>[ ] 0.5 hours shower to diffuse/loosen mind revitalize creativity</li>\n<li>[ ] 2.0 hours play/learning/reading/planning ideally without technology</li>\n<li>[ ] 8.0 hours sleep/rest</li>\n<li>[ ] remaining hours chores, community conversations, transportation, philosophizing</li>\n</ul>\n<p>Optional\nnight owl\novertime\nif good cost/benefit.</p>\n<p>Rest 2-3 days in week + holidays\n(technology sabbath,\n[physical] [team] games)</p>\n",
      "date_published": "2023-04-11T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/learning/",
      "url": "https://dijonkitchen.org/notes/learning/",
      "title": "learning",
      "content_html": "<h2>Learning how to learn</h2>\n<p>Deliberate focus\nbuilding mental models\n(chunky trunk of principles)\nto grow\nleaves of creativity.\nMastery learning\nfrees up limited working memory\nof four chunks\nfor other thoughts\nor connections.\nDon't overlearn\nthings you have already mastered.\nOtherwise,\nyou'll only be confirming\nyour own beliefs/methods/existing knowledge\nrather than exploring\nnew information\nand possibility\nlearning\nsomething new.\nCollaboration with a team\nhelps spark new ideas and connections\nwhich are deeper too.\nPractice multi-sensory association (memes!)\nand recall\nand good habits\nto stay focused.\nPlan ahead\nfor avoiding bad habits.</p>\n<p>Deliberate rest\nto remember long-term,\nespecially after many repetitions\nand struggles.\nPhysical activity helps too.\nApproach difficult things first\nthen come back to them later\nfor new perspectives\nafter some diffuse processing.</p>\n<p>These discoveries\nseem similar\nto how babies learn.\nThey are constantly\nmoving all over the place,\nobserving\neven the tiniest details\nin a multi-sensory way,\nfocused on them,\nthen something else,\nthen tired,\nthey must rest and process them.\nThey're obviously\nlearning a lot very quickly\nbetween various motor skills,\nlanguage,\nand so many things\nwe take for granted.\nUnderstand that it's a normal process\nnot a product.\nFocus on output\nand outcomes will come.</p>\n<h2>Growth versus fixed mindset</h2>\n<p>A growth mindset\nis basically\nhaving the attitude that failing is acceptable\nbecause you can learn from failures\ngoing forward.\nYou experiment\nwith new things\nand may fail\nonce in a while,\nbut what you learn from it compounds\nand keeps encouraging you to do even more.</p>\n<p>Fixed mindsets\nare the opposite.\nYou restrict yourself\nfrom trying new things\nbecause you may fail.\nAnd because\nthe world keeps changing,\nwith new people\nlearning new things,\nyou essentially\nget left behind\nby not adapting.</p>\n<p>I first heard about\na growth versus fixed mindset\nwhile reviewing some algebra lessons\non Khan Academy\nwith my girlfriend.\nSal Khan,\nthe founder,\nhad an article\ntalking about a growth mindset\nand why he would only praise his son\nfor effort\nrather than results\nbecause that would encourage\na growth mindset.\nThis made a lot of sense to me\nand I was interested\nto hear that it is also a superset\n(and I love supersets!)\nof grit\nand some other character traits\nthat I've read about from\nKIPP.\nOf course\nI dug a little deeper\nto learn about\ngrowth mindsets\nand found a TED Talk\nabout it too.</p>\n<p>It's interesting\nthat this attitude\nin a growth mindset\nis also related to the\nLean software development\nphilosophy of\n&quot;Think big, act small, fail fast, learn rapidly.&quot;\nI'll get to that another day.</p>\n<h3>References</h3>\n<ul>\n<li><a href=\"https://www.youtube.com/watch?v=U48yVm_6lQ0&amp;list=PL-9r0qXR0Kq1TA2W6SpKLYZTP-_xfbebw\">https://www.youtube.com/watch?v=U48yVm_6lQ0&amp;list=PL-9r0qXR0Kq1TA2W6SpKLYZTP-_xfbebw</a></li>\n<li><a href=\"https://www.huffingtonpost.com/salman-khan/the-learning-myth-why-ill_b_5691681.html\">https://www.huffingtonpost.com/salman-khan/the-learning-myth-why-ill_b_5691681.html</a></li>\n<li><a href=\"https://www.kipp.org/our-approach/character\">https://www.kipp.org/our-approach/character</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Lean_software_development\">https://en.wikipedia.org/wiki/Lean_software_development</a></li>\n</ul>\n",
      "date_published": "2021-08-27T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/leverage/",
      "url": "https://dijonkitchen.org/notes/leverage/",
      "title": "leverage",
      "content_html": "<p>Leverage exaggerates both the ups and the downs.</p>\n<p>Risky in investments because\nsome larger than expected downside\ncan result in you losing everything\nor not being able to easily recover.</p>\n<p>Loss percentages are asymmetric.</p>\n<p>Technology is also a lever.\nOptimistically,\nit can make a lot of things\nmore efficient, etc.</p>\n<p>But it may grow too fast\nfor people to fully adapt to.\nWe've evolutionally adapted to\nsmall, slow changes across time.</p>\n<p>Although you may not be able to stop productivity,\nyou can at least not participate in it.</p>\n<p>There may be some things worth participating on though.\nSome things are must haves that if we don't solve\nby a certain period of time, we'll never be able to.</p>\n<p>Global warming may be one of those problems.\nIt's one of those things that if we could have successfully completed tomorrow,\nwe'd probably wouldn't regret.</p>\n<p>Related: <a href=\"/risk\">risk</a></p>\n",
      "date_published": "2021-05-14T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/blockchain/",
      "url": "https://dijonkitchen.org/notes/blockchain/",
      "title": "blockchain",
      "content_html": "<p>Watching and learning since 2011.\nEach wave opened up the possibilities\nwhile trading off some of the initial principles\nfor practical transition.</p>\n<p>More incentive to support blockchain and profit\nwith majority ownership\nthan to ruin it for the minority.\nEspecially when proofs are expensive (compute, space, time).</p>\n<p>Adaptive compute for a changing world collective.\nCorrect wrongs with delegated consensus.\nCrypto internet computer\nblockchain machine learning with all the auditable, anonymous data and compute.</p>\n<p>Virtual worlds, with eSports and more.\nIterate toward global governance bootstrapping (Yunah)\nAligning influence, ownership, and identity/authentication\nCoordinated effort to slow/reverse adverse climate change</p>\n<p>Decentralized, aligned cities/countries/economy (internet unions)\nDemocratization of power/influence</p>\n<p>Can't stop distributed ideas and people,\nespecially the younger future.\nNearly anyone can create and participate in tokens or initial coin offerings,\nnot just the accredited wealthy.</p>\n<p>History of decentralization\nfrom empires,\nto countries,\nto cities,\nto companies,\nto individuals.</p>\n<p>Under-managed geographic countries have most to gain\nfrom something potentially managed better than corruption/ignorance.</p>\n<p>Fragmentation risk with blockchain overload\nMulti-currency interoperation (virtual and physical)</p>\n<p>Constant or fixed inflation rate of currency\nmay mean that it's difficult to adjust monetary supply\nfor economic factors.\n(a la Euro or any large, diverse country with inequity/disparity?)</p>\n<p>Store of value is small usecase.\nStill fiat trust in core developers and risk of bugs or collusion.\nOpen source allows anyone to audit, but also very difficult given technical complexity.</p>\n<p>Art has long-term potential\nas endless runway of human creation when necessities are met.\nMaybe not much use for money in such a utopia.\nBut existing market is small relative to other factors.</p>\n<p>Maximum value something greater than global GDP\nwith additional attributed to\nadded opportunities,\nefficiency,\nvolume,\nand postive feedback loop.</p>\n<p>It will take time and people will get overexcited\nand that might be good to accelerate to a better state\nor,\nat the very least,\nto learn what works.</p>\n",
      "date_published": "2021-04-28T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/risk/",
      "url": "https://dijonkitchen.org/notes/risk/",
      "title": "risk",
      "content_html": "<p>Risks are large, long-term losses.\nAvoid catastrophes\nand you can be optimistic\nabout your decision making\nand make high-potential choices\neven if they are low probability.\nThis minimizes regret\nand can allow for a more fulfiling life.\nYou never know how short your life may be\nand you may only be able to estimate\nwhat may happen in the next 20 years or so.</p>\n<p>Most things are sold versus bought.\nMakes sense\nthat it's too much of a burden\nfor most people\nto figure out what is the optimal thing\nfor themselves.\nHeuristics like whatever they've seen popularly in advertising/marketing\nis fine most of the time for non-critical things.</p>\n<p>But for important, critical things,\nthink for yourself.\nWhat can you do better\nand/or differently\nthan others\nthat may help move towards\nmore discovery\nof meaning.</p>\n<p>Can you think or act\nlonger-term\nthan others?\nCan you avoid catastrophe\nto pursue,\npotentially,\nthe best outcomes/ideals\nfor the future\nor leave a legacy that does?</p>\n",
      "date_published": "2020-09-30T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/descendants/",
      "url": "https://dijonkitchen.org/notes/descendants/",
      "title": "descendants",
      "content_html": "<p>m-shape people\ncollaborative pretotyping\ncreativity</p>\n",
      "date_published": "2020-08-25T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/architecture/",
      "url": "https://dijonkitchen.org/notes/architecture/",
      "title": "architecture",
      "content_html": "<h1>Architecture scaling and lifecycle</h1>\n<ul>\n<li>Validate ideas first with mocks and ads to gauge interest and gather data</li>\n<li>Refine idea with first few hardcore fans to iterate on</li>\n</ul>\n<h2>Exploration: Initial <a href=\"https://blog.asmartbear.com/slc.html\">simple, lovable, complete</a> product</h2>\n<ul>\n<li>Use tools that are easy and familiar to validate early ideas\n<ul>\n<li>(But consider long-term consequences of not using <a href=\"https://www.youtube.com/watch?v=rI8tNMsozo0\">simple</a> ones)</li>\n</ul>\n</li>\n<li>Examine data model for relationships\n<ul>\n<li>Traditional RDBMS if relational data, where referential integrity is important\n<ul>\n<li>PostgreSQL\n<ul>\n<li>Heroku integration</li>\n<li>Free, open-source</li>\n<li>Good optimizations</li>\n<li>Battle-tested reliability, community, performance</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>NoSQL when horizontal scaling is paramount and eventual consistency is sufficient</li>\n<li>Graph databases for graph-like data</li>\n</ul>\n</li>\n<li><a href=\"https://danluu.com/monorepo/\">Mono-repo</a> monolith\n<ul>\n<li>Minimal cognitive load for new, smaller codebase</li>\n</ul>\n</li>\n<li>Established fully-featured framework (e.g., <a href=\"https://luminusweb.com\">Luminus</a>, Next.js, Ruby on Rails, Django, etc.)\n<ul>\n<li>Quick setup</li>\n<li>Conventions over configuration\n<ul>\n<li>Minimal bikeshedding, analysis paralysis</li>\n</ul>\n</li>\n<li>Community of libraries/add-ons</li>\n<li><a href=\"https://12factor.net\">12factor</a> principles</li>\n<li>Server-side rendering</li>\n<li>Integrated data binding</li>\n<li>Migration generation</li>\n<li>Documented schema</li>\n</ul>\n</li>\n<li><a href=\"https://bulma.io\">Bulma CSS</a> to Bootstrap basics</li>\n<li>PaaS infrastructure to minimize reliability issues and management (e.g., Heroku)</li>\n<li>Use other services to ramp up quickly\n<ul>\n<li>E.g., Auth0</li>\n</ul>\n</li>\n<li>Test business value feedback loop as quick as possible</li>\n<li>Mobile-first, responsive web apps</li>\n</ul>\n<h2>Expansion: Proven founder-product-market fit</h2>\n<ul>\n<li>More custom SQL instead of with ORMs\n<ul>\n<li>Database views for security</li>\n</ul>\n</li>\n<li>Established testing frameworks (e.g., clojure.test, Jest, RSpec, Capybara, etc.)\n<ul>\n<li>Many Unit tests</li>\n<li>A few system, end-to-end tests of core functionality</li>\n<li>Test-driven development\n<ul>\n<li>Inexpensive adaptability</li>\n<li>High test coverage</li>\n<li>Simple tests</li>\n<li>Model domain a simple as possible</li>\n<li>Minimize premature optimization</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Break off a few major services that are fundamentally separate\n<ul>\n<li>Explore other technologies outside of <a href=\"https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/\">The Citadel</a>\n<ul>\n<li>Lower-level for performance</li>\n<li>Larger community for hireability and tooling</li>\n<li>Types for easing larger scale refactoring</li>\n<li>Typescript/Golang?</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Auto-scaling via Cloud infrastructure (e.g., AWS, Google Cloud, etc.)</li>\n<li>API Gateway\n<ul>\n<li>Single domain for API</li>\n<li>Let outside developers interface with back-end</li>\n</ul>\n</li>\n<li>GraphQL (optional)\n<ul>\n<li>Front-end declarative data fetching</li>\n<li>Less knowledge of back-end API necessary</li>\n</ul>\n</li>\n<li>CDN front-end</li>\n<li>Feature flagging for testing in production</li>\n<li>More, stronger testing</li>\n<li>A/B Testing with a lot of data to optimize key metrics</li>\n</ul>\n<h2>Extraction: Proven high, continual use</h2>\n<ul>\n<li>Dedicated specialists</li>\n<li>Go to the metal or create your own metal if performance is needed\n<ul>\n<li>Rust</li>\n<li>Apple Silicon</li>\n</ul>\n</li>\n<li>Consider building own, custom infrastructure\n<ul>\n<li>For business-specific problems</li>\n</ul>\n</li>\n<li>Native front-ends\n<ul>\n<li>iOS/Android</li>\n<li>Vanilla JS, less libraries</li>\n</ul>\n</li>\n</ul>\n",
      "date_published": "2020-07-26T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/life/",
      "url": "https://dijonkitchen.org/notes/life/",
      "title": "life",
      "content_html": "<p>Life aspirations\nthinking about a child,\nbut can really be applied to anyone.</p>\n<p>Born with supportive family of people and pets.</p>\n<p>Have fun active, self-unschooling\nwith mastery learning\nof foundational principles</p>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/How_to_Read_a_Book\">Reading tons of books across genres/subjects</a></li>\n<li>Creative music/jazz/art/food</li>\n<li>Math/Statistics/Physics/Computer science/Engineering</li>\n<li>Logic/Philosophy/Rhetoric/Persuasion</li>\n<li>Psychology/Economics</li>\n<li>Comedy</li>\n<li>Play all sorts of games, old and new</li>\n<li>Terrestrial and extraterrestrial travel</li>\n<li>Multilingual (English/Chinese/Latin/Spanish/French/German/Hindi/Arabic/Esperanto)</li>\n</ul>\n<p>Fitness</p>\n<ul>\n<li>Dance</li>\n<li>Mixed martial arts</li>\n<li>Decathlete/triathlete/bouldering/parkour</li>\n<li>Team sports leader</li>\n<li>Adventurer</li>\n</ul>\n<p>Advancing the state of the art\nwith explorative,\ncollaborative entrepreneurship\nof sustainable businesses for freedom</p>\n<ul>\n<li>Guts and grit\n<ul>\n<li>Failing, but not catastrophically failing, and recovering along the way</li>\n</ul>\n</li>\n<li>Building community of life partners along the way that question them and keep them on their toes</li>\n</ul>\n<p>Civic duty\nto enhance the long-term\nfor all walks of life\nin a global commonwealth\nas an empathetic military/political leader\nand rational optimist</p>\n<p>Dies with nothing but\na great legacy from\nintegrity,\nhard work,\nand\ncritical thinking</p>\n<p>Definitely spread your genes if you've done this</p>\n<p><a href=\"/freedom\">Freedom</a>\nto create your ideal world.\nMaximal luck from being in the <a href=\"https://en.wikipedia.org/wiki/Focal_point_(game_theory)\">right places</a>\nwith the right people.</p>\n",
      "date_published": "2020-05-29T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/freedom/",
      "url": "https://dijonkitchen.org/notes/freedom/",
      "title": "freedom",
      "content_html": "<p>long-term creative freedom vs status; game theory</p>\n<p>compounds itself 24/7</p>\n<p>equity is your accountability and consistent brand/integrity</p>\n<p>band together with those on the same journey; good character naturally grows network with your own input</p>\n<p>asymmetric input vs output; high positive optionality</p>\n<p>everyone's unique and provides some unique combination of skills that can help others like them</p>\n<p>utilize the frontier since few people know where that is or how to master it</p>\n<p>capitalism doesn't have to be oppression by those with money/power/fame\nif you understand it's an efficient means of communication\nand stick with those that want long-term creative freedom (possibly a positive sum for everyone),\nnot status (zero sum; can't grow)</p>\n<p>Productize yourself for product/market/founder fit.\nBe a creative.</p>\n<p>Don't need to take over the world.\nThere's room in the world\nfor a <a href=\"/diversity\">diverse</a> number of businesses.\nMany big businesses doing the same thing;\neven more smaller businesses doing something similar,\nbut unique in specialization or localization.\nEven with exactly the same business,\nthis offers the world some resiliency\nin the services or products\nthat are offered.</p>\n<p>In the end,\nit's about freedom\nto do what you want\nwhen you want it.\nFreedom to create\nyour ideal future\nand actualize your dreams.\nWork for others\nor work for yourself,\nit's up to you.</p>\n<p>VCs/Startups working together\nto accelerate the future\nas the Research and Development\nof the world.\nIdeally, the future should be\nmuch better than today.\nSmall chance of accelerating to\n<a href=\"https://80000hours.org/topic/priority-paths/technical-ai-safety/\">a future we can't control</a>\nthat dooms us all.</p>\n<p>Read quality books to learn about the past,\naccept and share possibly foolish/vulnerable,\nfun things in the present,\nbe generous to build interconnectedness\nand create your ideal future.</p>\n<h3>References</h3>\n<ul>\n<li><a href=\"https://nav.al/rich\">https://nav.al/rich</a></li>\n<li><a href=\"https://www.goodreads.com/book/show/37570605-company-of-one\">Company of One</a></li>\n<li><a href=\"https://m.signalvnoise.com/\">https://m.signalvnoise.com/</a></li>\n<li><a href=\"https://www.paulgraham.com/wealth.html\">https://www.paulgraham.com/wealth.html</a></li>\n</ul>\n",
      "date_published": "2020-05-24T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/diversity/",
      "url": "https://dijonkitchen.org/notes/diversity/",
      "title": "diversity",
      "content_html": "<p>From supermarkets to artists and musicians,\nthere are so many things good and bad;\nso many different styles and admirers.</p>\n<p>They may have no choice\nbut to do what makes sense to them.\nMaybe others are also interested\nin their creations.</p>\n<p>I read a lot online.\nWhen I come across people's blogs\nor social media,\nI checkout a sampling of their work\nand sometimes subscribe\n(one of my experiments).</p>\n<p>Going through someone's\njournal/thoughts/writing/work\nacross years is really interesting.\nIt's part of why I love biographies;\nbetter than in a lot of fiction,\nI can immerse myself into their life\nand world.\nI can put myself in their shoes\nat a particular point in time\nas they think through problems,\nsometimes solving,\nand sometimes failing.\nThese are real people,\nmaking real-life decisions,\nwith real consequencies.\nYou can fast forward\nor rewind\nand see what happens.\nYou may be able to learn something\nfrom them.</p>\n<p>There's an incredibly diverse amount of content\nout there,\nthis bliki included\n(but unfortunately,\nit's harder to see things across time\nunless you dig into <a href=\"https://github.com/dijonkitchen/dijonkitchen.github.io/commits/master\">the commit history</a>).\nYou can't read it all,\neven if it'd be really interesting.</p>\n<p>This expanse of diversity\ncan be overwhelming.\nOr you can embrace the <a href=\"/freedom\">freedom</a>.\nPerhaps <a href=\"/exploration\">explore</a> the cutting edge\nfor easier problems others aren't looking at yet.\nNo more unique a cutting edge than\nthe intersection of disciplines.</p>\n<p>collaboration to expand outreach</p>\n<p>regular creations for mindshare</p>\n<p>true human connection and story telling</p>\n<p>random chance and creation</p>\n<h3>See also</h3>\n<ul>\n<li><a href=\"https://30x500.com/academy/\">30x500 idea</a></li>\n</ul>\n",
      "date_published": "2020-05-24T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/design/",
      "url": "https://dijonkitchen.org/notes/design/",
      "title": "design",
      "content_html": "<p>Design things to be simple,\nbut no simpler.</p>\n<p>Simple is easy to understand\nand then only expand when necessary.\nSometimes that's with a generalized abstraction\nthat can easily be used;\nother times,\nit's a simple rewrite\nor refactor\nbecause there's so little code\nthat needs to be changed.</p>\n<ol start=\"0\">\n<li>Simply a text file?</li>\n<li>+custom HTML?</li>\n<li>+custom CSS?</li>\n<li>+plain Javascript?</li>\n<li>A simple script?</li>\n<li>Embedded client-side script code?</li>\n<li>A server?</li>\n<li>+cloud computing?</li>\n<li>A framework?</li>\n<li>A public web API?</li>\n<li>Full, client-side single-page app?</li>\n<li>State management vs stateless</li>\n<li>Distributed vs centralized</li>\n<li>Memory management</li>\n<li>Static typing</li>\n<li>Tests!?</li>\n<li>A language many people know vs one few do, or can understand and wield</li>\n</ol>\n<p>Most things that have existed\nexisted with old technology.\nIs this new creation\nthat novel that it <em>requires</em> new technology?</p>\n<p>Do you really need an API\nif there are no public clients?</p>\n<p>Does a dynamic single-page app framework\nneed to be used for everything\nor just a few parts?</p>\n<p>Are you letting the sexiness\nof something new and shiny\noutweight the needs of the business domain?\nSomething that pays the bills?</p>\n<p>Be efficient\nand spend some time on the <a href=\"https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/HammockDrivenDev.md\">hammock</a>\nto think about what the real requirements are,\neven with a bit of extensibility,\nbefore expending a bunch of money\nand effort.\nYou'll be leaner for it\nand maybe self-sustainable too.</p>\n<p>There's something to be said\nfor Facebook's philosophy on\nnever forcing tools on developers,\nbut instead to make it so easy\nfor them to use,\nthat they migrate.\nE.g., React, JSX, Flow, Reason, Hack, etc.</p>\n<p>But that can become\na Frankenstein monster\nto outsiders eventually.\nE.g., JVM interoperability, multi-paradigm languages.\nPerhaps these new things\noffer good abilities,\nbut do not enforce\none successful convention that\neveryone gravitates towards.\nThe lowest common denominator\nof worst practices,\nif allowed,\ncan and will happen.</p>\n<p>Related to maybe only moving\na little ahead of the herd\nof <a href=\"/programming-language\">programming languages</a>.</p>\n<h2>References</h2>\n<ul>\n<li><a href=\"https://macwright.org/2020/05/10/spa-fatigue.html\">https://macwright.org/2020/05/10/spa-fatigue.html</a></li>\n<li><a href=\"https://www.executeprogram.com/blog/are-tests-necessary-in-typescript\">https://www.executeprogram.com/blog/are-tests-necessary-in-typescript</a></li>\n<li><a href=\"https://usefathom.com/blog/moved-to-vapor\">https://usefathom.com/blog/moved-to-vapor</a></li>\n<li><a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">https://blog.codinghorror.com/falling-into-the-pit-of-success/</a></li>\n<li><a href=\"https://rubyonrails.org/doctrine/\">https://rubyonrails.org/doctrine/</a></li>\n<li><a href=\"https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/\">https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/</a></li>\n<li><a href=\"https://jmduke.com/2020/01/20/unshipping-webpack\">Unshipping and minimizing dependencies</a></li>\n</ul>\n",
      "date_published": "2020-05-11T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/habits/",
      "url": "https://dijonkitchen.org/notes/habits/",
      "title": "habits",
      "content_html": "<p>&quot;Each Day do Something -- Foolish, Creative and Generous.&quot; - Benjamin Graham</p>\n",
      "date_published": "2020-05-09T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/exploration/",
      "url": "https://dijonkitchen.org/notes/exploration/",
      "title": "exploration",
      "content_html": "<p>Seek to standardize on benchmarks to make decisions easier\nif they are meaningful quantitative measures.</p>\n<p>Decide on a handful\nof quality candidates</p>\n<p>Move on after a few &quot;strike outs&quot;,\nbut forgive after some time.</p>\n<p>Keep optionality</p>\n<p>May even be best\nto leave decisions to chance (50/50 coin flip)\nto save time\nif easy to undo.\nExample: hire quickly, fire quickly.\nNote externalities.</p>\n<p>Optimize for lean feedback cycle\nof learning,\nthen stop,\nand adapt,\nand iterate.</p>\n<p>Inherantly scientific\nand human nature\nto reach for the stars (Star Trek).</p>\n<p>Minimize long-term catatrospic loss,\nbut be a reasonable optimist.</p>\n<h3>See also</h3>\n<ul>\n<li><a href=\"https://openlibrary.org/works/OL17357767W/Algorithms_to_Live_By\">Algorithms to Live By</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Prisoner%27s_dilemma\">Prisoner's dilemma</a></li>\n</ul>\n",
      "date_published": "2020-05-09T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/programming-language/",
      "url": "https://dijonkitchen.org/notes/programming-language/",
      "title": "programming languages",
      "content_html": "<p>Difficulty -&gt; Ease\nLow-level languages -&gt; high-level languages\nLess people -&gt; More people\nLess conducive to early stage company -&gt; more</p>\n<p>High impact for all downstream value vs less, but more specific need</p>\n<p>Developer experience:</p>\n<p>Ease of understanding foreign code:\nDynamic type vs staticly typed</p>\n<p>Once one language has critical mass,\nit overgrows others\nfrom momentum ecosystem network effects (tooling, docs, examples, open-source help).\nIt's irrespective of pros/cons.\nMost non-tech companies don't know enough to make good tech decisions,\nso they go with the flow.</p>\n<p>Beware what net effects occur because of all this:\nWork as low-level and difficult as possible,\nif you worry about competition and job security\nbut you may be lonely at edges.\nCan only go the other way.</p>\n<p>Maybe it all nets out.\nThe ups and downs may just almost even out.\nDo what you think is good\nand see where that leads you.</p>\n",
      "date_published": "2020-04-07T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/vision/",
      "url": "https://dijonkitchen.org/notes/vision/",
      "title": "vision",
      "content_html": "<p>Don't optimize for things that don't matter.\nIntermediate milestones/goals may be too limiting\n(but can also be rewarding).\nCutting straight to the bottom line\nmay streamline all those other actions\nfor what really matters.\nYou still need to figure out what really matters though.</p>\n<p>This <a href=\"./process\">process</a>\nmay squeeze out all creativity\nfor the intermediate things,\nbut allow for creativity to grow\nfor the desired vision.</p>\n<h2>Reading</h2>\n<p>Does it matter to read as an author intended?\nOr is it better to breeze through it\nand capture the core ideas\nand only then,\nif it sparks some foundational principle,\nperhaps,\nread more times,\nslowly.\nOtherwise,\nthere are so many <a href=\"https://en.wikipedia.org/wiki/Opportunity_cost\">other things you can do</a>\nthat might be better.\nStart at one page per minute\nand then increase from there?</p>\n<p>This kind of strategy\nallows for deeper dives\ninto various subjects.\nYou no longer need to\nfigure out what book is the best on something;\nread a bunch,\nand decide for yourself\n(from primary sources no less)!</p>\n<h2>Career/technology/tools</h2>\n<p>Optimizing for great tools may not be ideal\nif it is not progressing your end goal\nof delighting people with some product.\nThese may, unfortunately,\nbe the sacrifices you must make\nfor what you think is principally important.</p>\n<p>Best practices and tools may help\ndo things more efficiently later on,\nbut they come with costs:\ninitial ramp-up time\nfor creating and/or learning those tools,\nfiguring out if an idea is even viable.\nThat valuable time can be spent\n<a href=\"https://www.pretotyping.org/\">Pretotyping</a>.</p>\n<p>Things that stick\ncan be optimized by those that care\nor are better at it.\nYou need to think about what matters to you;\nwhat do you what to improve on.</p>\n<p>Little, insignificant things are like tiny cuts\nthat can lead to death by a thousand cuts\n(or at least not acheiving what you want).</p>\n<h2>Life</h2>\n<p>A person's life is an <a href=\"https://fs.blog/2020/02/finite-and-infinite-games-two-ways-to-play-the-game-of-life/\">infinite game</a>;\na game so long,\nyou likely don't stop playing\nuntil you're dead.\nFor a game this long and variable,\nyou can't really maximize anything;\nthere are too many surprises ahead.\nWhat you may be able to do is\nhave a lot of fun exploring\ndifferent areas.</p>\n<p>Leave a good legacy and minimize regret.\nWith this vision in mind,\nyou can work wherever,\nas long as you're exploring new creative skills\nand sharing the fun with others.</p>\n<p>You'll be remembered for your efforts,\nnot your failures,\nand all the infectious fun.</p>\n",
      "date_published": "2020-03-15T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/information/",
      "url": "https://dijonkitchen.org/notes/information/",
      "title": "information",
      "content_html": "<p>Information\nand disinformation (aka fake news, pseudoscience, etc.)\nis rampant online.</p>\n<p>Although search engines and reputable sites help,\nthere's just too much out there for people to filter.</p>\n<p>There are likely\nonly a few people\nwith enough foresight and discipline\nto <a href=\"https://humanetech.com/resources/take-control/\">stave of social media and notifications</a>\nto focus on long-term projects or those of others, like books.</p>\n<p>Using something like\n<a href=\"https://chrome.google.com/webstore/detail/stayfocusd/laankejkbhbdhmipfmgcngdelahlfoji\">StayFocusd</a>\ncould help if you\n<a href=\"https://en.wikipedia.org/wiki/Whitelisting\">whitelist</a>\nonly a few good, reputable sites.\nEven better would be if those were the default for first-time installers;\nmaybe it'd be a clone called StayTrue if it was open-sourced.</p>\n<p>Stay creative, stay smart.</p>\n",
      "date_published": "2020-01-23T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/time/",
      "url": "https://dijonkitchen.org/notes/time/",
      "title": "time",
      "content_html": "<h2>Value-time (kind of like space-time)</h2>\n<p>Ideally,\neveryone is saving a bit of other people's time with some product/service\nand the better they are at it,\nthe more profitable they can get.</p>\n<p>Thus, the important factors in a business's success\nare being the most efficient at saving people time,\nwhich includes having a reputable brand\nwith the best/large customer relationship network.</p>\n<p>Root definitions of product/productivity</p>\n<p>A lot of efficiency and relationships come from data.\nIt can tell you where bottlenecks are and want people want and thus what to focus your efforts on.</p>\n<p>Prudent storage and usage of that data is paramount.</p>\n<p>Capitalism and consumerism</p>\n<p>Save your time;\nspend it wisely given your opportunity costs.\u00a0\nSpend only as much time as it would cost to replace.\nMay be tricky for things that have a low initial replacement cost\nlike early software that can grow\nand then have a high replacement cost.</p>\n<p>Product/service\u200a-\u200a\nEntertainment, Apple, Foxconn, Samsung, Exxon Mobil;\nmultiplied by users</p>\n<p>Distribution\u200a-\u200a\nExchanges (Amazon, NYSE), Supermarkets, Transportation, Utilities;\nmultiplied by products</p>\n<p>Marketing/Creativity\u200a-\u200a\nGoogle/AdTech, Omnicom, Entertainment;\nmultiplied by users</p>\n<p>Productivity\u200a-\u200a\nMicrosoft, Square;\nmultiplied by users</p>\n<p>Raw materials/Construction/Innovation;\nmultiplied by users</p>\n",
      "date_published": "2019-12-26T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/communication/",
      "url": "https://dijonkitchen.org/notes/communication/",
      "title": "communication",
      "content_html": "<p>Goals:</p>\n<ul>\n<li>Team succeed at goals</li>\n<li>knowledge transfer</li>\n<li>flow thinking and work</li>\n<li>hi fidelity</li>\n</ul>\n<p>Spectrum of sync to async communication</p>\n<p>Onus on people to exercise proper etiquette vs. strict enforcement of a protocol</p>\n",
      "date_published": "2019-11-08T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/biology/",
      "url": "https://dijonkitchen.org/notes/biology/",
      "title": "biology",
      "content_html": "<p>People think we're so different than other animals,\nbut we all have the same motivations to survive,\nextend our genes,\nand persuade others of our beliefs.\nHumans can control their environment,\nbut that just helps them with their fundamental desires.</p>\n<p>We need to think about if we want to adhere to our built-in,\nbiological motivations or somehow rise above them,\nif possible.</p>\n<p>If we encounter any aliens,\nthey'll likely have the same motivations to have survived and adapated to reach us.</p>\n",
      "date_published": "2019-09-30T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/experience/",
      "url": "https://dijonkitchen.org/notes/experience/",
      "title": "experience",
      "content_html": "<p>Great, sustainable experiences</p>\n<p>To improve humanity's experience,\nwe need developers that can make things that save their time/energy.\nThus need to improve developer experience.</p>\n<p>Not all about programming languages and their performance or simplicity.</p>\n<p>Usually vertically integrated companies or systems are better.\nThink Apple ecosystem:\nmostly single way to do things that is the convention (omakase!) keeps focus on humans using products.\nSystem76 for linux distro and hardware similar.\nFullstack languages like JS and Clojure and Clojurescript can be like that too.\nMicrosoft, and big companies are trying to do this to solidify their positions.</p>\n<p>But need to widen the conversion funnel.\nSimple and easy installation and setup required.\nGood editor support for varied users,\nbut got to at least accomodate for beginners.</p>\n<p>Then comes setting up projects and applications.\nFrameworks give people a starting point to jump off from.\nRails, Luminus microframework do this.\nRe-frame and Reagent for front-end.</p>\n<p>Testing, building, depenency management, deploying with Leiningen and Heroku.</p>\n<p>Wait to iterate with quick feedback loops just like REPL.</p>\n",
      "date_published": "2019-09-14T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/process/",
      "url": "https://dijonkitchen.org/notes/process/",
      "title": "process",
      "content_html": "<p>Businesses want to be able to have budgets\nand plans with a process.\nThey also want to be agile\nsuch that they can adapt to a quickly changing world.</p>\n<p>Ideally,\nthey are focused on working on the most important things.\nThere are people that rank everything that needs to be done\nand some other group of people carry them out.</p>\n<p>Things can, and will,\ngo wrong and take longer than expected.\nSo long as there is regular communication and trust,\neveryone can constantly reprioritize\nto ensure they are all working on what's most important.</p>\n<p>Long-term deadlines and goals\ncan be met by involving everyone early in the process\nso that the necessary parties can do their own planning and processes\nto line up architecture and design.\nFeatures that need to be out a certain time\ncan be prioritized and worked towards.</p>\n<p>Using metrics to estimate\ngives people a false sense of precision\nfor an inherently murky real world.\nRandom important things can come up\nlike production bugs\nor some new better thing that can add more business value.\nEven worse,\neveryone's interpretation of the tasks at hand\ncan and will be different.\nIt is impossible to sum these up\nand thus compare them over time.</p>\n<p>To keep all these objectives in mind,\nperhaps the best course of action\nwithout a negative return on investment\nis to have a simple stack or queue of priorities.\nThis would be public knowledge\nand can be split into major business lines\nso that there isn't a crazy amount of context switching for the executioners\nand so tasks can be parallelized.\nThere may even be some grouping of tasks\nthat represent some chunk of work\nas long as something urgent takes precendence.</p>\n<p>After these are sorted out,\ngroups can see the major bodies of work\ncoming up in the future\nand plan for them in their respective ways.\nThis explicitly puts the onus\non people communicating with each other,\nprioritizing,\nand building trust\nthat they can get things done properly.\nMistakes will be made\nand they should be learning exercises\nthat refine the process.</p>\n<p>I don't want any illusion\nthat this is some perfect way\nthat I've worked in the past.\nIt is my latest thinking\non something that every company needs to do\nand perhaps something that would work\nand we should all conduct as an experiment.</p>\n",
      "date_published": "2019-08-23T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/solutioning/",
      "url": "https://dijonkitchen.org/notes/solutioning/",
      "title": "solutioning",
      "content_html": "<ol start=\"0\">\n<li>\n<p>Establish trust by questioning to get real data</p>\n</li>\n<li>\n<p>Understand high-level pain points and differentiators</p>\n</li>\n<li>\n<p>Document domain-driven architecture and models</p>\n</li>\n<li>\n<p>Write failing tests for functions</p>\n</li>\n<li>\n<p>Pseudocode functions</p>\n</li>\n<li>\n<p>Make it workable</p>\n</li>\n<li>\n<p>Make it maintainable with conventions and modular interfaces</p>\n</li>\n<li>\n<p>Make it scalable/efficient, if needed</p>\n</li>\n<li>\n<p>Focus on restarting regularly to adapt incrementally, inexpensively, and continuously</p>\n</li>\n<li>\n<p><a href=\"/pairing\">Check-in relationship</a>, short-term concerns, long-term objectives</p>\n</li>\n<li>\n<p>Time-box tasks throughout lifecycle</p>\n</li>\n<li>\n<p>Break down goal into atomic components</p>\n</li>\n<li>\n<p>Isolate Model-View-Controller structure</p>\n</li>\n<li>\n<p>Isolate Class composition</p>\n</li>\n<li>\n<p>Isolate singular-task, functions with inputs/outputs</p>\n</li>\n<li>\n<p>Write tests for Behavior-Driven Development</p>\n</li>\n<li>\n<p>Pseudocode</p>\n</li>\n<li>\n<p>Get to Minimum Viable Product</p>\n</li>\n<li>\n<p>Make it maintable</p>\n</li>\n<li>\n<p>Optimize</p>\n</li>\n<li>\n<p>Repeat</p>\n</li>\n</ol>\n<p>The point is to show progress, strategies, and optimization just like real life, not &quot;knowing the answer&quot; which isn't possible for new problems. Drive the process like you're the senior person, but be a great teammate too!</p>\n<ol>\n<li>Understand the problem\n<ul>\n<li>Think aloud</li>\n<li>Ask questions\n<ul>\n<li>Scope the problem</li>\n<li>Get clues</li>\n<li>Express what you're considering or not</li>\n</ul>\n</li>\n<li>Listen for clues carefully</li>\n<li>Read carefully</li>\n<li>Write down notes for givens like inputs and outputs</li>\n</ul>\n</li>\n<li>Manually test out a simple, but realistic example\n<ul>\n<li>Reasonably big/realistic breadth</li>\n<li>Include special cases so you don't miss edge cases</li>\n<li>Reverse engineer and breakdown thoughts</li>\n</ul>\n</li>\n<li>State brute-force algorithm MVP; maybe pseudocode\n<ul>\n<li>Talk about tradeoffs like time and space complexity</li>\n</ul>\n</li>\n<li>Optimize\n<ul>\n<li>Bottlenecks</li>\n<li>Unnecessary complexity</li>\n<li>Duplicated work</li>\n<li>Edge cases</li>\n<li>Consider time and space complexity tradeoffs\n<ul>\n<li>Data structures\n<ul>\n<li>Hash tables</li>\n</ul>\n</li>\n<li>Recursion\n<ul>\n<li>Bottom-up, vs. top-down</li>\n<li>Memoization</li>\n<li>Dynamic programming</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Walk through in detail; check against problem</li>\n<li>Write beautiful code\n<ul>\n<li>Modularize with top-down functions first\n<ul>\n<li>May save you from writing smaller helper utility functions that aren't that important to logic</li>\n</ul>\n</li>\n<li>Refactor</li>\n<li>Add arrows to insert new code instead of rewriting to save time</li>\n</ul>\n</li>\n<li>Test your code (not the algorithm)\n<ul>\n<li>Code review\n<ul>\n<li>Logic</li>\n<li>Areas vulnerable to errors</li>\n</ul>\n</li>\n<li>Small test cases</li>\n<li>Special edge cases</li>\n<li>Big test cases (like realistic example you made above)</li>\n<li>Bugs\n<ul>\n<li>Think about root causes</li>\n<li>Fix them</li>\n</ul>\n</li>\n</ul>\n</li>\n</ol>\n<p>Good luck and bring your own thin whiteboard markers if you like!</p>\n",
      "date_published": "2019-06-12T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/economic-ethics/",
      "url": "https://dijonkitchen.org/notes/economic-ethics/",
      "title": "economic ethics",
      "content_html": "<p>Capitalism: lie/cheat/steal vs value add</p>\n<p>Short term Unsustainability vs long term durability</p>\n<p>Hard to find fungible asset better than currency and not trample freedom so must align incentives</p>\n<p>Culture of Significant Employee ownership/decision-making and increased equality</p>\n<p>Freedom hard to combine with equality. It's unstable from luck or exploitation so naturally becomes unequal</p>\n<p>Focus can't be freedom but opportunity instead. Former isn't concerned with maintaining a minimum equality while the latter does.</p>\n<p>Social mobility</p>\n<p>Mutual companies, co-ops, partnerships</p>\n",
      "date_published": "2018-09-15T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/rebase/",
      "url": "https://dijonkitchen.org/notes/rebase/",
      "title": "rebase",
      "content_html": "<h2>Code Symbiosis</h2>\n<p>Programmers write a lot of code.</p>\n<p>Many programmers usually write even more code.</p>\n<p>Inevitably, people write code that conflicts with another person's.</p>\n<p>There are a few ways to reconcile this so that the new can be combined with the new.</p>\n<p>A lot has been written about the tradeoffs of merging in changes versus rebasing off of the master branch. If you're not familiar with <code>git merge</code> or <code>git rebase</code>, then check out this <a href=\"https://www.atlassian.com/git/tutorials/merging-vs-rebasing\">guide</a>.</p>\n<p>But why try to do all this fancy stuff if you just push your code up to Github and resolve any merge conflicts you may have?</p>\n<p>Because there are two kinds of conflicts: lines of code versus logical.</p>\n<h2>A tale of two conflicts</h2>\n<p>Code may have edited lines by another person, so that's pretty obvious it'll be a conflict when you try to merge code. This is caught by <code>git</code> and its implementation on Github.</p>\n<p>But there can also be logical conflicts. A simple case might be you're writing new code that utilize some helper function, but you're not up-to-date with master and a colleague has deleted or renamed that function. This wouldn't be caught by <code>git</code> (and thus Github), so if you think merging into master without conflicts means everything works, you may be wrong.</p>\n<p>But do tests and continuous integration help?</p>\n<p>They can, but those things are looking at the latest code in your branch. If your branch doesn't have the latest changes, it won't be able to check for any breakages in functionality.</p>\n<p>This is exactly why Github has a feature in protected branches (usually at least master) that let you know when you're not up-to-date with master. By merging in the new code on master into your own feature branch, you can be more sure that things work if your pull request is approved and merged.</p>\n<p>Some people want to keep the <code>git log</code> clean with real logical commits and think merge commits from master are unsightly and unmeaningful. In this case, that's what rebasing and squashing are for. If you want to keep the history of commits without squashing into one commit on master, rebasing is a good option, with only the loss of the timing of the commits (not their logical order and meaning).</p>\n<p>If measures aren't taken to enforce branches that are up to date with master, it's not the end of the world. Programmers just need to have more initiative to do it themselves, but this is a poor risk management strategy. The master branch is usually on the pipeline for production, so if things are breaking there, they may break for other people as they branch off of master. This cascading failure is not always going to happen, but it can be easily prevented by enforcing that pull requests are up to date with master before merging. You can cut the pipeline short by actually not deploying master unless it passes all your tests and continuous integration, but if there's a breakage, you'll still have a bad master branch, i.e., not good.</p>\n<p>How about if you work at a huge company and people are merging into master all the time? Will you be stuck rebasing or merging forever!? Thankfully, Github has a rebase and merge button that you can press for pull requests. This will automatically rebase your commits on top of master right before it's merged into master. This helps a lot, but it's still best to keep up to date before merging the pull request so that you can fix problems before they are in master.</p>\n<h2>Keeping up with the master(s)</h2>\n<p>To goal of <code>git</code>, merging, or rebasing is to combine code changes in a decentralized, but structured, deterministic way so that the end result is simple to understand and/or change.</p>\n<p>To do this, you need to keep up to date with master. You can do it by merging in the master branch's changes into your own feature branch or by rebasing your branch on top of the latest master branch's commits.</p>\n",
      "date_published": "2018-08-31T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/privacy/",
      "url": "https://dijonkitchen.org/notes/privacy/",
      "title": "privacy",
      "content_html": "<h2>Secure and separate concerns in\u00a0life</h2>\n<h3>On how to transition to a more private and secure digital presence with diversification</h3>\n<p>Use password managers to make it easier to manage multiple accounts and increase security</p>\n<p>Separate out identity into at least two or three (e.g., email/phone/login) so that you can always easily destroy one and still use other methods to notify your network about a new one you create.</p>\n<p>Separate use of technology so no one company has all your data.</p>\n<p>Understand that sustainable use of technology means paying for quality with some subscription otherwise free means they need to survive on your data.</p>\n<p>Separate identities/emails/numbers for sensitive things (finance).</p>\n<p>LastPass/1Password: Login credentials</p>\n<p>Apple: (Hardware, Location, Phone, OS), Video/audio chat, [TV, Home, Payments]</p>\n<p>Carriers/Signal: (Talk, SMS)</p>\n<p>Google: (Email, Calendar), (Cloud storage, Documents, Photos), Youtube, [Notes/Reminders, Maps]</p>\n<p>Brave/Firefox: Browsing</p>\n<p>DuckDuckGo: Search</p>\n<p>Amazon: Purchases, Media</p>\n<p>Microsoft (LinkedIn, Github): Social Media, professional history/activities</p>\n<p>Misc: Random apps for finance, utilities, media</p>\n<h4>Separation of\u00a0data</h4>\n<p>Infrastructure: Large tech companies</p>\n<p>Hardware Inputs: Apple</p>\n<p>Location: Apple</p>\n<p>Login: 1Password</p>\n<p>Communication: Apple</p>\n<p>Identity Interface(Emails, Phone numbers): Protonmail, Carriers</p>\n<p>Storage(docs, photos): Google</p>\n<p>Purchases: Amazon</p>\n<p>Money: Banks</p>\n<p>Activity: Brave/DuckDuckGo</p>\n<p>Sensing(reading, watching, listening): Misc subscriptions</p>\n<p>Polymatter videos on sustainable/subscriptions/bundles of software</p>\n",
      "date_published": "2018-06-13T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/interfaces/",
      "url": "https://dijonkitchen.org/notes/interfaces/",
      "title": "interfaces",
      "content_html": "<h2>Relationships: From Data to Architecture</h2>\n<p>Many-to-many relationships have an interface between them for abstraction and separation of concerns</p>\n<p>Join tables: Many of a table to many of another table</p>\n<p>ActiveRecord pattern: [Many] Databases to [Many] Models</p>\n<p>MVC pattern: [Many] Views/Routes to [Many] Models</p>\n<p>API Gateways/GraphQL: Many clients to many servers/services</p>\n<p>User interface: Many users to many requests</p>\n<h2>Apple and Conway's\u00a0Law</h2>\n<p>Secrecy between groups to maintain SOLID principles</p>\n<p>Forced by group dynamic to dynamic, modular, abstract services</p>\n",
      "date_published": "2018-06-13T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/interviews/",
      "url": "https://dijonkitchen.org/notes/interviews/",
      "title": "interviews",
      "content_html": "<p>Combine best company interview processes</p>\n<p>Intercom\nAuth0\nCheckr\nLx\nbasecamp\nStripe?</p>\n",
      "date_published": "2018-06-07T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/dependencies/",
      "url": "https://dijonkitchen.org/notes/dependencies/",
      "title": "dependencies",
      "content_html": "<h2>Example: Adding Project Dependencies: Picking a Data Grid for\u00a0React</h2>\n<p>At work, we use a lot of open source software. One of the formats that people find easiest to display lot of data is through our Insights. These are tables that show data on lots of different fields for a certain type of data. It's filterable, sortable, the whole shebang.</p>\n<p>When viewing hundreds of rows of data, it's tough to understand what's going on without aggregations on numbers and fixed headers on those columns, so you don't have to keep scrolling up and down to see what matches to what.</p>\n<p>--</p>\n<p>Addressing the fixed headers problem seems like a simple CSS or even Javascript problem, but it gets complex fairly quickly when you add in a ton of rows and columns; think about scrolling in all different directions, quickly, while still rendering all that information!</p>\n<p>To tackle this, we have Guilds, which we model after Spotify's Guilds, where whoever is or wants to be part of a group that makes design or architectural decisions, they can. In our User Interface Guild, there was discussion around if anyone knew any good, open source libraries that achieve the functionality we wanted. A few people had looked a few projects online, and AG-Grid was the front-runner.</p>\n<p>A few months later, the we dove into the more complicated parts of our table. People didn't like that the latest version of AG-Grid wasn't working properly and wasn't well tested. These were all important properties for us in an open source project (we've got enterprise customers in production)!</p>\n<p>--</p>\n<p>By the time I joined, we needed to reevaluate table options, and there were a few:</p>\n<p>react-data-grid</p>\n<p>Pros:</p>\n<p>Cons:</p>\n<p>Ultimately, react-data-grid was the winner. It had a lot of the functionality we wanted out of the box, like fixed headers and other things.</p>\n<p>To incorporate it into our production web app, we forked our old table component and started testing out the react-data-grid features. Slowly, we were able to reproduce the existing functionality we had and add in the ones we wanted (some of which weren't fully documented). After a code review by a few engineers, we pushed it out behind a feature flag so we could test it out with others in the organization with production data and more real-world scenarios.</p>\n<p>In the future, we would do much the same process.</p>\n<p>State problem and factors of evaluation; guild process</p>\n<p>Candidates and possible options</p>\n<p>expand on each</p>\n<p>ultimate winner</p>\n<p>process of implementation/recommendations/guidance</p>\n<p>Research all options</p>\n<p>See what others have considered or tested</p>\n<p>Narrow/filter down</p>\n<p>List pros/cons of each</p>\n<p>Evaluate activity, commit history, how well maintained it is, release cycle, maintainer feedback/responsiveness, functionality, and cost.</p>\n<p>Spike on top 3 voted options</p>\n<p>Communication in Guilds on progress/research</p>\n<p>Deeper dive with more people given success/failure</p>\n<p>Repeat until solution found for MVP</p>\n",
      "date_published": "2017-10-29T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/work/",
      "url": "https://dijonkitchen.org/notes/work/",
      "title": "work",
      "content_html": "<p>Below was a draft post that I never got to post.</p>\n<blockquote>\n<h2>My first month at\u00a0Lanetix!</h2>\n<p>So I've just started as a software engineer at a San Francisco startup called Lanetix! It's been almost two years since I started Dev Bootcamp and a year after having my own startup consultancy in NYC. For another brand new adventure, my wife and I drove 5000 miles cross-country to the West (some say &quot;Best&quot;) Coast.</p>\n<p>I won't talk about the hiring process since so much has been already been <a href=\"https://prod-dev.lanetix.com/the-engineer-hiring-process-lanetix-6c6ea0db741f\">written</a>. What I will reiterate is that it's a very thoughtful process. The senior engineers designed it with respect for both their time as well as the candidate's. This was a breath of fresh air on my interviewing spree.</p>\n<p>Even before my first day, I was able to talk to others on the team, get to know them, and ask questions. I felt very welcomed and comfortable with such a transparent onboarding. The company is small and the engineering team is split between Washington DC and San Francisco, but getting to know the company has been a smooth process with all the online communication and weekly demo days where people present new parts of the product to the whole company. The people here are really great listeners and empathetic; when I ask questions, they always take their time to explain the whole picture and hear my side.</p>\n<p>This gets me into how Lanetix is organized. It's trying to maximize employee empowerment and accountability by letting people make decisions, do the work, present it, and maintain/support it. This engagement into the full lifecycle of a feature is awesome!</p>\n<p>One new thing I learned was feature flags. By wrapping new pieces of code in these flags, you can continuously deploy code to production without fear of breaking things. In this way, they are much like other large companies that can ship quickly. If something breaks, you turn a flag off or rollback a change! This kind of empowerment should not be dismissed; it's really powerful to be able to quickly make changes and see them in production.</p>\n<p>In fact, this is what I did my first day! Setup was quick given the company wiki, tooling, and configuration repositories; my developer environment, with no less than ten services, was up and running by the afternoon! With some debriefing of a bug we needed to fix, I was able to make a pull request on GitHub and get it merged in less than 24 hours!</p>\n<p>Employees are trusted and you get the latest and greatest equipment, including the new MacBook Pro, large monitor, whiteboard standing desk, comfy hoodie, stickers, and really anything else you need can be expensed. They know that developer productivity far outweighs the cost of the equipment.</p>\n<p>Overall, it's still early days, but I'm learning more and more about our product, especially as we dogfood it. I'm currently working on our Insights Squad\u200a-\u200ahelping to make seemingly simple features, like a <a href=\"/dependencies\">fixed header on a spreadsheet</a>, function with lots of work. In the future, I'll be able to work with others in different groups to learn more about different areas of the codebase.</p>\n<p>That's all for now! Stay tuned for updates from our <a href=\"https://medium.com/@taygrave/shipit-day-how-lanetix-does-the-company-hackathon-3fc5b9497253\">Ship It Day</a> coming soon (Spoilers: It's going to be called Maker Day going forward!) or the conferences and books I get from our continuing education budget!</p>\n</blockquote>\n<p>Unfortunately, it didn't work out that well.</p>\n<p>To be continued...</p>\n",
      "date_published": "2017-10-08T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/pairing/",
      "url": "https://dijonkitchen.org/notes/pairing/",
      "title": "pairing",
      "content_html": "<p>Personal check-in:</p>\n<ol>\n<li>How are each of you feeling?</li>\n<li>Anything affecting this session?</li>\n<li>Get to know each other and connect.</li>\n</ol>\n<p>Work approach check-in:</p>\n<ol>\n<li>How do you like to work?</li>\n<li>How do you approach a challenge?</li>\n<li>Exchange preferences to work optimally.</li>\n<li>Define driver and navigator.</li>\n</ol>\n<p>Feedback</p>\n<ol>\n<li>Do as soon as possible.</li>\n<li>Actionable, specific, and kind (&quot;A.S.K.&quot;)</li>\n<li>Kind feedback is truthful, based on facts, not necessarily nice</li>\n</ol>\n<p>Assignment check-in:</p>\n<ol>\n<li>Go through assignment</li>\n<li>Identify your own strengths and weaknesses</li>\n<li>Identify goals</li>\n<li>Pomodoro Time-box</li>\n<li>Break down problem into atomic components with Behavior-Driven Development\n* Architecture\n* Class composition\n* Single-task functions</li>\n<li>Pseudocode</li>\n<li>Minimum Viable Product</li>\n<li>Make it maintainable</li>\n<li>Optimize</li>\n<li>Iterate/repeat</li>\n</ol>\n<p>Have fun!</p>\n",
      "date_published": "2017-05-25T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/productivity/",
      "url": "https://dijonkitchen.org/notes/productivity/",
      "title": "productivity",
      "content_html": "<p>Eat and cleanup before sundown,\nWalk and talk after,\nSleep,\nWake at sunrise,\nProductively use daylight,\nRepeat.</p>\n<p>Healthy eating before late hours,\nExercise with walking,\nCommunity and happiness with connection and talking,\nAmple sleep with suncycle,\nDrive to allocate time well.</p>\n",
      "date_published": "2016-08-18T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/goals/",
      "url": "https://dijonkitchen.org/notes/goals/",
      "title": "goals",
      "content_html": "<p>I'm going to set positive, specific goals to get better with a set timeline. Usually, I'm pretty good about always improving, but I don't usually set a timeline to say I should get this done by this time. Sometimes my goals are also more negative, such as I shouldn't do this or that, instead of rewording it to be something more positive.</p>\n<p>https://hbr.org/2011/02/nine-things-successful-people/</p>\n",
      "date_published": "2016-04-10T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/bliki/",
      "url": "https://dijonkitchen.org/notes/bliki/",
      "title": "bliki",
      "content_html": "<p>While researching how to make a website, I looked at a lot of possibilities. There's the easy way of just using an established platform like Wordpress, Medium, or Blogger... but where's the fun in that?! The whole point of me making a website was to learn and practice new skills in HTML, CSS, and maybe a bit of Javascript too!</p>\n<p>First, I needed to cover the basics of mobile-first and responsiveness. All the platforms had this, but how was I going to do it in an efficient time frame? Just searching online, I found out that GitHub has GitHub Pages which would essentially host a website for you for free! This seemed a lot better than paying money every month and go through a whole process of setting everything up and making sure it works. Don't get me wrong, this is interesting, but not my current goal. I don't want to have to worry about configurations and bandwidth and if I'm paying enough so that if a million people visit my site, from all over the world, with all sorts of devices, that they'll be able to see all my content properly.</p>\n<p>The best thing I found that catered to all these needs was forking a GitHub repository. I had heard of GitHub while doing programming language research and this seemed like a great place to host my website. They were a knowledgeable organization that would also be very friendly to programmers! I knew that I wouldn't have my own domain name unless I paid for it, but I didn't mind; associating myself with a great company that programmers use all the time seemed like a win/win situation.</p>\n<p>I hope you enjoy the new website. It's still a work in progress, as every site is, but I'll be continually adding improvements and new content as I learn more.</p>\n",
      "date_published": "2015-11-08T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/concurrency/",
      "url": "https://dijonkitchen.org/notes/concurrency/",
      "title": "concurrency",
      "content_html": "<p>While thinking about my move into technology and learning programming, I researched programming languages a lot! One of the major reasons for this was because I looked into concurrency.</p>\n<p>Concurrency is basically a computer being able to do many things at once, but not necessarily parallel. Parallel processing is doing things at exactly the same time; concurrent processes can overlap or not. The main thing is they don't depend on each other.</p>\n<p>Why is this important? These days, computers are super powerful, so powerful that we're always gathering a ton of data that we would also like to do a lot of analysis with. To be able to do a lot, it's better if many computers are working on problems at the same time. This is often hard when tasks are linked together and rely on other's results to do their work.</p>\n<p>Think about something that takes many steps. If each person needed to wait for the person before them, as in a relay race, it takes a lot longer than if everyone was just running at the same time. You can easily get orders of magnitude more done even if each individual isn't that fast.</p>\n<p>Computers need to do this all the time. We don't think about it, but they're doing a million things at a time in the background from syncing your podcasts to checking your Twitter feed for notifications. For programs that need to be done quickly, it'd be a lot easier if they could all work at the same time, instead of queuing up in line. To make this easier for this quick-calculating, but simple-minded computers, programmers can utilize functional programming.</p>\n<p>Functional programming essentially separates out tasks so that each one is more individualized. More specifically, there aren't side effects that other parts of the program need to wait for to get started.</p>\n<p>This may seem all fine and dandy until you realize there are some cons to functional programming. Because of how it's designed, you often need to structure your program in unintuitive ways (at least at first). Along with not having side effects in your program, languages that are conducive to functional programming are statically-typed. This makes it so that programmers are explicit about their variable declarations.</p>\n<p>Let's think about it this way; if you're not explicit about what type a variable, is, then it's hard for you (and the computer!) to figure out how to use that variable later on in the program. An interesting consequence of this is that the code is more understandable yet it takes a bit more effort to write it and it's not as simple looking.</p>\n<p>Much like I concluded in my previous language post (I even developed a <a href=\"/notes/programming-language/\">laundry list</a> of languages), it's not the language that matters, but the programmer's knowledge, understanding, and design skills. No one language can solve all problems optimally; there's just too many things and a language can specialize in specific things. What's important to understand is that concurrency is important when you need to scale, but that's not always at the start, and you can utilize functional programming techniques and all the things that go with it when you need to.</p>\n",
      "date_published": "2015-11-01T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/hotkeys/",
      "url": "https://dijonkitchen.org/notes/hotkeys/",
      "title": "hotkeys",
      "content_html": "<p>One of the hardest things about being a developer is setting up your developer environment. Installing everything and making sure it works is tough. That's why I'm going to compeletely bypass that and move to hotkeys.</p>\n<p>In a prior life, I was an investment analyst that breathed Excel all day long. Because of this, we would need to optimize our workflow with keyboard shortcuts. Doing things with ten fingers is better than five. Here is a list of a few of my favorite tools and some hotkeys to improve your productivity.</p>\n<p><strong>Operating System and Apps (Mac OS X)</strong></p>\n<pre><code>Search                  Cmd space\nOpen                    Cmd o\nNew file                Cmd n\nClose window            Cmd w\nQuit App                Cmd q\nSwitch App              Cmd table\nSwitch Window           Cmd `\nFind                    Cmd f\nHighlight               Shift up, down, left, right\nMove to end             Cmd up, down, left, right\nCopy                    Cmd c\nCut                     Cmd x\nPaste                   Cmd v\nScreenshot              Cmd $\n</code></pre>\n<p><strong>Text Editor (Atom or Sublime Text)</strong></p>\n<pre><code>Multiple cursors        Cmd d\nSearch files            Cmd t\nClose tag               Cmd &gt;\n</code></pre>\n<p><strong>Shell commands (Bash or Z shell)</strong></p>\n<pre><code class=\"language-shell\">Manual of command       man 'command'\nShow current directory  pwd\nList directory items    ls\nMake a new directory    mkdir 'new directory'\nChange directory        cd 'directory'/['directory']\nPrevious directory      cd -\nCurrent directory       'command' .\nUp a directory          'command' ..\nPrevious path           'command' !$\nHome directory          'command' ~\nRoot directory          'command' /\nAutofill                tab\nCreate a new file       touch 'new file name'\nCopy a file             cp 'file name' 'new directory'\nMove or rename          mv 'file name' 'new directory or name'\nRemove                  rm 'file name'\nRemove recursively      rm -rf 'directory with files to remove'\nMove to beginning       Ctrl a\nMove to end             Ctrl e\nMove to previous        Ctrl x, Ctrl x\nPrevious command        Up\nNext command            Down\nCancel operation        Ctrl c\nClear screen            Ctrl l\nClear word before       Ctrl w\nClear left and copy     Ctrl u\nClear right and copy    Ctrl k\nYank/paste clear        Ctrl y\nIncremental undo        Ctrl x, Ctrl u\n</code></pre>\n<p><strong>Git commands</strong></p>\n<pre><code class=\"language-shell\">Clone a repository      git clone 'url'\nStart git tracking      git init\nChange branch           git checkout 'feature-branch'\nCheckout new branch     git checkout -b 'new-feature-branch'\nDelete branches         git branch -d 'old-feature-branch'\nCheck status            git status\nStage all               git add -A\nCommit with message     git commit -m 'Add message on changes'\nShow log                git log\nPush branch to origin   git push origin 'new-feature-branch'\nPull latest changes     git pull\n</code></pre>\n",
      "date_published": "2015-10-28T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/bias/",
      "url": "https://dijonkitchen.org/notes/bias/",
      "title": "bias",
      "content_html": "<p>Stereotype threat is the topic of this week's DBC cultural discussion. Stereotype threat is how someone's performance is affected by stereotypes that they may classify themselves under. The &quot;threat&quot; part is the underperformance due to negative stereotypes, but overperformance from positive stereotypes are possible under stereotype lift.</p>\n<p>The idea is that even when many factors are controlled for, people with similar performance do worse when under stress that they may be subject to a negative stereotype. This can affect anyone from any race or sex.</p>\n<p>Being an asian american, the classic stereotype was that asians were better at math than others. I can't tell how this has affected me, if at all, since I've always been good, but not great at math. I do know fellow asians that were women that would often say things like, &quot;I'm a girl, so I must be bad at math.&quot; This is based on a lot of different statistical studies over the years, but that does not mean it is true for each person. Just because the average height of men is higher than women, does not mean a woman can't be taller than a man!</p>\n<p>One of the worst parts of stereotype threat is that even great performers will be threatened by it when in more extreme situations. An excellent math student, that happens to be a black woman, might feel they are verifying a stereotype if they are struggling with an exam. Just the fact that they second guess themselves and waste time thinking about things not relevant to the exam make them do worse. This self-fulfilling prophecy has been shown to be much more powerful than other factors of a person's performance.</p>\n<p>Some ways to counter stereotype threat is to know it exists and to understand that it's effecting you. Once you know it, it'll be less powerful a bias. There are also societal things like affirmative action that allow for more diversity so that people can see examples of others that have broken through stereotypes.</p>\n",
      "date_published": "2015-10-25T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/classes/",
      "url": "https://dijonkitchen.org/notes/classes/",
      "title": "classes",
      "content_html": "<p>An interesting thing about object-oriented programming is that everything is an object and objects inherit characteristics from their parents and pass them on to their children. By organizing a set of objects this way, you can classify similar objects as well.</p>\n<p>Let's look at an example of this in the real world. You could look at cars, animals, video games, or whatever you want. We'll examine schools!</p>\n<p>So there are a ton of different schools: Preschool, Kindergarten, Elementary School, High School, College, Business School, Dev Bootcamp, you get the picture. Each one of these could be part of the <code>Class School</code> and inherit the things in common between all schools like a name, students, teachers, subjects, classes, etc. Similarly, Schools in general can be part of the <code>Class Organization</code>.</p>\n<p>This is how it would look in code:</p>\n<pre><code class=\"language-ruby\">Class School\n\n  attr_reader :name, :students, :teachers\n\n  def initialize(name, students, teachers)\n    @name = name\n    @students = students\n    @teachers = teachers\n  end\n\n  def student_teacher_ratio\n    @student.to_f / @teacher\n  end\n\nend\n</code></pre>\n<p>This creates the <code>Class School</code> and allows you to make new schools with the traits they have in common: name, students, and teachers in this simplified case.</p>\n<p>To use the Class, you would create a new instance like this:</p>\n<pre><code class=\"language-ruby\">dev_bootcamp = School.new(&quot;Dev Bootcamp&quot;, 60, 6)\n</code></pre>\n<p>This sets the instance variables in the dev_bootcamp instance. <code>@name</code> would be set to &quot;Dev Bootcamp&quot;, <code>@students</code> would equal 60, and <code>@teachers</code> would equal 6.</p>\n<p>If you wanted to see what the name, students, teachers, and student/teacher ratio was, then you could call the instance methods on the object dev_bootcamp like so:</p>\n<pre><code class=\"language-ruby\">puts dev_bootcamp.name\nputs dev_bootcamp.students\nputs dev_bootcamp.teachers\nputs dev_bootcamp.student_teacher_ratio\n\n# Outputs:\n# Dev Bootcamp\n# 60\n# 6\n# 10.0\n</code></pre>\n<p>This is just a basic example, but you can easily image adding many more attributes to the class and all sorts of instance methods for statistics or getting other information.</p>\n",
      "date_published": "2015-10-19T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/enums/",
      "url": "https://dijonkitchen.org/notes/enums/",
      "title": "enums",
      "content_html": "<p>Enumerables! it means that you're able to count something one at a time. they're sometimes referred as ruby's most useful module (a bunch of methods packaged together)! arrays and hashes are really powerful, but more so because of they can get mixed in with enumerable methods. this adheres to the dry (&quot;don't repeat yourself&quot;) principle; once methods are included in enumerable and included in array and hash classes, you can use those methods whenever you use collections (arrays and hashes)!</p>\n<p>Once you're familiar with arrays and hashes, you'll be sure to use the <code>each</code> method. this method allows you to go through each element in a collection. it's really useful for doing something to a big list for instance. the <code>each</code> method is fundamental to enumerables; it allows enumerable methods to iterate through a collection and change the data.</p>\n<p>All enumerables utilize <code>each</code> to build up other methods like <code>map</code>. these are some of the most used enumerable methods. here's what they can do.</p>\n<pre><code class=\"language-ruby\"># Printing out each number in an array of low numbers in Ruby:\nlow_nums = [1, 2, 3, 4, 5]\nlow_nums.each {|number| puts number}\n# Output:\n# 1\n# 2\n# 3\n# 4\n# 5\n\n# Mapping the low numbers to twice their value\n\nlow_nums.map {|number| number * 2}\n\n# Output:\n# [2, 4, 6, 8, 10]\n</code></pre>\n<p>As you can see above, <code>each</code> goes through each item in the array and prints it on a new line and <code>map</code> creates a new array that multiplies each number in low_nums by two. <code>map</code> allows you to transform arrays into something new; in this example it was something as simple as doubling the numbers, but you can be creative and do many things to arrays this way!</p>\n",
      "date_published": "2015-10-11T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/security/",
      "url": "https://dijonkitchen.org/notes/security/",
      "title": "security",
      "content_html": "<p>Enable multiple ways to authenticate who you are: phone, faceprint, and a long passphrase. Use these to log into a pass manager like <a href=\"https://1password.com\">1Password</a> or the <a href=\"https://thewirecutter.com/reviews/best-password-managers/\">like</a>. Use a privacy-oriented browser like <a href=\"https://brave.com\">Brave</a>. Utilize a <a href=\"https://thewirecutter.com/reviews/best-vpn-service/\">VPN</a> when on public WiFi.</p>\n<h2>Encryption</h2>\n<p>Edward Snowden said that encryption was one of the easiest ways to protect your data. It deters thieves from stealing your data but you need to do it correctly.</p>\n<p>First, what does encryption do? It's basically using a password to protect your data, except this password scrambles how your data looks like so that people can't figure out what it is if they somehow bypass your password. Think about what would happen if someone took the drive out of your computer. Sure, you may have a password on it, but it's not much use if they access the drive directly. Or if you're signing-in online to a website; it's not much good if you have a password if everyone can hear what it is! The encryption makes it all garbled up so that people don't know what it is even if they can see or hear it.</p>\n<p>An additional benefit is that you can also erase data very quickly! 'Deleting' files isn't really removing them from existence, but rather telling the computer that that space is now rewritable. If that data is scrambled, it doesn't matter if it's writable or not; even if you can read it, it's seemingly random. Now what happens when you throw away the key (the password)? Well essentially, that data stays scrambled unless you know the key or in other words, essentially writable space to unknowing eyes. This saves a lot of time from having to wipe your storage clean by writing random 0's and 1's; it's done beforehand, but in a not-so-random way.</p>\n<p>Even when something is encrypted, it's really only as good as it's password... or should I say passphrase! It killed me to use the word password before, but unfortunately, it's so well-known that that's what people know it as... just a word. This is a horrible practice as nearly every large organization has told you. They want you to include all sorts of uppercase letters, lowercase letters, numbers, symbols, etc. AND change it every 3 months. Well, that's the right thinking, but not the right solution.</p>\n<p>The idea is to make the passphrase more complicated, with more combinations so others can't figure it out. The problem is people can't remember it either! What's better is a long passphrase, hence the word 'phrase.' The number of combinations is much greater by adding another letter, than it is adding other characters. This is mainly because you can now try remembering phrases instead of a short combination of letters, numbers, and symbols.</p>\n<p>For example:</p>\n<p><a href=\"https://xkcd.com/936/\"><img src=\"https://imgs.xkcd.com/comics/password_strength.png\" alt=\"Passphrases\" /></a></p>\n<p>Basically, longer is better because it's harder for computers to figure out what it is. Adding different cases, numbers, and symbols is even better, but it can make things hard to remember unless you use Snowden's example of 'MargaretThatcheris110%SEXY!'</p>\n<p>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/yzGzB-yYKcc&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</p>\n<p>How you create these passphrases is an even deeper issue. People are notoriously bad at this; they create easily guessed things. One way to make this easier is to use <a href=\"https://en.wikipedia.org/wiki/Diceware\">Diceware</a>. This kind of software utilizing very good randomization, the kind that's just random weather data to generate words from a dictionary. Why the weather? Because people are also really bad at forecasting that too! So if someone solves that problem, it'll actually be better for the world. But wouldn't a dictionary make it so you can look up words? Yes, but the key is running the diceware a few times so that you generate a few words for a longer passphrase. The idea is that the number of words in this dictionary is much higher than the number of letters or numbers there are so the mathematical combinations are higher! After you generate these words into a passphrase, you'll need to string them together into a story you can remember, like the example above.</p>\n<p>So lets say you've got a great passphrase; what if computers get a whole lot faster in the next few years and they can run so many combinations that they can figure that out too? That's where multi-factor authentication ('MFA') comes in. You may have seen this when websites ask you for a phone number so that they can send you a text when you login from a new device or location. That's one of the keys to MFA, something you own.</p>\n<p>The idea of MFA is that you have to verify that you are who you are using multiple techniques: something you know, something you have, and something that is inherently you. The first is usually a passphrase, the second is usually a phone that gets a text message with a unique code, and the last is often a fingerprint. When you combine all these things together, it's very difficult for anyone to login as you without your permission.</p>\n<p>Think about it. Even if someone has your passphrase, they most likely won't get your phone, the fingerprint to get into the phone, and thus the text message with a code to let you enter the site. If you're using all these things together, the only way they can get to it is if you're there and give it all up! This makes essentially every login unique. It'll be easier than generating different passphrases for each website since each one will ask you for authentication.</p>\n<p>The good news, is you're not the only one responsible for your data security. Many websites and phones don't let computers try a billion combinations a second; they know those are the bad guys since no human can do that. Bad guys can threaten your life or love ones though...</p>\n<p><a href=\"https://xkcd.com/538/\"><img src=\"https://imgs.xkcd.com/comics/security.png\" alt=\"Mugging\" /></a></p>\n<p>You can make it so you always need more than one person's authentication to login, but their lives may be endangered as well. The moral of the story is, do the best you can, but maybe not dealing with bad guys and having nothing to hide is even better. Thankfully, the most valuable things in life are relationships which are hard to steal!</p>\n",
      "date_published": "2015-10-05T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/data/",
      "url": "https://dijonkitchen.org/notes/data/",
      "title": "data",
      "content_html": "<p>Arrays and hashes are some of the most interesting data types in programming!</p>\n<p>Arrays are basically an ordered list of items. These items can be anything, even another array! Arrays are usefulwhen you have something that's sequential so you can say the first things is this, the second thing is that, and so on. You can then easily say give me the 6th through 10th items and know that there's some order to them. An example of this would be for a list of people that signed up for a concert. You can easily say first come, first serve, so the first 100 people's names are in an array and they get to attend the concert. Everyone else is not allowed!</p>\n<pre><code class=\"language-ruby\"># This is how you use an array in Ruby:\nparty_array = ['Jon', 'Carmen', 'Elaine', 'Theo']\n\n# You can reference a specific spot by doing this:\nparty_array[0] # This is the 'zeroth' item which is the 'first' aka 'Jon'\n\n# Add an item like so:\nparty_array[5] = 'Jim'\n\n# Now the party list looks like this:\n['Jon', 'Carmen', 'Elaine', 'Theo', 'Jim']\n</code></pre>\n<p>Hashes are very similar to arrays. The main difference is that they aren't in any special order. Hashes are key-value pairs of items, where the key is required to be unique. The beauty here, is that those keys can be anything as long as there isn't a repeat. This data type is great for dictionaries. Each word is unique and would have some definition. Some words may have the same definition, but you wouldn't have two of the same words in the dictionary right?! That'd be unnecessary!</p>\n<pre><code class=\"language-ruby\"># This is how you use an hash in Ruby:\nstate_dictionary_hash = {\n  &quot;NJ&quot; =&gt; &quot;New Jersey&quot;,\n  &quot;NY&quot; =&gt; &quot;New York&quot;,\n  &quot;CA&quot; =&gt; &quot;California&quot;,\n}\n\n# You can reference a specific spot by doing this:\nstate_dictionary_hash[&quot;NJ&quot;]\n\n# Add an item like so:\nstate_dictionary_hash[&quot;PA&quot;] = &quot;Pennsylvania&quot;\n\n# Now the state dictionary list looks like this:\n{\n  &quot;NJ&quot; =&gt; &quot;New Jersey&quot;,\n  &quot;NY&quot; =&gt; &quot;New York&quot;,\n  &quot;CA&quot; =&gt; &quot;California&quot;,\n}\n</code></pre>\n<p>I hope you found these data types interesting! There's a lot more you can do with them!</p>\n",
      "date_published": "2015-10-04T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/styling/",
      "url": "https://dijonkitchen.org/notes/styling/",
      "title": "styling",
      "content_html": "<p>As I've been learning how to make webpages, I've been required to utilize HTML (Hyper Text Markup Language) and CSS (Cascading Style Sheets), the fundamental building blocks of a website. The idea is that the HTML provides all the content and the CSS provides all the styling.</p>\n<p>This makes sense because you can have some content and style it all different ways and have that styling be utilized across all your pages. In terms of not repeating yourself, you're able to use one (or a few) set(s) of styles across as may webpages as you like.</p>\n<p>Although it may seem simple, it gets a little more complicated as you make more complex websites. There are a lot of creative designs out there to make webpages very fancy with different colors, styles, animations, etc. Add to that the need now to accommodate for screensizes ranging from the size of a watch to a gigantic projector, and you get some complicated CSS.</p>\n<p>To help web designers and developers, some people have developed frameworks to help set a standard for how things look in your web browser. This has led to a lot of people using templates that offer a lot, but so much that it's confusing to modify.</p>\n<p>Enter Atomic CSS. This is an approach to structuring CSS that has been around a few years, but not a lot of people utilize. It emphasizes using Classes above everything else, especially IDs. This in general allows styling to be utilized for multiple items, but Atomic CSS takes it even further. They focus on just one style per class. This allows you to build up styles &quot;atom-by-atom&quot; into &quot;molecules&quot; and then into larger organisms, templates, pages, etc.</p>\n<p>I thought this was mind-blowing! If you utilize this Atomic CSS philosophy, you just have &quot;mini-classes&quot; in your CSS that only edit one style at a time, so when you want to style your HTML, you can just tag on things you want to change on your website.</p>\n<p>For example, see the below:</p>\n<p><img src=\"/images/atomic-html.png\" alt=\"atomic html\" /></p>\n<p><img src=\"/images/atomic-css.png\" alt=\"atomic css\" /></p>\n<p>This shows how you can just add classes into the HTML to stack styles. Want bold and centered text on an item? No problem, just add &quot;bold&quot; and &quot;ctr-text&quot; to your class for that item!</p>\n<p>Now if another item somewhere else in the HTML only needs &quot;bold&quot;, you can just include that class without changing the styles for a whole tag or create a lot of div containers that don't tell you how something looks.</p>\n<p>So those are all the advantages to Atomic CSS. But why hasn't it hit the mainstream? Shouldn't everyone be using it to code all their websites?! Well, unfortunately, there are downsides to all of this and maybe that's why not everyone uses it.</p>\n<p>One of the pros and cons of having Atomic classes is that you need to stack the styles in the classes. This allows it to be super dynamic for different items that need to be styled, but it also adds a lot of classes for potentially a lot of items in HTML. And that breaks the cherished split of HTML and CSS. Now the CSS is just a list of building blocks and the HTML is styled with individual &quot;atoms.&quot;</p>\n<p>Some people don't like this. It breaks the ability to instantly change a CSS file and have a completely different looking website. What you gain is the readability of your code and simplicity in understanding and modifying your CSS.</p>\n<p>Whether Atomic CSS lasts, time will tell, but in the meantime, test it out for yourself and let the world know what you think! I for one, find it a lot easier to wrap my head around and I can always modify my CSS so that it's a blend of Atomic and some styling of whole tags.</p>\n",
      "date_published": "2015-09-28T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/versioning/",
      "url": "https://dijonkitchen.org/notes/versioning/",
      "title": "versioning",
      "content_html": "<p>I've been a huge fan of versioning for many years now. It all started when I was still in the business world and everyone traded documents and spreadsheets via email or at most on the network. One quarter, we had a major deliverable with an old spreadsheet that had a ton of links to other files and was handled by several people. Unfortunately, this quarter, it got corrupted one way or another... and we didn't version!</p>\n<p>We learned our lesson from that point forward. It was no fun redoing all our changes on an old file with changes all over the place. From that point on my manager and I always insisted that every file be versioned, especially if we were working with others. We did it in a fairly simple fashion by just adding V1, V2, V3, etc. after it. It allowed us to go back to a previous version if something went wrong. This can work for software too, but it's not as elegant as Git.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Git_(software)\">Git</a> is a distributed versioning system. Unlike our simple version control, where only one person would be able to edit a file at a time, Git allows multiple people to make new branches to edit and can merge while checking for conflicts.</p>\n<p>This is very powerful because it can allow people in different locations all over the world to make changes to the same master file. If they happen to be working on the same portion of the file, Git will tell them there are conflicts when they both try to save. If there aren't any conflicts, their changes can be merged into the master file. This is very efficient, particularly for large projects. Imagine working on a large thesis with many writers; if they could all work on different parts and then have them combined, you've distributed the work and can complete it many times faster.</p>\n<p>One key thing with lots of edits is to keep them small and do them often. Much like save points in a game, if you have a lot of checkpoints to go back to, you can easily determine where errors started and go back to the best spot. Git calls these commits.</p>\n<p>Now you might be wondering, it's great to be able to have many people at one organization make edits, but what if you work elsewhere, possibly on a different network? That's where <a href=\"https://github.com/\">GitHub</a> comes in. GitHub allows people to collaborate online! So whether you work at your favorite tech company or not, there are a <a href=\"https://github.com/trending?since=monthly\">ton of respositories</a> you can help improve.</p>\n<p>By default, repositories on GitHub are public and thus anyone can look at them and make new versions (fork in Git speak). Additionally, because of this, GitHub is a great place for <a href=\"https://en.wikipedia.org/wiki/Open-source_software\">open source software</a>.</p>\n<p>So go forth, check out GitHub, and contribute to some cool projects!</p>\n<p>Get better code reviews\nGit committing\nVersion control and showing your thoughts</p>\n",
      "date_published": "2015-09-10T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/personality/",
      "url": "https://dijonkitchen.org/notes/personality/",
      "title": "personality",
      "content_html": "<p>One of the things I really like about Dev Bootcamp versus others is that they emphasize a lot about the individual and self reflection.</p>\n<p>Part of the pre-Phase 0 work is figuring out what your learning and thinking style is. You just do a self-evaluation on <a href=\"https://vark-learn.com/the-vark-questionnaire/?p=questionnaire\">learning</a> and <a href=\"https://www.thelearningweb.net/personalthink.html\">thinking</a>.</p>\n<p>Here were my results:</p>\n<p><strong>Learning</strong></p>\n<ul>\n<li>Multimodal</li>\n</ul>\n<p><strong>Thinking</strong></p>\n<ul>\n<li>Concrete\n<ul>\n<li>Sequential: 40</li>\n<li>Random: 28</li>\n</ul>\n</li>\n<li>Abstract\n<ul>\n<li>Sequential: 48</li>\n<li>Random: 4</li>\n</ul>\n</li>\n</ul>\n<p>It would seem that my style is multimodal, particularly &quot;Concrete&quot; and &quot;Sequential.&quot; Additionally, it's particularly not reading and writing focused or &quot;Abstract&quot; and &quot;Random.&quot;</p>\n<p>What's all this mean?</p>\n<p>With regards to learning, I like to learn by using a lot of different things (visual, aural, reading/writing, and kinesthetic). For me, there was less emphasis on reading and writing since I don't really think it's often as succinct as it could be.</p>\n<p>Regarding thinking, based on the Professor Anthony Gregorc's <a href=\"https://web.cortland.edu/andersmd/learning/Gregorc.htm\">research</a>, I prefer order and systematized, logical thinking. I like to stick to the facts and act on them. Less ideal are things that are unorganized and unpredictable.</p>\n<p>In general, I view all these personality surveys as a way to seek out the gist of who you are. It's not perfect, but in general it's accurate I'd say.</p>\n<p>I'll need to work on trusting people to do things more often and be comfortable with uncertainty since that's the real world after all.</p>\n<p>Knowing your weaknesses makes you stronger, much like knowing what you don't know is better than not knowing what you don't know.</p>\n",
      "date_published": "2015-08-18T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/me/",
      "url": "https://dijonkitchen.org/notes/me/",
      "title": "me",
      "content_html": "<p>An ever-growing auto-biography.</p>\n<h1>History Part 1: The Early/Gaming Years</h1>\n<p>Like all great stories, it all started when I grew up playing games. I was born soon after the Nintendo was released and I loved Super Mario/Duck Hunt and Dig Dug on a random Apple ][ computer... until it broke one day.</p>\n<p>I was fascinated with these ethereal worlds inside a box. Thus began my interest in technology, computers, and games.</p>\n<h2>Tech bubble times</h2>\n<p>In 5th grade, I remember geeking out, with the only other person that was interested in computers, Windows, and Intel. We made a class presentation with a combination of MMX technology and random things we made up. It was a ton of fun!</p>\n<p>I played chess during lunchtime and during recess I would play Kickball, philosophize, and talk to a friend about how his parents made a lot of money on Oracle stock.</p>\n<p>Fast forward a few years and I'm in school learning how to type on an Apple IIe and play Oregon Trail.</p>\n<p>Games got me off track for a while. They were a lot of fun; lots of things to analyze and optimize. RPGs, fighting games, and Starcraft all took a lot of time, but in the end I gained a lot of skills that I wouldn't have had otherwise. Chess and pool taught me to think ahead, RPGs taught me about optimization and risk management.</p>\n<h2>Then the tech bubble burst</h2>\n<p>I didn't know it at the time. If anything I was more worried about Y2K (I literally bought a radio-controlled car instead of a Diablo II game because I was worried about computers! And then the 9/11 terrorist attacks. What I did hear was how people were losing jobs.</p>\n<p>I decided that pursuing a tech career was too risky...</p>\n<h1>History Part 2: The Business Years</h1>\n<p>Part of the consequences of the tech bubble, besides my computing industry views, was that stocks and investments were really exciting. Of course I only saw the upside at that time and didn't realize that a lot of people could lose a lot of money... until I did.</p>\n<h2>First investment</h2>\n<p>It was the height of the tech bubble, but all I knew was AOL was so cool. Being able to go online with the whirling and whizzing of hard drives and modems was such a foreign but interesting experience as a child. That and all we got in the mail was AOL and Compuserve CDs!</p>\n<p>I loved the company and idea too much to not own a piece of it myself. With my tiny little savings through the years, I told my parents I wanted to buy 1 share of AOL for $100.</p>\n<p>Time passed and I didn't pay attention to what was happening in the stock market. My parents bought a new minivan with their Microsoft profits and we moved into a new house. Only later did I realize that there was a crash; 9/11 was more important to me than tech valuations and Enron.</p>\n<p>We ended up collected those AOL CDs and even brought them over to our new house to decorate the basement we were finishing. It's now a humbling reminder of grandiose and irrational times.</p>\n<h2>Formal training</h2>\n<p>Though it wasn't much money, I vowed to not lose money again. I started attending BusinessWeek information seminars that my dad got invited to. They were trying to sell their services, but we would just use their free trial period to find interesting companies.</p>\n<p>I still knew nothing then but it spawned an interest that led me to business school. I figured all these people that made a lot of money ought to know what they're doing. It seemed to be a dynamic industry and every company needed a finance function. You can't go wrong right?</p>\n<h1>History Part 3: The Finance Years</h1>\n<p>Wikipedia\nResearch\nInvestments\nEfficiency\nWebsites\nBlog\nLogan party\nCS50x\nBoot camps</p>\n<h1>History Part 4: Engineering</h1>\n<p>Made it to western software hacker!</p>\n",
      "date_published": "2015-07-18T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/hack/",
      "url": "https://dijonkitchen.org/notes/hack/",
      "title": "hack",
      "content_html": "<p>Journey toward becoming a scientist, but more specifically a software hacker that utilizes the scientific method.</p>\n<ol>\n<li><strong>O</strong>bserve inefficiencies</li>\n<li><strong>H</strong>ypothesize solutions</li>\n<li><strong>P</strong>redict outcomes</li>\n<li><strong>E</strong>xperiment with prototypes</li>\n<li><strong>A</strong>nalyze outcomes</li>\n<li><strong>R</strong>efine and repeat many times</li>\n</ol>\n",
      "date_published": "2015-05-26T00:00:00+00:00",
      "tags": []
    },
    {
      "id": "https://dijonkitchen.org/notes/me-random/",
      "url": "https://dijonkitchen.org/notes/me-random/",
      "title": "me-random",
      "content_html": "<h1>8 Random Things You May Not Know About Me:</h1>\n<ol>\n<li>\n<p>Two of my favorite toys as a kid were a cardboard box and an Oscar the Grouch garbage truck. I still think crushing stuff is awesome.</p>\n</li>\n<li>\n<p>Although I\u2019m part of an asian family, I don\u2019t think I\u2019ve gotten the full \u201ctiger mom\u201d experience. If anything, I actually think I\u2019ve had the freedom to control my life, but with a sense of responsibility. I guess with great power, does come great responsibility!</p>\n</li>\n<li>\n<p>Since my dad told me as a kid if you\u2019re going to do something, you should do it the best way, I\u2019ve always been about efficiency. This affects nearly everything I do; I love continually learning and improving on everything from the right way to tie shoelaces to meaning of life stuff. I figure it\u2019s so logical since once you figure something out, it\u2019s worth remembering and easier to remember.</p>\n</li>\n<li>\n<p>My only exercise is walking through the city long distances (think 40+ blocks daily and the occasional midtown to downtown) and I\u2019m usually thinking about or researching random stuff on the side; chances are I\u2019ll probably talk to you about it if I think it\u2019s relevant, but you can always ask me if you\u2019re curious or if you\u2019re researching something I might save you time.</p>\n</li>\n<li>\n<p>As a kid, I didn\u2019t listen to much music. All I can remember is turning on the radio once and hearing Howard Stern or something and I thought all radio was inappropriate. That, and our car radio got stolen in Chinatown. Much has change since then with the digital music renaissance and now my 6 AM alarm clock is NPR. It\u2019s always different so you don\u2019t get used to it, you get major news and weather, and there are cool shows!</p>\n</li>\n<li>\n<p>I haven\u2019t read many books, but I do research things a lot with articles and stuff; I\u2019m an interdisciplinary ideas guy. There are a lot of experiments I conduct for research and one of them over the years has been to read or not to read news at all. Lately I\u2019ve settled on not reading any (Nassim Taleb style). Basically you\u2019ll hear about any \u201cmajor\u201d news and anything else may be biased and not important.</p>\n</li>\n<li>\n<p>My religious sojourn: teenage spiritualist Christian, college agnostic, twenty-something secular humanist, lifelong ethical values guy</p>\n</li>\n<li>\n<p>Between kickball and philosophizing at recess in elementary school, I had a little business selling lead and giving tattoos to kids with erasers. I still have my change from those days in a Crayola \u201cpiggy\u201d bank!</p>\n</li>\n</ol>\n",
      "date_published": "2013-12-08T00:00:00+00:00",
      "tags": []
    }
  ]
}
