<!--

Interested in the chaos behind this magic?
Check it out on GitHub ✌🏻
https://github.com/keenanpayne/keenanpayne.com

-->



<!doctype html>
<html lang="en" style="" class="newStyles">
  <head>
    <title>Keenan Payne</title>
    
    <link rel="stylesheet" href="/css/app.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=IBM+Plex+Mono:wght@500&display=swap">
    <link rel="alternate" href="/feed.xml" type="application/atom+xml" title="Keenan Payne">
    <link rel="alternate" href="/feed.json" type="application/json" title="Keenan Payne">

    <script src="/js/app.js"></script>

    
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    
    
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="author" content="Keenan Payne" />
<meta name="color-scheme" content="light dark">
<meta name="description" content="Hi, I&#39;m Keenan Payne, a web developer and writer. I like to learn, build, and share.">
<link rel="canonical" href="https://keenanpayne.com/feed.xml">


<meta property="og:url" content="https://keenanpayne.com/feed.xml" />
<meta property="og:title" content="Keenan Payne" />

<meta name="twitter:site" content="@keenanpayne_" />
<meta name="twitter:creator" content="@keenanpayne_" />


  <meta property="og:description" content="Hi, I&#39;m Keenan Payne, a web developer and writer. I like to learn, build, and share." />

  <meta property="twitter:description" content="Hi, I&#39;m Keenan Payne, a web developer and writer. I like to learn, build, and share." />



  <meta name="twitter:card" content="summary" />

  </head>
  <body>
    <aside class="topbar">
  <div class="topbar-content">
    <p class="topbar-text"><span class="status-dot"></span>I have availability Q3-Q4, 2025</p>
    <p class="topbar-text"><span class="topbar-separator">—</span><a class="topbar-link" href="/project-inquiry">inquire about working together</a> today!</p>
  </div>
</aside> 

    <header class="header">
  <div class="header-container">
    <h1 class="header-logo">
      <a class="-hover-color" href="/">
        Keenan<br> 
        Payne
      </a>
    </h1>

    <h2 class="header-tagline">
      Professional web design and <span class="_a11y-hidden">web</span> development services <strong class="_rainbow-underline">since 2007</strong>
    </h2>

    <a href="/project-inquiry" class="header-button button -secondary">
      Project inquiry →
    </a>
  </div>

  <div class="navigation">
    <nav class="navigation-left"><a class="-inverted navigation-item " href="/about/">
          About
        </a><a class="-inverted navigation-item " href="/portfolio/">
          Portfolio
        </a><a class="-inverted navigation-item " href="/services/">
          Services
        </a><a class="-inverted navigation-item " href="/testimonials/">
          Testimonials
        </a><a class="-inverted navigation-item " href="/contact/">
          Contact
        </a></nav>

    <nav class="navigation-right">
      <a class="-inverted navigation-item" href="https://calendly.com/keenanpayne/" title="Schedule time to talk" target="_blank" rel="noopener">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path fill="currentColor" d="M128 64H320V8C320 3.582 323.6 0 328 0C332.4 0 336 3.582 336 8V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H112V8C112 3.582 115.6 0 120 0C124.4 0 128 3.582 128 8V64zM432 288V192H304V288H432zM288 192H160V288H288V192zM144 192H16V288H144V192zM16 304V400H144V304H16zM16 416V448C16 474.5 37.49 496 64 496H144V416H16zM160 496H288V416H160V496zM304 496H384C410.5 496 432 474.5 432 448V416H304V496zM432 400V304H304V400H432zM64 80C37.49 80 16 101.5 16 128V176H432V128C432 101.5 410.5 80 384 80H336V120C336 124.4 332.4 128 328 128C323.6 128 320 124.4 320 120V80H128V120C128 124.4 124.4 128 120 128C115.6 128 112 124.4 112 120V80H64zM288 304H160V400H288V304z"/></svg>
      </a>

      <a class="-inverted navigation-item" href="/subscribe" title="Subscribe to my newsletter">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path fill="currentColor" d="M432 64h-288C64.47 64 0 128.5 0 208V384c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V208C576 128.5 511.5 64 432 64zM240 432H64c-26.47 0-48-21.53-48-48V208c0-70.58 57.42-128 128-128H160c70.58 0 128 57.42 128 128V384C288 410.5 266.5 432 240 432zM560 384c0 26.47-21.53 48-48 48H281.9C295.3 420.3 304 403.2 304 384V208c0-56.14-32.45-104.3-79.32-128H432c70.58 0 128 57.42 128 128V384zM216 192h-144C67.58 192 64 195.6 64 200S67.58 208 72 208h144C220.4 208 224 204.4 224 200S220.4 192 216 192zM488 192h-112c-4.422 0-8 3.578-8 8s3.578 8 8 8h112c4.406 0 8 3.594 8 8v64H448v-32c0-4.422-3.578-8-8-8S432 243.6 432 248V288c0 4.422 3.578 8 8 8h64C508.4 296 512 292.4 512 288V216C512 202.8 501.2 192 488 192z"/></svg>
      </a>
    </nav>
  </div>
</header> 

    <main class="">
      
        
      
        
      <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>Keenan Payne</title>
	<subtitle>Hi, I&#39;m Keenan Payne, a web developer and writer. I like to learn, build, and share.</subtitle>
	
	<link href="https://keenanpayne.com/feed.xml" rel="self"/>
	<link href="https://keenanpayne.com/"/>
	<updated>Tue, 29 Oct 2024 24:00:00 GMT</updated>
	<id>https://keenanpayne.com/</id>
	<author>
		<name>Keenan Payne</name>
		<email>contact@keenanpayne.com</email>
	</author>
	
	<entry>
		<title>Why I&#39;m voting for Kamala Harris in the 2024 election</title>
		<link href="https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/"/>
		<updated>Tue, 29 Oct 2024 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/</id>
		<content type="html">&lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1730243421/blog-posts/shutterstock_2509718761_pskpdg.jpg 1360w&quot; alt=&quot;Digital illustration featuring a silhouette of Kamala Harris to the left in a blue color and Donald Trump to the right in a red color&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Politics is not something I tend to write about publicly, not for any particular reason other than that I typically prefer to convey my political beliefs—or &lt;em&gt;any&lt;/em&gt; beliefs, for that matter—in person. Anyone close to me will undoubtedly know how true this rings. So, why start my public political editorials here?&lt;/p&gt;
&lt;p&gt;I suppose it&#39;s because I have no shortage of thoughts about this current election, so having a means and medium to share them feels intellectually and creatively satisfying. However, I would be lying by omission if I failed to mention my interest in putting whatever minuscule amount of weight this essay might contain on the scales of the election. I don&#39;t expect to put more than a peanut&#39;s weight on this scale (keep the &amp;quot;gallery&amp;quot; jokes to yourself), but whatever influence I might have is worth wielding.&lt;/p&gt;
&lt;p&gt;Ideally, I would start this article by outlining all of the favorable policy positions my preferred candidate supports and describe how these policy positions align with the ideal outcomes I would like to see from our government. However, I find myself in a position where I must first address the elephant in the room: Donald Trump, who is uniquely unqualified to be president of the United States. Thus, I feel compelled to address what disqualifies him from my vote before discussing why I support Kamala Harris. He&#39;s forced his hand—as he is wont to do based on how many &lt;a href=&quot;https://en.wikipedia.org/wiki/Donald_Trump_sexual_misconduct_allegations&quot;&gt;sexual misconduct allegations he has&lt;/a&gt;—so I will meet him where he is.&lt;/p&gt;
&lt;h2 id=&quot;why-i&#39;m-not-voting-for-donald-trump&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#why-i&#39;m-not-voting-for-donald-trump&quot;&gt;Why I&#39;m not voting for Donald Trump&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;donald-trump-incited-a-violent-insurrection-on-january-6th%2C-2021&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#donald-trump-incited-a-violent-insurrection-on-january-6th%2C-2021&quot;&gt;Donald Trump incited a violent insurrection on January 6th, 2021&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Out of all the presidentially disqualifying actions that Donald Trump has committed both in and out of office, nothing is as egregious to me as his inciting a &lt;a href=&quot;https://en.wikipedia.org/wiki/January_6_United_States_Capitol_attack&quot;&gt;violent insurrection on our nation&#39;s capital on January 6th, 2021&lt;/a&gt; after losing the presidential election to Joe Biden.&lt;/p&gt;
&lt;p&gt;I&#39;m not going to spend my time reiterating the evidence surrounding this insurrection and why Donald Trump was proven to have played a pivotal role in it. If you are unconvinced about his role or the severity of his event, I encourage you to learn about it and judge for yourself.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Public_hearings_of_the_United_States_House_Select_Committee_on_the_January_6_Attack&quot;&gt;Public hearings of the United States House Select Committee on the January 6 Attack&lt;/a&gt; make it clear what role Donald Trump played, what his intended effect was, and what the fallout from the attack was. Watch the hearings on C-SPAN, read articles about it, or watch the video footage from that day if you haven&#39;t. No evidence that Donald Trump or his supporters/co-conspirators have provided has convinced me of anything other than that he sought to overturn the 2020 presidential election.&lt;/p&gt;
&lt;h3 id=&quot;donald-trump-questions-the-validity-of-united-states-elections&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#donald-trump-questions-the-validity-of-united-states-elections&quot;&gt;Donald Trump questions the validity of United States elections&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Donald Trump has done more harm to American&#39;s belief in our country&#39;s electoral process than any president in my lifetime. This is saying a lot since George W. Bush and his co-conspirators successfully won the 2000 presidential election against Al Gore after a &lt;a href=&quot;https://en.wikipedia.org/wiki/2000_United_States_presidential_election_recount_in_Florida&quot;&gt;contested ballot counting in Florida&lt;/a&gt;, and the less-deadly, but still obstinate &lt;a href=&quot;https://en.wikipedia.org/wiki/Brooks_Brothers_riot&quot;&gt;Brooks Brothers riot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Donald Trump has been parroting the &amp;quot;stop the steal&amp;quot; conspiracy theory since the night of the 2020 election. This rhetoric played a role in the January 6th insurrection, as countless participants in the riot proclaimed that the election had been rigged or stolen by Democrats and Joe Biden. This conspiracy theory was spearheaded by fascist political operative &lt;a href=&quot;https://en.wikipedia.org/wiki/Roger_Stone&quot;&gt;Roger Stone&lt;/a&gt;, who has no shortage of ideas for how to undermine American democracy.&lt;/p&gt;
&lt;p&gt;Yet, despite years of hearing Trump and his lackeys wailing about the &amp;quot;stolen election,&amp;quot; almost no compelling evidence has been presented which supports his claim. None of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Post-election_lawsuits_related_to_the_2020_United_States_presidential_election&quot;&gt;63 lawsuits filed by Trump&#39;s legal team&lt;/a&gt; have been successful. Read about &lt;a href=&quot;https://en.wikipedia.org/wiki/Attempts_to_overturn_the_2020_United_States_presidential_election&quot;&gt;Trump&#39;s attempt to overturn the 2020 election&lt;/a&gt;, and let me know if his argument sounds compelling. Even Trump&#39;s vice presidential nominee, JD Vance, &lt;a href=&quot;https://www.axios.com/2024/10/16/jd-vance-trump-2020-election-denial&quot;&gt;denied the results of the 2020 election in his debate with Tim Walz&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Furthermore, Donald Trump is running a similar election denial playbook for the 2024 presidential election as he sows the seeds for ballot counting distrust as he anticipates a tight race with Kamala Harris. If he loses the election, we all know what&#39;s coming—more election denial.&lt;/p&gt;
&lt;h3 id=&quot;donald-trump-is-a-racist&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#donald-trump-is-a-racist&quot;&gt;Donald Trump is a racist&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The United States has had no shortage of racist presidents, including Donald Trump. Let&#39;s take a trip back in time and learn how the &lt;a href=&quot;https://clearinghouse.net/case/15342/&quot;&gt;United States Department of Justice filed a housing discrimination lawsuit against Donald Trump and his father, Fred Trump, in 1973&lt;/a&gt;. The case was settled with a consent decree, indicating that the settlement was &amp;quot;in no way an admission&amp;quot; of housing discrimination. However, the evidence presented by the DOJ, and testimony from employees for the Trump real estate company and apartment seekers indicate a clear pattern of racial discrimination against African Americans and people of color.&lt;/p&gt;
&lt;p&gt;Fast-forward to 2020, while the world is facing the coronavirus (Covid-19) pandemic, and we have Donald Trump using the phrases &amp;quot;Chinese virus,&amp;quot; &amp;quot;China virus,&amp;quot; and &amp;quot;kung flu&amp;quot; to describe the disease. Donald Trump happily used racist language to localize and characterize a worldwide virus, and the effects were evident. These phrases became part of the lexicon for right-wingers, and even gained traction as hashtags for posts on social media platforms. A &lt;a href=&quot;https://ajph.aphapublications.org/doi/10.2105/AJPH.2021.306154&quot;&gt;2021 study in the American Journal of Public Health&lt;/a&gt; used sentiment analysis on Tweets during this time period and found that 19.7% of Tweets with the hashtag &amp;quot;#covid19&amp;quot; showed anti-Asian sentiment, while 50.4% of Tweets with the hashtag &amp;quot;#chinesevirus&amp;quot; showed anti-Asian sentiment. This had real-world consequences, as anti-Asian hate crimes spiked while we battled the Covid-19 pandemic. A &lt;a href=&quot;https://journals.sagepub.com/doi/10.1177/08862605221107056&quot;&gt;2022 study on anti-Asian hate crimes&lt;/a&gt; found that hate crimes against Asian Americans surged following the introduction of the &amp;quot;Chinese virus,&amp;quot; &amp;quot;China virus,&amp;quot; and &amp;quot;kung flu&amp;quot; were used publicly. &lt;strong&gt;Donald Trump endangered American citizens by carelessly using racist language using the world&#39;s largest podium.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I could dive into Donald Trump&#39;s racism toward Muslims, Mexicans, and other people of color, but I can only spend so much time sharing his racist antics. As he kicked off his 2016 presidential bid, &lt;a href=&quot;http://time.com/3923128/donald-trump-announcement-speech/&quot;&gt;he remarked on the topic of Mexican immigrants&lt;/a&gt;, &amp;quot;They’re bringing drugs. They’re bringing crime. They’re rapists. And some, I assume, are good people.&amp;quot; Or, in &lt;a href=&quot;https://www.cnn.com/2016/03/09/politics/donald-trump-islam-hates-us/index.html&quot;&gt;an interview with Anderson Cooper&lt;/a&gt;, he mentioned that &amp;quot;I think Islam hates us.&amp;quot;&lt;/p&gt;
&lt;p&gt;There are no shortage of differences between you and I in terms of our religious, spiritual, and cultural beliefs. However, I see these differences as a &lt;em&gt;feature&lt;/em&gt;, not a &lt;em&gt;bug&lt;/em&gt;. I believe that our differences are what make us unique and beautiful, and should not be used as a weapon for fear-mongering by creating scapegoats.&lt;/p&gt;
&lt;h3 id=&quot;donald-trump-is-a-criminal&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#donald-trump-is-a-criminal&quot;&gt;Donald Trump is a criminal&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Donald Trump is currently involved in &lt;em&gt;multiple&lt;/em&gt; criminal cases. He has become the first president to be indicted, breaking our country&#39;s 234-year record. One of these indictments, the &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Prosecution_of_Donald_Trump_in_New_York&quot;&gt;hush money case&lt;/a&gt;&amp;quot;, has led Trump to be a convicted felon, after he was found guilty of 34 felony counts of falsifying business records to pay off Stormy Daniels, an adult film actress who claimed she had a sexual encounter with him.&lt;/p&gt;
&lt;p&gt;Donald Trump&#39;s criminal involvement doesn&#39;t stop there. He is currently engrossed in three other criminal cases involving his aforementioned 2020 election denial/interference, and mishandling of classified documents. I recommend &lt;a href=&quot;https://www.politico.com/interactives/2023/trump-criminal-investigations-cases-tracker-list/#hush-money&quot;&gt;Politico&#39;s Trump criminal case tracker&lt;/a&gt; for more details on each case.&lt;/p&gt;
&lt;h3 id=&quot;donald-trump&#39;s-2024-platform&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#donald-trump&#39;s-2024-platform&quot;&gt;Donald Trump&#39;s 2024 platform&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While Donald Trump inciting the January 6th insurrection, engaging in nonstop election denial, being a blatant racist, and a federally convicted criminal all disqualify him from my vote, it&#39;s worth noting that there are countless other areas where I disagree with his policies.&lt;/p&gt;
&lt;p&gt;I need look no further than the &amp;quot;&lt;a href=&quot;https://www.donaldjtrump.com/platform&quot;&gt;Agenda 47&lt;/a&gt;&amp;quot; page on his website where he outlines his presidential platform (copied verbatim from his website, including grammatical errors):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Seal the border and stop the migrant invasion&lt;/li&gt;
&lt;li&gt;Carry out the largest deportation operation in american history&lt;/li&gt;
&lt;li&gt;End inflation, and make america affordable again&lt;/li&gt;
&lt;li&gt;Make america the dominant energy producer in the world, by far!&lt;/li&gt;
&lt;li&gt;STOP OUTSOURCING, AND TURN THE UNITED STATES INTO A MANUFACTURING SUPERPOWER&lt;/li&gt;
&lt;li&gt;large tax cuts for workers, and no tax on tips!&lt;/li&gt;
&lt;li&gt;Defend our constitution, our bill of rights, and our fundamental freedoms, including freedom of speech, freedom of religion, and the right to keep and bear arms&lt;/li&gt;
&lt;li&gt;Prevent world war three, restore peace in europe and in the middle east, and build a great iron dome missile defense shield over our entire country -- all made in america&lt;/li&gt;
&lt;li&gt;End the weaponization of government against the american people&lt;/li&gt;
&lt;li&gt;Stop the migrant crime epidemic, demolish the foreign drug cartels, crush gang violence, and lock up violent offenders&lt;/li&gt;
&lt;li&gt;Rebuild our cities, including washington dc, making them safe, clean, and beautiful again.&lt;/li&gt;
&lt;li&gt;Strengthen and modernize our military, making it, without question, the strongest and most powerful in the world&lt;/li&gt;
&lt;li&gt;Keep the U.S. dollar as the world&#39;s reserve currency&lt;/li&gt;
&lt;li&gt;Fight for and protect social security and medicare with no cuts, including no changes to the retirement age&lt;/li&gt;
&lt;li&gt;Cancel the electric vehicle mandate and cut costly and burdensome regulations&lt;/li&gt;
&lt;li&gt;Cut federal funding for any school pushing critical race theory, radical gender ideology, and other inappropriate racial, sexual, or political content on our children&lt;/li&gt;
&lt;li&gt;Keep men out of women&#39;s sports&lt;/li&gt;
&lt;li&gt;Deport pro-hamas radicals and make our college campuses safe and patriotic again&lt;/li&gt;
&lt;li&gt;Secure our elections, including same day voting, voter identification, paper ballots, and proof of citizenship&lt;/li&gt;
&lt;li&gt;Unite our country by bringing it to new and record levels of success&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At Donald Trump&#39;s recent &lt;a href=&quot;https://en.wikipedia.org/wiki/1939_Nazi_rally_at_Madison_Square_Garden&quot;&gt;Bund Rally at Madison Square Garden&lt;/a&gt;—I mean, &lt;a href=&quot;https://apnews.com/article/trump-madison-square-garden-new-york-election-fcfe75be7f8281fde7bffa3adb3bba5d&quot;&gt;his recent campaign rally at Madison Square Garden&lt;/a&gt;—he said, &amp;quot;On day one, I will launch the largest deportation program in American history and get criminals out.&amp;quot; This is Donald Trump&#39;s game plan and pitch to Americans—your life will improve and your problems will be solved if we deport illegal immigrants and make immigration more difficult.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Will your problems be solved, or will your life be better if illegal immigrants are deported and immigration into our country is made more difficult?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;I see Donald Trump&#39;s anti-immigrant policy to be racist and wholly unproductive and antithetical to what our country needs. We &lt;em&gt;need&lt;/em&gt; immigrants to help our country grow and prosper, and we need legal and ethical circumstances under which immigration can occur. Furthermore, prioritizing the inhumane deportation of immigrants solves nothing other than to further our own inhumanity, as we seek punishment for others simply wanting to live a better life and be productive members of society.&lt;/p&gt;
&lt;p&gt;As outlined in his policy platform, Donald Trump doesn&#39;t only want to deport illegal immigrants. He also seeks to &amp;quot;deport pro-Hamas radicals.&amp;quot; What exactly does this mean? How do you classify who is a &amp;quot;pro-Hamas radical&amp;quot;? Is anybody protesting for Palestinian rights a &amp;quot;pro-Hamas radical&amp;quot;? Are American citizens protesting for Palestinian rights open to deportation? This is a terrifying thought to consider.&lt;/p&gt;
&lt;p&gt;Aside from Donald Trump&#39;s emphasis on deporting people he doesn&#39;t like, he wants to end inflation, which has already &lt;a href=&quot;https://gfmag.com/data/economic-data/worlds-highest-lowest-inflation-rates/&quot;&gt;dramatically decreased under the Biden Administration&lt;/a&gt;; improve American manufacturing, which was &lt;a href=&quot;https://www.whitehouse.gov/briefing-room/statements-releases/2024/07/24/fact-sheet-biden-harris-administrations-progress-creating-a-future-made-in-america/&quot;&gt;accomplished by the Biden administration&lt;/a&gt;, due in no small part to the &lt;a href=&quot;https://en.wikipedia.org/wiki/CHIPS_and_Science_Act&quot;&gt;CHIPS and Science Act&lt;/a&gt;; cut taxes—&lt;em&gt;of course&lt;/em&gt;—which will predominantly be used to lower corporate taxes and help the wealthiest Americans get even wealthier (see &lt;a href=&quot;https://www.aeaweb.org/articles?id=10.1257/jep.38.3.3&quot;&gt;this study&lt;/a&gt; and &lt;a href=&quot;https://www.aeaweb.org/articles?id=10.1257/jep.38.3.61&quot;&gt;this study&lt;/a&gt; which both show how Donald Trump&#39;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Tax_Cuts_and_Jobs_Act&quot;&gt;Tax Cuts and Jobs Act&lt;/a&gt; raised federal debt by reducing corporate tax revenue, and had minimal effect on GDP and corporate investment); ending the weaponization of government against the American people—unless, of course, you&#39;re a pro-Palestinian protestor, in which case he wants to deport you; cut federal education funding; discriminate against transgender Americans; and plenty of other hand-waving to causes that Donald Trump doesn&#39;t genuinely care about.&lt;/p&gt;
&lt;p&gt;I won&#39;t pretend that there aren&#39;t things on Donald Trump&#39;s platform that aren&#39;t important. Of course, I would like our country to reduce inflation and prioritize affordability, improve American manufacturing, prevent WW3, prevent the weaponization of the government against the American people, defend our constitution, and protect Social Security and Medicare. The problem is that &lt;strong&gt;I don&#39;t trust or believe that these are issues that Donald Trump or his cabinet will be genuinely interested in addressing&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;why-i&#39;m-voting-for-kamala-harris&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#why-i&#39;m-voting-for-kamala-harris&quot;&gt;Why I&#39;m voting for Kamala Harris&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If the preceding paragraphs haven&#39;t made this point, &lt;strong&gt;one key reason why I am voting for Kamala Harris is because she isn&#39;t Donald Trump&lt;/strong&gt;. Kamala Harris has not incited a violent insurrection at our nation&#39;s capital, she has not called into question the legitimacy of American elections, she isn&#39;t racist, and she isn&#39;t a criminal. These seem like the type of qualifications that one shouldn&#39;t have to emphasize when running for the highest office in America, but that&#39;s where we are.&lt;/p&gt;
&lt;p&gt;Still, there are plenty of other reasons why I am happy to vote for Kamala Harris and why her 2024 platform gives me confidence and hope for her presidency.&lt;/p&gt;
&lt;h3 id=&quot;kamala-harris&#39;s-2024-platform&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#kamala-harris&#39;s-2024-platform&quot;&gt;Kamala Harris&#39;s 2024 platform&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://kamalaharris.com/issues/&quot;&gt;Kamala Harris&#39;s policy agenda&lt;/a&gt; clearly distinguishes her from Donald Trump. She is doing a much better job of prioritizing key issues that are important to many Americans.&lt;/p&gt;
&lt;p&gt;Here are the top-line issues outlined on Kamala Harris&#39;s website (copied verbatim from her website):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cut Taxes for Middle Class Families&lt;/li&gt;
&lt;li&gt;Make Rent More Affordable and Home Ownership More Attainable&lt;/li&gt;
&lt;li&gt;Grow Small Businesses and Invest in Entrepreneurs&lt;/li&gt;
&lt;li&gt;Take on Bad Actors and Bring Down Costs&lt;/li&gt;
&lt;li&gt;Strengthen and Bring Down the Cost of Health Care&lt;/li&gt;
&lt;li&gt;Protect and Strengthen Social Security and Medicare&lt;/li&gt;
&lt;li&gt;Support American Innovation and Workers&lt;/li&gt;
&lt;li&gt;Provide a Pathway to the Middle Class Through Quality, Affordable Education&lt;/li&gt;
&lt;li&gt;Invest in Affordable Child Care and Long Term Care&lt;/li&gt;
&lt;li&gt;Lower Energy Costs and Tackle the Climate Crisis&lt;/li&gt;
&lt;li&gt;Restore and Protect Reproductive Freedoms&lt;/li&gt;
&lt;li&gt;Protect Civil Rights and Freedoms&lt;/li&gt;
&lt;li&gt;Make Our Communities Safer From Gun Violence and Crime&lt;/li&gt;
&lt;li&gt;Secure Our Borders and Fix Our Broken Immigration System&lt;/li&gt;
&lt;li&gt;Tackle the Opioid and Fentanyl Crisis&lt;/li&gt;
&lt;li&gt;Ensure No One Is Above the Law&lt;/li&gt;
&lt;li&gt;Stand With Our Allies, Stand Up to Dictators, and Lead on the World Stage&lt;/li&gt;
&lt;li&gt;Invest in America’s Sources of Strength&lt;/li&gt;
&lt;li&gt;Support Service Members, Veterans, Their Families, Caregivers, and Survivors&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Comparing Kamala Harris&#39;s platform against Donald Trump&#39;s highlights these candidates&#39; night and day difference. While Donald Trump is more interested in fear-mongering against other humans, Kamala Harris is prioritizing policies that help the lives of Americans and push our nation to greater heights.&lt;/p&gt;
&lt;p&gt;Despite having some disagreements on the details of how each of these areas should be addressed, there isn&#39;t a single thing that Kamala Harris has listed as a top-line proposal that I disagree with. Yes, the devil is in the details, but fighting over the details is where I would prefer to be, than fighting over the entire objective.&lt;/p&gt;
&lt;h3 id=&quot;kamala-harris-has-a-history-of-fighting-for-americans&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#kamala-harris-has-a-history-of-fighting-for-americans&quot;&gt;Kamala Harris has a history of fighting for Americans&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As Attorney General of California, Kamala Harris took on big banks after the fallout from the Great Recession and subprime mortgage crisis. Kamala Harris played a crucial role in reaching a &lt;a href=&quot;https://www.justice.gov/opa/pr/federal-government-and-state-attorneys-general-reach-25-billion-agreement-five-largest&quot;&gt;$25 billion agreement as part of the 2012 National Mortgage Settlement&lt;/a&gt; in which the five largest mortgage services (Ally/GMAC, Bank of America, Citi, JPMorgan Chase, and Wells Fargo) were ordered to provide homeowner relief after being found of abusing mortgage loan servicing and foreclosures. Furthermore, &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-secures-18-billion-california-commitment&quot;&gt;Kamala secured $18 billion specifically for California homeowners&lt;/a&gt; who were hit by the crisis, and pushed for the &lt;a href=&quot;https://oag.ca.gov/hbor&quot;&gt;California Homeowner Bill of Rights in 2012&lt;/a&gt;, which is considered one of the nation&#39;s strongest foreclosure protection laws.&lt;/p&gt;
&lt;p&gt;In 2016, &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-obtains-11-billion-judgment-against-predatory&quot;&gt;Kamala Harris obtained a $1.1 billion judgment against predatory for-profit schools&lt;/a&gt; to help provide relief for individuals who were taken advantage of by these businesses. This same year, &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-joins-us-and-12-other-state-attorneys-general&quot;&gt;Kamala Harris joined 12 other State Attorneys General in filing an antitrust lawsuit to block the merger of insurance companies Anthem and Cigna&lt;/a&gt; and also saw &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-14-million-settlement-bp-underground&quot;&gt;Kamala Harris taking on BP&lt;/a&gt; for endangering the environment, water supply, and health of Californians, resulting in a $14 million settlement.&lt;/p&gt;
&lt;p&gt;Furthermore, Kamala Harris has &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-51-arrests-multi-state-drug&quot;&gt;prosecuted drug traffickers&lt;/a&gt;, &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-arrests-and-seizure-meth-valued-2&quot;&gt;seized illegal drugs&lt;/a&gt;, &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-major-500lb-meth-bust-linked-mexican&quot;&gt;seized more illegal drugs&lt;/a&gt;, and &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-dismantling-international&quot;&gt;seized even more illegal drugs&lt;/a&gt;. But drugs aren&#39;t the only thing that Harris seized, as &lt;a href=&quot;https://oag.ca.gov/news/press-releases/attorney-general-kamala-d-harris-announces-seizure-1200-guns-mentally-unstable&quot;&gt;she helped orchestrate a statewide seizure of 1,209 illegal firearms&lt;/a&gt; in 2011.&lt;/p&gt;
&lt;h3 id=&quot;kamala-harris-chose-tim-walz-as-her-vice-presidential-candidate&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#kamala-harris-chose-tim-walz-as-her-vice-presidential-candidate&quot;&gt;Kamala Harris chose Tim Walz as her vice presidential candidate&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Kamala Harris&#39;s aptitude and &lt;em&gt;potential&lt;/em&gt; political direction are clearly illustrated by her choice of Tim Walz as a vice presidential running mate. Nothing was stopping her from choosing a neoliberal Democratic normie, which would have been the easy &amp;quot;establishment&amp;quot; choice. Instead, she chose Tim Walz, who has a proven track record of fighting for the American people.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mn.gov/governor/accomplishments/accomplishments.jsp&quot;&gt;What makes Tim Walz so great?&lt;/a&gt; Here are some highlights from his time as governor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Signing a $2.4 billion education budget to improve the Minnesota education system, provide students with free breakfast and lunch at schools, and expand access to mental health services&lt;/li&gt;
&lt;li&gt;Helping protect reproductive services and freedom, establishing protections for transgender individuals, and establishing gender-affirming care as a fundamental right&lt;/li&gt;
&lt;li&gt;Providing $300 million to improve public safety and taking steps to address gun violence&lt;/li&gt;
&lt;li&gt;Expanded workers&#39; rights by requiring paid leave and paid sick days, banning non-compete agreements, and increased protections for workers in specific industries&lt;/li&gt;
&lt;li&gt;Signed the largest infrastructure bill in Minnesota&#39;s history&lt;/li&gt;
&lt;li&gt;Provided tax cuts for middle-class families and workers and rebate checks to seniors&lt;/li&gt;
&lt;li&gt;Provided free college to students with family income under $80,000&lt;/li&gt;
&lt;li&gt;Expanded voting rights and restored voting rights to over 55,000 formerly incarcerated people in Minnesota&lt;/li&gt;
&lt;li&gt;Lowered prescription drug costs&lt;/li&gt;
&lt;li&gt;Established a child tax credit to cut child poverty&lt;/li&gt;
&lt;li&gt;Signed a $1 billion investment for affordable housing&lt;/li&gt;
&lt;li&gt;Legalized cannabis use&lt;/li&gt;
&lt;li&gt;Protected Minnesotans by preventing medical providers from withholding medical care due to medical debt and eliminating transfers of medical debt to spouses&lt;/li&gt;
&lt;li&gt;Signed legislation to prevent abuse of elderly people by assisted-living centers and allocated $173 million to help fund nursing homes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tim Walz is a badass. It&#39;s as simple as that. He has fought for the American people and is a faithful civil servant.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;i-believe-the-american-people-and-our-country-will-be-in-a-better-place-after-a-kamala-harris-presidency&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/why-i-am-voting-for-kamala-harris-2024-election/#i-believe-the-american-people-and-our-country-will-be-in-a-better-place-after-a-kamala-harris-presidency&quot;&gt;I believe the American people and our country will be in a better place after a Kamala Harris presidency&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ultimately, I see voting in a presidential election as a pragmatic tool for enacting favorable political change. To this end, I believe that the American people and our country will be in a better place after four years of a Kamala Harris presidency. Conversely, I believe that the lives of the American people and our country will suffer significantly if Donald Trump is elected as president, hence my voting decision.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Reflecting on my career trajectory throughout 2019–2021</title>
		<link href="https://keenanpayne.com/career-growth-throughout-2019-2021/"/>
		<updated>Wed, 16 Oct 2024 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/career-growth-throughout-2019-2021/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1120,h_650,c_fill/v1729107552/blog-posts/oliver-roos-PCNdauVPbjA-unsplash_krgdbc.jpg&quot; alt=&quot;Landscape photography of splitted road surrounded with trees&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://unsplash.com/photos/landscape-photography-of-splitted-road-surrounded-with-trees-PCNdauVPbjA?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&quot; title=&quot;Photo by Oliver Roos on Unsplash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Photo by Oliver Roos on Unsplash&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I found myself inspired by &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:7252330857485537280/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;a recent LinkedIn post&lt;/a&gt; by Jessica Strelioff—a colleague and former co-worker at Asana who runs the wonderful design studio &lt;a href=&quot;https://www.goodside.studio/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Goodside&lt;/a&gt;—as she reflected on her desire to keep her business small, despite the potential for growth.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;We built Goodside to do good work for good people but we also built it to fit into the lives we want to live. Staying small is hard but it&#39;s worth it and it&#39;s what works for us.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Jessica Strelioff&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This post from Jessica inspired me to reflect on how I tried expanding my business beyond myself throughout 2019–2021. I hired contractors to do the engineering work and positioned myself as a people and project manager rather than an engineer. Doing so allowed me to say &amp;quot;yes&amp;quot; to more projects because I had more hands on deck to help with engineering, thus allowing me to make more money due to how many projects we could take on.&lt;/p&gt;
&lt;p&gt;While my management work didn&#39;t exceed the amount of engineering work I had been responsible for prior—making it &amp;quot;net positive&amp;quot; in the time management sense—it wasn&#39;t the type of work I wanted to do. I had become a manager, not an engineer, and management as a job was not fun for me.&lt;/p&gt;
&lt;p&gt;Ultimately, I could have hired a project manager and continued to put layers of abstraction between myself and the work. I was wary of taking this step toward further growth despite the potential for greater monetary gain, which would have made me responsible for more people and further accelerated my &amp;quot;work treadmill.&amp;quot;&lt;/p&gt;
&lt;p&gt;My life has been much more relaxing since reeling in my ambitions to being a solo freelancer. I only take on as much work as I can handle; my management responsibilities are much lower, and I have greater freedom. Sure, I&#39;m not making as much money as I could, but that&#39;s not the point. &lt;strong&gt;The point is that I&#39;m enjoying the work I do daily.&lt;/strong&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Elon Musk paid $44b for an unremarkable technology company called Twitter</title>
		<link href="https://keenanpayne.com/elon-twitter/"/>
		<updated>Sun, 30 Oct 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/elon-twitter/</id>
		<content type="html">&lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667187409/blog-posts/elon-twitter/cover_u1wjw1.png 1360w&quot; alt=&quot;Picture of Elon Musk holding a sink inlaid on the Twitter logo&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;You&#39;d think spending $44b would mean you&#39;re purchasing a compelling tangible good, right?&lt;/p&gt;
&lt;p&gt;Alas, I find Twitter so technologically unremarkable I&#39;m writing a whole essay about it, so here we go.&lt;/p&gt;
&lt;p&gt;Caveats before proceeding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;👩‍💻 Not every employee is an engineer responsible for the product Twitter provides&lt;/li&gt;
&lt;li&gt;🤝 I&#39;m critiquing the company and platform, not the employees&lt;/li&gt;
&lt;li&gt;🥁 I&#39;m not saying Twitter is worthless, though it&#39;s undoubtedly &lt;em&gt;worth less&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My thesis is that despite employing ~7.5k people and having tens of billions of dollars in market capitalization, Twitter has failed to provide an innovative platform that serves the needs of its users.&lt;/p&gt;
&lt;p&gt;I will dig into why I believe that to be the case.&lt;/p&gt;
&lt;h2 id=&quot;an-incredibly-brief-history-of-communication-on-the-internet&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#an-incredibly-brief-history-of-communication-on-the-internet&quot;&gt;An incredibly brief history of communication on the internet&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;At the heart of Twitter is an online forum where people can share, discuss, and find content.&lt;/p&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Did you know online forums have existed since the 1970s?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Communicating and sharing between people has been a central focus of the internet since its inception.&lt;/p&gt;
&lt;p&gt;Over the past fifty years, we&#39;ve had various iterations and innovations in the digital communication space. Bulletin boards, forums, chat, mailing lists, email, social media platforms, and multimedia content sharing have all eliminated friction in communication between humans.&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/wwiv_jf2ddh 1360w&quot; alt=&quot;Screenshot of WWIV&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        WWIV, an early bulletin board system from the late 1980s
      &lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.gizmodo.com.au/2014/10/hey-internet-old-timers-what-was-life-like-during-the-webs-early-days/&quot; title=&quot;Gizmodo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
              Gizmodo
            &lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/mirc_ahtcrb 1360w&quot; alt=&quot;Screenshot of mIRC&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        mIRC, a popular Internet Relay Chat (IRC) client from the 1990s
      &lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.reddit.com/r/90s/comments/by1of3/mirc/&quot; title=&quot;GeezeZone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
              GeezeZone
            &lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178010/blog-posts/elon-twitter/vbulletin_kc2m3d 1360w&quot; alt=&quot;Screenshot vBulletin&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        vBulletin, a popular choice for online forums in the 2000s to today
      &lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://geezezone.com/threads/vbulletin-2002-%E2%80%93-now-who-said-web-forums-are-dead.1438/&quot; title=&quot;Reddit&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
              Reddit
            &lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Humans have an intrinsic desire to share and connect, so it makes sense that revolutionary technologies like computers and the internet inspired new means of communicating and sharing.&lt;/p&gt;
&lt;p&gt;The internet is all about sharing and connecting.&lt;/p&gt;
&lt;p&gt;And buying things. Can&#39;t forget that.&lt;/p&gt;
&lt;h2 id=&quot;twitter-enters-the-ring&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#twitter-enters-the-ring&quot;&gt;Twitter enters the ring&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Building upon decades of prior innovation, we received Twitter in 2006 🐦&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📰 Twitter made sharing and consuming content frictionless&lt;/li&gt;
&lt;li&gt;💬 Twitter made connecting with strangers fun&lt;/li&gt;
&lt;li&gt;🆕 Twitter&#39;s feed kept us plugged into the app&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of all, Twitter rode a wave of momentum from the smartphone revolution, which was happening at the same time.&lt;/p&gt;
&lt;p&gt;Having a device in our pockets that provided access to the internet meant we could stay plugged into the almighty Twitter feed 📱&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Without the smartphone revolution, Twitter would have been just another social sharing trend confined to personal computers and likely wouldn&#39;t have reached such heights.
&lt;/p&gt;
&lt;p&gt;But timing is everything, so Twitter became the Goliath it currently is. However, despite becoming a social media Goliath, Twitter has remained remarkably unremarkable.&lt;/p&gt;
&lt;p&gt;Twitter has failed to innovate beyond existing standards set by early internet communication software and beyond standards set by itself during its rise in popularity.&lt;/p&gt;
&lt;p&gt;How has Twitter changed the way we communicate online?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;#️⃣ Grouping content with hashtags?&lt;/li&gt;
&lt;li&gt;🔢 Limiting content sharing by character count?&lt;/li&gt;
&lt;li&gt;🆕 Surfacing &amp;quot;what&#39;s happening&amp;quot; by aggregating popular topics?&lt;/li&gt;
&lt;li&gt;🆒 Encouraging politicians to become social media stars?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Much of what Twitter offered in 2006 were old solutions in a shiny new format ✨&lt;/p&gt;
&lt;p&gt;Granted, the shiny new format was, and still is, fun and compelling. Hell, there&#39;s a reason I originally wrote this on Twitter!&lt;/p&gt;
&lt;p&gt;But in the 16 years since its inception, how has Twitter innovated?&lt;/p&gt;
&lt;h2 id=&quot;twitter&#39;s-relationship-with-innovation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#twitter&#39;s-relationship-with-innovation&quot;&gt;Twitter&#39;s relationship with innovation&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;hashtags&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#hashtags&quot;&gt;Hashtags&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While Twitter provided the platform that allowed hashtags to flourish as a way of adding metadata to posts, it didn&#39;t invent the phenomenon.&lt;/p&gt;
&lt;p&gt;The contemporary use of hashtags is attributed to &lt;a href=&quot;https://twitter.com/chrismessina&quot;&gt;@chrismessina&lt;/a&gt;, but their use dates back to 1970s programming and 1980s IRC networks (&lt;a href=&quot;https://en.wikipedia.org/wiki/Hashtag&quot;&gt;source&lt;/a&gt;).&lt;/p&gt;
&lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667178514/blog-posts/elon-twitter/did-you-know_zrr0up.gif 1360w&quot; alt=&quot;The More You Know flying star rainbow gif&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Did you know that Elon Musk paid too much for Twitter?
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Despite the mass proliferation of hashtags to categorize content, Twitter failed to innovate beyond the initial phenomenon.&lt;/p&gt;
&lt;p&gt;Hashtags still take up character counts and are tedious to add.&lt;/p&gt;
&lt;p&gt;There&#39;s so much room for improvement—use your imagination.&lt;/p&gt;
&lt;h3 id=&quot;writing-experience&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#writing-experience&quot;&gt;Writing experience&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;What about the Twitter writing experience?&lt;/p&gt;
&lt;p&gt;Here I am, writing an essay for the platform, forced to use a (great) tool like &lt;a href=&quot;http://typefully.com/&quot;&gt;@typefully&lt;/a&gt; to draft and schedule it.&lt;/p&gt;
&lt;p&gt;Why doesn&#39;t Twitter provide an editor with this functionality? Doesn&#39;t it see the use case for its users?&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;At least &lt;a href=&quot;https://twitter.com/typefully?ref_src=twsrc%5Etfw&quot;&gt;@typefully&lt;/a&gt; exists 🙏🏻 But think about it—how much would it theoretically cost to build an app like Typefully in-house at Twitter?&lt;br /&gt;&lt;br /&gt;Does it cost $10m? $100m? $500m? $1b? Idfk. &lt;br /&gt;&lt;br /&gt;BUT I SURE AS HELL KNOW IT COSTS LESS THAN $30B 🤯 &lt;a href=&quot;https://t.co/56ZZpBIYaF&quot;&gt;pic.twitter.com/56ZZpBIYaF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Keenan Payne (@KeenanPayne_) &lt;a href=&quot;https://twitter.com/KeenanPayne_/status/1530364078564118528?ref_src=twsrc%5Etfw&quot;&gt;May 28, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;h3 id=&quot;character-limits&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#character-limits&quot;&gt;Character limits&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Imposing a character limit is interesting, and working within such limitations can be a forcing function for focused writing.&lt;/p&gt;
&lt;p&gt;Still, it&#39;s not ideal for long-form writing, and I&#39;m sure Twitter&#39;s inflexibility on this front disincentivizes folks who don&#39;t want such limitations.&lt;/p&gt;
&lt;p&gt;Consuming long-form content isn&#39;t any better unless you use the &amp;quot;Reader&amp;quot; feature, available with Twitter Blue for &lt;strong&gt;$4.99/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Because a halfway-decent reading experience is a &amp;quot;premium&amp;quot; feature.&lt;/p&gt;
&lt;p&gt;As if they couldn&#39;t offer this for free and shove ads on it as they do elsewhere 🙄&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Relax while Reader turns those long Threads into a more beautiful reading experience &lt;a href=&quot;https://t.co/v5thmTfGcz&quot;&gt;pic.twitter.com/v5thmTfGcz&lt;/a&gt;&lt;/p&gt;&amp;mdash; Twitter Blue (@TwitterBlue) &lt;a href=&quot;https://twitter.com/TwitterBlue/status/1458110905472860162?ref_src=twsrc%5Etfw&quot;&gt;November 9, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;h3 id=&quot;tweet-editing&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#tweet-editing&quot;&gt;Tweet editing&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Let&#39;s dive into one recent &amp;quot;innovation&amp;quot;—the ability to edit a tweet.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wow, what an idea.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Twitter rolled this out on September 1st, &lt;em&gt;sixteen years&lt;/em&gt; after the product was released. Despite users asking for editing for years, Twitter still managed to bungle the execution 🤦🏻‍♂️&lt;/p&gt;
&lt;p&gt;Tweet editing is limited to users with a Twitter blue subscription (&lt;strong&gt;$4.99/mo&lt;/strong&gt;) because, of course.&lt;/p&gt;
&lt;p&gt;More annoying is that after paying for basic functionality, you still can&#39;t edit a tweet older than 30 minutes. WHY!?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&#39;s editing, for Christ&#39;s sake. Not a fucking up-sell.&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  With thousands of employees and billions of dollars, Twitter bungled a feature that users have requested since the product&#39;s inception.
&lt;/p&gt;
&lt;p&gt;Why limit editing to a 30min window? Why not display an easily-accessible list of all edits to a tweet to maintain integrity?&lt;/p&gt;
&lt;p&gt;IDK 🙄&lt;/p&gt;
&lt;h3 id=&quot;recent-product-developments&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#recent-product-developments&quot;&gt;Recent product developments&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Twitter&#39;s own &lt;a href=&quot;https://blog.twitter.com/en_us/topics/product&quot;&gt;Product page&lt;/a&gt; shows an embarrassing lack of ambition...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🧑‍🤝‍🧑 Accessibility features that should&#39;ve been added ages ago&lt;/li&gt;
&lt;li&gt;🖼️ Mixed media tweets&lt;/li&gt;
&lt;li&gt;🤦 Paywalled tweet editing&lt;/li&gt;
&lt;li&gt;🔵 Tweeting to specific groups&lt;/li&gt;
&lt;li&gt;📹 Unoriginal video viewing UX&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;twitter&#39;s-acquisitions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#twitter&#39;s-acquisitions&quot;&gt;Twitter&#39;s acquisitions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The incompetence on display at Twitter isn&#39;t limited to its lack of technical innovation. It&#39;s evident in the company&#39;s inability to capitalize on numerous acquisitions.&lt;/p&gt;
&lt;p&gt;Follow along as we revisit just a couple of &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Twitter&quot;&gt;Twitter acquisition&lt;/a&gt; missteps...&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179215/blog-posts/elon-twitter/vine_whlwzj&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179215/blog-posts/elon-twitter/vine_whlwzj&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667179215/blog-posts/elon-twitter/vine_whlwzj 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667179215/blog-posts/elon-twitter/vine_whlwzj 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667179215/blog-posts/elon-twitter/vine_whlwzj 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179215/blog-posts/elon-twitter/vine_whlwzj 1360w&quot; alt=&quot;Vine logo&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667180497/blog-posts/elon-twitter/periscope_cpzvqo 1360w&quot; alt=&quot;Periscope logo&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Remember Vine, the precursor to apps like TikTok and the rise of now-ubiquitous video shorts/reels?&lt;/p&gt;
&lt;p&gt;Twitter purchased Vine in 2012 for &lt;strong&gt;$30m&lt;/strong&gt; and shuttered the app in 2015 when it had over &lt;strong&gt;200m&lt;/strong&gt; active users.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What could Vine have become if Twitter had never purchased it?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;What about Periscope, which Twitter purchased for &lt;strong&gt;$50–100m&lt;/strong&gt; in 2015?&lt;/p&gt;
&lt;p&gt;Despite Twitter&#39;s foresight into live-streaming video, the company was unable to integrate the ambitions of Vine or Persicope into its app in a way that transcends either company&#39;s initial ambitions.&lt;/p&gt;
&lt;figure class=&quot;-float-left&quot;&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/v1667179335/blog-posts/elon-twitter/elon-twitter-bio_dpsff0 1360w&quot; alt=&quot;Screenshot of Elon Musk&#39;s Twitter account with a picture of him holding a sink and his description as &#39;Chief Twit&#39;.&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Imagine spending $44b to purchase a company, then immediately calling yourself a twit.
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;final-thoughts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elon-twitter/#final-thoughts&quot;&gt;Final thoughts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;In short, Twitter is defined more by its limitations than by its innovations.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The company&#39;s dwindling user base and lackluster engagement prove this to be true.&lt;/p&gt;
&lt;p&gt;While you can cut costs to improve margins, Twitter can only save itself by fundamentally reimagining its vision.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Elon Musk paid $44b for an unoriginal social media app with a floundering user base, unimpressive revenue, and little differentiation from other platforms.
&lt;/p&gt;
&lt;p&gt;Chief Twit, indeed. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/elon-twitter/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;If you want a deep dive into why Elon Musk purchasing Twitter will be troublesome from a content moderation and political policy perspective, I highly recommend &lt;a href=&quot;https://twitter.com/reckless&quot;&gt;@reckless&lt;/a&gt;&#39;s article on The Verge, &lt;a href=&quot;https://www.theverge.com/2022/10/28/23428132/elon-musk-twitter-acquisition-problems-speech-moderation&quot;&gt;Welcome to hell, Elon&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;A &amp;quot;twit&amp;quot; is defined as &amp;quot;a silly or foolish person&amp;quot; by most dictionaries. I&#39;m unsure whether Elon is aware of this fact. &lt;a href=&quot;https://keenanpayne.com/elon-twitter/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Lacking political purpose</title>
		<link href="https://keenanpayne.com/lacking-political-purpose/"/>
		<updated>Mon, 19 Sep 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/lacking-political-purpose/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1200/v1663605403/Blog%20Posts/political-purpose/1999.278_-_County_Election_lyrmci&quot; alt=&quot;County Election in 1800&#39;s on watercolor&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;County Election in 1800&#39;s on watercolor&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.artic.edu/artworks/151565/county-election&quot; title=&quot;Art Institute Chicago&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Art Institute Chicago&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I was struck by a quote on the importance of political purpose while reading George Orwell&#39;s &lt;a href=&quot;https://www.indiebound.org/book/9780143036357&quot;&gt;Why I Write&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Looking back through my work, I see that it is invariably where I lacked a political purpose that I wrote lifeless books and was betrayed into purple passages, sentences without meaning, decorative adjectives, and humbug generally.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;George Orwell&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Orwell&#39;s comment spurred me to reflect on how a political purpose might give my actions more significant meaning.&lt;/p&gt;
&lt;p&gt;I generally consider myself politically aware and engaged. I keep up on current events; I put substantial time into educating myself before voting; I strive to maintain an open mind when confronting new ideas; I eagerly and tactfully debate folks with different beliefs in the pursuit of fostering open dialogue; I&#39;ve canvassed for political candidates, etc.&lt;/p&gt;
&lt;p&gt;These traits are well and good, though I’m confronting an increased feeling of emptiness as I reflect on the impact of my efforts given our current political, social, and economic landscape.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I feel like I&#39;m not doing enough to advocate for the change I want to see in the world.
&lt;/p&gt;
&lt;p&gt;During these moments of internal strife, I effortlessly belittle myself and my life situation.&lt;/p&gt;
&lt;p&gt;Of course I&#39;m not doing enough to help push for a better world. I spend my time writing code, so companies can generate obscene amounts of wealth that invariably gets funneled into the hands of the &lt;em&gt;few&lt;/em&gt; rather than the &lt;em&gt;many&lt;/em&gt;. What do I get in return? A chunk of the wealth, putting me in company with the &lt;em&gt;few&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tearing myself down does no good, especially while reflecting on how I can put myself in service of advocating for a better world.&lt;/p&gt;
&lt;p&gt;I&#39;m using the skills I&#39;ve gained during the past 15 years to secure a financial future for myself and my family. But with that financial security comes the ability to use my time and resources to help others.&lt;/p&gt;
&lt;h2 id=&quot;finding-political-purpose&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/lacking-political-purpose/#finding-political-purpose&quot;&gt;Finding political purpose&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;What inspired George Orwell to make the change in his life and writing, away from &amp;quot;sentences without meaning,&amp;quot; toward his political purpose?&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;The Spanish war and other events in 1936–7 turned the scale and thereafter I knew where I stood. Every line of serious work that I have written since 1936 has been written, directly or indirectly, against Totalitarianism and for democratic Socialism, as I understand it.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;George Orwell&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I feel the urge to make a similar change in my life. I want to put my skills, passion, and effort toward advancing a social, political, and economic agenda that will help make the world a better place for everyone.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I want to align my actions more closely with my values.
&lt;/p&gt;
&lt;p&gt;I&#39;m not entirely sure how this will manifest. Without a planning for change, I run the risk of maintaining the status quo and keeping to business as usual. But &lt;mark&gt;planning without action&lt;/mark&gt; can simply be &lt;a href=&quot;https://keenanpayne.com/creating-planning/&quot;&gt;a form of procrastination&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By sharing these thoughts publically, I hope I can create some accountability with myself and maintain momentum toward making a change.&lt;/p&gt;
&lt;h3 id=&quot;brainstorming-opportunities-to-engage-with-my-political-purpose&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/lacking-political-purpose/#brainstorming-opportunities-to-engage-with-my-political-purpose&quot;&gt;Brainstorming opportunities to engage with my political purpose&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Here are a few ideas I&#39;ve had that involve using my skills as a web developer in ways that align with my political beliefs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve the online presence of political candidates with a similar political ideology/agenda.&lt;/li&gt;
&lt;li&gt;Collaborate with leftist publishers like &lt;a href=&quot;https://jacobin.com/&quot;&gt;Jacobin&lt;/a&gt; to introduce more folks to Social Democratic, Socialist, and Marxist ideologies through compelling and thoughtful journalism.&lt;/li&gt;
&lt;li&gt;Go rogue and create some platform/community/software for advancing my political purpose.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stepping outside of my vocation as a web developer, I&#39;ve considered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running for some civic/legislative/governmental position in my community.&lt;/li&gt;
&lt;li&gt;Helping advance political campaigns through volunteer efforts.&lt;/li&gt;
&lt;li&gt;Finding more ways to foster engagement between people with seemingly disparate beliefs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Who knows? There are countless ways I can more closely align my actions with my values and put myself in service of a political purpose.&lt;/p&gt;
&lt;p&gt;Making this change isn&#39;t something I want to rush, but it is something I want to continue thinking about and act on sooner rather than later.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;p&gt;Do you have a political purpose you&#39;d like to recruit me for? Leave a comment below, &lt;a href=&quot;https://keenanpayne.com/contact&quot;&gt;reach out via email&lt;/a&gt;, or &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;send me a Tweet&lt;/a&gt;. I&#39;m open to new ideas and opportunities!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Notes, July 2022</title>
		<link href="https://keenanpayne.com/july-2022-learning/"/>
		<updated>Mon, 22 Aug 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/july-2022-learning/</id>
		<content type="html">&lt;p&gt;Things have been busy in my world. Summer traveling and client work have been my primary focus for the past few weeks, hence these belatedly-published learning notes. Better late than never!&lt;/p&gt;
&lt;h2 id=&quot;magazine%3A-anxy%3A-the-workaholism-issue&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#magazine%3A-anxy%3A-the-workaholism-issue&quot;&gt;Magazine: &lt;a href=&quot;https://anxymag.com/pages/issue-2-workaholism&quot;&gt;Anxy: The Workaholism Issue&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve never described myself as a workaholic. Instead, I&#39;ve attributed my &lt;em&gt;inclination&lt;/em&gt; to work to characteristics I see in myself, such as grit, determination, and industriousness. All positive things, I&#39;ve believed.&lt;/p&gt;
&lt;p&gt;This belief was deftly challenged while reading the workaholism issue of Anxy. The thoughtful and personal essays have provided a nuanced explanation of workaholism—from its causes to who is typically impacted by it.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;People who have high work engagement—a positive, fulfilling, work-related state of mind are probably not workaholics. Engaged workers are driven to work because they find it intrinsically pleasurable. They truly enjoy it—while workaholics are driven to work because they feel an inner compulsion.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This new perspective has pushed me to consider whether my &amp;quot;&lt;em&gt;inclination&lt;/em&gt;&amp;quot; to work is more of a &amp;quot;&lt;em&gt;compulsion&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;Maybe incessantly contemplating the various goals, projects, and tasks I&#39;m working on (or want to work on) at any given time isn&#39;t simply a sign of my work ethic. Perhaps this behavior underlies some of the anxiety and stress that have led me to burnout multiple times in my career.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-burnout&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#article%3A-burnout&quot;&gt;Article: &lt;a href=&quot;https://alistapart.com/article/burnout/&quot;&gt;Burnout&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I appreciate and admire the vulnerability of folks who have shared their experiences with burnout.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Stress may come from too many meetings, projects, responsibilities, unrealistic deadlines, improperly set expectations, distractions, or any number of other things prevalent in our hyper-connected world.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Scott Boms&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Articles like Scott&#39;s have been helpful as I continue reflecting on my own struggles with burnout over the past few years.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-bird-by-bird%3A-some-instructions-on-writing-and-life&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#book%3A-bird-by-bird%3A-some-instructions-on-writing-and-life&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9780593163108&quot;&gt;Bird by Bird: Some Instructions on Writing and Life&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Few books inspire me so much that I complete them the same month I start them. I typically trudge through books over months, if not years.&lt;/p&gt;
&lt;p&gt;The same can&#39;t be said for Bird by Bird, a wonderfully inspiring book by Anne Lamott. Anne shares anecdotes from her life as she imparts practical and inspiring advice for writers.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Good writing is about telling the truth.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Anne Lamott&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-on-learning&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#article%3A-on-learning&quot;&gt;Article: &lt;a href=&quot;https://www.compendiousthunks.com/musings/on-learning/&quot;&gt;On Learning&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In this post, Chris emphasizes the importance of learning in public through his blogging practice. Whenever he is learning something new, he writes about it on his blog for others.&lt;/p&gt;
&lt;p&gt;I aspire to do this on my blog and through this column. I haven&#39;t nailed my commitment to publishing as Chris has, but I&#39;m working towards it.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Effective Learning doesn&#39;t have to be obsessive. It should be committed.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-several-short-sentences-about-writing&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#book%3A-several-short-sentences-about-writing&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9780307279415&quot;&gt;Several Short Sentences About Writing&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve been working through this book since &lt;a href=&quot;https://keenanpayne.com/march-2022-learning/&quot;&gt;March&lt;/a&gt;, and I&#39;m continuing to find inspiration for my writing practice.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Being a writer is an act of perpetual self-authorization.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Verlyn Klinkenborg&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Practice noticing things around you. Don&#39;t concern yourself with writing everything all the time. Because the source of great writing comes from great attention.
&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-anything-you-want&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/july-2022-learning/#book%3A-anything-you-want&quot;&gt;Book: &lt;a href=&quot;https://sive.rs/a&quot;&gt;Anything You Want&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;m continuing to work through Derek Sivers&#39;s books, which I started in &lt;a href=&quot;https://keenanpayne.com/june-2022-learning/&quot;&gt;June&lt;/a&gt; So many great nuggets of wisdom and food for thought.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Don&#39;t be on your deathbed someday, having squandered your one chance at life, full of regret because you pursued little distractions instead of big dreams.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Derek Sivers&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Notes, June 2022</title>
		<link href="https://keenanpayne.com/june-2022-learning/"/>
		<updated>Fri, 15 Jul 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/june-2022-learning/</id>
		<content type="html">&lt;h2 id=&quot;video%3A-hamming%2C-learning-to-learn%3A-you-and-your-research%2C-6-june-1995&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#video%3A-hamming%2C-learning-to-learn%3A-you-and-your-research%2C-6-june-1995&quot;&gt;Video: &lt;a href=&quot;https://www.youtube.com/watch?v=e3msMuwqp-o&quot;&gt;Hamming, Learning to Learn: You and Your Research, 6 June 1995&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By far, the most impactful thing I watched this month was this video from Richard Hamming, an American mathematician whose work helped advance the fields of computer engineering and telecommunications.&lt;/p&gt;
&lt;figure class=&quot;-float-right&quot;&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/richard-hamming_e2c29e.jpg 1360w&quot; alt=&quot;Richard Hamming in his NPS office&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Richard Hamming in his NPS office
      &lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://amturing.acm.org/photo/hamming_1000652.cfm&quot; title=&quot;A.M. Turing Awards&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
              A.M. Turing Awards
            &lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This video marks the end of a lecture series Hamming gave to the Naval Postgraduate School. In it, Hamming discusses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The importance of spending one&#39;s time doing significant work&lt;/li&gt;
&lt;li&gt;Spending time in meaningful ways&lt;/li&gt;
&lt;li&gt;How to choose important things to work on&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;As far as I know, and as far as you know, you have one life to lead. You might as well lead a life you would like to have. I would suggest leading a life of doing something significant.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Richard Hamming&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You don&#39;t need to be a computer scientist or mathematician to find inspiration in what Hamming offers.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-103-bits-of-advice-i-wish-i-had-known&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#article%3A-103-bits-of-advice-i-wish-i-had-known&quot;&gt;Article: &lt;a href=&quot;https://kk.org/thetechnium/103-bits-of-advice-i-wish-i-had-known/&quot;&gt;103 Bits of Advice I Wish I Had Known&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This article by Kevin Kelly, co-founder of &lt;a href=&quot;https://www.wired.com/&quot;&gt;Wired magazine&lt;/a&gt;, provides &lt;em&gt;countless&lt;/em&gt; bits of life advice that resonate with me.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;The consistency of your endeavors (exercise, companionship, work) is more important than the quantity. Nothing beats small things done every day, which is way more important than what you do occasionally.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Kevin Kelly&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-an-olympic-trainer-shares-his-top-secrets-for-pushing-through-discomfort&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#article%3A-an-olympic-trainer-shares-his-top-secrets-for-pushing-through-discomfort&quot;&gt;Article: &lt;a href=&quot;https://www.menshealth.com/fitness/a40299457/steve-magness-do-hard-things/&quot;&gt;An Olympic Trainer Shares His Top Secrets for Pushing Through Discomfort&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://keenanpayne.com/may-2022-learning/#podcast%3A-the-growth-equation-%E2%80%94-doing-real-things%2C-satisfaction%2C-practices%2C-and-momentum&quot;&gt;Last month&lt;/a&gt;, I shared a podcast I&#39;d listened to called &lt;a href=&quot;https://thegrowtheq.com/&quot;&gt;The Growth Equation&lt;/a&gt;, hosted by Brad Stulberg and Steve Magness. This month, I read a great article from Steve sharing his top advice for managing and pushing through discomfort.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Anything that makes you feel uncomfortable is an opportunity to desensitize the alarm in your brain. It’s not the discomfort that matters, it’s how you respond to it.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Steve Magness&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As I&#39;ve &lt;a href=&quot;https://keenanpayne.com/freelancing-reboot/&quot;&gt;rebooted my freelancing career&lt;/a&gt;, I&#39;m striving to pay closer attention to my levels of comfort and discomfort. I want to be comfortable enough so I&#39;m not overwhelmed and &lt;a href=&quot;https://keenanpayne.com/tags/anxiety/&quot;&gt;anxious&lt;/a&gt; but uncomfortable enough to encourage growth—i.e., focusing on &lt;a href=&quot;https://en.wikipedia.org/wiki/Desirable_difficulty&quot;&gt;desirable difficulties&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#39;m also improving my ability to manage discomfort so I can navigate difficult situations with greater ease and satisfaction.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-make-free-stuff&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#article%3A-make-free-stuff&quot;&gt;Article: &lt;a href=&quot;https://mxb.dev/blog/make-free-stuff/&quot;&gt;Make Free Stuff&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I enjoyed Max Böck&#39;s thoughts on making free stuff. The ethos of publicly sharing on the internet helped fuel my interest in &lt;a href=&quot;https://keenanpayne.com/tags/web-development/&quot;&gt;web development&lt;/a&gt; in the mid-2000s. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/june-2022-learning/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Giving something away for free—that is, &amp;quot;gifting&amp;quot;—promotes a culture of abundance, not &lt;a href=&quot;https://keenanpayne.com/hello-scarcity-mindset/&quot;&gt;scarcity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Giving something away for free is a gift to the world.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I want to do more gifting.
&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-exiting-the-vampire-castle&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#article%3A-exiting-the-vampire-castle&quot;&gt;Article: &lt;a href=&quot;https://www.opendemocracy.net/en/opendemocracyuk/exiting-vampire-castle/&quot;&gt;Exiting the Vampire Castle&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This essay by Mark Fisher is prescient, given our fractured societal landscape. It&#39;s me vs. you; left vs. right; correct vs. incorrect, as we fight for our beliefs and ideals in our polarizing world.&lt;/p&gt;
&lt;p&gt;Lost in the fervent battle for our ideals is our need for building solidarity and comradeship between different groups of people to achieve common goals.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Effecting change on society and politics happens when citizens align around common interests.&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Moralistic browbeating and reactionary &quot;canceling&quot; impede solidarity and reinforce a punitive moral framework.
&lt;/p&gt;
&lt;figure class=&quot;-float-left&quot;&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/june-2022-learning/1957.330_-_Two_Beggars_Fighting_vv2fa7.jpg 1360w&quot; alt=&quot;Two Beggars Fighting by Jacques Bellange&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Two Beggars Fighting by Jacques Bellange
      &lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.artic.edu/artworks/6072/two-beggars-fighting&quot; title=&quot;Art Institute Chicago&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
              Art Institute Chicago
            &lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Let&#39;s focus on working-class solidarity and collective class consciousness.&lt;/p&gt;
&lt;p&gt;Let&#39;s work together where we can.&lt;/p&gt;
&lt;p&gt;We can&#39;t agree on &lt;em&gt;everything&lt;/em&gt;, but that&#39;s life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who wants to build a coalition?&lt;/strong&gt;&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;article%3A-eyeo-wins-landmark-copyright-court-decision%3B-protects-digital-rights-and-sets-important-legal-precedent-for-who-%E2%80%98owns%E2%80%99-html&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#article%3A-eyeo-wins-landmark-copyright-court-decision%3B-protects-digital-rights-and-sets-important-legal-precedent-for-who-%E2%80%98owns%E2%80%99-html&quot;&gt;Article: &lt;a href=&quot;https://eyeo.com/press-release/eyeo-wins-landmark-copyright-court-decision-protects-digital-rights-and-sets&quot;&gt;eyeo wins landmark copyright court decision; protects digital rights and sets important legal precedent for who ‘owns’ HTML&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This court ruling between eyeo and Axel Springer is interesting. eyeo is a developer in ad-filtering technology. Axel Springer is a multimedia conglomerate that owns Business Insider, Morning Brew newsletter, et al.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This court case revolved around who &amp;quot;owns&amp;quot; the underlying code for things distributed across the internet (e.g., websites, email).&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;When you receive your Morning Brew newsletter, who owns the underlying code for that email once it&#39;s in your inbox—you or Axel Springer?&lt;/span&gt;
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;When you view an article on Business Insider, does Axel Springer own the underlying code for that article after it&#39;s on your web browser?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Seemingly tricky questions. Who &amp;quot;owns&amp;quot; what in these scenarios?&lt;/p&gt;
&lt;p&gt;The write-up from eyeo thoroughly sums it up:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;While the website HTML copyright protections sought by the plaintiff appear innocent on the surface, the technical ramifications are onerous and dangerous.&lt;br /&gt;&lt;br /&gt; In practice, most of the modern browser features that the Internet ecosystem enjoys today would have become instantly illegal, and copyright sanctions would have become enforceable: all privacy and anti-tracking technologies; all website language translation features; all accessibility utilities for blind and handicapped readers; all ad blockers; and all CSS modifications of any kind. &lt;br /&gt;&lt;br /&gt;The burden would have fallen upon code developers and ordinary users to seek explicit permission from a website publisher to grant an exception to run their browser features — before visiting each and every website.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -tldr&quot;&gt;
  I own the code in my possession for this website as it exists (i.e., files and folders on my computer). However, once you open a web page I share on the internet publicly and it&#39;s on your computer, I no longer own it.
&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;podcast%3A-fail-better%3A-embracing-failure&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#podcast%3A-fail-better%3A-embracing-failure&quot;&gt;Podcast: &lt;a href=&quot;https://www.redhat.com/en/command-line-heroes/season-2/fail-better&quot;&gt;Fail Better: Embracing Failure&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve listened to &lt;a href=&quot;https://keenanpayne.com/march-2022-learning/#podcast%3A-command-line-heroes&quot;&gt;yet another&lt;/a&gt; fantastic episode of Command Line Heroes about embracing failure.&lt;/p&gt;
&lt;p&gt;Embracing failure isn&#39;t easy, but it&#39;s inevitable. Something will &lt;em&gt;eventually&lt;/em&gt; go wrong. That&#39;s just life.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Failure is inevitable, but you never want to fail the same way twice.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given this inevitability, planning for perfection is unrealistic and unhelpful.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  If we embrace the inevitability of failure, we can prepare ourselves to handle it in a healthy way that helps us learn and grow.
&lt;/p&gt;
&lt;p&gt;Something that&#39;s helped me handle failure is keeping a tight feedback loop between identifying a problem and addressing the problem.&lt;/p&gt;
&lt;p&gt;When noticing an area of improvement, I try to consider whether I should take the time to make the improvement at that moment, rather than put it on the back burner.&lt;/p&gt;
&lt;p&gt;I&#39;ve got too many &amp;quot;improvements&amp;quot; on the back burner as it is 😅&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-anything-you-want&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#book%3A-anything-you-want&quot;&gt;Book: &lt;a href=&quot;https://sive.rs/a&quot;&gt;Anything You Want&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve enjoyed reading &lt;a href=&quot;https://sive.rs/&quot;&gt;Derek Sivers&#39;&lt;/a&gt; blog for a long time. I enjoy his approachability, honesty, and down-to-earth writing style.&lt;/p&gt;
&lt;p&gt;To support his writing, and my own learning, I &lt;a href=&quot;https://twitter.com/KeenanPayne_/status/1530688658851778561&quot;&gt;recently purchased&lt;/a&gt; hardcover copies of his books &lt;em&gt;Anything You Want&lt;/em&gt;, &lt;em&gt;Hell Yeah or No&lt;/em&gt;, and &lt;em&gt;How to Live&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In Anything You Want, Sivers shares his tales of building and selling &lt;a href=&quot;https://en.wikipedia.org/wiki/CD_Baby&quot;&gt;CD Baby&lt;/a&gt;. Being a chronic business creator, I find his tales inspiring.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;When you make [a business] a dream come true for yourself, it&#39;ll be a dream come true for someone else, too.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hooray &lt;a href=&quot;https://keenanpayne.com/tags/capitalism/&quot;&gt;capitalism&lt;/a&gt;!&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-how-to-live&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#book%3A-how-to-live&quot;&gt;Book: &lt;a href=&quot;https://sive.rs/h&quot;&gt;How to Live&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As the title suggests, this book contains Sivers&#39; scattered and often-contradicting thoughts on how to live.&lt;/p&gt;
&lt;p&gt;Reading the first few pages got me thinking about commitment…&lt;/p&gt;
&lt;p&gt;By fully committing to something, we remove ourselves from participating in the never-ending desire for better alternatives.&lt;/p&gt;
&lt;p&gt;You can wonder whether the grass will be greener, or you can fully invest in what you have and where you&#39;re at.&lt;/p&gt;
&lt;p&gt;You&#39;ll probably &amp;quot;save time&amp;quot; by investing in where you&#39;re at, unless that grass is &lt;em&gt;really&lt;/em&gt; green.&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-hell-yeah-or-no&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#book%3A-hell-yeah-or-no&quot;&gt;Book: &lt;a href=&quot;https://sive.rs/n&quot;&gt;Hell Yeah or No&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hell Yeah or No contains Sivers&#39; thoughts on what&#39;s worth doing.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;How do you decide what&#39;s worth doing?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;I have no idea how I decide. It feels like I&#39;m throwing darts at a dartboard most of the time.&lt;/p&gt;
&lt;p&gt;I like Sivers&#39; &amp;quot;Hell Yeah&amp;quot; heuristic. If I don&#39;t respond with &amp;quot;Hell yeah!&amp;quot; when deciding to do something, that indicates it may not be worth doing.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What would I spend my time doing if I didn&#39;t worry about money, fame, renown, attention, and approval?&lt;/span&gt;
&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;book%3A-the-icarus-deception&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/june-2022-learning/#book%3A-the-icarus-deception&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9781591846079&quot;&gt;The Icarus Deception&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;m continuing to work through The Icarus Deception, which I started in &lt;a href=&quot;https://keenanpayne.com/april-2022-learning/&quot;&gt;April&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;The opportunity isn&#39;t in being momentarily popular to the anonymous masses, it&#39;s in being missed when you&#39;re gone and doing work that matters for the tribe that you choose.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Who do you want your customers/consumers/readers to change after interacting with you, your art, or whatever you&#39;ve created?&lt;/span&gt;
&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;I&#39;ve long admired folks like &lt;a href=&quot;https://keenanpayne.com/css-tricks/&quot;&gt;Chris at CSS-Tricks&lt;/a&gt; or &lt;a href=&quot;https://tutsplus.com/authors/collis-taeed&quot;&gt;Collis Ta&#39;eed at tuts+&lt;/a&gt; (formerly Nettuts), who dedicated so much time to sharing their knowledge and experience. &lt;a href=&quot;https://keenanpayne.com/june-2022-learning/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Rebooting my freelancing career</title>
		<link href="https://keenanpayne.com/freelancing-reboot/"/>
		<updated>Mon, 27 Jun 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/freelancing-reboot/</id>
		<content type="html">&lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/airport_yaegse.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/airport_yaegse.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/airport_yaegse.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/airport_yaegse.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/airport_yaegse.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/airport_yaegse.jpg 1360w&quot; alt=&quot;Early morning overlooking the Salt Lake City airport&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Flight mishaps had me sleeping in the Salt Lake City airport this winter. At least the sunrise was pretty.
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I recently took a &lt;a href=&quot;https://keenanpayne.com/goodbye-freelancing/&quot;&gt;six-month sabbatical from freelancing&lt;/a&gt; to ease some underlying anxiety and stress I&#39;ve been experiencing. Taking time off helped me decompress and reflect after being on the grind.&lt;/p&gt;
&lt;p&gt;I&#39;ve been back to work since February and I&#39;m staying busy. Not so busy that I couldn&#39;t get this published sooner, but such is the way for my not-so-timely life updates.&lt;/p&gt;
&lt;p&gt;Alright, let&#39;s get into what I&#39;ve been up to and where I&#39;m headed.&lt;/p&gt;
&lt;h2 id=&quot;i&#39;m-stressed%2C-man.&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#i&#39;m-stressed%2C-man.&quot;&gt;I&#39;m stressed, man.&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My relationship with stress has changed &lt;em&gt;a lot&lt;/em&gt; as I&#39;ve gotten older. The more responsibilities I gain and the better I understand the world, the more stressed I become.&lt;/p&gt;
&lt;p&gt;This undercurrent of stress has made me feel more anxious and uneasy in my day-to-day life. My capacity for optimism has slowly dwindled as I feel a greater weight on my shoulders and view the world through a more nuanced and critical lens. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/freelancing-reboot/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Paradoxically, the older I&#39;ve become, the &lt;em&gt;better&lt;/em&gt; my life has objectively gotten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I met the love of my life&lt;/li&gt;
&lt;li&gt;I have a successful career&lt;/li&gt;
&lt;li&gt;I&#39;ve made lots of money&lt;/li&gt;
&lt;li&gt;I have a significant amount of freedom and autonomy in my day-to-day life&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So why the stress?&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Understanding and eliminating my stressors were the focus of my sabbatical.
&lt;/p&gt;
&lt;h3 id=&quot;global-and-local-stress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#global-and-local-stress&quot;&gt;Global and local stress&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To reduce my stress, I needed to understand it. As I identified different stressors in my life, I began grouping them into two buckets, &amp;quot;global stress&amp;quot; and &amp;quot;local stress&amp;quot;.&lt;/p&gt;
&lt;h4 id=&quot;global-stress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#global-stress&quot;&gt;Global stress&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Global stress we experience together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;War&lt;/li&gt;
&lt;li&gt;Global pandemics&lt;/li&gt;
&lt;li&gt;Climate change&lt;/li&gt;
&lt;li&gt;Corrupt politics&lt;/li&gt;
&lt;li&gt;Income inequality&lt;/li&gt;
&lt;li&gt;The oppressing wave of late-stage capitalism&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;-context -note -left&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;With global stress, I feel like I have little control over the outcome of my actions.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;There&#39;s only so much one person can do to improve the state of global stressors 🤷🏻‍♂️&lt;/p&gt;
&lt;p&gt;I do what I can through political activism, awareness, and volunteering, but I&#39;m a tiny piece of a massive puzzle.&lt;/p&gt;
&lt;p&gt;I&#39;m trying to focus on global issues while not letting them overrun my life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;aka: no more mindless &lt;a href=&quot;https://en.wikipedia.org/wiki/Doomscrolling&quot;&gt;doomscrolling&lt;/a&gt; and unproductive YouTube binges.&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;local-stress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#local-stress&quot;&gt;Local stress&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I spent a significant amount of my time during my sabbatical reflecting on my local stressors.&lt;/p&gt;
&lt;p&gt;Local stress is largely contained to my life and relationships:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My career&lt;/li&gt;
&lt;li&gt;Financial wellbeing&lt;/li&gt;
&lt;li&gt;Family/relationship wellbeing&lt;/li&gt;
&lt;li&gt;Mental wellness&lt;/li&gt;
&lt;li&gt;Physical fitness&lt;/li&gt;
&lt;li&gt;Personal satisfaction&lt;/li&gt;
&lt;li&gt;Work/life balance&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;-context -note -right&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;With local stress, I feel empowered to change my circumstances however I prefer.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;I wanted to bring these into focus to understand how I could reduce my anxiety and improve my day-to-day happiness.&lt;/p&gt;
&lt;p&gt;The local stressors I focused on were my relationship with &lt;em&gt;my career&lt;/em&gt; and &lt;em&gt;money&lt;/em&gt;.&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/me-1_esh321.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/me-1_esh321.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/me-1_esh321.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/me-1_esh321.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/me-1_esh321.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/me-1_esh321.jpg 1360w&quot; alt=&quot;Me hiking in the mountains&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        🏔 Me hiking in the mountains
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/jon_es6erq.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/jon_es6erq.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/jon_es6erq.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/jon_es6erq.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/jon_es6erq.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/jon_es6erq.jpg 1360w&quot; alt=&quot;Snowboarding with Jon&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        ✌🏻 Hitting the slopes with &lt;a href=&quot;https://jonathanhoriel.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jon&lt;/a&gt;
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/cort_fe7xzl.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/cort_fe7xzl.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/cort_fe7xzl.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/cort_fe7xzl.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/cort_fe7xzl.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/cort_fe7xzl.jpg 1360w&quot; alt=&quot;Portrait of a new friend, Cort.&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        💨 Portrait of a new friend, Cort.
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;the-freelancing-grind&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#the-freelancing-grind&quot;&gt;The freelancing grind&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After returning to &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/&quot;&gt;freelancing in 2019&lt;/a&gt;, I had clients as far as the eye could see. I had an extensive network of friends and colleagues I met and collaborated with during my first decade working to thank for this.&lt;/p&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Doing great work for great people pays off.
&lt;/p&gt;
&lt;p&gt;I accepted client after client, juggling multiple projects at once. &lt;strong&gt;On average, I launched a client project every 36 days!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To make my life easier—since I had deliberately made it &lt;em&gt;harder&lt;/em&gt; by accepting so many clients—I hired some buddies to lend a helping hand (shout out to &lt;a href=&quot;https://jaime.one/&quot;&gt;Jamie&lt;/a&gt; and Nels ✌️)&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Suddenly, I was not only a freelance web developer but a project manager and people manager.
&lt;/p&gt;
&lt;p&gt;Managing the planning and execution of everything was exhausting and stressful. Each project had different goals, different stakeholders, and a different process for how we would complete the project.&lt;/p&gt;
&lt;p&gt;Meeting the demand of my client projects while balancing all other areas of life took its toll. I was feeling stressed, overwhelmed, and anxious. I &lt;em&gt;frequently&lt;/em&gt; felt like I was teetering on the edge of anxiety attacks while working.&lt;/p&gt;
&lt;p&gt;My increasingly anxious state made me resentful of my life circumstances.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instead of viewing my career as an &lt;em&gt;opportunity&lt;/em&gt;, rife with abundance and pleasure, I viewed it as a &lt;em&gt;burden&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;burnout...-again.&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#burnout...-again.&quot;&gt;Burnout... again.&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;All of this led me to burnout.&lt;/p&gt;
&lt;p&gt;I won’t go deep into my experience with burnout in this post, but it’s something I want to talk about more in the future. Unfortunately, I’ve experienced burnout several times during my career. &lt;strong&gt;It sucks.&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Burnout is something that can happen to anyone in any profession at any time under any circumstances. It’s a severe problem for folks experiencing it.
&lt;/p&gt;
&lt;p class=&quot;-context -further-reading&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM240 352c-11.81-6.959-50.92-25.71-101.4-3.734C133.6 350.4 128 346.9 128 341.9V185.5c0-5.455 3.379-10.54 8.752-12.74c21.22-8.676 41.57-13.11 59.14-12.79C215 160.3 230.1 164.9 240 168.1V352zM384 341.9c0 5.047-5.643 8.545-10.56 6.405C322.9 326.3 283.8 345 272 351.1V168.1c9.902-4.061 24.99-8.614 44.1-8.935c17.5-.1543 37.91 4.137 59.14 12.79C380.6 174.1 384 180.1 384 185.6V341.9z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Want to learn more about Burnout? I recommend &lt;a href=&quot;https://alistapart.com/article/burnout/&quot; title=&quot;Burnout by Scott Boms&quot;&gt;this article&lt;/a&gt; by Scott Boms on &lt;a href=&quot;https://alistapart.com/&quot;&gt;A List Apart&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Ultimately, I was battling negative feedback loops that impacted my ability to enjoy life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mindlessly accepting too many client projects&lt;/li&gt;
&lt;li&gt;Orienting my career and my contentment around money and wealth&lt;/li&gt;
&lt;li&gt;Accepting projects I could complete easily, rather than work that would push me to grow&lt;/li&gt;
&lt;li&gt;Not pushing myself to grow in meaningful ways&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During the past two years, I&#39;ve succeeded in some ways but failed in others.&lt;/p&gt;
&lt;p&gt;I&#39;ve succeeded in overwhelmingly stressful things like managing multiple projects and optimizing my work around money.&lt;/p&gt;
&lt;p&gt;I&#39;ve failed to orient myself around enjoyable things like optimizing my work around enjoyment/growth or spending time doing intrinsically enjoyable activities.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Efficiency is highly overrated; Goofing off is highly underrated. Regularly scheduled sabbaths, sabbaticals, vacations, breaks, aimless walks and time off are essential for top performance of any kind. The best work ethic requires a good rest ethic.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Kevin Kelly, &lt;a href=&quot;https://kk.org/thetechnium/103-bits-of-advice-i-wish-i-had-known/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;103 Bits of Advice I Wish I Had Known by Kevin Kelly&quot;&gt;103 Bits of Advice I Wish I Had Known&lt;/a&gt;&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;sideBySide&quot;&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/leadville_zlwebd.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/leadville_zlwebd.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/leadville_zlwebd.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/leadville_zlwebd.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/leadville_zlwebd.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/leadville_zlwebd.jpg 1360w&quot; alt=&quot;Leadville, Colorado&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Leadville, Colorado
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/outside-lands_u5yliu.jpg 1360w&quot; alt=&quot;Outside Lands, 2021&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;
        Outside Lands, 2021
      &lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;off-the-grind&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#off-the-grind&quot;&gt;Off the grind&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I needed time to decompress, so I took a sabbatical. It was time to prioritize my mental health and wellbeing above work and money.&lt;/p&gt;
&lt;p&gt;I did a lot during my six months away from work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I spent a lot of time with my girlfriend Elaine, who just finished her master&#39;s degree and also lacked professional obligations for the foreseeable future&lt;/li&gt;
&lt;li&gt;I reflected and identified stressors in my life and tried to alleviate them to the best of my abilities&lt;/li&gt;
&lt;li&gt;I reoriented myself around what I value, not what I was conditioned to value&lt;/li&gt;
&lt;li&gt;I spent time engaged in intrinsically enjoyable activities such as writing, learning, reading, hiking, and creating (i.e., &lt;a href=&quot;https://keenanpayne.com/practices/&quot;&gt;my practices&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;I worked with &lt;a href=&quot;http://yogilifecoach.com/&quot;&gt;David Schlussel&lt;/a&gt; as my life coach and yoga teacher&lt;/li&gt;
&lt;li&gt;I remained intensely focused on addressing my chronic back pain through regular chiropractic sessions at &lt;a href=&quot;https://posture-works.com/&quot;&gt;PostureWorks&lt;/a&gt; and my daily yoga practice&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these were tremendously beneficial.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My anxiety reduced dramatically&lt;/li&gt;
&lt;li&gt;My body feels &lt;em&gt;much&lt;/em&gt; better&lt;/li&gt;
&lt;li&gt;I feel more connected with myself and the world&lt;/li&gt;
&lt;li&gt;I feel re-energized and motivated&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;I&#39;m so grateful I was privileged enough to take a sabbatical 🙏🏻&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;gaining-clarity&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#gaining-clarity&quot;&gt;Gaining clarity&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I don’t hate web development, nor do I dislike using my skills as a web developer to build things for others. In fact, I love both of these things! This is why I became a web developer in the first place.&lt;/p&gt;
&lt;p&gt;What I hate are the &lt;strong&gt;circumstances I created for myself&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why I was working, how I was working, what I was working on, and who I was working with were not providing me with a healthy working environment.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;If I still love web development and I enjoy building products with and for other people, how can I change my circumstances to avoid anxiety and burnout?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Asking this question helped me &lt;em&gt;flip the script&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id=&quot;too-many-client-projects&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#too-many-client-projects&quot;&gt;Too many client projects&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I realized that juggling multiple client projects and outsourcing development work isn’t my cup of tea. This requires way too much client, people, and project management. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/freelancing-reboot/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why have I felt the need to accept so many client projects?&lt;/li&gt;
&lt;li&gt;What&#39;s wrong with working with a single client at a time?&lt;/li&gt;
&lt;li&gt;Do I think client projects are &lt;a href=&quot;https://keenanpayne.com/hello-scarcity-mindset/&quot;&gt;scarce&lt;/a&gt;? Therefore, I better feast while I can?&lt;/li&gt;
&lt;li&gt;How much is required to feast?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questioning my actions helped me uncover my motives and predispositions. I learned more about myself and why I was on the path that I was on.&lt;/p&gt;
&lt;p&gt;I realized a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&#39;m not immediately interested in building a creative studio or managing anything larger than myself&lt;/li&gt;
&lt;li&gt;I can afford to live working with a single client at a time&lt;/li&gt;
&lt;li&gt;I can scale up the amount of work I take on if I want or need to&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These realizations helped me decide reduce the amount of work I had been doing and focus on a single client project at a time.&lt;/p&gt;
&lt;p&gt;I can work on a project I&#39;m passionate about and put 100% of my professional energy into it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That sounds great.&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;finding-the-right-challenge&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#finding-the-right-challenge&quot;&gt;Finding the right challenge&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I got into a groove working on projects with similar clients, stakeholders, problem domains, and technology stacks. This groove helped me carve out my niche as a marketing website developer.&lt;/p&gt;
&lt;p&gt;As I found my groove, I worked on bigger projects with larger budgets for more prestigious clients. I made this possible by investing so much time in a single area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In my groove, I became a specialist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem with finding my groove is that my work became monotonous. Despite my efficiency and the increased scale of my work, I found what I was doing uninspiring.&lt;/p&gt;
&lt;p&gt;After ten years of focusing my efforts on building marketing websites, I decided it was time to change things up. Not only was I overwhelmed with the amount of work I had been doing before my sabbatical, but I was &lt;em&gt;overwhelmingly bored&lt;/em&gt; with it.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I&#39;m reorienting my career as a web developer by sinking my teeth into new technologies and problems.
&lt;/p&gt;
&lt;hr class=&quot;-fancy&quot; /&gt;
&lt;h2 id=&quot;new-work%2C-new-me.&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#new-work%2C-new-me.&quot;&gt;New work, new me.&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I turned my realizations into convictions as I redesigned my professional life.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I will no longer optimize my career around making the most money I possibly can&lt;/li&gt;
&lt;li&gt;I will no longer optimize my career around doing the same type of work because I can easily do it&lt;/li&gt;
&lt;li&gt;I will only accept client projects that challenge me in compelling ways&lt;/li&gt;
&lt;li&gt;I will only work with stakeholders who are good collaborators&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Affirming these helped me confront what&#39;s been holding me back.&lt;/p&gt;
&lt;p&gt;Having clarity provided a guiding light to move forward.&lt;/p&gt;
&lt;h3 id=&quot;back-in-the-arena&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#back-in-the-arena&quot;&gt;Back in the arena&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I suddenly felt ready to return to work, but in a way that worked with me, not against me.&lt;/p&gt;
&lt;p&gt;As luck would have it, shortly after I decided on the path I wanted to take in my professional career, the folks from &lt;a href=&quot;https://stable.auto/&quot;&gt;Stable Auto&lt;/a&gt; reached out about collaborating.&lt;/p&gt;
&lt;figure&gt;
  &lt;a href=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg&quot; title=&quot;View full image&quot;&gt;
    &lt;img src=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg&quot; srcset=&quot;https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_300/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg 300w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_600/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg 600w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_680/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg 680w, https://res.cloudinary.com/keenan-payne/image/upload/q_auto,f_auto,w_1360/blog-posts/freelancing-reboot/stable-auto_so0xvu.jpg 1360w&quot; alt=&quot;Stable Auto: Predict &amp; improve EV charging station performance.&quot; loading=&quot;lazy&quot; /&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The job? Frontend architect tasked with rebuilding a web application to meet the growing needs of the company&#39;s customers while providing a solid technical foundation for future growth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I would be challenged with an unfamiliar codebase, technology stack, and problem domain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Game on.&lt;/p&gt;
&lt;p&gt;I&#39;ve been working on this project for a few months and &lt;em&gt;I&#39;ve been busy&lt;/em&gt;. I&#39;m knee-deep learning new technologies to address the problem at hand. In doing this, I&#39;ve found myself challenged in invigorating and rewarding ways rather than stressful and anxiety-inducing.&lt;/p&gt;
&lt;h2 id=&quot;moving-forward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/freelancing-reboot/#moving-forward&quot;&gt;Moving forward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There&#39;s more I&#39;d like to dive into as I think about my experience with burnout, anxiety, stress, and overwhelm. I also think there&#39;s more to say about the cultural indoctrination to value money in capitalist societies.&lt;/p&gt;
&lt;p&gt;But I&#39;ve gone on long enough for today. Now you know where I&#39;ve been, where I&#39;m at, and where I&#39;m headed.&lt;/p&gt;
&lt;p&gt;I&#39;m trying to keep a better eye on my mental health in the future, so I can address things &lt;em&gt;proactively&lt;/em&gt; rather than &lt;em&gt;reactively&lt;/em&gt;. I don&#39;t want burnout and anxiety attacks to be the sign that I need to switch things up again.&lt;/p&gt;
&lt;p&gt;To anyone who&#39;s experienced or is currently experiencing the same thing, I encourage you to reach out to others to share what you&#39;re going through. I wish I had reached out to others more during the past couple of years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My propensity for independence works against me when I&#39;m keeping things bottled up in myself.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you don&#39;t have someone to talk to or feel like sharing your own story, please leave a comment below or &lt;a href=&quot;https://keenanpayne.com/contact/&quot;&gt;reach out to me&lt;/a&gt; if you would like. You are not alone!&lt;/p&gt;
&lt;p&gt;Upwards and onwards ✌🏻&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Knowledge is power? &lt;a href=&quot;https://keenanpayne.com/freelancing-reboot/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;To my credit, I think I&#39;ve become a pretty decent manager in the past few years. But I don’t want to be a &lt;em&gt;manager&lt;/em&gt;—I want to be a &lt;em&gt;developer&lt;/em&gt;. &lt;a href=&quot;https://keenanpayne.com/freelancing-reboot/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Notes, May 2022</title>
		<link href="https://keenanpayne.com/may-2022-learning/"/>
		<updated>Thu, 09 Jun 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/may-2022-learning/</id>
		<content type="html">&lt;h2 id=&quot;book%3A-the-practice%3A-shipping-creative-work&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/may-2022-learning/#book%3A-the-practice%3A-shipping-creative-work&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9780593328972&quot;&gt;The Practice: Shipping Creative Work&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://keenanpayne.com/april-2022-learning/&quot;&gt;Last month&lt;/a&gt; I was reading &lt;em&gt;The Icarus Deception&lt;/em&gt; by Seth Godin. Now, I&#39;m working through &lt;em&gt;The Practice&lt;/em&gt;. I frequently fall back on the wisdom shared in Seth&#39;s writing when I feel stuck in my creative endeavors.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Working in anticipation of what we’ll get in return takes us out of the world of self-trust and back into the never-ending search for reassurance and the perfect outcome. We believe that we need a guarantee, and that the only way to get that guarantee is with external feedback and results. It draws our eye to the mirror instead of the work.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Seth Godin&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Seth&#39;s framing of creative endeavors as &amp;quot;&lt;a href=&quot;https://keenanpayne.com/tags/practices&quot;&gt;practices&lt;/a&gt;&amp;quot; is something &lt;a href=&quot;https://keenanpayne.com/practices/&quot;&gt;I&#39;ve discussed before&lt;/a&gt;. It&#39;s a frame that&#39;s been incredibly useful in helping orient my actions around intrinsically enjoyable activities rather than the outcomes associated with my actions.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;If I failed, would what I&#39;m doing be worth the journey?&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;book%3A-creative-visualization&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/may-2022-learning/#book%3A-creative-visualization&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9781608684649&quot;&gt;Creative Visualization&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I began reading Creative Visualization &lt;a href=&quot;https://keenanpayne.com/april-2022-learning/&quot;&gt;last month&lt;/a&gt;, and I continue to find it inspiring and applicable as I design my ideal post-sabbatical working environment.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;To create prosperity, we need to visualize ourselves living as we desire to live, doing what we love, feeling satisfied with what we attain, and in a context of other people doing the same.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Shakti Gawain&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Using visualization out of fear of the negative outcomes that might occur if we don&#39;t reach our goals is counter-productive. We end up energizing our fear of failure more than our desire for success.
&lt;/p&gt;
&lt;h2 id=&quot;article%3A-in-the-dark&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/may-2022-learning/#article%3A-in-the-dark&quot;&gt;Article: &lt;a href=&quot;https://restofworld.org/2022/blackouts/&quot;&gt;In the Dark&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This essay discusses how the civil unrest that arose out of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Arab_Spring&quot;&gt;Arab Spring&lt;/a&gt; in 2011 opened the door for increased political censorship of the internet by oppressive regimes across the world.&lt;/p&gt;
&lt;p&gt;I highly recommend reading this article if you want a deep dive into online censorship technologies employed by authoritarian regimes across the world.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Russia is a pioneer in the use of [internet censorship] tools but not an outlier. The technologies it uses are proliferating, creeping into internet infrastructure all over the world, helped by multinational companies that have turned censorship into an off-the-shelf product.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I loved the art direction of this essay. In particular, I enjoyed the web animations implemented for images using CSS. I dove through the source code for the essay and turned these animations into a &lt;a href=&quot;https://codepen.io/keenanpayne/pen/rNJjapZ/5d4f012df0610638651b5c4053a6c4f7?editors=1100&quot;&gt;CodePen example&lt;/a&gt; to learn how they implemented them.&lt;/p&gt;
&lt;h2 id=&quot;podcast%3A-shoptalk-show-516-%E2%80%94-shipping-creative-work-and-%22twitter-driven-development%22&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/may-2022-learning/#podcast%3A-shoptalk-show-516-%E2%80%94-shipping-creative-work-and-%22twitter-driven-development%22&quot;&gt;Podcast: &lt;a href=&quot;https://shoptalkshow.com/516/&quot;&gt;Shoptalk Show 516 — Shipping creative work and &amp;quot;Twitter-driven development&amp;quot;&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Shoptalk Show is one of my favorite web development podcasts. Web dev veterans &lt;a href=&quot;http://chriscoyier.net/&quot;&gt;Chris Coyier&lt;/a&gt; and &lt;a href=&quot;https://daverupert.com/&quot;&gt;Dave Rupert&lt;/a&gt; host the show each week as they discuss what&#39;s happening in the world of web development, projects that they&#39;re working on, issues they&#39;ve encountered, and more.&lt;/p&gt;
&lt;p&gt;Episode 516 was a standout episode for me. The subject of shipping creative work and &amp;quot;Twitter-driven development&amp;quot; inspired a slew of thoughts. I captured these in a Twitter thread which you can read by clicking the tweet below or checking out the essay on &lt;a href=&quot;https://typefully.com/KeenanPayne_/shoptalk-show-516-shipping-creative-work-and-Q9oMR2p&quot;&gt;this Typefully post&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class=&quot;tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;The most recent &lt;a href=&quot;https://twitter.com/ShopTalkShow?ref_src=twsrc%5Etfw&quot;&gt;@ShopTalkShow&lt;/a&gt; episode didn&amp;#39;t disappoint 👌 &lt;br /&gt;&lt;br /&gt;I loved the convo on the toll of &amp;quot;not shipping&amp;quot;—i.e., not releasing work/creations/projects—and the impact that has on individuals and businesses. I feel this in my bones.&lt;a href=&quot;https://t.co/YrJPWSLLYu&quot;&gt;https://t.co/YrJPWSLLYu&lt;/a&gt;&lt;/p&gt;&amp;mdash; Keenan Payne (@KeenanPayne_) &lt;a href=&quot;https://twitter.com/KeenanPayne_/status/1530364036847505408?ref_src=twsrc%5Etfw&quot;&gt;May 28, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;How am I impacted by shipping creations and not shipping creations?&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;podcast%3A-the-growth-equation-%E2%80%94-doing-real-things%2C-satisfaction%2C-practices%2C-and-momentum&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/may-2022-learning/#podcast%3A-the-growth-equation-%E2%80%94-doing-real-things%2C-satisfaction%2C-practices%2C-and-momentum&quot;&gt;Podcast: &lt;a href=&quot;https://thegrowtheq.com/do-more-real-things-in-the-world-be-better-and-feel-better/&quot;&gt;The Growth Equation — Doing real things, satisfaction, practices, and momentum&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Another podcast I enjoy is The Growth Equation, hosted by Brad Stulberg and Steve Magness. Each episode features these two talking about personal performance and sustainable success.&lt;/p&gt;
&lt;p&gt;This episode struck a chord as I began thinking about the importance of doing &amp;quot;real things&amp;quot; in the world. I captured these in a Twitter thread, which you can read by clicking the Tweet below. You can also read the full essay on &lt;a href=&quot;https://typefully.com/KeenanPayne_/JlDHqXy&quot;&gt;this Typefully post&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class=&quot;tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I enjoyed the conversation between &lt;a href=&quot;https://twitter.com/BStulberg?ref_src=twsrc%5Etfw&quot;&gt;@BStulberg&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/stevemagness?ref_src=twsrc%5Etfw&quot;&gt;@stevemagness&lt;/a&gt; on The Growth Equation on the importance of doing &amp;quot;real things&amp;quot; in the world 🚵🏻‍♂️&lt;a href=&quot;https://t.co/mIE8fAPMsy&quot;&gt;https://t.co/mIE8fAPMsy&lt;/a&gt;&lt;/p&gt;&amp;mdash; Keenan Payne (@KeenanPayne_) &lt;a href=&quot;https://twitter.com/KeenanPayne_/status/1530630169450319874?ref_src=twsrc%5Etfw&quot;&gt;May 28, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Regularly engaging in activities that provide a definitive path towards completion, provide tangible outcomes, and allow us to feel a sense of growth and accomplishment is crucial for staying grounded.&lt;/span&gt;
&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Notes, April 2022</title>
		<link href="https://keenanpayne.com/april-2022-learning/"/>
		<updated>Thu, 12 May 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/april-2022-learning/</id>
		<content type="html">&lt;h2 id=&quot;book%3A-creative-visualization&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/april-2022-learning/#book%3A-creative-visualization&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9781608684649&quot;&gt;Creative Visualization&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Creative Visualization has been popping up a lot recently. I first introduced to it through Eckhart Tolle&#39;s &lt;em&gt;The Power of Now&lt;/em&gt;, which I discussed &lt;a href=&quot;https://keenanpayne.com/march-2022-learning/&quot;&gt;last month&lt;/a&gt;. It was recommended again in James Clear&#39;s &lt;em&gt;Atomic Habits&lt;/em&gt;, which finally spurred me to read it.&lt;/p&gt;
&lt;p&gt;This book is an easy to read, providing succinct and insightful meditations on living a meaningful and purposeful life by harnessing our creative potential using visualization techniques.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Often people attempt to live their lives backward: They try to have more things, or more money, in order to do more of what they want, so that they will be happier. The way it actually works is the reverse. You must first be who you really are, then do what you need to do, in order to have what you want.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Shakti Gawain&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;book%3A-atomic-habits&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/april-2022-learning/#book%3A-atomic-habits&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9780735211292&quot;&gt;Atomic Habits&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of my foundational values is to &lt;em&gt;always be learning and growing&lt;/em&gt;. As a result, I’ve long been interested in understanding and implementing techniques for changing my own behavior (e.g., habits, routines).&lt;/p&gt;
&lt;p&gt;In striving to be the best version of myself, I&#39;ve read countless books on behavior change and habits. Atomic Habits initially caught my eye due to its massive popularity in the personal development field. Since I&#39;m going through a period of intense personal and professional growth, I wanted to see what all of the fuss is about.&lt;/p&gt;
&lt;p&gt;I’m so happy I finally decided to give Atomic Habits a read and listen. James Clear concisely articulates his understanding of the subject in a way that informs and inspires. Despite having a relatively strong understanding of this field, I was able to take away some applicable knowledge.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Every action you take is a vote for the type of person you wish to become.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;James Clear&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;When attempting to instill any behavior change, break down your desired change into the smallest possible steps that can be taken. Then, focus only on the first step. Commit to taking this first step repeatedly. Focus on consistency and building momentum without losing focus on the big-picture goal you have.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;article%3A-mental-health-tips-feat.-anxiety-wolf&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/april-2022-learning/#article%3A-mental-health-tips-feat.-anxiety-wolf&quot;&gt;Article: &lt;a href=&quot;https://ncase.me/mental-health/&quot;&gt;Mental Health Tips feat. Anxiety Wolf&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve struggled with a fair bit of anxiety over the past couple of years, so this article resonated.&lt;/p&gt;
&lt;p&gt;I greatly appreciate Nicky&#39;s vulnerability and honesty as she shares her experiences with anxiety and the approaches she&#39;s used for framing and managing her anxiety. It&#39;s an impactful read.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;All signals can have false alarms. Thus, negative feelings aren&#39;t always valid, but they aren&#39;t always irrational either. They&#39;re clues – not to be taken as 100% literal truth, but not to be thrown out entirely either.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Nicky Case&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Collaborate with the feelings we experience. Listen to them, don&#39;t fight against them. Understand what our feelings are telling us and be grateful that our mind (however imperfect it might be) cares enough to want to protect us.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;book%3A-the-icarus-deception&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/april-2022-learning/#book%3A-the-icarus-deception&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9781591846079&quot;&gt;The Icarus Deception&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;m a big fan of Seth Godin. I regularly enjoy &lt;a href=&quot;https://seths.blog/&quot;&gt;his blog&lt;/a&gt;, where he publishes wonderfully concise thoughts and reflections daily. I&#39;ve also enjoyed countless books that he&#39;s written. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/april-2022-learning/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In his book, The Icarus Deception, Seth expounds on the purpose and utility of art in the modern world. He challenges the reader to view whatever work we do as art and why such a framing is essential for succeeding in the modern creative economy.&lt;/p&gt;
&lt;p&gt;Seth&#39;s writing is approachable, inspiring, and practical. I reach for it whenever I want to feel inspired and reaffirm the value and utility of the art I&#39;m creating.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Art is personal and is built on attitude and vision and commitment.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Seth Godin&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Don&#39;t wait for others to open the door for you to create and make an impact. Open the door yourself and demand the attention of others through your efforts.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;podcast%3A-make-art-not-content%3A-the-struggle&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/april-2022-learning/#podcast%3A-make-art-not-content%3A-the-struggle&quot;&gt;Podcast: &lt;a href=&quot;https://podcastaddict.com/episode/https%3A%2F%2Fchrt.fm%2Ftrack%2FFAB4C8%2Fdts.podtrac.com%2Fredirect.mp3%2Fmedia.transistor.fm%2F29b8c9a3%2F5dad47a3.mp3&amp;amp;podcastId=2953181&quot;&gt;Make Art Not Content: The Struggle&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Making art is difficult, but what happens when we get so caught up in what we &lt;em&gt;envision&lt;/em&gt; creating that we prevent our art from speaking for itself?&lt;/p&gt;
&lt;p&gt;I highly recommend checking out the &lt;a href=&quot;https://makeartnotcontent.com/&quot;&gt;Make Art Not Content&lt;/a&gt; podcast for any creative people. Each episode is a 5–10 minute meditation on creativity, addressing the common hurdles creative people regularly encounter.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Big thanks to my BFF &lt;a href=&quot;https://jonathanhoriel.com/&quot;&gt;Jon Horiel&lt;/a&gt; for introducing me to Seth Godin and countless other authors and books over the years. &lt;a href=&quot;https://keenanpayne.com/april-2022-learning/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Trust and suspicion</title>
		<link href="https://keenanpayne.com/trust-suspicion/"/>
		<updated>Thu, 28 Apr 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/trust-suspicion/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/trust-suspicion/rocks.jpg&quot; alt=&quot;Picture of rocks stacked atop each other&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://unsplash.com/photos/jbe0iCwo-U0&quot; title=&quot;Photo by Zdeněk Macháček on Unsplash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Photo by Zdeněk Macháček on Unsplash&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I&#39;ve enjoyed the ongoing conversation on native browser features and third-party libraries and frameworks, spurred by a &lt;a href=&quot;https://adactio.com/journal/19021&quot;&gt;recent article&lt;/a&gt; from Jeremy Keith.&lt;/p&gt;
&lt;p&gt;Jeremy&#39;s perception is that developers seem to instinctively reach for and trust third-party libraries over native browser implementations/features:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;The mindset I’ve noticed is that many developers are suspicious of browser features but trusting of third-party libraries.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Jeremy Keith&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;He builds upon this premise by questioning the trustworthiness of third-party libraries compared with native browser features:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;I’m much more trusting of native browser features—HTML elements, CSS features, and JavaScript APIs. They’re not always perfect, but a lot of thought goes into their development. By the time they land in browsers, a whole lot of smart people have kicked the tyres and considered many different angles. As a bonus, I don’t need to install them. Even better, end users don’t need to install them.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There&#39;s more to his article, so definitely give it a read.&lt;/p&gt;
&lt;p&gt;Seeing others weigh in on the topic inspired me to share my thoughts. Let&#39;s get into it.&lt;/p&gt;
&lt;h2 id=&quot;the-role-of-web-browsers&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/trust-suspicion/#the-role-of-web-browsers&quot;&gt;The role of web browsers&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It&#39;s important to remember that the current era of web browser cohesion and cooperation follows an era of fractured browser support, corporate opaqueness, and inconsistent APIs.&lt;/p&gt;
&lt;p&gt;Web browser vendors haven&#39;t historically done an outstanding job building trust amongst web developers. We&#39;ve sailed some rough waters during the past couple of decades.&lt;/p&gt;
&lt;p&gt;Things are smoother now, which I&#39;m &lt;em&gt;incredibly&lt;/em&gt; grateful for. Still, it&#39;s important to remember where we&#39;ve been.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chriscoyier.net/2022/04/27/trust/&quot;&gt;Chris Coyier&lt;/a&gt; shares his take:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Third-party code (like the referenced Bootstrap and React) have a history of smoothing over significant cross-browser issues and providing better-than-browser ergonomic APIs. jQuery was created to smooth over cross-browser JavaScript problems. That’s trust.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Chris Coyier&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I remember spending &lt;em&gt;a lot&lt;/em&gt; of time fumbling over cross-browser issues for almost a decade during the 2000s when web development was a more finicky bastard.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Who wasn&#39;t using a library like jQuery while supporting the likes of Internet Explorer 6?
&lt;/p&gt;
&lt;p&gt;After using third-party libraries to solve so many problems for so many years, I understand why folks might lean on them for so many problems.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.jim-nielsen.com/2022/trusting-browsers/&quot;&gt;Jim Nielsen&lt;/a&gt; shares his thoughts:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;We distrust the browser because we’ve been trained to. Years of fighting browser deficiencies where libraries filled the gaps. Browser enemy; library friend. For example: jQuery did wonders to normalize working across browsers. Write code once, run it in any browser — confidently.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Jim Nielsen&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, we&#39;ve been trained. Now it&#39;s time to re-train.&lt;/p&gt;
&lt;p&gt;Web browsers have changed. We are in an entirely new era where cross-browser support is more manageable and APIs are more consistent. Sure, there&#39;s room for improvement, but it&#39;s a night and day difference from where we were 10 years ago.&lt;/p&gt;
&lt;h2 id=&quot;the-role-of-third-party-libraries&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/trust-suspicion/#the-role-of-third-party-libraries&quot;&gt;The role of third-party libraries&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When browser support for features isn&#39;t where we want it to be, libraries can fill in the gap. Once browser support improves, we can use polyfills or native solutions.&lt;/p&gt;
&lt;p&gt;Third-party libraries can be a playground where ideas and paradigms are conceived and proven. Sometimes these become standardized. It&#39;s part of how the web evolves.&lt;/p&gt;
&lt;p&gt;Third-party libraries can also add more of everything—complexity, room for error, code shipped, dependency hell, abstraction from lower-level technologies. These can make the experience worse for developers and users alike.&lt;/p&gt;
&lt;p&gt;But there&#39;s no denying that some libraries provide an elegant API that makes writing code more effortless, enabling us to solve &lt;em&gt;real-world problems&lt;/em&gt; with less effort.&lt;/p&gt;
&lt;h2 id=&quot;closing-thoughts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/trust-suspicion/#closing-thoughts&quot;&gt;Closing thoughts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ultimately, we write software to solve problems. It&#39;s our responsibility as developers to adequately understand the problem domain we&#39;re writing software for so we can make thoughtful decisions.&lt;/p&gt;
&lt;p&gt;Instincts overruling thoughtfulness are where problems can occur. Sometimes your instincts are correct, sometimes they lead you astray.&lt;/p&gt;
&lt;p&gt;I like Jim&#39;s closing line:&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Where available, default to browser-native features over third party code, abstractions, or idioms.&lt;/span&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;cite class=&quot;blockquote-cite _text-h4&quot;&gt;Jim Nielsen&lt;br /&gt;
&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Great idea.&lt;/p&gt;
&lt;p&gt;Here are some reminders when deciding whether to use third-party libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Always check native browser APIs before using a third-party library.&lt;/li&gt;
&lt;li&gt;Weigh the trade-offs between using native vs. third-party solutions.&lt;/li&gt;
&lt;li&gt;Make decisions deliberately. Be mindful of instincts overriding thoughtfulness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&#39;s to more conversations over blogs!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Racing against whom?</title>
		<link href="https://keenanpayne.com/racing-against-whom/"/>
		<updated>Mon, 25 Apr 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/racing-against-whom/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/racing/david-marcu-VfUN94cUy4o-unsplash.jpg&quot; alt=&quot;Cyclist in the countryside of Romania&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://unsplash.com/photos/VfUN94cUy4o&quot; title=&quot;Photo by David Marcu on Unsplash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Photo by David Marcu on Unsplash&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I had a dream I was racing someone uphill riding a bicycle. Looking over at my competition, I noticed them cruising up the hill, leaving me behind.&lt;/p&gt;
&lt;p&gt;I looked at the person&#39;s bike to see if they had a leaner, meaner, more efficient ride.&lt;/p&gt;
&lt;p&gt;Nope, we were riding the exact same bicycle.&lt;/p&gt;
&lt;p&gt;I looked at the person&#39;s outfit to see if they dressed in a way that might help propel them forward.&lt;/p&gt;
&lt;p&gt;Surprisingly, we were wearing the same clothes.&lt;/p&gt;
&lt;p&gt;I finally paid attention to my own situation, looking down at my bike.&lt;/p&gt;
&lt;p&gt;It turns out I was in a much higher gear than the other person; I was working harder while traveling less ground. Nothing about my competitor&#39;s situation directly impacted my situation.&lt;/p&gt;
&lt;p&gt;I brought my attention inward, and upon shifting to a lower gear, I began cruising up the hill. Thoughts of competition left my mind as I focused on my ascension.&lt;/p&gt;
&lt;p&gt;As I looked at my competitor one final time before reaching our summit, I suddenly recognized them as a friend. We were never competitors to begin with.&lt;/p&gt;
&lt;p&gt;One of us reaching the peak first didn&#39;t exclude the other from the same accomplishment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So we both finished the race.&lt;/strong&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Notes, March 2022</title>
		<link href="https://keenanpayne.com/march-2022-learning/"/>
		<updated>Wed, 06 Apr 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/march-2022-learning/</id>
		<content type="html">&lt;p&gt;I just started following &lt;a href=&quot;https://blog.jim-nielsen.com/&quot;&gt;Jim Nielson&#39;s blog&lt;/a&gt; after listening to &lt;a href=&quot;https://shoptalkshow.com/504/&quot;&gt;this wonderful Shoptalk interview&lt;/a&gt;. I was inspired by how he &lt;a href=&quot;https://blog.jim-nielsen.com/2022/reading-notes-february/&quot;&gt;shares&lt;/a&gt; what he&#39;s been reading throughout the month. I love this idea!&lt;/p&gt;
&lt;p&gt;It can be hard to discern signal from noise in an era of media abundance. Something new is published every second—blog posts, books, essays, videos, podcasts, tweets, photos, etc. My favorite way of finding potentially impactful new content to consume is through recommendations by people I trust or admire, hence my enjoyment of Jim&#39;s posts (and the Shoptalk Show, for that matter).&lt;/p&gt;
&lt;p&gt;Because sharing is fun and potentially useful for others, I want to share what I&#39;m learning every month by highlighting the most impactful content I&#39;ve consumed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&#39;s to more signal and less noise!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;book%3A-the-power-of-now&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/march-2022-learning/#book%3A-the-power-of-now&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9781577314806&quot;&gt;The Power of Now&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Power of Now has been incredibly impactful after struggling with anxiety, stress, and overwhelm during the past few years. Eckhart Tolle&#39;s conversational style of writing on topics such as mindfulness, consciousness, self-awareness, and spirituality is more akin to receiving heartfelt advice from a friend, not dictates from a self-help guru.&lt;/p&gt;
&lt;p&gt;This book is easy to read in short spurts, making it the perfect companion when I&#39;m experiencing moments of high anxiety.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;It is the quality of your consciousness at this moment that is the main determinant of what kind of future you will experience, so to surrender is the most important thing you can do to bring about positive change.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;article%3A-my-first-impressions-of-web3&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/march-2022-learning/#article%3A-my-first-impressions-of-web3&quot;&gt;Article: &lt;a href=&quot;https://moxie.org/2022/01/07/web3-first-impressions.html&quot;&gt;My first impressions of web3&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the span of six months, I&#39;ve fallen into and climbed out of the cryptocurrency/web3/NFT rabbit hole. I went &lt;strong&gt;deep&lt;/strong&gt;. I &amp;quot;invested&amp;quot; in coins and NFTs, involved myself in various crypto communities (primarily as a lurker), and spent &lt;strong&gt;a lot&lt;/strong&gt; of time learning about the underlying blockchain technology.&lt;/p&gt;
&lt;p&gt;The time I spent investigating the underlying technology paved the way for my losing interest in crypto. I now see it as &lt;strong&gt;much&lt;/strong&gt; more detrimental than beneficial.&lt;/p&gt;
&lt;p&gt;This article by Moxie Marlinspike, creator of &lt;a href=&quot;https://www.signal.org/&quot;&gt;Signal&lt;/a&gt;, put the nail in the coffin for my interest in the current version and utilization of blockchain technology. He outlines how purportedly &amp;quot;decentralized&amp;quot; platforms work, why such platforms aren&#39;t truly decentralized, and why decentralization may not even be an ideal outcome for a rapidly evolving ecosystem.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;The people at the end of the line who are flipping NFTs do not fundamentally care about distributed trust models or payment mechanics, but they care about where the money is.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;book%3A-several-short-sentences-about-writing&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/march-2022-learning/#book%3A-several-short-sentences-about-writing&quot;&gt;Book: &lt;a href=&quot;https://www.indiebound.org/book/9780307279415&quot;&gt;Several Short Sentences About Writing&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Several Short Sentences About Writing is changing the way I write. I never realized how bloated my sentences were until I started reading this book.&lt;/p&gt;
&lt;p&gt;If you&#39;re a writer, do yourself a favor and read this book.&lt;/p&gt;
&lt;blockquote class=&quot;blockquote&quot;&gt;
  &lt;p class=&quot;blockquote-content _text-h3&quot;&gt;
    &lt;span&gt;Every word in a sentence is optional until it proves to be essential.&lt;/span&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;podcast%3A-command-line-heroes&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/march-2022-learning/#podcast%3A-command-line-heroes&quot;&gt;Podcast: &lt;a href=&quot;https://www.redhat.com/en/command-line-heroes&quot;&gt;Command Line Heroes&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I recently found out about the Command Line Heroes podcast, and it quickly became my favorite show to binge. In it, host Saron Yitbarek shares stories on computing, software, and technology.&lt;/p&gt;
&lt;p&gt;This show is well-researched, concise, and contains countless interviews with developers, programmers, and enthusiasts.&lt;/p&gt;
&lt;h2 id=&quot;course%3A-next.js-firebase-social-blogging-platform&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/march-2022-learning/#course%3A-next.js-firebase-social-blogging-platform&quot;&gt;Course: &lt;a href=&quot;https://fireship.io/courses/react-next-firebase/&quot;&gt;Next.js Firebase Social Blogging Platform&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I recently accepted my first client project after taking a lovely six-month &lt;a href=&quot;https://keenanpayne.com/goodbye-freelancing/&quot;&gt;sabbatical&lt;/a&gt;. However, the project I&#39;ve accepted is a bit outside of my wheelhouse. Instead of building marketing websites for clients, I&#39;m working on a React.js/TypeScript/Firebase web application. How exciting!&lt;/p&gt;
&lt;p&gt;Having never used these technologies in a real-world project, I needed to get up to speed &lt;strong&gt;quickly&lt;/strong&gt;. I worked through a few tutorials before eventually stumbling on this course, offered by Jeff Delaney, creator and author of the immensely popular YouTube channel and course platform &lt;a href=&quot;https://www.youtube.com/c/Fireship&quot;&gt;Fireship&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Boy, am I happy I found this course when I did. I quickly learned the fundamentals of these technologies while building a fun web application.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Thank you Chris for CSS-Tricks</title>
		<link href="https://keenanpayne.com/css-tricks/"/>
		<updated>Wed, 30 Mar 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/css-tricks/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/web-development/css-tricks.png&quot; alt=&quot;Screenshot of announcement post for CSS-Tricks acquisition by DigitalOcean&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/css-tricks/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I began my web development journey back in 2007 at the &lt;strong&gt;wee&lt;/strong&gt; age of 14. The technological landscape was different at that time (remember when we bemoaned JavaScript? [^1]), as was the learning landscape. The advent of online courses wouldn&#39;t occur until video hosting platforms became mainstream in the 2010s, along with the learning platforms and coding boot camps that are so common today. [^1]: JavaScript was so bemoaned by developers that books were actually named &amp;quot;&lt;a href=&quot;https://www.amazon.com/dp/0596517742/ref=cm_sw_r_cp_api_i_5K7Q7CEB1FDPN5SQ41V9&quot;&gt;JavaScript: The Good Parts&lt;/a&gt;&amp;quot;. Little did we know what was in store over the next decade.&lt;/p&gt;
&lt;p&gt;At that time, most of my learning happened by reading books, blogs, and participating in forums. One of the most impactful blogs I&#39;ve followed is Chris Coyier&#39;s CSS-Tricks, which has been a constant throughout my career. Chris&#39;s passion and dedication to web development inspired and informed, while opening the door for others to share their experience and knowledge. CSS-Tricks has always been a reliable source of updates in the web development industry, practical tips and advice for web developers of all skill levels, thorough guides for web technologies, and so much more.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  To say that Chris and CSS-Tricks helped me grow as a web developer would be a &lt;em&gt;dramatic&lt;/em&gt; understatement.
&lt;/p&gt;
&lt;p&gt;Now, in a surprising and exciting announcement, Chris shared that DigitalOcean, a cloud infrastructure provider, has acquired CSS-Tricks. Check out the &lt;a href=&quot;https://css-tricks.com/css-tricks-is-joining-digitalocean/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;official announcement from Chris&lt;/a&gt; and &lt;a href=&quot;https://www.digitalocean.com/blog/css-tricks-joins-digitalocean&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DigitalOcean&lt;/a&gt; to get the full scoop.&lt;/p&gt;
&lt;p&gt;I want to thank Chris for his ongoing dedication to the web development community and congratulate him and the entire CSS-Tricks team on the exciting news. Here&#39;s to many more years of wonderful content! 🎉&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Don&#39;t alter scrolling mechanics by scroll-jacking</title>
		<link href="https://keenanpayne.com/scrolling/"/>
		<updated>Wed, 09 Mar 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/scrolling/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/android-iphone/macbook-iphone-watch-stack.jpg&quot; alt=&quot;iPhone and Apple Watch stacked on top of Macbook Air&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.instagram.com/visuals_by_marcus/&quot; title=&quot;Visuals by Marcus&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Visuals by Marcus&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Scrolling is how I use a computer. I also scroll &lt;em&gt;a lot&lt;/em&gt; on my smartphone. I scroll elsewhere—through menus on video game consoles, books on my Kindle, apps on my Apple Watch…&lt;/p&gt;
&lt;p&gt;You get the point. I scroll &lt;strong&gt;a lot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Most people who use modern computing devices navigate them, in part, by scrolling. Of course, there are other ways to navigate devices. You might search and jump to a specific spot on your device or document. Keyboards and accessibility devices also help us navigate computers. However, such affordances aren&#39;t uniformly provided across devices, nor is such functionality as widely understood and adopted as scrolling.&lt;/p&gt;
&lt;p&gt;You get the point. &lt;em&gt;We&lt;/em&gt; scroll &lt;strong&gt;a lot&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;my-zeal-for-scrolling&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#my-zeal-for-scrolling&quot;&gt;My zeal for scrolling&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve spent 20+ years scrolling through interfaces on countless devices. Such incessant scrolling has informed a more-or-less &amp;quot;intuitive&amp;quot; understanding of how it should feel. I&#39;m used to scrolling through websites and apps on my computer and &lt;a href=&quot;https://keenanpayne.com/switch-from-android-to-iphone/&quot;&gt;iPhone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If I could sum up my relationship with scrolling in three concise bullet points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I know what to expect when scrolling&lt;/li&gt;
&lt;li&gt;Scrolling reliably gets me from point A to point B&lt;/li&gt;
&lt;li&gt;Scrolling isn&#39;t something I have to think about because it happens so naturally&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is why I&#39;m such a stickler for how scrolling is implemented.&lt;/p&gt;
&lt;p&gt;And why shouldn&#39;t I be?&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Scrolling is one of my primary means for&lt;br class=&quot;_hidden-min-720&quot; /&gt; navigating a bevy of devices — how about you?
&lt;/p&gt;
&lt;h2 id=&quot;the-current-state-of-scrolling&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#the-current-state-of-scrolling&quot;&gt;The current state of scrolling&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In my experience, websites are the primary offender for altering scrolling mechanics for &lt;strong&gt;no good reason&lt;/strong&gt;. There&#39;s nothing more jarring than loading a web page, beginning to scroll through it, and immediately recognizing how unnatural the scrolling feels.&lt;/p&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Changing how default scrolling mechanics work in an application is commonly referred to as &lt;em&gt;scroll-jacking&lt;/em&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;What&#39;s worse is realizing that such a core mechanic was altered for &lt;strong&gt;no good reason&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I emphasize that scrolling mechanics are frequently changed for &lt;strong&gt;no good reason&lt;/strong&gt; because of how mindlessly such changes are thrust upon us. If I don&#39;t understand why you&#39;ve altered scrolling within the first 5 seconds, you&#39;ve done it for &lt;strong&gt;no good reason&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This isn&#39;t to say there aren&#39;t well-intentioned web designers and developers behind the scenes making such decisions who surely mean no ill will to the rest of us. I&#39;ve been there. But we can do better.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/android-iphone/me-on-iphone-with-laptop.jpg&quot; alt=&quot;Me scrolling on my iPhone with a Macbook nearby&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.instagram.com/visuals_by_marcus/&quot; title=&quot;Visuals by Marcus&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Visuals by Marcus&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;deciding-whether-to-alter-scrolling-mechanics&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#deciding-whether-to-alter-scrolling-mechanics&quot;&gt;Deciding whether to alter scrolling mechanics&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Anybody building websites or user interfaces should recognize the importance of consistency with the mechanics of &lt;a href=&quot;https://en.wikipedia.org/wiki/Human-computer_interaction&quot;&gt;human-computer interaction&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;never&lt;/em&gt; want core scrolling functionality to change. If I can&#39;t quickly jump down your page using the &lt;code&gt;Space&lt;/code&gt; key or &lt;code&gt;CMD + ⇩&lt;/code&gt;, you&#39;ve fucked up.&lt;/p&gt;
&lt;p&gt;You &lt;em&gt;might&lt;/em&gt; be able to get away with altering the physics, but only if it&#39;s for a &lt;strong&gt;Very Good Reason&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spoiler alert:&lt;/strong&gt; it probably isn&#39;t.&lt;/p&gt;
&lt;p&gt;Furthermore, I don&#39;t want to notice or pay attention to scrolling when visiting your website. I like the action of scrolling to be as &amp;quot;invisible&amp;quot; as possible when navigating an interface so I can accomplish what I&#39;ve set out to do.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  The goal isn&#39;t to enjoy scrolling. The goal is to use scrolling to do something enjoyable.
&lt;/p&gt;
&lt;p&gt;Here are some &lt;strong&gt;Very Bad Reasons&lt;/strong&gt; for altering scrolling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You &lt;em&gt;think&lt;/em&gt; it adds to the &amp;quot;experience&amp;quot;&lt;/li&gt;
&lt;li&gt;You &lt;em&gt;think&lt;/em&gt; it feels &amp;quot;cool&amp;quot; or &amp;quot;fun&amp;quot;&lt;/li&gt;
&lt;li&gt;You &lt;em&gt;think&lt;/em&gt; it makes your website &amp;quot;dynamic&amp;quot;&lt;/li&gt;
&lt;li&gt;You &lt;em&gt;think&lt;/em&gt; it enhances the animations&lt;/li&gt;
&lt;li&gt;You &lt;em&gt;think&lt;/em&gt; I will enjoy it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are some &lt;strong&gt;Very Reasonable Reasons&lt;/strong&gt; for altering scrolling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scrolling is part of the mechanics for a game&lt;/li&gt;
&lt;li&gt;You intentionally want to create something experimental and push the boundaries of human-computer interaction while acknowledging the downsides that such alterations incur&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are some &lt;strong&gt;Very Good Reasons&lt;/strong&gt; for altering scrolling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RktX4lbe_g4&quot;&gt;crickets chirping&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;focus-on-what-matters&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#focus-on-what-matters&quot;&gt;Focus on what matters&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If I could succinctly summarize my thoughts on altering scrolling mechanics for websites, it would be to do so &lt;em&gt;sparingly&lt;/em&gt; and &lt;em&gt;intentionally&lt;/em&gt;. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/scrolling/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Don&#39;t do it if you aren&#39;t &lt;strong&gt;100% confident&lt;/strong&gt; that changing the scrolling mechanics is &lt;em&gt;absolutely&lt;/em&gt; necessary for your goals. Just don&#39;t.&lt;/p&gt;
&lt;p&gt;Focus your attention elsewhere—the content of your website, art direction, animations, accessibility, usability, etc.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Focus on what matters. Don&#39;t create new problems by solving a problem that doesn&#39;t exist.
&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#examples&quot;&gt;Examples&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I will update this section with examples of scroll-jacking as I find them. In no way am I trying to publicly roast, embarrass, etc. I simply wish to inform so that our industry can improve as a collective through quality user experiences.&lt;/p&gt;
&lt;h3 class=&quot;_text-h4&quot;&gt;Very good examples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sbs.com.au/theboat/&quot;&gt;The Boat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;_text-h4&quot;&gt;Very reasonable examples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The fate of half-lucky souls rest here&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;_text-h4&quot;&gt;Very bad examples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ramotion.com/&quot;&gt;Ramotion: Design Agency&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resources&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/scrolling/#resources&quot;&gt;Resources&lt;/a&gt;&lt;/h2&gt;
&lt;h3 class=&quot;_text-h4&quot;&gt;Articles&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.robinrendle.com/notes/scrolljacking/&quot;&gt;Scrolljacking, by Robin Rendle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;_text-h4&quot;&gt;Libraries&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://idiotwu.github.io/smooth-scrollbar/&quot;&gt;Smooth Scrollbar&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;em&gt;frequently&lt;/em&gt; see this library used across the web. I hate it. No, I don&#39;t hate who creates, uses, or maintains it. But I hate how the library is used. It may be a &amp;quot;high performance&amp;quot; plugin, but I strongly dislike having the momentum and physics of scrolling changed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Though I&#39;m not one for succinctly summarizing my thoughts on anything. &lt;a href=&quot;https://keenanpayne.com/scrolling/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Questions I ask myself before learning something new</title>
		<link href="https://keenanpayne.com/before-learning/"/>
		<updated>Wed, 09 Feb 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/before-learning/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/public-domain/la-piana.jpg&quot; alt=&quot;La Piana by Edward Lear&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.artic.edu/artworks/26684/la-piana&quot; title=&quot;La Piana by Edward Lear, The Art Institute of Chicago&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;La Piana by Edward Lear, The Art Institute of Chicago&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;While reflecting on what I want to learn during the upcoming year, I started devising a set of questions to ask myself before deciding to learn something new. I intend to be more intentional by answering these questions without removing the opportunity for serendipity.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  With so many things to potentially learn, having clarity on &lt;em&gt;what&lt;/em&gt; I want to learn and &lt;em&gt;why&lt;/em&gt; feels nice.
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Do I want my exploration of &lt;strong&gt;[subject]&lt;/strong&gt; to be free-flowing (i.e., learning, exploring, discovering as I go), or would I prefer more guidance?&lt;/span&gt;
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Which of my &lt;a href=&quot;https://keenanpayne.com/practices&quot; title=&quot;Turning activities into practices&quot;&gt;practices&lt;/a&gt; am I hoping to engage by learning more about &lt;strong&gt;[subject]&lt;/strong&gt;?&lt;/span&gt;
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What might more knowledge about &lt;strong&gt;[subject]&lt;/strong&gt; help with? Are there any relevant projects that would benefit?&lt;/span&gt;
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Is there any outcome that I am striving to achieve by learning more about &lt;strong&gt;[subject]&lt;/strong&gt;?&lt;/span&gt;
&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What resources do I already own or have I already collected that might serve as a jumping-off point for learning more about &lt;strong&gt;[subject]&lt;/strong&gt;?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;How do you decide what to learn?&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Would you travel to North Korea?</title>
		<link href="https://keenanpayne.com/travel-to-north-korea/"/>
		<updated>Thu, 27 Jan 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/travel-to-north-korea/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/travel/north-korea.jpg&quot; alt=&quot;The flats of Pyongyang, as photographed from the Juche Tower in North Korea&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;The architecture in North Korea is one of many things I find interesting.&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://unsplash.com/photos/3dSv5LXts8A&quot; title=&quot;Photo by Thomas Evans&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Photo by Thomas Evans&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I want to visit North Korea. I anticipate disagreement about this between myself and my parents, so naturally, I tell them. I&#39;m a jokester son like that.&lt;/p&gt;
&lt;p&gt;But no joke, I &lt;em&gt;do&lt;/em&gt; want to visit North Korea. Now, it may not be at &lt;em&gt;the top&lt;/em&gt; of my list for potential travel destinations, but it certainly has a place.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Put simply, if you offer me an all-expenses-paid trip to North Korea right now, I would go with little hesitation.
&lt;/p&gt;
&lt;p&gt;I want to visit North Korea for the same reasons I go anywhere new. I want to exist in new environments, see new landscapes, meet new people, and experience new cultures and ways of living. That&#39;s what I enjoy about traveling.&lt;/p&gt;
&lt;p&gt;And I don&#39;t think this desire has anything to do with fetishizing a group of people who predominantly live under dire circumstances. My heart goes out to the citizens of North Korea. Still, I want to experience what North Korea has to offer—the good and the bad—just as I would anywhere else.&lt;/p&gt;
&lt;p&gt;I understand that visiting North Korea entails operating under tight supervision and well-defined circumstances, which may be why my parents find this desire so problematic. You might say I&#39;ve had a propensity for trouble with and disdain of authority.&lt;/p&gt;
&lt;p&gt;Okay, so perhaps I haven&#39;t always colored within the lines. Perhaps my outsized confidence in talking with people in positions of &amp;quot;authority&amp;quot; came from the countless times I found myself in the principles office or talking with a police officer. These encounters helped me craft my manner of speech and debate, as I became a vigorous defender of my innocence.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Will this confidence hurt me or help me in North Korea?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Just kidding, it won&#39;t hurt me. I think I can keep my trap shut for long enough to stay on the up-and-up. Wait, is &amp;quot;long enough&amp;quot; the entire time I&#39;m there? Huh, that actually might be more difficult than initially planned.&lt;/p&gt;
&lt;p&gt;Anyhow, the point is, I get it. Or, at least, I &lt;em&gt;think&lt;/em&gt; I get why my parents and others in my life would be concerned with me traveling to North Korea. The country has and continues to be a frequent target of vilification in our country, which has shaped our collective perception of it.&lt;/p&gt;
&lt;p&gt;Most importantly, I have people in my life who love me and who care about my safety and for that I&#39;m grateful. I&#39;m sorry when I goad all of you with whatever bullshit is on my mind at the moment. It&#39;s because I love you that you get to see me in all of my snarky glory.&lt;/p&gt;
&lt;p&gt;But I still want to go. I promise I&#39;ll stay quiet, I&#39;ll walk from point A to point B as directed, and I&#39;ll embrace everything that North Korea has to offer.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Acting out of fear</title>
		<link href="https://keenanpayne.com/acting-from-fear/"/>
		<updated>Mon, 17 Jan 2022 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/acting-from-fear/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/mirror/mirror.jpg&quot; alt=&quot;Public domain image of theatrical people looking in mirror&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;In the end, we always find a way to look ridiculous.&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://digitalcollections.nypl.org/items/590d9f10-f033-0132-6114-58d385a7b928&quot; title=&quot;The New York Public Library&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New York Public Library&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;An ongoing refrain for my self-reflection practice is the idea of &amp;quot;purposeful behavior.&amp;quot; Reflecting on what underpins my behavior (e.g., thoughts, actions, motivations, emotions, desires, etc.) helps bridge the gap between my authentic self and my behavior.&lt;/p&gt;
&lt;p&gt;Such reflection has recently drawn me to the subject of fear. Fear and confidence are primordial counterparts that play an outsized role in determining the behavior of most living things. When we feel afraid, we think, believe, and act differently than if we are overflowing with confidence (though exaggerated feelings of self-confidence seem to indicate fear-based roots, in my opinion).&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Fear not only informs how we act, but it informs how we perceive ourselves, others, and the world around us.
&lt;/p&gt;
&lt;p&gt;Fear is what drives much of mainstream media coverage. Fear helps drive financial markets. Fear keeps someone in a safe office job for thirty years while causing another to leave the same job searching for meaningful work. Fear causes us to compare ourselves to others, degrading our sense of self-worth through various societal, cultural, and technological norms. Fear is why people vote, and fear keeps others from voting. Fear is everywhere.&lt;/p&gt;
&lt;p&gt;And while fear seems to inevitably permeate every facet of our world, it&#39;s how fear manifests in my life that has recently caught my attention. I believe that understanding and addressing my own fears will help continue the momentum towards a less fear-based world. Or, perhaps I&#39;m too afraid to tackle significant, societal fear-based issues, and I feel more comfortable reflecting on my life while hiking through the woods.&lt;/p&gt;
&lt;p&gt;I&#39;ve begun questioning the merits of my seemingly obsessive-compulsive desire to fix my hair all of the time. As if passersby may notice a &amp;quot;misplaced&amp;quot; hair on my head. Am I afraid of what others might think of me? Am I afraid of &amp;quot;stacking up&amp;quot; against so many other people in the world? This is a pretty small and trivial instance of how fear might manifest in my life, leading to actions whose roots I have never questioned. Regardless, I now ask, &amp;quot;for whom do I fix my hair?&amp;quot;&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/mirror/face-mirror.jpg&quot; alt=&quot;Actor with a lacquer mirror&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://digitalcollections.nypl.org/items/152dc690-069f-0135-8a59-7b4dfdd030de&quot; title=&quot;The New York Public Library&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New York Public Library&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;With deeper roots, the road of self-reflection takes me to more significant places. During &lt;a href=&quot;https://keenanpayne.com/goodbye-freelancing/&quot;&gt;my sabbatical from freelancing&lt;/a&gt;, I&#39;ve begun digging beneath the behavior which has dominated my career, which seems to manifest primarily from financial fear. My fear of not having enough money has inspired me to move cities, change jobs, take on more projects than I can reasonably manage, and attempt to monetize various &lt;a href=&quot;https://keenanpayne.com/practices/&quot;&gt;practices&lt;/a&gt; in my life. &lt;strong&gt;Money, money, money.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What about this essay that I&#39;m writing and publishing? Have I articulated my thoughts from fear-based roots? Is that act of publishing in-and-of-itself fear-based? Perhaps I&#39;m concerned with how people will perceive me based on what I&#39;ve written, or maybe I fear that nobody will read it at all. I&#39;ve let fear block me from publishing my writing in the past, which led me to begin &lt;a href=&quot;https://keenanpayne.com/publishing-drafts/&quot;&gt;publishing drafts&lt;/a&gt;.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Clarifying what underlies my behavior helps create continuity between my authentic self and my actions.
&lt;/p&gt;
&lt;p&gt;Fear, like confidence or any other emotional state, serves a purpose. Behavior predicated on fear isn&#39;t always a bad thing. Sometimes it can be trivial and other times, hugely beneficial. I just want to ensure that I&#39;m making fear work for &lt;em&gt;me&lt;/em&gt;, not the other way around.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Switching from Android to iPhone after ten years</title>
		<link href="https://keenanpayne.com/switch-from-android-to-iphone/"/>
		<updated>Sun, 26 Dec 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/switch-from-android-to-iphone/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/android-iphone/apple-tech-stack.jpg&quot; alt=&quot;iPhone next to iPad, Apple Watch, and MacBook Air&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;I&#39;m officially all-in on Apple devices&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.instagram.com/visuals_by_marcus/&quot; title=&quot;Visuals by Marcus&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Visuals by Marcus&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I remember getting my first smartphone in 2011 when I was still a senior in High School. It was an HTC Wildfire S, offered by AT&amp;amp;T as a &amp;quot;free&amp;quot; upgrade from whatever flip phone I was currently using (maybe a Motorola Razr, but I can&#39;t remember). Choosing between Android or iOS devices was moot given I couldn&#39;t afford an iPhone and also largely irrelevant; all that mattered to 17-year-old me was finally getting my hands on a smartphone. Thus began my ten-year relationship with Android phones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now, that&#39;s changed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After ten years of Android devices, I&#39;ve made the full leap into the Apple ecosystem after purchasing an iPhone 13 Pro and Apple Watch Series 7.&lt;/p&gt;
&lt;p&gt;I want to briefly document my history with Android and why I decided to make the leap to an iPhone in this article. This will lay the groundwork for further articles, where I document my experience throughout the switch, comparing the different operating systems, devices, and ecosystems.&lt;/p&gt;
&lt;h2 id=&quot;me-and-android&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/switch-from-android-to-iphone/#me-and-android&quot;&gt;Me and Android&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My first smartphone being an Android likely set the course for my hardware preferences more than I would have initially thought. For ten years, I mainly stayed within the Android ecosystem, deviating &lt;em&gt;ever so slightly&lt;/em&gt; as I briefly tried the ill-fated &lt;a href=&quot;https://en.wikipedia.org/wiki/HTC_Windows_Phone_8X&quot;&gt;HTC Windows Phone 8x&lt;/a&gt; back when Windows Phones were still a thing (RIP).&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/android-iphone/htc-wildfire.jpeg&quot; alt=&quot;HTC Wildfire S&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/switch-from-android-to-iphone/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I enjoyed using Android over the years. I typically stuck to devices that provided as much of a &amp;quot;vanilla&amp;quot; Android experience as possible (e.g., Google Pixel and OnePlus phones) since so many Android devices were filled with bloatware and unappealing Android skins. Thankfully, the state of Android skins has improved, although the state of bloatware is still unfortunate, although somewhat moot given the hardware advancements.&lt;/p&gt;
&lt;p&gt;And you know what? I loved using Android phones! They typically offered everything I needed out of a smartphone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Basic functionality—phone, SMS, internet-connectedness
&lt;ul&gt;
&lt;li&gt;(table stakes, obviously)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Robust app ecosystem
&lt;ul&gt;
&lt;li&gt;(although the wild west days of Android apps were a little sketchy and iOS still typically gets preferential treatment from app developers)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Highly configurable operating system
&lt;ul&gt;
&lt;li&gt;(beneficial for power users like me, but possibly detrimental/irrelevant to anyone who doesn&#39;t care)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Affordability for high-end devices
&lt;ul&gt;
&lt;li&gt;(towards the beginning of the smartphone evolution, less towards the present day)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this in mind, purchasing an iPhone never really made sense. I could pay half the price for an Android phone that provided me with almost everything that an iPhone could provide.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  In short, switching from Android to iPhone isn&#39;t something I feel a strong imperative to do, given my satisfaction using Android.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Without an imperative to switch from Android to iPhone, what inspired the change?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;switching-to-iphone&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/switch-from-android-to-iphone/#switching-to-iphone&quot;&gt;Switching to iPhone&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I must admit to my curiosity about using an iPhone for many years. Practicality aside, my inner nerd loves trying out and comparing technology—be that smartphones, video game consoles, etc. I generally don&#39;t take a &amp;quot;fanboy&amp;quot; stance on just about anything, so all technology is open for adoption by yours truly.&lt;/p&gt;
&lt;p&gt;Having never used an iPhone as my daily driver, I&#39;m immensely curious about the iOS experience and how it compares to Android. My curiosity makes me interested in evaluating the merits of the iPhone from a hardware and operating system perspective. I want to know what&#39;s better, what&#39;s worse, and what&#39;s different.&lt;/p&gt;
&lt;p&gt;However, my curiosity extends beyond the novelty of using iOS and comparing it against Android. I&#39;m also curious about the &amp;quot;experience&amp;quot; that Apple offers through the Apple device ecosystem (or walled garden, depending on your perspective).&lt;/p&gt;
&lt;p&gt;Apple prides itself on providing a top-tier experience for people who use their suite of devices. When buying into the Apple ecosystem, interconnectivity and continuity is the name of the game, as each device is supposed to work together seamlessly, providing an enhanced user experience.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I&#39;m curious about the interconnectivity between devices in the Apple ecosystem, given I&#39;m an avid macOS user who owns an Apple TV and iPad Pro.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In retrospect, I suppose it&#39;s a bit funny that I own so many Apple devices while continuing to use an Android phone for so long.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While my commitment to using Android phones amongst so many Apple devices is funny, Apple devices can stand on their own two feet compared to competitors. I haven&#39;t felt too limited using Android over the years, but now that I own an iPhone, I&#39;m curious to see how the interaction between all of my Apple devices is enhanced.&lt;/p&gt;
&lt;h2 id=&quot;onward-to-my-apple-ecosystem&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/switch-from-android-to-iphone/#onward-to-my-apple-ecosystem&quot;&gt;Onward to my Apple ecosystem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;m excited to see how it feels to be fully engrossed in the Apple ecosystem and how using an iPhone day-to-day compares to Android. I&#39;m not expecting a world-shifting experience, but I&#39;m hopeful that the tighter integration between all of my devices as well as the polished iOS operating system overshadow whatever complaints I may have.&lt;/p&gt;
&lt;p&gt;Stay tuned to updates on this nerdy journey by &lt;a href=&quot;https://keenanpayne.com/subscribe&quot;&gt;subscribing to my newsletter&lt;/a&gt; or following me on &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Turning activities into practices</title>
		<link href="https://keenanpayne.com/practices/"/>
		<updated>Wed, 08 Dec 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/practices/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/practices/writing-during-war.jpg&quot; alt=&quot;Low-light photo of railroad tunnel&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://digitalcollections.nypl.org/items/510d47e2-08c6-a3d9-e040-e00a18064a99&quot; title=&quot;The New York Public Library&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New York Public Library&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I&#39;ve begun framing many activities I routinely engage in as &amp;quot;practices.&amp;quot; These activities include yoga, meditation, writing, reading, and so on.&lt;/p&gt;
&lt;p&gt;I find framing these activities as &amp;quot;practices&amp;quot; useful because it best captures my approach towards engaging with them. These are activities that I routinely practice in my day-to-day life because they are intrinsically meaningful to me. I don&#39;t care about getting paid to write; I write because it&#39;s a fun way for me to think, learn, reflect, and share. I&#39;m here for the writing, not for the money.&lt;/p&gt;
&lt;p&gt;Describing an activity as a &amp;quot;practice&amp;quot; also captures my intention with engaging in it, which is as a practitioner. I get out of my practices what I put into them. Through this effort, I experience joy in my practice while learning and growing.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Having an activity so aligned with my values that I feel compelled to do it without an expected outcome is the baseline for qualifying my activities as a practice.
&lt;/p&gt;
&lt;p&gt;I also see my practices as an exercise in meditation; I strive to experience the present moment so fully that any downstream consequence from my practice is irrelevant.&lt;/p&gt;
&lt;p&gt;Whether my blog post receives one comment or one thousand, the focus while I&#39;m writing is on &lt;em&gt;the writing&lt;/em&gt;, not the &lt;em&gt;outcome&lt;/em&gt; from the writing. Would receiving a thousand comments be nice? Yes. But my engagement with writing as a practice goes deeper than whatever external validation I receive from what I&#39;ve written. My focus is on my daily practice of writing, first and foremost.&lt;/p&gt;
&lt;p&gt;I&#39;ve also found that practicing something regularly without expecting an outcome typically provides the most surprising, well, outcomes. Doing without expecting is, by its nature, a recipe for enjoying the present moment and serendipitous results. It also feels like a good way of reducing disappointment from reality not aligning with our expectations.&lt;/p&gt;
&lt;p&gt;I acknowledge that this may be semantic hoop-jumping, but it&#39;s working for me.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What activities in your life are you a practitioner of?&lt;/span&gt;
&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Taking a break from my freelancing career</title>
		<link href="https://keenanpayne.com/goodbye-freelancing/"/>
		<updated>Mon, 06 Dec 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/goodbye-freelancing/</id>
		<content type="html">&lt;p&gt;It feels like just the other day I announced I was &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/&quot;&gt;leaving Asana to pursue freelancing&lt;/a&gt;. Now, almost eighteen months later, I&#39;m taking a break from my freelancing career as I search for the next step on my journey through life.&lt;/p&gt;
&lt;p&gt;Full disclosure, I actually started this sabbatical in September 2021. I&#39;ve been enjoying myself so much that I&#39;ve neglected writing this until now. What can I say? I&#39;ve been enjoying my lack of responsibilities.&lt;/p&gt;
&lt;p&gt;This is a big shift, so I&#39;ll share what I&#39;ve been up to for the past eighteen months, and where I&#39;m headed.&lt;/p&gt;
&lt;h2 id=&quot;where-i&#39;ve-been&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-freelancing/#where-i&#39;ve-been&quot;&gt;Where I&#39;ve been&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fortunately, I&#39;ve had a successful second stint as a freelance web developer. One measure of &amp;quot;success&amp;quot; is that I never had to search for work and instead relied on connections I made throughout my career to find projects and clients. Having a steady stream of leads allowed me to focus on running my business and executing client projects.&lt;/p&gt;
&lt;p&gt;Specifically, I would like to give a shout-out to &lt;a href=&quot;https://www.play.studio/&quot;&gt;Casey Martin&lt;/a&gt;, &lt;a href=&quot;http://www.kelseyaroian.com/&quot;&gt;Kelsey Aroian&lt;/a&gt;, &lt;a href=&quot;https://www.vanessakoch.com/&quot;&gt;Vanessa Koch&lt;/a&gt;, &lt;a href=&quot;https://tonymingo.com/&quot;&gt;Tony Mingo&lt;/a&gt;, &lt;a href=&quot;https://natiko.design/&quot;&gt;Natalia Kowaleczko&lt;/a&gt;, and Michael Spradlin who all helped me find client work during this time. Thank you all so much.&lt;/p&gt;
&lt;p&gt;During the past eighteen months, I&#39;ve completed fifteen client projects. Cranking out this much work wouldn&#39;t have been feasible (or advisable) by myself, so I must express my deepest gratitude to &lt;a href=&quot;https://jaime.one/&quot;&gt;Jaime Hernández&lt;/a&gt;—my friend and closest collaborator—who worked tirelessly with me on countless projects. I&#39;d also like to shout out Nels Andereck and Rob Schneiderman, two friends I met while working at Asana, who I also collaborated with during this time. I&#39;ve loved working with you all.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  On average, I launched a new client&lt;br /&gt;project every 36 days. Whew.
&lt;/p&gt;
&lt;p&gt;Surprisingly, I took home more net income freelancing than working in-house. Comparing these is difficult, as the former requires paying more taxes for self-employment and benefits while the latter provides non-income compensation such as stock options, insurance, and other perks. Nuance aside, the income potential for freelancing provided a delightful surprise.&lt;/p&gt;
&lt;p&gt;I also learned &lt;em&gt;a lot&lt;/em&gt; during the past eighteen months. Working on so many projects with various stakeholders and collaborators, competing priorities, tight deadlines, and requirements forced me to improve all aspects of my professional skillset. I improved my communication, became a project &lt;em&gt;and&lt;/em&gt; people manager, and bolstered my core competencies as a web developer.&lt;/p&gt;
&lt;p&gt;Much of my learning happened as I struggled to communicate with so many people, missed deadlines, improperly prioritized work, and used the wrong tools for the wrong job.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learning through failure is difficult but necessary.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lastly, I worked with several wonderful clients while freelancing. I became connected with collaborators and stakeholders who I now consider friends through our working together. These people were typically patient, communicative, and empathetic, making them great collaborators. It&#39;s hard to ask for a better experience when working with others.&lt;/p&gt;
&lt;h2 id=&quot;looking-forward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-freelancing/#looking-forward&quot;&gt;Looking forward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;m going to take some time over the next year to continue engaging in my &lt;a href=&quot;https://keenanpayne.com/practices/&quot;&gt;daily practices&lt;/a&gt;, cultivate areas of interest, spend time with friends and family, travel, and see where the world takes me.&lt;/p&gt;
&lt;p&gt;Instead of focusing on my actions being a means to a financial end, I&#39;m going to allow them to be the end in and of themselves.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What happens when my focus isn&#39;t on earning money and, instead, on the authentic enjoyment I receive from whatever I&#39;m doing?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;You will doubtlessly see me around these parts as I continue writing and publishing whatever I&#39;m thinking about, learning, or building. Writing is one of my favorite &lt;a href=&quot;https://keenanpayne.com/practices/&quot;&gt;practices&lt;/a&gt; and one where I will continue to invest a great deal of time.&lt;/p&gt;
&lt;p&gt;If you want to stay up-to-date with whatever the hell I&#39;m doing, subscribe to &lt;a href=&quot;https://keenanpayne.com/subscribe&quot;&gt;my newsletter&lt;/a&gt; and get this nonsense delivered straight to your inbox whenever I feel like sending it.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Publishing drafts</title>
		<link href="https://keenanpayne.com/publishing-drafts/"/>
		<updated>Sun, 31 Oct 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/publishing-drafts/</id>
		<content type="html">&lt;p&gt;Publishing content is difficult. Well, that&#39;s not true. In fact, publishing content on the internet is extremely easy—there are countless websites where one can sign up for a &lt;em&gt;free&lt;/em&gt; account and publish just about &lt;em&gt;anything&lt;/em&gt; for the masses to consume. If anything, publishing content couldn&#39;t be easier.&lt;/p&gt;
&lt;p&gt;But I&#39;m not referring to the difficulty of publishing content on the internet, but rather, the cognitive leaps creators jump through while taking a creation from idea to fruition.&lt;/p&gt;
&lt;p&gt;Getting creations from a state of revising to a state of completion is where I&#39;ve struggled the most as a writer. It&#39;s all too easy to fall down the &lt;a href=&quot;https://keenanpayne.com/one-more-thing&quot;&gt;One More Thing&lt;/a&gt; rabbit hole, continually &lt;a href=&quot;https://en.wikipedia.org/wiki/Moving_the_goalposts&quot;&gt;moving the goal posts&lt;/a&gt; as I ferociously edit my work, only to receive diminishing returns.&lt;/p&gt;
&lt;p&gt;Convincing myself that just because improvements &lt;em&gt;can&lt;/em&gt; be made doesn&#39;t mean that they &lt;em&gt;must&lt;/em&gt; be made has been difficult.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  The road to getting something out the door can be littered with endless speed traps, disguised as well-intentioned improvements, convincing us of their importance before we share our creations with the world.
&lt;/p&gt;
&lt;p&gt;In a recent conversation with my life coach, &lt;a href=&quot;https://yogilifecoach.com/&quot;&gt;David Schlussel&lt;/a&gt;, it struck me that an approach I could take towards facilitating my content publishing is to begin sharing drafts of my writing with the public. If I have internal barriers around sharing things I feel are &amp;quot;incomplete&amp;quot; or &amp;quot;not ready,&amp;quot; then I can label them as such and kick them out the door. Perhaps this content will still provide some insight for folks or provide an opportunity for feedback from readers.&lt;/p&gt;
&lt;p class=&quot;-context -notice&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM256 304c13.25 0 24-10.75 24-24v-128C280 138.8 269.3 128 256 128S232 138.8 232 152v128C232 293.3 242.8 304 256 304zM256 337.1c-17.36 0-31.44 14.08-31.44 31.44C224.6 385.9 238.6 400 256 400s31.44-14.08 31.44-31.44C287.4 351.2 273.4 337.1 256 337.1z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Click &lt;a href=&quot;https://keenanpayne.com/type/drafts&quot;&gt;here&lt;/a&gt; to view my currently published drafts.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Publishing drafts feels like a good step in the direction of sharing more content with the world. It provides momentum, which keeps me motivated and engaged, fueling my creativity.&lt;/p&gt;
&lt;p&gt;Here&#39;s to more writing and more publishing!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Lost at Sea</title>
		<link href="https://keenanpayne.com/lost-at-sea/"/>
		<updated>Tue, 26 Oct 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/lost-at-sea/</id>
		<content type="html">&lt;p&gt;For over ten years, I&#39;ve had some semblance of direction, stewarding the ship of my life towards achieving financial security. Not knowing where this might manifest, I followed every lead I could, searching for a paycheck like a drug dog sniffs luggage. Good work, &lt;a href=&quot;https://keenanpayne.com/tags/capitalism&quot;&gt;capitalism&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thirteen years of work and plenty of good luck have helped fill my coffers—food is on the table, rent is covered, and my future contains a decent degree of financial certainty. I&#39;m extraordinarily grateful for this, as my circumstances have allowed me to take a break from my career as a freelance web developer while I pursue different passions.&lt;/p&gt;
&lt;p&gt;Transitioning from the career I&#39;ve had for over a decade has been disorienting, as I&#39;ve found myself with a paradoxical sense of uncertainty in my newfound certainty.&lt;/p&gt;
&lt;p&gt;My uncertainty reminds me of Chuck Noland, the protagonist played by Tom Hanks in the 2000 film &lt;a href=&quot;https://en.wikipedia.org/wiki/Cast_Away&quot;&gt;Cast Away&lt;/a&gt;. In the movie, Noland becomes stranded on an island for four years following a plane crash. He maintains some degree of sanity by remembering his girlfriend, befriending a volleyball, and safeguarding a washed-up package he refuses to open. Upon his rescue, Noland learns that the world has moved on without him, assuming his death following the crash. His girlfriend is married and has a child, he no longer has his volleyball, and he delivers the safeguarded package to its intended recipient. &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/lost-at-sea/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Stripped of what made life meaningful before and after the crash, Noland reaches a crossroads—unsure where to go and what to do.&lt;/p&gt;
&lt;p&gt;With the driving force behind many actions in my life obviated, Noland&#39;s predicament resonates.&lt;/p&gt;
&lt;p&gt;Having boundless enthusiasm and interests makes this transition easier. I&#39;m grateful that I have so many areas where I enjoy spending time. Still, I struggle to avoid a state of ennui, lost on the stranded island of my brain as the motivations fueling my actions fade in and out of view.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What propels me towards action?&lt;br /&gt;Towards what end am I taking action, if any?&lt;br /&gt;Do my actions need an &quot;end&quot;?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;All I can do is continue charting my path forward. I will use this time to explore different facets of my being, spend time with people I love, and continue learning and growing.&lt;/p&gt;
&lt;p&gt;I&#39;m excited to see where life takes me.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;For a quick overview of Cast Away and the ending, I recommend watching &lt;a href=&quot;https://www.youtube.com/watch?v=4dbAKmozCAI&quot;&gt;this&lt;/a&gt;. &lt;a href=&quot;https://keenanpayne.com/lost-at-sea/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Introducing keenanpayne.com v5</title>
		<link href="https://keenanpayne.com/introducing-v5/"/>
		<updated>Fri, 15 Oct 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/introducing-v5/</id>
		<content type="html">&lt;p&gt;Finding the time and energy to work on my personal website has been difficult over the past five years. Between my day-to-day work building websites for others and my desire to spend time away from screens, &lt;a href=&quot;http://keenanpayne.com/&quot;&gt;keenanpayne.com&lt;/a&gt; hasn&#39;t been getting much love. I&#39;ve done an occasional &amp;quot;facelift&amp;quot; here and there, but the underlying aesthetic and technology have remained.&lt;/p&gt;
&lt;p&gt;It&#39;s time for that to change. With the significant amount of free time I have following &lt;a href=&quot;https://keenanpayne.com/goodbye-freelancing/&quot;&gt;my break from freelancing&lt;/a&gt;, client projects are no longer occupying my screen time. Instead, I&#39;m spending time working on my website.&lt;/p&gt;
&lt;p&gt;Over the past few months, I&#39;ve completely rebuilt and redesigned my website. You&#39;re looking at it right now! &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/introducing-v5/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In this article, I discuss my motivations for this project, how I went about executing it, and what&#39;s on the horizon.&lt;/p&gt;
&lt;h2 id=&quot;why-my-website-is-meaningful-to-me&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introducing-v5/#why-my-website-is-meaningful-to-me&quot;&gt;Why my website is meaningful to me&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&#39;ve treated my website as such a trivial thing for so long that committing to spending time rebuilding it required a shift in my mindset. I &lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/&quot;&gt;reflected&lt;/a&gt; on the value my website provides to me—inspiration, challenge, ownership, character, communication—and reaffirmed my interest and dedication to it by doing so.&lt;/p&gt;
&lt;p&gt;While reflecting, I recalled how much I enjoyed working on my website growing up. I spent &lt;em&gt;so much time&lt;/em&gt; tinkering with designs, learning new technology, emulating others, and expressing myself through my passion for coding.&lt;/p&gt;
&lt;p&gt;So, with all of this free time on my hands, why not invest myself in something I&#39;m passionate about and see where it leads me?&lt;/p&gt;
&lt;h2 id=&quot;treating-myself-like-a-client&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introducing-v5/#treating-myself-like-a-client&quot;&gt;Treating myself like a client&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Not only did I require a shift in mindset to begin investing time into my website, but I also needed to shift my approach towards executing personal projects so that I could &lt;em&gt;actually finish them.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I tend to start more projects than I complete, and that has occurred with rebuilding my website a couple of times in the past few years. I would get things off the ground only to lose interest or find myself preoccupied with client projects.&lt;/p&gt;
&lt;p&gt;I wanted to start this project and feel confident that I would follow through with completing it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What did I do?&lt;/strong&gt; I began treating myself like a client.&lt;/p&gt;
&lt;p&gt;Approaching my website as I would a client project required defining the project&#39;s scope of work. Doing so involved agreeing upon deadlines, defining deliverables, sequencing work, creating tasks, and deciding on the minimum viable product.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Without a scope of work, it can be difficult to know when something is &quot;complete.&quot;
&lt;/p&gt;
&lt;p&gt;With a rough scope-of-work drafted, I began working. Knowing what I was personally committed to completing before launching the project helped me keep my eye on the ball and prevented me from chasing shiny objects and obsessing over &amp;quot;imperfection.&amp;quot;&lt;/p&gt;
&lt;p&gt;Staying deliberate and focused saved me time and helped me get the project launched.&lt;/p&gt;
&lt;h2 id=&quot;new-design%2C-new-tech&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introducing-v5/#new-design%2C-new-tech&quot;&gt;New design, new tech&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Below is a side-by-side comparison of my website before and after this redesign. Both sport a minimal aesthetic, which aligns with my design sensibilities (and capabilities). Keeping the design as straightforward as possible helps me focus on core functionality.&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/introducing-v5/before.png&quot; alt=&quot;Screenshot of my website before redesigning it&quot; /&gt;&lt;/figure&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/introducing-v5/after.png&quot; alt=&quot;Screenshot of my website after redesigning it&quot; /&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;I designed the website from the ground up to support light and dark modes. Currently, the color scheme adapts to whatever your operating system is set to, but in the future, I will add a toggle so that folks can choose whichever theme they want.&lt;/p&gt;
&lt;p&gt;Finally, after many wonderful years with Jekyll, I ended up switching to &lt;a href=&quot;https://keenanpayne.com/tags/eleventy&quot;&gt;Eleventy&lt;/a&gt;. Both are excellent &lt;a href=&quot;https://keenanpayne.com/tags/static-site-generators/&quot;&gt;static site generators&lt;/a&gt;, but there are many things Eleventy provides that make it more suitable to how I prefer building websites. The most important of these is the ease of configuring and modifying everything with Eleventy&#39;s JavaScript API.&lt;/p&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;To see more reasons why I switched to Eleventy, read &lt;a href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/&quot;&gt;this&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;moving-forward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introducing-v5/#moving-forward&quot;&gt;Moving forward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My website will always be a work-in-progress. Accepting this helps me take an incremental approach towards making improvements so I can stay engaged with the project over the long haul. Everything doesn&#39;t need to be finished at once; creating phases of work and defining objectives/deliverables for each phase is how I get shit done.&lt;/p&gt;
&lt;p&gt;But &lt;strong&gt;how do I decide what to build first?&lt;/strong&gt; It can be hard to suss out signal from noise when a world of possibilities exist.&lt;/p&gt;
&lt;p&gt;This dilemma underscores why &lt;a href=&quot;https://keenanpayne.com/introducing-v5/#treating-myself-like-a-client&quot;&gt;gaining clarity on the value of spending time building my website&lt;/a&gt; was so important. I&#39;ve been able to use this to define high-level goals for my website to guide my attention and intention.&lt;/p&gt;
&lt;p&gt;At the current moment, my goals are to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Providing myself with a way to effortlessly share content with the world in various mediums and contexts.&lt;/li&gt;
&lt;li&gt;Encourage communication and engagement with content that I&#39;m sharing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Being paralyzed by choice is real, so getting clear with my highest-level goals helps guide my actions.&lt;/p&gt;
&lt;h2 id=&quot;tell-me-what-you-think&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introducing-v5/#tell-me-what-you-think&quot;&gt;Tell me what you think&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There&#39;s nothing I would love more than to hear feedback from folks who visit my website.&lt;/p&gt;
&lt;p&gt;If you have any feedback or suggestions on my website, please don&#39;t hesitate to &lt;a href=&quot;https://keenanpayne.com/contact/&quot;&gt;reach out&lt;/a&gt; through email or on &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;Twitter&lt;/a&gt; to let me know what you think.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;That is, if you&#39;re looking at this on or around the date of publishing. &lt;a href=&quot;https://keenanpayne.com/introducing-v5/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Hello, scarcity mindset</title>
		<link href="https://keenanpayne.com/hello-scarcity-mindset/"/>
		<updated>Thu, 07 Oct 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/hello-scarcity-mindset/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/scarcity-mindset/tunnel.jpg&quot; alt=&quot;Low-light photo of railroad tunnel&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://unsplash.com/photos/zE6ivbPzPGU&quot; title=&quot;Photo by Florian van Duyn on Unsplash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Photo by Florian van Duyn on Unsplash&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The scarcity mindset frames our current circumstances as &amp;quot;not enough.&amp;quot; It&#39;s feast or famine as a freelancer, so you better eat while you can. I fell victim to the scarcity mindset while freelancing, which caused me to accept more projects than I could personally handle. Doing so caused ripple effects throughout my entire life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I struggled to push myself outside of my comfort zone.&lt;/li&gt;
&lt;li&gt;I became &lt;em&gt;way&lt;/em&gt; too profit-driven.&lt;/li&gt;
&lt;li&gt;Managing client projects became more complicated.&lt;/li&gt;
&lt;li&gt;Hiring people required me to manage their work and increased my financial complexities.&lt;/li&gt;
&lt;li&gt;I couldn&#39;t fully invest myself in a single project because I was spread too thin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a result of all of this, I got burnt out. This led to many bouts with anxiety; my body felt worse; and countless servings of stress, overwhelm, and unhappiness.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  As a freelancer, if you&#39;re not working, you&#39;re not eating. Lacking a regular paycheck can make the future seem uncertain, especially for anyone who has been through a client drought.
&lt;/p&gt;
&lt;p&gt;Still, we should all be aware of the tendency to fall into a scarcity mindset. This awareness can help with mindful decision-making.&lt;/p&gt;
&lt;p&gt;I&#39;d be curious to know how I would feel if I were to do &lt;a href=&quot;https://keenanpayne.com/goodbye-freelancing/&quot;&gt;another year of freelancing&lt;/a&gt; and try keeping my scarcity mindset in check.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How would reducing the hustle and raising my investment in each project change how I feel?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Would I be more satisfied with what I&#39;ve done and provide myself with room to grow?&lt;/strong&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Introduction to Eleventy (11ty)</title>
		<link href="https://keenanpayne.com/11ty-eleventy-introduction/"/>
		<updated>Sun, 03 Oct 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/11ty-eleventy-introduction/</id>
		<content type="html">&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/eleventy-introduction/homepage.png&quot; alt=&quot;Screenshot of Eleventy homepage&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://11ty.dev/&quot; title=&quot;https://11ty.dev&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://11ty.dev&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy&lt;/a&gt; (11ty) is a static site generator (SSG) built on top of &lt;a href=&quot;https://nodejs.org/en/&quot;&gt;Node.js&lt;/a&gt; that compiles static website assets (i.e., HTML files) using content inside of various &amp;quot;source&amp;quot; files (e.g., markdown, templates, JSON, etc.). Eleventy provides a platform that helps web developers create organized and &lt;a href=&quot;https://en.wikipedia.org/wiki/Don&#39;t_repeat_yourself&quot;&gt;DRY&lt;/a&gt; codebases through its support for &lt;a href=&quot;https://www.11ty.dev/docs/languages/&quot;&gt;templating languages&lt;/a&gt;, a robust &lt;a href=&quot;https://www.11ty.dev/docs/templates/&quot;&gt;templating engine&lt;/a&gt;, flexible &lt;a href=&quot;https://www.11ty.dev/docs/data/&quot;&gt;data models&lt;/a&gt;, and &lt;a href=&quot;https://www.11ty.dev/docs/plugins/&quot;&gt;plugins&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Eleventy is designed as a &lt;a href=&quot;https://www.11ty.dev/docs/glossary/#zero-config&quot;&gt;zero-configuration&lt;/a&gt; platform that provides as much or as little overhead as you would like. This preference for simplicity, combined with a philosophy of tooling agnosticism, offers a flexible and empowering developer experience.&lt;/p&gt;
&lt;p&gt;Large websites won&#39;t only benefit from what Eleventy offers. Unless you are building the most straightforward low-maintenance websites, odds are that some aspect of Eleventy or another SSG will improve your workflow and codebase.&lt;/p&gt;
&lt;h2 id=&quot;ssg-ecosystem&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#ssg-ecosystem&quot;&gt;SSG Ecosystem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Eleventy exists in an expansive ecosystem of SSGs, alongside &lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt;, &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, &lt;a href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt;, &lt;a href=&quot;https://www.gatsbyjs.org/&quot;&gt;Gatsby&lt;/a&gt;, and &lt;a href=&quot;https://jamstack.org/generators/&quot;&gt;so many others&lt;/a&gt;. In fact, Eleventy might seem like an underdog among these. However, its frequency of updates and thriving community provide me with confidence in using it for my projects.&lt;/p&gt;
&lt;p&gt;I don’t plan on covering the similarities and differences between different SSGs in this article. Instead, here&#39;s a list of resources you can consult if you&#39;re evaluating this type of software.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/evaluating-static-site-generators&quot;&gt;Defining metrics that help with static site generator evaluation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ample.co/blog/questions-to-ask-before-choosing-a-static-site-generator&quot;&gt;Questions to ask before choosing a static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jamstack.org/generators/&quot;&gt;A List of Static Site Generators for Jamstack Sites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.takeshape.io/articles/jekyll-alternatives-the-benefits-to-javascript-static-site-generators/&quot;&gt;Jekyll alternatives: The benefits to JavaScript static site generators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/comparing-static-site-generator-build-times/&quot;&gt;Comparing Static Site Generator Build Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.aleksandrhovhannisyan.com/blog/eleventy-the-good-the-bad-and-the-possum/&quot;&gt;11ty: The Good, the Bad, and the... Possum?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;my-take&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#my-take&quot;&gt;My Take&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;I use Eleventy for &lt;em&gt;a lot&lt;/em&gt; of projects&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ve used different SSGs in the past, predominantly Jekyll and Hugo. While I enjoyed the ubiquity of Jekyll and the speed of Hugo, what keeps me coming back to Eleventy is its developer experience when used across a spectrum of web projects. About 90% of the projects I work on right now can be built with Eleventy, making it my go-to software for building websites of all shapes and sizes.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  The most important advice I would give those choosing software for &lt;em&gt;any&lt;/em&gt; project is to be mindful about what you’re choosing and why.
&lt;/p&gt;
&lt;p&gt;Understand what problems you’re solving, determine which of these are most important, then choose a piece of software that solves your most important problems in an ideal way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you&#39;re choosing the right tool for the job or at least &lt;em&gt;trying&lt;/em&gt; to, that&#39;s what matters.&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Don&#39;t buy into the hype of software X, paradigm Y, or language Z, and instead, focus on understanding your problem domain and using that as your north star.
&lt;/p&gt;
&lt;h2 id=&quot;getting-started&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#getting-started&quot;&gt;Getting Started&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I plan on writing more about how to use Eleventy for web development projects, but you needn&#39;t wait for me to shill my articles when there are so many excellent resources available.&lt;/p&gt;
&lt;h4 id=&quot;eleventy-documentation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#eleventy-documentation&quot;&gt;&lt;a href=&quot;https://www.11ty.dev/docs/getting-started/&quot;&gt;Eleventy documentation&lt;/a&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Documentation is &lt;em&gt;always&lt;/em&gt; my first stop when learning new software. I start by seeing how the documentation advises I get started and then reach for external resources as needed.&lt;/p&gt;
&lt;p&gt;Overall, I think the Eleventy documentation is great. The introductory &amp;quot;Getting Started&amp;quot; resource that I&#39;ve included hits core concepts at a high level, making it suitable for folks who already have decent technical know-how with similar software.&lt;/p&gt;
&lt;h4 id=&quot;learn-eleventy-from-scratch&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#learn-eleventy-from-scratch&quot;&gt;&lt;a href=&quot;https://piccalil.li/course/learn-eleventy-from-scratch/&quot;&gt;Learn Eleventy From Scratch&lt;/a&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;This course—formerly paid but now free—is currently the best resource for learning how to use Eleventy from the ground up.&lt;/p&gt;
&lt;p&gt;Taught by &lt;a href=&quot;https://twitter.com/piccalilli_&quot;&gt;Andy Bell&lt;/a&gt;, this course teaches you the ins and outs of Eleventy without glossing over the more minor details.&lt;/p&gt;
&lt;h4 id=&quot;beginner&#39;s-guide-to-eleventy&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/11ty-eleventy-introduction/#beginner&#39;s-guide-to-eleventy&quot;&gt;&lt;a href=&quot;https://www.tatianamac.com/posts/beginner-eleventy-tutorial-parti/&quot;&gt;Beginner&#39;s Guide to Eleventy&lt;/a&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;This tutorial, written by &lt;a href=&quot;https://twitter.com/TatianaTMac&quot;&gt;Tatiana Mac&lt;/a&gt;, is another excellent resource for anybody getting started with Eleventy. The first part of the series covers how Eleventy fits into the world of SSGs, while the second part goes incredibly deep on installing the software.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Walking quickly, then slowly</title>
		<link href="https://keenanpayne.com/walking-quickly-then-slowly/"/>
		<updated>Mon, 06 Sep 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/walking-quickly-then-slowly/</id>
		<content type="html">&lt;p&gt;Boy, do I walk fast. It&#39;s as if the only thing that matters is getting from point A to point B. I feel built to move quickly. My long legs give me a stride designed for efficiency. Efficiency to... &lt;em&gt;walk&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I&#39;m not aware of my stride most of the time. No, I&#39;m just doing my thing without a care in the world. It&#39;s usually on lackadaisical walkabouts where I find myself questioning the speed at which I propel myself through the world. I slow down; I feel weird.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why do I walk so fast?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Moving slowly is nice. I enjoy the stroll, and I notice my body loosen up. Now I&#39;m going with the flow.&lt;/p&gt;
&lt;p&gt;I embrace my saunter, and in doing so, I notice the gait of others. Observing my fast-moving compatriots, I feel outpaced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Am I getting left behind?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I become distracted—lost in thought or looking at my phone—and once again, I&#39;m moving full-speed ahead. It must be a pattern.&lt;/p&gt;
&lt;p&gt;Resettled in my stride, I begin contemplating my subconscious rush. Time doesn&#39;t permit a full divulgence of exactly where and how this manifests, but needless to say, it&#39;s a frequent occurrence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why am I rushing?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An acute awareness of my mortality likely plays a role in my subconscious desire to move quickly. I have so many things I want to accomplish and experience in my life. Thinking about it, I suppose these are my most significant sources of anxiety.&lt;/p&gt;
&lt;p&gt;But I cannot dodge mortality, so when it&#39;s all said and done, there will always be the possibility of &lt;em&gt;more&lt;/em&gt;. Perhaps my focus can shift from what I&#39;m doing to how I&#39;m doing it. I want to enjoy the journey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aha!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If there is a figurative scoreboard for my life, I&#39;m in charge of it. Why stress out by rushing, only to miss the joy and serenity of my journey?&lt;/p&gt;
&lt;p&gt;Whether a stroll through my neighborhood or my next big project, sustained momentum will get me to where I want to be.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>How do we address the monopolization of web browsers?</title>
		<link href="https://keenanpayne.com/web-browser-monopolization/"/>
		<updated>Fri, 30 Jul 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/web-browser-monopolization/</id>
		<content type="html">&lt;p&gt;I recently stumbled upon an interesting Twitter thread by &lt;a href=&quot;https://twitter.com/lapcatsoftware&quot;&gt;Jeff Johnson&lt;/a&gt; on the state of corporate monopolization of the web, Safari and Chrome, web browser complexity, and fostering competition in the web browser landscape.&lt;/p&gt;
&lt;p&gt;I have a different perspective on many points he discussed that I want to share in the pursuit of advancing this discussion.&lt;/p&gt;
&lt;p class=&quot;-context -notice&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM256 304c13.25 0 24-10.75 24-24v-128C280 138.8 269.3 128 256 128S232 138.8 232 152v128C232 293.3 242.8 304 256 304zM256 337.1c-17.36 0-31.44 14.08-31.44 31.44C224.6 385.9 238.6 400 256 400s31.44-14.08 31.44-31.44C287.4 351.2 273.4 337.1 256 337.1z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;Jeff, the author of the Twitter thread that I responded to, has deleted his thread because of vicious responses from folks. I find this unfortunate, as sincerely-held opinions, however disagreeable they might be, provide a valuable perspective as we attempt to understand the state of the world and address its issues.&lt;br /&gt;&lt;br /&gt;I&#39;m not keeping this essay published to draw negative attention towards Jeff or his opinions, but rather to advance the discussion that he started. However, I&#39;m happy to unpublish or remove the original quotes if requested.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;web-browser-complexity&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/web-browser-monopolization/#web-browser-complexity&quot;&gt;Web browser complexity&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class=&quot;tweet&quot; data-dnt=&quot;true&quot;&gt;
  &lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
    The web has massive feature bloat. It&#39;s a privacy and security nightmare.
&lt;/p&gt;&lt;p&gt;I personally think we should abolish JavaScript and not allow arbitrary remotely loaded code to execute on our computers.&lt;/p&gt;
&lt;p&gt;&amp;quot;I want web sites to do everything a native app can do&amp;quot; is a suicidal mistake.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;cite&gt;Jeff Johnson (@lapcatsoftware)&lt;br /&gt;July 30, 2021&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;m not convinced that web browsers having more functionality is problematic. Functionality increases complexity, but having a full-featured web is democratizing, allowing developers to build websites and applications for devices without worrying about platform-specific constraints. I believe we can enjoy a feature-rich internet while acknowledging that this comes at a cost—privacy, security, and competition—all of which we need to address.&lt;/p&gt;
&lt;p&gt;What I love about being a web developer is the ubiquity of my creations. Building websites and web applications allows me to build once and ship everywhere, so long as web browsers provide a consistent user experience (hence the issue between web developers and Safari).&lt;/p&gt;
&lt;p&gt;Reducing functionality on the internet to increase privacy, security, and browser competition comes at a cost. In this world, instead of building web applications for Apple devices using HTML, CSS, and JavaScript, am I forced to use Apple’s programming language and IDE, Swift and Xcode, if I want to build a full-featured application? Doesn’t this seem antithetical to the argument against corporate monopolies?&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Instead of building web applications at the behest of our browser overlords, we&#39;re building native applications at the behest of our device overlords.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Furthermore, I don&#39;t want to build different applications for different platforms.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;web-browser-competition&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/web-browser-monopolization/#web-browser-competition&quot;&gt;Web browser competition&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class=&quot;tweet&quot; data-dnt=&quot;true&quot;&gt;
  &lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
    The more features that are added to the web, the less browser competition is possible! This is essential to recognize.
&lt;/p&gt;&lt;p&gt;And Google knows it! That&#39;s the whole point.&lt;/p&gt;
&lt;p&gt;Who can keep up with Google? Mozilla can&#39;t. Apple can&#39;t. Even Microsoft threw in the towel and adopted Chromium.&lt;/p&gt;
&lt;p&gt;Imagine a small company trying to write their own web browser from scratch nowadays. It&#39;s just not possible! The web is so complex, there&#39;s no choice but to adopt one of the few existing browser engines: Chromium, WebKit, Gecko. That&#39;s it. The competitive landscape is bleak.&lt;/p&gt;
&lt;p&gt;&amp;quot;Everyone has to adopt Chromium&amp;quot; is exactly Google&#39;s plan.&lt;/p&gt;
&lt;p&gt;Who controls the dominant browser engine controls the web.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Jeff Johnson (@lapcatsoftware)&lt;br /&gt;July 30, 2021&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Should the automotive industry have remained stagnant, reducing complexity and functionality for the sake of increased competition? There&#39;s a high barrier of entry for automobile manufacturing, but it&#39;s not an industry without competition.&lt;/p&gt;
&lt;p&gt;What about regulations placed on the automotive industry over the past century that benefit consumers? Regulations increase overhead for manufacturers but improve safety and reliability for consumers. How do you balance that trade-off?&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;How do you balance the trade-off of regulations on companies and industries to increase competition, promote innovation, and respect the needs of consumers in the industry?&lt;br /&gt;How do we incentivize tech companies like Google and Apple to continue investing in web browsers in a way that benefits both the company &lt;em&gt;and&lt;/em&gt; the consumer?&lt;br /&gt;How can the Justice Department&#39;s antitrust powers increase competition in the web browser market?&lt;br /&gt;What if the paradigm shifts to web browsers being &#39;sponsored&#39; by corporations?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Regardless of how we get there, I think the incentive structure for corporate involvement in web browser development needs to change. Google and Apple have different incentive structures, which is evident by their choices for Chromium and Safari, respectively.&lt;/p&gt;
&lt;p&gt;We need incentive structures that allow corporations to meet their goals, but not at the expense of the consumer (e.g., privacy, choice of browser) or web developers through unilateral decision-making for the progression of web browsers (we see you, Google).&lt;/p&gt;
&lt;h2 id=&quot;oppenness-on-the-web&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/web-browser-monopolization/#oppenness-on-the-web&quot;&gt;Oppenness on the web&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class=&quot;tweet&quot; data-dnt=&quot;true&quot;&gt;
  &lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
    In a sense, there&#39;s no point in even having &quot;web standards&quot; anymore.
&lt;/p&gt;&lt;p&gt;Web standards theoretically allow &lt;em&gt;anybody&lt;/em&gt; to implement a browser engine. But if the &amp;quot;standards&amp;quot; are sufficiently huge, then practically &lt;em&gt;nobody&lt;/em&gt; can implement a browser engine.&lt;/p&gt;
&lt;p&gt;The web is not &amp;quot;open&amp;quot; if nobody new can write a web browser engine. It&#39;s the illusion of openness.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;cite&gt;Jeff Johnson (@lapcatsoftware)&lt;br /&gt;July 30, 2021&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On the subject of &amp;quot;openness&amp;quot; on the web, just because I cannot reasonably build a web browser that&#39;s up-to-date with the W3C standards does not mean that the web is not still &amp;quot;open&amp;quot;. It simply means the barrier of entry is so high that I might want to focus my energy elsewhere.&lt;/p&gt;
&lt;p class=&quot;-context -question&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-prefix=&quot;fas&quot; data-icon=&quot;question-circle&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M256 31.1c-141.4 0-255.1 93.13-255.1 208c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.38-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-208S397.4 31.1 256 31.1zM249.1 352C235.4 352 224 340.6 224 326S235.4 300 249.1 300c14.63 0 26 11.38 26 26S264.6 352 249.1 352zM307.7 235.4l-38.33 23.13v1.652c0 10.74-9.168 19.83-20 19.83c-10.83 0-20-9.088-20-19.83V246.1c0-6.609 3.332-13.22 10-17.35l47.5-28.09C292.7 198.2 296 192.4 296 185.8c0-9.914-8.334-18.17-18.33-18.17H234.3c-10 0-18.33 8.26-18.33 18.17c0 10.74-9.166 19.83-20 19.83S176 196.6 176 185.8C176 153.6 201.8 128 234.3 128h43.33C310.2 128 336 153.6 336 185.8C336 205.7 325.2 224.7 307.7 235.4z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;What are the principles and features of an &#39;open&#39; and a &#39;closed&#39; web?&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;There are aspects of the web that blur the lines between an open and closed ecosystem. Features for web languages like HTML, CSS, and JavaScript are often implemented, if not outright conceived, by corporations, independent of the committees charged with steering their direction. Google is the primary offender for blurring these lines on the web, as they implement platform-specific features and functionality for common web languages. This makes it difficult for everyone—the W3C, web browser creators, and web developers—to foster an open ecosystem on the web and create shared buy-in on which features are a priority.&lt;/p&gt;
&lt;p&gt;I’m not entirely sure how you solve the problem of Google unilaterally making decisions that impact so much of the web. Some of their feature implementations empower developers. Others are terrible, adding proprietary technology whose goal is to benefit the company, like AMP.&lt;/p&gt;
&lt;p&gt;I would be remiss if I didn&#39;t mention some impactful web technologies that originated from tech companies. JavaScript was created at Netscape, TypeScript by Microsoft, Go by Google. Discussing the nuance of how these technologies originated, the incentive structures that drove their development, and the relative “openness” of their development and maintenance would be valuable to discuss, but I&#39;ll save that for another day.&lt;/p&gt;
&lt;h2 id=&quot;looking-forward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/web-browser-monopolization/#looking-forward&quot;&gt;Looking forward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I’m not saying that the web is perfect. There is massive room for improvement for feature parity, security, fostering an open ecosystem, creating incentive structures that benefit corporations and consumers, and more. However, saying &amp;quot;there&#39;s no point in even having &#39;web standards&#39;&amp;quot; is too nihilistic for me.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  We have to be flexible and learn to grow, adapt and strive for constant improvement. This is as true for the internet as it is for everything else in life.
&lt;/p&gt;
&lt;p&gt;Still, I think this is an interesting discussion to have as we fight against corporate monopolization of the internet. There are many problems and many approaches to solving those problems, and I’m grateful to folks like Jeff fostering this discussion.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Searching for fulfillment by switching careers</title>
		<link href="https://keenanpayne.com/fulfillment-careers/"/>
		<updated>Mon, 17 May 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/fulfillment-careers/</id>
		<content type="html">&lt;p&gt;&lt;em&gt;I&#39;ve decided to begin publishing conversations between myself and others—with their permission—when I believe the conversations we have might be valuable for others. I&#39;m happy to respond to questions, although I can&#39;t promise I&#39;ll respond to all of them.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you would like to reach out, you can do so &lt;a href=&quot;https://keenanpayne.com/contact&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;mailbox&quot;&gt;
  &lt;span class=&quot;mailbox-icon&quot;&gt;&lt;/span&gt;
  &lt;p&gt;Hey Keenan! It&#39;s Brad, from Default Prime. Long time no see!&lt;/p&gt;
  &lt;p&gt;You willing to chat with me about software/web development? I might pivot careers because I have felt stagnant in my current field (copywriting) for a while. I&#39;m less concerned with how to learn the ropes (spent a few months self-teaching myself HTML, CSS, and JavaScript basics) and more curious, before I invest more time learning, about your feelings of fulfillment.&lt;/p&gt;
  &lt;p&gt;As a copywriter, at the end of the day, I feel like a salesman that uses words. Without writing a novel, I&#39;d like to do something that lets me be more creative and helpful, and work in service of something more than shareholder profit. Wishful thinking—I know!&lt;/p&gt;
  &lt;p&gt;I&#39;m sure you&#39;ve pondered this at Asana and as a freelancer. Before I invest more time in learning development, I would value your perspective if you have the time for an email or two. If not, don&#39;t sweat it. Lemme know and I can reach out another time.&lt;/p&gt;
  &lt;p&gt;All the best,&lt;br /&gt;
  Brad&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Hey Brad! Wow, long time no see indeed. I&#39;m so happy to hear from you. It&#39;s been forever.&lt;/p&gt;
&lt;p&gt;I&#39;m willing to talk with anyone about anything, so you&#39;re in good hands so long as what I say provides value to you. I&#39;ll warn you, though, I&#39;m a verbose writer and your email inspired me, so I went all-in sharing my thoughts with you.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You&#39;ll want to read this when you have a few minutes. Grab a nice drink.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;searching-for-fulfillment-at-asana&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/fulfillment-careers/#searching-for-fulfillment-at-asana&quot;&gt;Searching for fulfillment at Asana&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fulfillment is a subject that&#39;s been on my mind a lot since graduating from college. Perhaps it&#39;s less surprising since I believe you and I are roughly the same age—I&#39;m 27 currently—and we&#39;re both creative individuals.&lt;/p&gt;
&lt;p&gt;While working at Asana, I frequently contemplated &lt;mark&gt;what I was doing, who I was doing things for, who I was, and what I was putting into the world&lt;/mark&gt;. This coincided with, and perhaps informed, a great deal of existential dread. These feelings first arose due to boredom I experienced while working. By the time I got my job at Asana, I had been building websites professionally for over five years, so I had a short period of time to enjoy the &amp;quot;newness&amp;quot; of my job (this relates to a concept called the &amp;quot;hedonic treadmill&amp;quot;).&lt;/p&gt;
&lt;p&gt;I eventually became a person that did a particular type of web development at the company and was essentially &amp;quot;typecast&amp;quot; in my role. I&#39;ll admit that I could have done more to alleviate this point of frustration, but that realization only came from self-reflection after leaving the company.&lt;/p&gt;
&lt;p&gt;In this complacency, I felt unfulfilled in my work and jaded towards my professional circumstances. I saw myself as a cog in a machine and I was dissatisfied with what I was spending my time doing. These feelings coincided with the first time that I reflected on capitalism. I began seeing my work as merely a means to an end for corporations to generate a profit.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I got depressed, smoked a lot of weed, and saw something I used to love doing—web development—as a burden, rather than an opportunity or passion.
&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;I was discontent with my career.&lt;/mark&gt; Asana offered a lot of flexibility and wonderful perks. Still, not having control over what projects I was working on, the circumstances surrounding those projects, and having no path for professional growth made me decide to start freelancing.&lt;/p&gt;
&lt;p&gt;I hypothesized that the freedom I would gain from self-employment would provide me with circumstances to have a fulfilling career.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It did, and it didn&#39;t.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;freelancing-is-more-fulfilling%2C-to-an-extent&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/fulfillment-careers/#freelancing-is-more-fulfilling%2C-to-an-extent&quot;&gt;Freelancing is more fulfilling, to an extent&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Freelancing alleviated many pains I experienced while working at Asana.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;I can take time away from work whenever I want&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;So long as there aren&#39;t projects I&#39;m committed to working on.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I can choose what projects I work on&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;This allows me to choose projects that encourage me to learn new things.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I have greater control over deadlines&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Clients can still be obstinate about deadlines, but I get to decline projects with deadlines I don&#39;t want to deal with.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I make more money now than I did at Asana&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;I really didn&#39;t expect this to be the case. I also pay more taxes, so it&#39;s a double-edged sword.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;mark&gt;If you had told me five years ago that I could be self-employed under these circumstances, I wouldn&#39;t have believed it.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Even with all of this, I&#39;m &lt;em&gt;still&lt;/em&gt; unfulfilled. What I&#39;m doing, who I&#39;m doing things for, who I am, and what I&#39;m putting into the world are all questions that I contemplate regularly and I&#39;ve yet to answer satisfactorily.&lt;/p&gt;
&lt;p&gt;I&#39;m still a cog in a machine, but I&#39;m a cog that has slightly more freedom—both in terms of how I get to organize my work and financially—than other cogs.&lt;/p&gt;
&lt;h2 id=&quot;searching-for-fulfillment&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/fulfillment-careers/#searching-for-fulfillment&quot;&gt;Searching for fulfillment&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Of course, like any good scientist, I have new hypotheses as I search for answers to these questions. My latest iteration on an &amp;quot;answer&amp;quot; to this question is that &lt;mark&gt;it&#39;s not what I do, but who I serve&lt;/mark&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I want to serve people, not corporations.&lt;/li&gt;
&lt;li&gt;Sometimes I want to be the &amp;quot;means to an end,&amp;quot; while at other times I want to be both the &amp;quot;means&amp;quot; and the &amp;quot;end&amp;quot;.&lt;/li&gt;
&lt;li&gt;I want to act out of desire, not obligation.&lt;/li&gt;
&lt;li&gt;I want to utilize my creativity as I experience it, not relegate it to my &amp;quot;free time&amp;quot; (&lt;em&gt;don&#39;t get me started on the concept of &amp;quot;free&amp;quot; time&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#39;ve thought about switching careers wholesale in the past, and I think it would provide some relief, but only for a period of time (back on the treadmill). I believe fulfillment comes from something deeper, aligning my day-to-day actions with my values.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I am fulfilled when my actions are a genuine expression of who I am, not something born from obligation.
&lt;/p&gt;
&lt;p&gt;I ask myself questions as a form of self-reflection. I enjoy capturing and elaborating on my thoughts over time. Here are some questions I&#39;ve asked myself related to this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What do I value?&lt;/li&gt;
&lt;li&gt;Who do I want to serve in the world and why?&lt;/li&gt;
&lt;li&gt;What do I currently do that is fulfilling (/exciting /interesting, etc.)?&lt;/li&gt;
&lt;li&gt;What do I currently do that is unfulfilling (/unexciting /uninteresting, etc.)?&lt;/li&gt;
&lt;li&gt;What impact do I want to have on the world?&lt;/li&gt;
&lt;li&gt;If I could drop everything and do one thing right now, what would it be?&lt;/li&gt;
&lt;li&gt;How might I change my current circumstances to make things more fulfilling in the short term?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;will-switching-careers-open-the-doors-of-fulfillment-to-you%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/fulfillment-careers/#will-switching-careers-open-the-doors-of-fulfillment-to-you%3F&quot;&gt;Will switching careers open the doors of fulfillment to you?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Probably not if you want to work in service of something other than shareholder profit. However, if switching careers allows you to authentically express yourself in a way that aligns with your values, who you want to serve, and the impact you want to have on the world, then it may be the perfect choice.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Create first, plan later</title>
		<link href="https://keenanpayne.com/creating-planning/"/>
		<updated>Wed, 31 Mar 2021 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/creating-planning/</id>
		<content type="html">&lt;p&gt;As a creative person, I find an abundance of inspiration in every nook and cranny of life. I call these instances of inspiration my &amp;quot;muses&amp;quot;, a word originating from Greek and Roman mythology where each of the nine daughters of Zeus and Mnemosyne presides over the arts and sciences.&lt;/p&gt;
&lt;p&gt;The muse for a creative can serve as a wellspring from which all manner of inspiration pours, fueling the engine of creativity. My career as a web developer was made possible by this very engine, starting with only a moment of serendipitous inspiration while discovering programming at an early age. I wasn&#39;t aware at the time that I was fostering a skillset that would serve as the backbone for my career; I was simply inspired to learn and create.&lt;/p&gt;
&lt;p&gt;The muse can also be an albatross, adding undue weight to the creative&#39;s shoulders who fails to harness its potential for creative output. I&#39;m familiar with carrying such weight, having most of my creative endeavors amount to little more than a collection of dust. It&#39;s a weight that, perhaps needlessly, reinforces many negative feelings in my life.&lt;/p&gt;
&lt;h2 id=&quot;inspiration-gone-stagnant&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/creating-planning/#inspiration-gone-stagnant&quot;&gt;Inspiration gone stagnant&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I’ve become more aware of my relationship with my muses as I attempt to engage with a muse of the past, one that caught my attention so feverishly that my imagination ran wild at the realm of endless possibilities that lie ahead once I begin pursuing it. Well, &lt;em&gt;should&lt;/em&gt; I begin pursuing it.&lt;/p&gt;
&lt;p&gt;What sparked my inspiration was &lt;a href=&quot;https://roamresearch.com/&quot;&gt;Roam Research&lt;/a&gt;, a writing tool for networked thought. Roam has drastically changed my approach towards writing, thinking, and learning. I wanted to share my excitement with the world by writing about what Roam has allowed me to do and how others can use it in their own lives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I’ve captured over 50 ideas for potential articles I could write to date, but I’ve yet to publish one. It’s been roughly eight months since my initial stroke of inspiration.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I reach for one of the &lt;em&gt;many&lt;/em&gt; writing prompts that I&#39;ve captured, determined to make progress on it. While I sit at my desk, I notice my inability to put pen to paper, to breathe life into what feels like a lifeless idea, and summon the creative forces necessary to do any more than contemplate how I &lt;em&gt;might&lt;/em&gt; do something, rather than actually &lt;em&gt;do&lt;/em&gt; it. I stop, push my desire to engage with this idea to the back of my mind, and find something else to do.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/muses/lightbulbs.png&quot; alt=&quot;Inspiration fades while stagnation prevails&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;Inspiration fades while stagnation prevails&lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;noticing-and-questioning-the-pattern&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/creating-planning/#noticing-and-questioning-the-pattern&quot;&gt;Noticing and questioning the pattern&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I’m intimately familiar with this experience, discovering something so inspiring that I want to drop everything to do it, only to fall into a pattern of procrastination that leads to eventual disinterest.&lt;/p&gt;
&lt;p&gt;With more muses left behind than exes &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/creating-planning/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;, I have a pattern for handling our separation gracefully. I forgo reflecting on the creative impotence that ails me, and after giving me and my muse &amp;quot;space&amp;quot; to rekindle our relationship, I decide to call it quits. Neither of us is right or wrong; we simply aren’t meant to be. Although, I must admit that many of these things happen implicitly, placing me in the position of “ghosting” my muse, who certainly deserves more than half-hearted rationalizations about why we’re breaking up.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I deserve more than half-hearted rationalizations about why I don&#39;t engage with what inspires me.
&lt;/p&gt;
&lt;p&gt;This relationship between myself and my muses is a pattern, a feedback loop that has so ingrained itself into my psyche that noticing its existence is difficult. Doubt overcomes me as I question whether things have to be this way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What muses have I experienced in my life?&lt;/li&gt;
&lt;li&gt;Which muses have I engaged with the most?
&lt;ul&gt;
&lt;li&gt;Which of these have I found most rewarding or satisfying?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Which muses have I engaged with the least?
&lt;ul&gt;
&lt;li&gt;Are these muses things I &lt;em&gt;actually&lt;/em&gt; wanted to engage with or did I mindlessly latch onto these whims while riding a creative high?&lt;/li&gt;
&lt;li&gt;Do I still want to engage with any of these muses?&lt;/li&gt;
&lt;li&gt;How do I feel as I think about my past muses?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What commonalities exist between the muses I’ve engaged with and those I haven&#39;t?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I ask myself questions and dig deeper into my past relationships with my muses. I notice a trend occurring, one that shines a light on a likely culprit for my creative misfires over the years, and that culprit is planning.&lt;/p&gt;
&lt;h2 id=&quot;planning-as-procrastination&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/creating-planning/#planning-as-procrastination&quot;&gt;Planning as procrastination&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Planning, and the actions that arise from it, are a godsend for some, stacking the proverbial cards such that the impossible becomes possible, and helping one accomplish what they set out to do. Planning can work. Hell, it works for me &lt;span style=&quot;text-decoration: underline&quot;&gt;all the time&lt;/span&gt; with my client projects.&lt;/p&gt;
&lt;p&gt;For others, planning yields little more than perpetual uncertainty and a misguided feeling of accomplishment. When will I begin writing? As soon as I&#39;m &amp;quot;organized enough&amp;quot; to begin, rather than simply writing. This is planning over doing; planning as procrastination.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/muses/chart.png&quot; alt=&quot;Planning as procrastination&quot; width=&quot;800&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;What does your ratio of planning to creating look like?&lt;/div&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Thus, I’ve found myself standing beneath a light shining on my primary mode of procrastination, guiding my actions towards planning instead of doing. I’ve created no shortage of projects, to-do lists, systems, strategies, plans, timelines, commitments, and goals that are all designed to get me from point A to point B, from idea to creation. Where, then, are my creations?&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  Planning is a solution to a problem encountered by &lt;em&gt;doing&lt;/em&gt; something.
&lt;/p&gt;
&lt;p&gt;Planning as a form of procrastination inhibits my ability to engage in acts of creativity that are engaging and rewarding. Planning is no substitute for doing. To plan is to anticipate, while to do is to create. The former does not preclude the latter, but I&#39;m no longer going to allow planning to impede my creative process.&lt;/p&gt;
&lt;h2 id=&quot;moving-forward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/creating-planning/#moving-forward&quot;&gt;Moving forward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Identifying my primary mode of procrastination has been revealing, but understanding &lt;em&gt;how&lt;/em&gt; I procrastinate doesn&#39;t mean I won&#39;t continue doing it. I need to turn my insight into action and chart a path towards creative liberty.&lt;/p&gt;
&lt;p&gt;My new approach is to create first, plan later. I will no longer allow planning to impede my creative process. I will create when I feel inspired to create and plan only when systematic approaches towards solving problems or accomplishing tasks make sense. I will no longer rely on planning to put the wind beneath my creative wings.&lt;/p&gt;
&lt;p&gt;The benefit of &amp;quot;create first, plan later&amp;quot; is that it helps me jump the first creative hurdle, one that I often don&#39;t jump, which is creating the first iteration of whatever I&#39;m inspired to create. This will satiate my immediate creative desires and give me something to work with going forward, something I can iterate from and improve, perhaps to the point where I feel comfortable releasing it to the public.&lt;/p&gt;
&lt;h2 id=&quot;closing-thoughts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/creating-planning/#closing-thoughts&quot;&gt;Closing thoughts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While many muses lie in my past, buried beneath the remnants of planning, many more lie ahead. Thankfully, I have had no shortage of muses throughout my life. There will always be something new. The question is, will I engage with it, and if so, how?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What’s the relationship between you and your muses?&lt;/strong&gt;&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;For the record, all of my exes &lt;em&gt;do not&lt;/em&gt; &lt;a href=&quot;https://youtu.be/0KCWqnldEag?t=28&quot;&gt;live in Texas&lt;/a&gt; like I&#39;m &lt;a href=&quot;https://www.youtube.com/watch?v=Jk7uXaNuWNE&quot;&gt;George Strait&lt;/a&gt;. &lt;a href=&quot;https://keenanpayne.com/creating-planning/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Building beautiful multi-line buttons with CSS</title>
		<link href="https://keenanpayne.com/css-multi-line-buttons/"/>
		<updated>Mon, 13 Jul 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/css-multi-line-buttons/</id>
		<content type="html">&lt;p&gt;Today I&#39;m going to show you how to build some beautiful multi-line buttons with CSS and HTML. I initially built these buttons for a client project, but they ended up getting scrapped. So that my work was not entirely in vain, I decided to write a quick tutorial showing how I built these buttons.&lt;/p&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;265&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;JjGRqZp&quot; style=&quot;height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;Multi-line buttons with arrow animation&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/JjGRqZp&quot;&gt;
  Multi-line buttons with arrow animation&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;This is an example of what we are going to be building today. These buttons were designed by the wonderful &lt;a href=&quot;https://dribbble.com/ilijav&quot;&gt;Ilija Vujinovic&lt;/a&gt;, who I have been collaborating with extensively on projects for &lt;a href=&quot;https://keenanpayne.com/blog/re-architecting-rippling-css.html&quot;&gt;Rippling&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;let&#39;s-build-buttons&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#let&#39;s-build-buttons&quot;&gt;Let&#39;s build buttons&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;writing-button-markup&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#writing-button-markup&quot;&gt;Writing button markup&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ll start building our buttons by writing accessible markup. Let&#39;s start with a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; element and add a class name to denote the background color. We also wrap our content in &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; tags to style each line of text individually.&lt;/p&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  If you&#39;re wondering why we start with markup instead of writing styles, think about the human body: does the skeleton sit on top of the skin, or does the skin sit on top of the skeleton? Think of the markup as the skeleton for what we are building. Writing the markup first can inform how we approach implementing the design and interactions for this component.
&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-bg-yellow&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Sign up &lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;amp;&quot;&gt;&amp;amp;amp;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Work with Rippling&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-bg-purple&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Sign up &lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;amp;&quot;&gt;&amp;amp;amp;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Use your own broker&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;writing-button-styles&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#writing-button-styles&quot;&gt;Writing button styles&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that we have the markup for our button let&#39;s start adding some styles.&lt;/p&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;I am using &lt;a href=&quot;https://sass-lang.com/&quot;&gt;Sass&lt;/a&gt; as the pre-processor for my CSS for convenience (e.g., &lt;a href=&quot;https://sass-lang.com/guide#topic-3&quot;&gt;nesting&lt;/a&gt;, &lt;a href=&quot;https://sass-lang.com/documentation/syntax/comments&quot;&gt;comments&lt;/a&gt;, and &lt;a href=&quot;https://sass-lang.com/documentation/at-rules/mixin&quot;&gt;mixins&lt;/a&gt;)&lt;/span&gt;
&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--button-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--button-background&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--button-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 500&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 64px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; box-shadow 150ms &lt;span class=&quot;token function&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0.61&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.88&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nowrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:hover, 
  &lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:focus &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 3px 7px 1px &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.25&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We start by using &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/--*&quot;&gt;CSS custom properties&lt;/a&gt; for context-specific properties that we want to alter depending on what button color we are using. We&#39;ll then remove some of the default button styles such as the border, box-shadow, and apply our own unique styles for the type, spacing, and a custom hover state.&lt;/p&gt;
&lt;p&gt;Our button is starting to come together! However, we still have to style the text inside of our &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements. We&#39;ll nest the styles for our &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element directly beneath all of the styles for our &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; for the purposes of this tutorial, but you could also write these styles within their own class and apply that class to the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element.&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token comment&quot;&gt;// Button text&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;&gt; span &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:first-of-type &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; white&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To bring our two lines of text together, I set distinct &lt;code&gt;line-height&lt;/code&gt; values for the first and second &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements. This gives us the multi-line appearance that we are looking for.&lt;/p&gt;
&lt;h3 id=&quot;supporting-multiple-button-backgrounds&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#supporting-multiple-button-backgrounds&quot;&gt;Supporting multiple button backgrounds&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The design for this component included two different backgrounds, so we want to write some CSS to support these different contexts.&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token comment&quot;&gt;// Background colors &lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;.-bg-yellow &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb31c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;.-bg-purple &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #502d3c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb31c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We will write two classes inside of our &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; component for each background color that this button supports. Inside of each of these update the custom properties that we declared earlier for the unique background and text color that each button requires. Approaching context-specific styles in this way allows us write style declarations once, but redefine their values on a case-by-case basis.&lt;/p&gt;
&lt;h3 id=&quot;adding-button-interactions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#adding-button-interactions&quot;&gt;Adding button interactions&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Interaction was not outlined for this component, so I decided to use the &lt;a href=&quot;https://keenanpayne.com/blog/css-arrow-interaction.html&quot;&gt;pacman arrow&lt;/a&gt; micro-interaction that I&#39;ve written a tutorial about. To get this interaction working, I simply copied over the markup, swapped in the arrow SVG that was included in the design for this button, and copied over the styles. It works like a charm!&lt;/p&gt;
&lt;p&gt;Let&#39;s start by adding the necessary markup required for this micro-interaction:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-bg-yellow&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Sign up &lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;amp;&quot;&gt;&amp;amp;amp;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Work with Rippling&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman-clip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-bg-purple&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Sign up &lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;amp;&quot;&gt;&amp;amp;amp;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Use your own broker&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman-clip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now let&#39;s add the necessary CSS to make our arrows are formatted correctly, and the interaction can run.&lt;/p&gt;
&lt;p&gt;I&#39;m borrowing all of these styles from the tutorial that I&#39;ve written for the &lt;a href=&quot;https://keenanpayne.com/blog/css-arrow-interaction.html&quot;&gt;pacman arrow interaction&lt;/a&gt; so, if you want a more in-depth overview of how these styles work in creating this interaction, I suggest reading that tutorial.&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Pacman Arrow&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.arrowPacman &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-plus-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -.2em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;-50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; -50%&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;svg &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:last-of-type &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.arrowPacman-clip &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;align-items&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &#92;* -1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; pacman&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token selector&quot;&gt;to &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrowPacmanInteraction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token selector&quot;&gt;.arrowPacman-clip &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 150ms&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.8s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pacman&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-iteration-count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; infinite&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-timing-function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0.55&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.21&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Button &lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--button-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--button-background&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--button-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 500&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 64px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; box-shadow 150ms &lt;span class=&quot;token function&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0.61&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.88&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nowrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:hover, 
  &lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:focus &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token keyword&quot;&gt;@include&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrowPacmanInteraction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 3px 7px 1px &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.25&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// Background colors &lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;.-bg-yellow &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb31c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;.-bg-purple &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #502d3c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;--button-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb31c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// Button text&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;&gt; span &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:first-of-type &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; white&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Just like that, you&#39;ve built a beautiful multi-line button with HTML and CSS!&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-multi-line-buttons/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I think that buttons are such a fun component to build as a web developer. They are seemingly small and insignificant, but buttons play a key part in many of the interfaces that we interact with on the web. Buttons can also have countless styles, and depending on the context of the button, they can have their own unique accessibility considerations.&lt;/p&gt;
&lt;p&gt;I encourage all of you to put your creativity to use and take what we&#39;ve built in this tutorial and put your own twist on it. If you do, please share a link with what you&#39;ve created in the comments, or hit me up on &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;Twitter&lt;/a&gt;. I would love to see what you build!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Providing your client with regular project updates</title>
		<link href="https://keenanpayne.com/providing-client-project-updates/"/>
		<updated>Mon, 06 Jul 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/providing-client-project-updates/</id>
		<content type="html">&lt;p&gt;Your client wants to be kept in the loop with what you are doing. Period. Nobody who is exchanging money for professional services feels comfortable being left in the dark by whoever is providing a service. This is true for lawyers, general contractors, and yes, web developers. As a web developer, perhaps your communication isn&#39;t as imperative as that of a lawyer, but you should treat it &lt;em&gt;like it is&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-to-provide-a-project-update-to-your-client&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#how-to-provide-a-project-update-to-your-client&quot;&gt;How to provide a project update to your client&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;what-to-include-in-an-update&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#what-to-include-in-an-update&quot;&gt;What to include in an update&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I generally have three primary goals when providing a project update to a client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Share the progress that I have made on the project since the last update&lt;/li&gt;
&lt;li&gt;Share what my next priority is following this update&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Covering these two items in a project update will allow you to reflect on the progress you have made on a project and look to the future for what you plan to do next. Most clients want &lt;em&gt;at least&lt;/em&gt; this amount of information communicated with them regularly.&lt;/p&gt;
&lt;p&gt;You might also provide context-specific updates depending on the preference of your client, or the project you are working on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How you are pacing to meet a deadline&lt;/li&gt;
&lt;li&gt;Un-billed hours that you have accrued&lt;/li&gt;
&lt;li&gt;Circling back on issues that might have arisen in the past related to the project (are they resolved, what do you need to resolve them, etc.)&lt;/li&gt;
&lt;li&gt;Anything that is blocking you from making progress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ultimately, you will be the best judge of what to include in a project update to your client because you are the one who is interacting with them and working on the project. Use the ideas above as a jumping-off point when thinking about what you want to include in your project updates.&lt;/p&gt;
&lt;h3 id=&quot;the-frequency-for-providing-updates&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#the-frequency-for-providing-updates&quot;&gt;The frequency for providing updates&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The title of this article includes &amp;quot;regular project updates,&amp;quot; but how regular is &amp;quot;regular&amp;quot;? The answer to this will change depending on the client and the project.&lt;/p&gt;
&lt;p&gt;I default to providing project updates to my clients at least once per week at the beginning of the week. While once per week is my default, I &lt;strong&gt;always&lt;/strong&gt; ask clients what cadence they prefer for updates. Some clients like to be updated more frequently than others, so understanding what makes a client feel comfortable allows you to tailor updates to meet their needs.&lt;/p&gt;
&lt;h3 id=&quot;templates-for-providing-an-update&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#templates-for-providing-an-update&quot;&gt;Templates for providing an update&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The format I use for providing a weekly update usually looks something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello [stakeholder name],&lt;/p&gt;
&lt;p&gt;I hope you had a great weekend! Here is my update for the week of DD/MM/YYYY:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I accomplished last week&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[describe what I accomplished in the last week]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My priorities for this week&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[describe my priorities for the project this week]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[context-specific updates]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[Pacing for deadlines, unresolved issues, billing, etc.]&lt;/p&gt;
&lt;p&gt;Please let me know if you have any questions or comments.&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;Keenan&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here is how I might ask a client what their preferred frequency for communication is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi [stakeholder name],&lt;/p&gt;
&lt;p&gt;I&#39;m reaching out to see if you have a specific cadence for how frequently I provide updates for [project name]? I default to providing weekly updates, but please let me know if there is a different frequency that you prefer.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Keenan&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;where-to-provide-a-project-update&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#where-to-provide-a-project-update&quot;&gt;Where to provide a project update&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can provide updates using whatever medium you and your client use to communicate. I usually send updates via email, but tools such as &lt;a href=&quot;https://asana.com/&quot;&gt;Asana&lt;/a&gt; and &lt;a href=&quot;https://slack.com/&quot;&gt;Slack&lt;/a&gt; (or countless others) are also suitable for providing updates to your client.&lt;/p&gt;
&lt;p&gt;The important thing is not &lt;em&gt;what&lt;/em&gt; you use to provide an update, but rather, that your client is &lt;em&gt;seeing&lt;/em&gt; your update. Providing project updates to your client will do you and your client no good if left unseen. If you can&#39;t decide the best way to provide an update to your client, just ask!&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  It can &lt;em&gt;never&lt;/em&gt; hurt to ask your client what they prefer. Asking shows that you care, and allows you to tailor your updates to the client.
&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/providing-client-project-updates/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Providing regular project updates to your client is something that you need to do regularly. Providing updates can help build trust between you and your client, hold you accountable for what you are responsible for, and provide transparency to your client on how a project is progressing.&lt;/p&gt;
&lt;p&gt;Also, remember that the frequency that you provide updates, what you include in your updates, and how you deliver an update are all context-dependent. What works for one client might not work for another client, so you must ask the client yourself to answer each of these questions.&lt;/p&gt;
&lt;p&gt;How do you approach project updates with your clients? Do you have a frequency, format, or approach that you prefer to use? Feel free to comment below and share your thoughts; I would love to hear what you all think.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Building a “Pacman arrow” micro-interaction with CSS</title>
		<link href="https://keenanpayne.com/css-arrow-interaction/"/>
		<updated>Mon, 29 Jun 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/css-arrow-interaction/</id>
		<content type="html">&lt;p&gt;I helped build the &lt;a href=&quot;https://asana.com/teams/marketing&quot;&gt;Asana for Marketers&lt;/a&gt; page with &lt;a href=&quot;http://jacoviello.com/&quot;&gt;Devin Jacoviello&lt;/a&gt; while I was still at Asana. Part of this work involved making a neat micro-interaction for an arrow icon that Devin wanted to use throughout the page. Today I am going to walk you through how I created this interaction and why I built it the way that I did.&lt;/p&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;265&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;mdVRrGm&quot; ,style=&quot;height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;CSS &amp;amp;quot;pacman arrow&amp;amp;quot; micro-interaction&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/mdVRrGm&quot;&gt;
  CSS &amp;quot;pacman arrow&amp;quot; micro-interaction&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;Our goal is to create an animation of an arrow following itself (hence the name &amp;quot;Pacman arrow&amp;quot;) when we hover over an element on the page. We also want this interaction to exist in multiple elements throughout the page, so it is essential to build this in a context-agnostic way.&lt;/p&gt;
&lt;h2 id=&quot;writing-the-markup&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#writing-the-markup&quot;&gt;Writing the markup&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ll start by writing the markup for this interaction. For this tutorial, I will be putting this arrow animation inside of a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; element with some accompanying text. However, once you finish this tutorial, you should be able to use this interaction inside of any element.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  Just Do It

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman-clip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The markup for this element is pretty straight-forward. We wrap our arrow inside of a &lt;code&gt;div&lt;/code&gt; containing the class name &lt;code&gt;arrowPacman&lt;/code&gt;. This element will be the outer-most container for our arrows.&lt;/p&gt;
&lt;p&gt;Next, we create a nested &lt;code&gt;div&lt;/code&gt; with a class name &lt;code&gt;arrowPacman-clip&lt;/code&gt;. This element is what we will be moving to create the left-to-right animation. More on that once we add some CSS.&lt;/p&gt;
&lt;p&gt;Lastly, we have two instances of the same SVG arrow, one right after the other that will aid in giving us the left-to-right effect.&lt;/p&gt;
&lt;h2 id=&quot;adding-the-styles&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#adding-the-styles&quot;&gt;Adding the styles&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The real magic of this interaction comes from the CSS that we write for the markup that we just created.&lt;/p&gt;
&lt;h3 id=&quot;styling-the-button&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#styling-the-button&quot;&gt;Styling the button&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ll start by writing some simple styles for our &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; element:&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; white&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px solid black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 600&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .75rem 2.5rem .75rem 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nowrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is nothing too out of the ordinary here. The only thing to note is that we are giving our button some extra padding on the right side to account for the space that arrow will take up.&lt;/p&gt;
&lt;h3 id=&quot;styling-arrow-container&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#styling-arrow-container&quot;&gt;Styling arrow container&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now let&#39;s get to the fun stuff. To start building our arrow animation, we&#39;ll start by adding some styles to the &lt;code&gt;arrowPacman&lt;/code&gt; class.&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.arrowPacman &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-plus-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -.2em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;-50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; -50%&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; white&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px solid black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 600&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .75rem 2.5rem .75rem 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nowrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first thing you will notice is that I am using &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/--*&quot;&gt;CSS custom properties&lt;/a&gt; inside of the &lt;code&gt;arrowPacman&lt;/code&gt; class to store a few values. These properties are important because creating this animation relies on clever use of our arrow width, as well as the space between our two arrows. We do this by storing each of these values in &lt;code&gt;--arrow-width&lt;/code&gt;, and &lt;code&gt;--arrow-spacer&lt;/code&gt;, respectively. We will also be using the combined width of both the arrow and it&#39;s spacer, so we store that value in &lt;code&gt;--arrow-plus-spacer&lt;/code&gt; where we make use of the CSS &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/calc&quot;&gt;&lt;code&gt;calc&lt;/code&gt;&lt;/a&gt; function to add the value of the two custom properties that we previously declared.&lt;/p&gt;
&lt;p&gt;We also want to position our arrow inside the button, so we give the &lt;code&gt;arrowPacman&lt;/code&gt; element a value of &lt;strong&gt;&lt;code&gt;absolute&lt;/code&gt;&lt;/strong&gt; for the &lt;code&gt;position&lt;/code&gt; property, along with values for &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt;, and &lt;code&gt;transform&lt;/code&gt; to create the alignment that we want.&lt;/p&gt;
&lt;p&gt;To ensure that only one of our arrows is visible, we set the &lt;code&gt;width&lt;/code&gt; property on our &lt;code&gt;arrowPacman&lt;/code&gt; class to the value of &lt;strong&gt;&lt;code&gt;--arrow-plus-spacer&lt;/code&gt;&lt;/strong&gt; along with the &lt;code&gt;overflow&lt;/code&gt; property to &lt;strong&gt;&lt;code&gt;hidden&lt;/code&gt;&lt;/strong&gt;. These declarations will prevent our second arrow from being visible.&lt;/p&gt;
&lt;h3 id=&quot;styling-svg-elements&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#styling-svg-elements&quot;&gt;Styling SVG elements&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We want to make sure that the two arrows inside of our button have the correct size and spacing, so let&#39;s add some styles inside of the &lt;code&gt;arrowPacman&lt;/code&gt; class to target the &lt;code&gt;svg&lt;/code&gt; elements.&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;svg &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:last-of-type &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We set the &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; of each SVG element accordingly, and give our last SVG a &lt;code&gt;margin-left&lt;/code&gt; value of &lt;strong&gt;&lt;code&gt;--arrow-spacer&lt;/code&gt;&lt;/strong&gt;. This added space ensures that our two arrows are not sitting right next to each other.&lt;/p&gt;
&lt;h3 id=&quot;styling-the-arrow-%22clip%22&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#styling-the-arrow-%22clip%22&quot;&gt;Styling the arrow &amp;quot;clip&amp;quot;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To create the left-to-right effect that we are looking for, we need to add some styles to our &lt;code&gt;arrowPacman-clip&lt;/code&gt; element.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  Just Do It

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman-clip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.arrowPacman-clip &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;align-items&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &#92;* -1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We use &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox&quot;&gt;flexbox&lt;/a&gt; to align our two arrows. Next, we set the &lt;code&gt;transform&lt;/code&gt; property to &lt;strong&gt;&lt;code&gt;-24px&lt;/code&gt;&lt;/strong&gt; by utilizing the &lt;code&gt;--arrow-plus-spacer&lt;/code&gt; custom property that we declared earlier, and multiplying it by &lt;strong&gt;&lt;code&gt;-1&lt;/code&gt;&lt;/strong&gt;. This moves our entire &lt;code&gt;arrowPacman-clip&lt;/code&gt; to the left, which is how we will create the left-to-right animation.&lt;/p&gt;
&lt;p&gt;Lastly, we set the width of this element to &lt;strong&gt;&lt;code&gt;44px&lt;/code&gt;&lt;/strong&gt; by once again utilizing the CSS &lt;code&gt;calc&lt;/code&gt; function, adding the &lt;code&gt;--arrow-plus-spacer&lt;/code&gt; and &lt;code&gt;--arrow-width&lt;/code&gt; custom properties. This width value is important because it is the total width of both arrows plus the space between the arrows, which is crucial in creating a seamless left-to-right animation.&lt;/p&gt;
&lt;h3 id=&quot;creating-the-arrow-animation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#creating-the-arrow-animation&quot;&gt;Creating the arrow animation&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that we&#39;ve set the stage let&#39;s add the styles necessary to make this animation work.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; 
  Just Do It

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;arrowPacman-clip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewBox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 14 14&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://www.w3.org/2000/svg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M7.10081 0L5.88245 1.23617L10.7016 6.12576H0V7.87423H10.7016L5.88245 12.7638L7.10081 14L14 7L7.10081 0Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.arrowPacman &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;--arrow-plus-spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -.2em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;-50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; -50%&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;svg &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:last-of-type &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.arrowPacman-clip &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;align-items&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &#92;* -1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-plus-spacer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--arrow-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; pacman&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token selector&quot;&gt;to &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrowPacmanInteraction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  &lt;span class=&quot;token selector&quot;&gt;.arrowPacman-clip &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 150ms&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.8s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pacman&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-iteration-count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; infinite&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;animation-timing-function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0.55&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.21&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;button &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; white&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px solid black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; black&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 600&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .75rem 2.5rem .75rem 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token property&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nowrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token selector&quot;&gt;&lt;span class=&quot;token parent important&quot;&gt;&amp;amp;&lt;/span&gt;:hover &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
      &lt;span class=&quot;token keyword&quot;&gt;@include&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrowPacmanInteraction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first thing we do is use &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes&quot;&gt;CSS @keyframes&lt;/a&gt; to define the &lt;code&gt;pacman&lt;/code&gt; animation, which contains the styles that will be applied for our animation. Because we want to move our arrow left to right, we define our styles as &lt;code&gt;transform: translateX(0)&lt;/code&gt;. We intend to apply styles to the &lt;code&gt;arrowPacman-clip&lt;/code&gt; element. Because we&#39;ve moved the &lt;code&gt;arrowPacman-clip&lt;/code&gt; element to the left by &lt;strong&gt;-24px&lt;/strong&gt; earlier, resetting the value to &lt;strong&gt;0&lt;/strong&gt; gives us the left-to-right animation.&lt;/p&gt;
&lt;p&gt;One of the powerful features of Sass is that you can define &lt;a href=&quot;https://sass-lang.com/documentation/at-rules/mixin&quot;&gt;mixins&lt;/a&gt;, which allow you to define a set of styles that can be reused across multiple contexts. The styles in this mixin are what allow this interaction to work with the button that we just built. We start by creating a mixin named &lt;code&gt;arrowPacmanInteraction&lt;/code&gt;, which contains all of the styles that will enable our animation to run. Then we include this mixin in the hover state for our button by using &lt;code&gt;@include arrowPacmanInteraction()&lt;/code&gt;, which allows the animation to run when we hover over the button.&lt;/p&gt;
&lt;p&gt;That&#39;s it! We now have a cute little &amp;quot;Pacman arrow&amp;quot; animation for our button.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/css-arrow-interaction/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I hope you all had as much fun building this micro-interaction as I did. While the approach I took in this article works well for animating arrows, this same approach can be applied to create all sorts of interactions in different directions.&lt;/p&gt;
&lt;p&gt;If like this article, consider subscribing to my &lt;a href=&quot;https://keenanpayne.com/subscribe&quot;&gt;newsletter&lt;/a&gt; for more content just like this. Also, don&#39;t hesitate to reach out to me in the comments or on &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;Twitter&lt;/a&gt; to share what you&#39;ve built, and ask questions.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>How to improve your work and well-being with deliberate reflection</title>
		<link href="https://keenanpayne.com/improve-work-well-being-deliberate-reflection/"/>
		<updated>Tue, 26 May 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/improve-work-well-being-deliberate-reflection/</id>
		<content type="html">&lt;p&gt;How do you deliberately improve the conditions under which you do your work? That is if you work on a project and things go well, how do you ensure that things continue to go well during your next project? Conversely, if you work on a project and things go poorly, how do you prevent things from going poorly during your next project?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is this something that you even think about?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Honestly, this is not something that I have put much thought into until recently. For example, I have worked as a professional web developer for 10 years, and I cannot count the number of projects with unrealistic deadlines that have required me to work late nights and weekends. Why did I accept projects with unrealistic deadlines as an unavoidable reality for so long?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What has occurred repeatedly throughout your work that you want to change but have not changed yet?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I recently spent a lot of time thinking about the idea of deliberate improvement in the pursuit of avoiding unrealistic deadlines for future projects. I discovered that I lacked a framework that allowed me to think about and address the problems I encountered systematically.&lt;/p&gt;
&lt;p&gt;Today I&#39;m going to talk about the framework I used to solve my problem with unrealistic project deadlines and how this framework can be used to help you reliably improve how you work on projects as well.&lt;/p&gt;
&lt;h2 id=&quot;reflecting-on-unrealistic-deadlines&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#reflecting-on-unrealistic-deadlines&quot;&gt;Reflecting on unrealistic deadlines&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I recently shared a &lt;a href=&quot;https://keenanpayne.com/blog/re-architecting-rippling-css&quot;&gt;project that I completed for Rippling&lt;/a&gt;, where I mentioned that the project&#39;s timeline was tight, and as a result, I was rushed to get the work finished so that the website could launch on time. What was the result? Well, we launched the website, but at a significant cost to the quality of what I was able to build, as well as my well-being while building it.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/improve-project-execution/rippling.jpg&quot; alt=&quot;Rippling re-branding collection&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;Play did a wonderful job handling the re-branding for Rippling&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://www.play.studio/rippling/&quot; title=&quot;Play case study&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Play case study&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;After launching the new Rippling website, I decided to take a one-month sabbatical to unwind and reflect on the myriad of projects that I had been working on since I started freelancing. Something I kept coming back to while reflecting was the timeline for the Rippling project.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why was the timeline so tight?&lt;/li&gt;
&lt;li&gt;What could I have done to improve the timeline?&lt;/li&gt;
&lt;li&gt;Why am I repeatedly working on projects with such unrealistic deadlines?&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How can I prevent this from happening in the future?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I ended up answering all of these questions and then some. However, the most valuable insight I gained by thinking about that last bullet point, and it is unrelated to the idea of project timelines. In wondering how I could prevent tight deadlines from happening in the future, I ended up reflecting on why I hadn&#39;t taken the time to think critically about this issue until recently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If project deadlines have plagued me for over a decade, why hadn&#39;t I taken the time to think about and solve this problem?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;making-reflection-deliberate&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#making-reflection-deliberate&quot;&gt;Making reflection deliberate&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In a recent post, I discussed the idea of analyzing &lt;a href=&quot;https://keenanpayne.com/blog/mindset-upon-completing-project&quot;&gt;what mindset I have after completing a project&lt;/a&gt;. In it, I mentioned that I generally embody the &amp;quot;future mindset,&amp;quot; where I find myself more inclined to look towards the next thing after completing a project, as opposed to looking back and reflecting over what I just completed.&lt;/p&gt;
&lt;p&gt;Until recently, I spent most of my time reflecting on projects while working on them. To better demonstrate this, here is a rough outline of how reflection manifested in my process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start working on a project&lt;/li&gt;
&lt;li&gt;Start experiencing things that are going well and going poorly with the project&lt;/li&gt;
&lt;li&gt;Have impromptu reflection on why things are going well and going poorly&lt;/li&gt;
&lt;li&gt;Loop over bullets 2--3 until the project is complete&lt;/li&gt;
&lt;li&gt;With the project completed, I look towards the next project that I want to start&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What was missing from my process was taking the impromptu reflections that I had during the project&#39;s execution and making time to follow-up on them after I had completed the project. I call this time to explicitly follow-up on my thoughts &lt;em&gt;deliberate reflection&lt;/em&gt;. The distinguishing factor is that deliberate reflection is done with intention, whereas impromptu reflection is done in-the-moment and occurs organically.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  If I am always looking forward and am never looking back, how will I learn from the past to improve how I approach the future?
&lt;/p&gt;
&lt;p&gt;Building in time for deliberate reflection allows me to focus on &lt;em&gt;thinking about&lt;/em&gt; the work, as opposed to &lt;em&gt;doing&lt;/em&gt; the work. Creating this separation allows me more time to flesh out my thoughts, which provides me with greater clarity around my experiences and how these experiences have made me feel. Having this deep understanding is crucial when manifesting positive change in my life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now that I understand the value of deliberate reflection, how can I make this time productive?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;my-framework-for-deliberate-reflection&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#my-framework-for-deliberate-reflection&quot;&gt;My framework for deliberate reflection&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Reflection is &lt;em&gt;always&lt;/em&gt; a useful way to gain clarity around your thoughts and feelings. However, I learned that adding some structure can reliably produce something actionable from my reflections, which gives me something that I can utilize moving forward.&lt;/p&gt;
&lt;p&gt;Below I&#39;ve made an outline of the process that I use to get the most out of my deliberate reflection:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#reflecting-on-unrealistic-deadlines&quot;&gt;Reflecting on unrealistic deadlines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#making-reflection-deliberate&quot;&gt;Making reflection deliberate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#my-framework-for-deliberate-reflection&quot;&gt;My framework for deliberate reflection&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#setting-aside-time-to-reflect&quot;&gt;Setting aside time to reflect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#have-a-brainstorming-session&quot;&gt;Have a brainstorming session&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#prioritizing-items&quot;&gt;Prioritizing items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#clarifying-items&quot;&gt;Clarifying items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#making-items-actionable&quot;&gt;Making items actionable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#prioritizing-actionable-items&quot;&gt;Prioritizing actionable items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#utilizing-actionable-items&quot;&gt;Utilizing actionable items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#rinse-and-repeat&quot;&gt;Rinse and repeat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This outline might seem like a lot, but I believe that this is a natural process that allows you to take ideas that you have and turn them into something actionable. The more that you work through this framework, the more automatic each step will become.&lt;/p&gt;
&lt;p&gt;Now, let&#39;s go over each of these steps in more detail.&lt;/p&gt;
&lt;h3 id=&quot;setting-aside-time-to-reflect&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#setting-aside-time-to-reflect&quot;&gt;Setting aside time to reflect&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The first step is setting aside time for reflection after completing a project. The amount of time that I spend reflecting is commensurate with the size of whatever I just completed.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  The larger the project you complete, the more time you will want to spend afterward reflecting on what you just completed.
&lt;/p&gt;
&lt;p&gt;I suggest doing your reflection somewhere that inspires you. I enjoy being out in nature when I&#39;m reflecting, as that setting is where I have the greatest number of ideas. Pick a setting that puts you at ease and inspires you.&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/improve-project-execution/hike-1.jpg&quot; alt=&quot;Picture of the Presidio in San Francisco&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;The Presidio is one of my favorite areas to hike in San Francisco&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/improve-project-execution/hike-2.jpg&quot; alt=&quot;Picture of Baker Beach in San Francisco&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;I also love walking around the beach, so ,I: can frequently be found at Baker Beach&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id=&quot;have-a-brainstorming-session&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#have-a-brainstorming-session&quot;&gt;Have a brainstorming session&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that you have space to reflect, you can begin using this time to have a brainstorming session where you allow yourself to have free-flowing thoughts about the project you just completed. You want to capture each thought by writing it somewhere (physical or digital, it doesn&#39;t matter).&lt;/p&gt;
&lt;p&gt;You don&#39;t need to organize these thoughts yet; you just need to capture them somewhere. The point of this process is to get everything out of your head and write it somewhere so that it can be used later.&lt;/p&gt;
&lt;p&gt;Here are some prompts that I use to start my brainstorming session:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What feelings do you have when you think about the project you just completed, and why do you think that these feelings exist?&lt;/li&gt;
&lt;li&gt;What was on your mind as you worked through this project (i.e., what were your impromptu reflections throughout the project?)&lt;/li&gt;
&lt;li&gt;What went well during the project?&lt;/li&gt;
&lt;li&gt;What went poorly during the project?&lt;/li&gt;
&lt;li&gt;If you could change one thing about this project, what would it be?&lt;/li&gt;
&lt;li&gt;If there&#39;s one thing that you could avoid repeating in future projects, what would it be?&lt;/li&gt;
&lt;li&gt;If there&#39;s one thing that you would like to repeat in your future projects, what would it be?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These prompts are designed to kickstart your critical thinking. You don&#39;t need to work through each prompt one-by-one, although you certainly can. If you have prompts that work well for you, I recommend keeping a list of them stored somewhere so that they are easy to reference.&lt;/p&gt;
&lt;p&gt;It is also worth noting that although I will be working through this article by reflecting on an aspect of a project that went poorly, you can just as easily reflect on an aspect of a project that went well. It can feel nice to acknowledge what went well during a project, and it is also useful to understand why something went well and how you can continue this in your future projects.&lt;/p&gt;
&lt;h3 id=&quot;prioritizing-items&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#prioritizing-items&quot;&gt;Prioritizing items&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that we have a list of items, we want to determine which item is the most important. What is the most important thing you would like to address and carry into your next project?&lt;/p&gt;
&lt;p&gt;I acknowledge that this can be difficult, and I would advise you to avoid becoming mired in prioritizing the entire list you created. Just go with what feels right to you. To use a phrase that may or may not be helpful: &amp;quot;go with your gut.&amp;quot; If your gut isn&#39;t helping you, try scanning each list to see if any item stands out to you or makes you react in a way that is different than the rest.&lt;/p&gt;
&lt;p&gt;The point of this exercise is to understand which area of improvement is the highest priority. You cannot improve everything at once, so you need to determine where to start.&lt;/p&gt;
&lt;h3 id=&quot;clarifying-items&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#clarifying-items&quot;&gt;Clarifying items&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Because we generated our ideas during a brainstorming session, the idea that we&#39;re working with might not be fleshed out. To fix this, we&#39;ll do another brainstorming session using the highest-priority item you decided on above.&lt;/p&gt;
&lt;p&gt;I like to ask myself questions about a subject to get myself thinking and then answer them to produce clarity. To do that, I take the idea of &amp;quot;improve tight deadlines&amp;quot; and begin asking myself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why did we have tight deadlines in the first place?&lt;/li&gt;
&lt;li&gt;Why did having a tight deadline cause me so much stress?&lt;/li&gt;
&lt;li&gt;How might a better deadline have improved my ability to do my work or the quality of my work?&lt;/li&gt;
&lt;li&gt;What about the deadlines could have changed such that I would be happier?&lt;/li&gt;
&lt;li&gt;If I had complete control over the timeline for this project, what would that have looked like?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point of this exercise is to gain clarity on the highest-priority thing that you want to improve. Focus your critical thinking on this one specific idea and flesh it out as much as possible.&lt;/p&gt;
&lt;p&gt;You should continue taking notes as you work through this exercise. This ensures that you don&#39;t forget anything that you&#39;ve thought of, and it allows you to reference your thoughts in the future, which may be useful when thinking about this subject.&lt;/p&gt;
&lt;h3 id=&quot;making-items-actionable&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#making-items-actionable&quot;&gt;Making items actionable&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that you have an idea that you understand deeply, you can take this idea and turn it into something that can be utilized for future projects.&lt;/p&gt;
&lt;p&gt;Take this idea and think: &amp;quot;what steps can I take to ensure that this gets incorporated into the next project that I work on?&amp;quot;&lt;/p&gt;
&lt;p&gt;For example, after reflecting on the tight deadlines that I was experiencing, I thought of a few ways to improve this in my future projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&#39;t accept any projects with set deadlines&lt;/li&gt;
&lt;li&gt;Don&#39;t accept any projects with clients who are unwilling to negotiate deadlines&lt;/li&gt;
&lt;li&gt;Always map out a project timeline using the scope of work to understand what realistic deadlines look like&lt;/li&gt;
&lt;li&gt;Imagine that the work will always take 1.2–1.5x the time that I expect&lt;/li&gt;
&lt;li&gt;Have ownership over creating a timeline and setting deadlines for the work that I do&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, I have turned the idea of &amp;quot;improve tight deadlines&amp;quot; into a list of actionable steps that I could utilize to improve my work.&lt;/p&gt;
&lt;h3 id=&quot;prioritizing-actionable-items&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#prioritizing-actionable-items&quot;&gt;Prioritizing actionable items&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You likely generated many ideas about how to solve the problem you were encountering in the previous step. Because you cannot focus on all of these ideas at once, you need to determine which is the best option to improve your next project.&lt;/p&gt;
&lt;p&gt;Look over the actionable items that you generated and determine which would best solve the problem that you were encountering. What is the one item that, in your ideal world, you could utilize in every single project moving forward?&lt;/p&gt;
&lt;p&gt;I decided on: &amp;quot;Have ownership over creating a timeline and setting deadlines for the work that I do.&amp;quot;&lt;/p&gt;
&lt;p&gt;All of the other ideas were good, and I can still use them going forward. However, this idea resonated with me. If I want to mitigate the effect of tight deadlines for a project, I should have ownership of the project timeline so that I can set realistic deadlines for myself and project stakeholders.&lt;/p&gt;
&lt;h3 id=&quot;utilizing-actionable-items&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#utilizing-actionable-items&quot;&gt;Utilizing actionable items&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Lastly, It&#39;s time to take this actionable item and use it for your next project. Your focus should be shifting away from what you would like to change to how you can manifest this change in your next project.&lt;/p&gt;
&lt;p&gt;How will I manifest the idea of &amp;quot;Have ownership over creating a timeline and setting deadlines for the work that I do&amp;quot; in my next project?&lt;/p&gt;
&lt;p&gt;I determined that in the &amp;quot;discovery phase&amp;quot; of communicating with a client, I will ask what their ideal project timeline is. Then, I will take the scope of work and map out what my &lt;em&gt;ideal&lt;/em&gt; project timeline looks like. Comparing the two timelines allows me to see the degree of difference between them. If the degree of difference is drastic, I might alter the scope of work to provide a path towards meeting the client&#39;s deadline. I can then present two options to the client: one with the original scope of work that aligns with my timeline and one with an altered scope of work that aligns with their timeline.&lt;/p&gt;
&lt;p&gt;This approach shows I am eager to work with the client using their timeline while also looking out for my best interests. If the client is unwilling to work with either option that I presented, then I know that the relationship is not worth pursuing. If they are willing to work with one of my options, then the work that I did just paid off &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h3 id=&quot;rinse-and-repeat&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#rinse-and-repeat&quot;&gt;Rinse and repeat&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Congratulations! If you worked through this framework step-by-step, you should have taken an idea from being a nebulous thought to an actionable item that you can utilize in your future projects.&lt;/p&gt;
&lt;p&gt;At this point, you can take any of the other ideas that you had during your initial brainstorming session and work through this framework to clarify and make them actionable.&lt;/p&gt;
&lt;p&gt;You can also keep a list of the ideas that you generated during your brainstorming session and break them down into two categories: &amp;quot;clarified and actionable&amp;quot; and &amp;quot;needs clarification.&amp;quot; I like to do this for myself because I never have enough time or energy in the day to work through every single item that I generated while brainstorming. Keeping a list of what can still be clarified and made actionable allows me to come back to my thoughts when I have the time and energy to continue working through them.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I hope that by reading this, you have gained some insight into how I systematically improve the conditions under which I work on projects and that you can apply some of what I&#39;ve shared with your projects. My goal is to provide a framework for deliberate reflection that focuses on achieving actionable outcomes as a result.&lt;/p&gt;
&lt;p&gt;Working through this framework starts by setting aside time to think about what has gone well or poorly during your last project. Having made this time yourself, you can have a brainstorming session and create a list of things that you would like to improve or continue doing in your future projects. From here, you can begin prioritizing the items in this list and, working with the highest-priority idea first, start to clarify your ideas so that you can gain a deeper understanding of it. After you gain an understanding of your idea, you can turn your attention towards making this idea actionable and creating a path towards incorporating it into your future projects.&lt;/p&gt;
&lt;p&gt;There is a lot of value in setting aside time to reflect deliberately. I know firsthand how tempting it can be after finishing a project to rush to the next thing on my plate. After all, why spend time thinking about what I completed when there is so much left to do? Working with this framework has helped me adopt a mindset that frames this period for deliberate reflection as being in service of the next project that I work on, potentially enabling me to do my work with greater ease and happiness.&lt;/p&gt;
&lt;p&gt;If you have a question about this framework or would like to share your strategy for improving your work, don&#39;t hesitate to reach out to me on &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;Twitter&lt;/a&gt; or &lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#disqus_thread&quot;&gt;leave a comment down below&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;There are expectations, of course. Depending on the client and the project, I may be more or less willing to work with a tight deadline. Everything is context-dependent. &lt;a href=&quot;https://keenanpayne.com/improve-work-well-being-deliberate-reflection/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>What is your mindset after completing a project?</title>
		<link href="https://keenanpayne.com/mindset-upon-completing-project/"/>
		<updated>Wed, 29 Apr 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/mindset-upon-completing-project/</id>
		<content type="html">&lt;p&gt;When you complete a project, and I use the term &amp;quot;project&amp;quot; to refer to anything that requires multiple steps to achieve an outcome, what do you do afterward? Do you look back at what you just accomplished and analyze what you created and the means by which you created it? Do you sit back and relax, basking in the sense of calmness achieved as a result of accomplishing something that one sets out to do? Or, do you march perilously toward your next project, forging a trail of accomplishments paved by your own ambition?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about it for a minute.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Odds are, you do a bit of each to varying degrees depending on what you just finished and your inclinations. None of the options that I presented are mutually exclusive, nor are they representative of every possible state one might be in upon completing a project. However, I think they do a decent job of defining archetypes that represent the past, present, and future mindsets, respectively.&lt;/p&gt;
&lt;p&gt;I recently took a month-long sabbatical from work to give myself the space to indulge copious thoughts around the past, present, and future. During this time, I gained clarity around which mindset I am most comfortable embodying, and which I am least comfortable embodying. Understanding my mindset as I complete a project has provided me with a tremendous amount of insight that I have been able to utilize in my personal and professional life, some of which I hope to share here.&lt;/p&gt;
&lt;p&gt;I am going to frame these reflections within the context of my current client work for Rippling, which &lt;a href=&quot;https://keenanpayne.com/mindset-upon-completing-project/blog/re-architecting-rippling-css&quot;&gt;I talked about earlier&lt;/a&gt;. My hope with this approach is that I can maintain continuity between my reflections and the practical outcomes that I have been able to achieve. This approach should make what I am writing about more applicable and less philosophical (I’m saving the philosophical stuff for my memoir anyways).&lt;/p&gt;
&lt;p&gt;In the next post, I am going to explore my reflections on the &lt;a href=&quot;http://rippling.com/&quot;&gt;Rippling.com&lt;/a&gt; redesign project and the insight that I gained as a result. I will also be including practical strategies that you can utilize to reflect on projects and how to improve your future work by making these reflections actionable.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Re-architecting the CSS for Rippling.com</title>
		<link href="https://keenanpayne.com/re-architecting-rippling-css/"/>
		<updated>Mon, 20 Apr 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/re-architecting-rippling-css/</id>
		<content type="html">&lt;p&gt;I recently led an effort to rebuild the entire website for &lt;a href=&quot;https://rippling.com/&quot;&gt;Rippling&lt;/a&gt;, a San Francisco-based startup that builds software that helps companies manage different parts of their organization, such as HR and IT. Rippling had been using its former website since early in the company&#39;s life and wanted me to help provide a complete overhaul of their web presence. This overhaul coincided with an extensive marketing campaign by the company, which included a significant advertising push inside of San Francisco boldly targeting their direct competitors.&lt;/p&gt;
&lt;div class=&quot;sideBySide _pull-outside&quot;&gt;
  &lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/re-architecting-rippling-css/rippling-legacy.png&quot; alt=&quot;Preview of what the Rippling website looked like before&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;Preview of what the Rippling website looked like before&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/re-architecting-rippling-css/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/re-architecting-rippling-css/rippling-new.png&quot; alt=&quot;Preview of what the Rippling website looks like now&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;Preview of what the Rippling website looks like now&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://rippling.com/&quot; title=&quot;View the Rippling website&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;View the Rippling website&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id=&quot;move-fast-and-build-things&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#move-fast-and-build-things&quot;&gt;Move fast and build things&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I was fortunate enough to be the lead developer during this project, working closely with marketing stakeholders and other engineers to bring the new website to fruition. It was a fun project to work on, but the circumstances under which we did the work were not ideal. One such circumstance was the deadlines that were in place to launch the new advertising efforts prior to any planning around the development of the website. Sequencing work in this way created a tight window of time to plan, build, and launch the website. I&#39;m happy with what we were able to achieve, but the process was immensely stressful and, at times, overwhelming.&lt;/p&gt;
&lt;p&gt;As one might expect, working under such tight timelines to achieve a project goal is not conducive to creating the type of freedom that would allow for thoughtful planning before executing a project. We were moving fast and trying to build a website with a fresh codebase in two months. This provided little time to consider how we might want to create different abstractions for components or determine what sort of build tooling might be the most efficient, given the circumstances. We were designing and building as we were going, and these two things happening in tandem is not how you thoughtfully create many things &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h2 id=&quot;dealing-with-a-sinking-tower&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#dealing-with-a-sinking-tower&quot;&gt;Dealing with a sinking tower&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We built a great website, but the architectural underpinnings are not ideal. Now, there are a few ways that I&#39;ve seen this situation unfold in my prior experience (and I&#39;m sure there are plenty more that I have not experienced):&lt;/p&gt;
&lt;h3 id=&quot;ignore-and-move-on&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#ignore-and-move-on&quot;&gt;Ignore and move on&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ignore the implications of a sub-optimal architecture and just go with what has been built. I mean, if it looks good, and it meets the expectations of stakeholders, then surely there are bigger fish to fry than going back and rethinking work that had only just been completed?&lt;/p&gt;
&lt;p&gt;Ignoring will lead to the inevitable future where the entire codebase must be rebuilt when embarking on another ambitious initiative such as a redesign.&lt;/p&gt;
&lt;h3 id=&quot;put-off&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#put-off&quot;&gt;Put off&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There is cross-functional buy-in that the underlying architecture is indeed a problem but this work gets pushed further down the road in favor of short-term company initiatives. It can be a hard pill to swallow that what has just been built needs some rebuilding, so instead of approaching this work shortly after launching, it is compartmentalized and turned into something to complete &amp;quot;at a later date.&amp;quot;&lt;/p&gt;
&lt;p&gt;In my experience, this work rarely gets prioritized. It is too easily kicked down the road until it turns into &amp;quot;ignore and move on,&amp;quot; at which point, the inevitability of an extensive codebase rearchitecture surfaces during a large initiative such as a redesign.&lt;/p&gt;
&lt;h3 id=&quot;prioritize-and-start&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#prioritize-and-start&quot;&gt;Prioritize and start&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There is cross-functional buy-in on improving the architecture of a project as a worthwhile endeavor shortly after a project launch, and making architectural improvements is seen as a blocker to future work. Architectural work is prioritized and broken down into discrete pieces, with the single most important piece of architectural work prioritized before the next initiative. This piece of work is generally seen as being in service of the next initiative.&lt;/p&gt;
&lt;p&gt;In my experience, this is a winning formula for making substantial architectural improvements. Cross-functional buy-in and finding work to address immediately prevents kicking things further down the road while allowing room for incremental improvements alongside other company initiatives.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  I find any approach that writes-off architectural concerns in the pursuit of new, short-term goals to be short-sighted. This attitude displays ignorance in the importance of building a strong foundation that facilitates long-term maintenance and scalability.
&lt;/p&gt;
&lt;p&gt;Fortunately, I was not the only person working on redesigning the Rippling website that understood the shortcuts that were taken to achieve our short-term goals. Other engineers on the team were keenly aware that although on the surface the website looks great, the underlying codebase left a bit to be desired. As a result, engineers who have been working with Rippling for much longer than myself (shout-out to Balram and Deb) voiced their concerns to stakeholders about the long-term issues that would surface as a result of leaving the website architecture as-is, as did myself. Such exclamation created the impetus for stakeholder buy-in on tackling large parts of the architectural work shortly after we launched the redesign, which landed us squarely on &amp;quot;prioritize and start,&amp;quot; which I am quite happy with.&lt;/p&gt;
&lt;h2 id=&quot;preventing-a-sinking-tower&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#preventing-a-sinking-tower&quot;&gt;Preventing a sinking tower&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As somebody who enjoys thinking about and writing code at a high-level (i.e., the architecture), it pains me when my back is against the wall on a project, and I have to take shortcuts to meet the project goals. This pain gets compounded by the fact that I might never go back and fix the shortcuts that I took to achieve the result that we did. I &lt;em&gt;hate&lt;/em&gt; writing sloppy code, and I equally hate having to maintain sloppy code that I&#39;ve written (and empathize dearly for those that have to maintain it).&lt;/p&gt;
&lt;p&gt;Fortunately, this a future I get to avoid. I am now leading a new project for Rippling that will include re-architecting all of the CSS on the website, as well as rethinking our build tooling for managing and compiling CSS. Looking over the entire architecture for the website, this stood out as the highest-impact work that would maximize short- and long-term company goals. I am immensely pleased with the level of buy-in for tackling this work, as it will ensure that Rippling has a website that can be more easily maintained and built upon in the future.&lt;/p&gt;
&lt;h2 id=&quot;join-me-on-this-project&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#join-me-on-this-project&quot;&gt;Join me on this project&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As a part of this project for Rippling, I think that it would be fun to document and share what I&#39;m doing so that others can follow along as well. I can only see positive things occurring as a result of sharing what I&#39;m doing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing serves as a point of reflection because it forces me to think about whatever I&#39;m writing about, which, in return, opens me up to new ideas, and a more comprehensive understanding of what I already believe.&lt;/li&gt;
&lt;li&gt;I&#39;m not the only person working on a project like this or solving these problems, nor will I be the last. Sharing my thoughts on how I am approaching this project might be useful to others who can learn from how I approach and tackle this project.&lt;/li&gt;
&lt;li&gt;Writing about a client project in real-time gives me content to share for an indefinite period. I have a list of blog post ideas that I could write, and there are some good ideas in there. However, using client projects that I am actively working on as a touchstone for my writing will hopefully make writing much easier, as I am recounting my experiences in real-time. This should serve as a useful mechanism for me to improve my writing habits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Join me on my journey! I will be going step-by-step through the process of organizing, structuring, and executing this project. Posts will be happening very frequently, so if you always want to be kept in-the-loop, &lt;a href=&quot;https://twitter.com/KeenanPayne_&quot;&gt;follow me on Twitter&lt;/a&gt; or &lt;a href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#newsletter&quot;&gt;subscribe to the email newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;The analogy is simple: do architects design a building as contractors are building it? No, because that would be insane. The same applies here, except that the architectural underpinnings of a website can be redesigned with some time and planning as an afterthought to the initial implementation. Failing to think ahead as you architect a building is how you end up with the &lt;a href=&quot;https://en.wikipedia.org/wiki/Millennium_Tower_(San_Francisco)&quot;&gt;Millenium Tower&lt;/a&gt; in San Francisco, which is currently sinking into the ground as I write this. &lt;a href=&quot;https://keenanpayne.com/re-architecting-rippling-css/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Goodbye Asana, hello freelancing</title>
		<link href="https://keenanpayne.com/goodbye-asana-hello-freelancing/"/>
		<updated>Sat, 11 Apr 2020 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/goodbye-asana-hello-freelancing/</id>
		<content type="html">&lt;p&gt;It&#39;s seven, almost eight months past due, but there&#39;s no better time than the present to share some exciting news about my life. I have left Asana, and I&#39;m now working full-time as a freelance web developer! I am a gun for hire, taking my decade of web development experience and applying it to new projects and clients that need someone with my expertise.&lt;/p&gt;
&lt;p&gt;Because so much has changed in my life during the past year, I have done a decent amount of reflection, which I think would be useful to share with others. This post will just be a little overview of where I&#39;ve been, where I&#39;m at, and where I&#39;m going. It will serve more as a personal reflection, but might provide some insight that could be applicable for others.&lt;/p&gt;
&lt;h2 id=&quot;from-montana-to-san-francisco&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#from-montana-to-san-francisco&quot;&gt;From Montana to San Francisco&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before joining Asana as their second web developer, I worked as a freelance web developer for several years in my home state of Montana. I started my career working part-time throughout high school and college, and upon graduating from college, I pursued freelancing full-time for two years. As I started looking to expand my horizons as a professional web developer, I found the options available to me in Montana somewhat limited. Working remotely for a company was a possibility, but even in early 2014, there were much fewer opportunities available to those seeking to full-time remote work (fortunately, remote work is much more pervasive now &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;).&lt;/p&gt;
&lt;p&gt;Coupled with my desire to leave Montana to try living somewhere new, I embarked on a job hunt in employment-rich cities such as New York, Seattle, San Francisco, and even Amsterdam.&lt;/p&gt;
&lt;p&gt;After hundreds of emails and applications (many of which were for jobs that I had no idea I was unqualified for &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;) I ended up focusing on San Francisco, due to the large technology scene and plentiful job opportunities. Applying to Asana occurred to me by happenstance, as I was brainstorming companies to look into one afternoon. I remembered using Asana with a client of mine (shout-out to Glenn and Jamie) who used the product to organize the work that we were doing together. I looked at the job listings on Asana and voilà, a listing with &amp;quot;web developer&amp;quot; appeared. After countless rejections, I had gotten much better at matching job listings with my skillset, and the listing for Asana seemed like the perfect match. Well, needless to say, that it was as I ended up working at Asana for almost five years.&lt;/p&gt;
&lt;p&gt;Overall, I had a wonderful experience working at Asana. I was fortunate to work at one of the prosperous startups in the city. This led to &lt;em&gt;a lot&lt;/em&gt; of change during my five years working there. As a reflection on what changed from when I started to when I left, I wrote some highlights that come to mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I was only the second web developer at Asana, alongside my co-worker &lt;a href=&quot;http://sarahrudder.com/&quot;&gt;Sarah&lt;/a&gt;. By the time I had left, we had a team of 9.&lt;/li&gt;
&lt;li&gt;In 2014 the company was only 70–80 employees, and when I left in late 2019, the company was upwards of 600 employees.&lt;/li&gt;
&lt;li&gt;I learned &lt;strong&gt;a lot&lt;/strong&gt; while at Asana. Not only about web development, but coming from a purely freelancing background, I had a lot to learn about how to work within a larger organization. This deserves a post unto itself, but a not-so-shortlist includes:
&lt;ul&gt;
&lt;li&gt;Collaborating with teammates&lt;/li&gt;
&lt;li&gt;Communicating with stakeholders&lt;/li&gt;
&lt;li&gt;Costing my work&lt;/li&gt;
&lt;li&gt;Understanding how to make trade-offs&lt;/li&gt;
&lt;li&gt;Framing my work within the broader context of an organization&lt;/li&gt;
&lt;li&gt;Handling interpersonal workplace relationships&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Looking back, I am pleased with the time that I spent at Asana. There are things that I think could have gone better, but such is the case with most areas of our lives. I met a lot of great people, built a lot of great things, and learned a lot of great skills. That&#39;s not a bad takeaway from spending five years working somewhere.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/goodbye-asana/asana-desk.jpg&quot; alt=&quot;My Asana office setup&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;My Asana office setup. Why is there a bunch of fake grass on my desk? &lt;br /&gt; That was a prank, and I kept it on there for almost two years.&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;reflecting-on-areas-of-improvement&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#reflecting-on-areas-of-improvement&quot;&gt;Reflecting on areas of improvement&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It may seem difficult from the outside looking in to understand why somebody would leave a high paying tech job with great benefits and security for self-employment, which offers no benefits, precarious security, and is &lt;em&gt;sometimes&lt;/em&gt; high paying. Leaving Asana is not a decision I took lightly. I spent a lot of time reflecting on my needs and desires to understand which direction I wanted to take my life. After doing that, I decided that moving back into self-employment lined up most with my goals.&lt;/p&gt;
&lt;p&gt;I thought it might be interesting to outline some of the biggest drivers that ultimately led me to move from Asana to freelancing.&lt;/p&gt;
&lt;h3 id=&quot;working-hours&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#working-hours&quot;&gt;Working Hours&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I dislike having a prescribed structure thrust upon me by others. I don&#39;t necessarily know why, but it&#39;s something that I&#39;ve been aware of for a long time. As a child, this manifested in disdain for attending things like school, football practice, or any other obligation for which I had little personal enthusiasm. As an adult, this has largely manifested in &amp;quot;working hours.&amp;quot; That is, the hours under which humans are normally expected to work, which is generally viewed as 9am–5pm(ish). Fortunately for me, Asana was quite flexible in this regard. I could generally show up anytime between 9–11am, and no one would care (however, the &lt;em&gt;implicit&lt;/em&gt; expectation, as set by everyone else showing up around 9am, did make my lackadaisical 11am start time feel a bit odd.) Even with this flexibility, I was still largely fitting my life into a general framework that I had very little control over. Ultimately, I ended up not liking the expectation to be somewhere at a specific time, even though admittedly, that rigidity was less rigid than what others generally experience day-to-day.&lt;/p&gt;
&lt;p&gt;As a freelancer, I have the final say over what my schedule is. I get to take a look at the work that I need to do on a day-by-day basis and determine how much time is required to get that work done. I then get to fit this work into my day in a way that is more symbiotic with my other obligations and desires. If I feel more inclined to read and write in the morning or afternoon, I can do so, and give myself time to do client work afterward. This is the opposite of what the standard working paradigm is, and it works very well for me.&lt;/p&gt;
&lt;h3 id=&quot;commute&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#commute&quot;&gt;Commute&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Not only did I have to be at a place at a certain time every single day, but in order to get to that place I had to commute. You know, I had a commute in Montana to and from my office in Missoula. That commute involved getting in my car, driving 1 mile east for 5 minutes, parking my car, and getting out of my car to walk up three flights of stairs to reach an office. This was a tolerable commute. Hell, I would have tolerated an extra 10 minutes on top of that so long as the weather wasn&#39;t terrible.&lt;/p&gt;
&lt;p&gt;What did my commute look like in San Francisco? I&#39;m glad you asked. I would hop on one bus that would show up whenever it felt like down the street from my house and take that to Van Ness street. This is already a rude awakening since Van Ness is where the downtown San Francisco techno-dystopian hellscape begins. I would then wait for another bus that shows up whenever it felt like and ride that until I got close to my office, where I would then walk the remaining distance. This whole process took anywhere between 35–60 minutes on average, depending on the inclination of the San Francisco Municipal Transportation Agency. I will note that this was when I lived 2.5 miles away from Asana. I decided to move further west in the city because my rent had increased, and I wanted to save money and get further away from the busyness of the city. This additional two miles added another 15 minutes on average to my commute time and put me on a bus that was, on average, packed with even more people trying to make their way downtown.&lt;/p&gt;
&lt;p&gt;Needless to say, between having to be somewhere at a particular time and having my mechanism to get there be a (sometimes literal) shitstorm, the morning was not always my favorite time to be a human being. Enjoying my cup of coffee without somebody blasting a boombox and rolling a cigarette in the back of a bus is ideal for me.&lt;/p&gt;
&lt;h3 id=&quot;meetings&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#meetings&quot;&gt;Meetings&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Oh boy, let&#39;s talk about meetings. Over the course of my five years at Asana, the number of weekly meetings that I attended, and the duration of those meetings, increased year-over-year. In the beginning, there was a weekly team sync, as well as a one-on-one meeting with my manager. These were my standing meetings, and any other meetings, which occurred pretty infrequently, were to discuss project related or company-wide matters. I was very happy with the ratio of work to meetings in my first few years at Asana.&lt;/p&gt;
&lt;p&gt;As the company grew larger and, specifically, the web development team grew larger, so too did the amount and duration of our meetings. In lieu of finding other processes by which to mitigate our meeting load (&lt;em&gt;cough&lt;/em&gt;, the product we were building), the fallback had become more frequent and even longer meetings. If you&#39;ve been following along, this falls under &amp;quot;being somewhere specific at a certain time.&amp;quot; This is something that I do not enjoy, but its effect is even more pernicious, given the interruption that meetings cause during the day. Meetings force context switching, which, if you&#39;re unfamiliar, is horribly unproductive.&lt;/p&gt;
&lt;p&gt;As a freelancer, I have, on average, 1–2 meetings every week, with no meeting lasting longer than one hour. Many weeks, I will only communicate asynchronously with clients and collaborators via Slack or Asana without the need for a proper meeting. Do you want to know something? All of the work that I need to do is still getting done, decisions are still being made, and everyone is up-to-date on project progress. In fact, and I have no hard numbers to back this up, but freelancing feels way more productive than working in-house &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fn3&quot; id=&quot;fnref3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Fewer meetings play a large part in that, but they are only part of a higher order category under which productivity is achieved, which is minimizing context switching—more on that in one line break.&lt;/p&gt;
&lt;h3 id=&quot;context-switching&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#context-switching&quot;&gt;Context-switching&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Context-switching is the act of moving from one context—that is, the conditions under which something occurs—to another context. This is normal and something that happens constantly throughout our daily lives. However, to achieve maximum productivity doing something, you need to be focused on that something. Focusing requires both deliberate effort and minimal distractions. I have the former in spades, but I had the latter in undesirable quantities while working in an office.&lt;/p&gt;
&lt;p&gt;This isn&#39;t anything specific to Asana, but I believe it&#39;s mostly a result of the office environment in general. Asana is full of a lot of great people that I enjoyed being around and conversing with, and if you know me, you know that I love conversing. There is both good and bad to this. The good is that I have the privilege of being around a bunch of humans that I enjoy on a daily basis. The bad is that being around those humans created an amount of distraction that detracted from my day-to-day productivity. Whether it was so-called &amp;quot;water cooler talk,&amp;quot; answering questions and helping co-workers, attending meetings, or any of the other number of things that can happen as a result of working with hundreds of other people, I was distracted. This had a negative impact on my ability to focus, which had a negative impact on my ability to do my job effectively.&lt;/p&gt;
&lt;p&gt;I could take my laptop and work in more remote areas of the office to avoid other people. However, this came at the cost of sacrificing comfort for focus. I like working at my desk with my split keyboard, huge monitor, and a comfortable chair. I am generally more productive working at my desk than anywhere else, but I am also more productive when I&#39;m not being distracted. Unfortunately, working in an office forced me to choose between one or the other, which ultimately led to dissatisfaction with my work environment.&lt;/p&gt;
&lt;p&gt;Since I started freelancing, I have primarily been working from home in a desk setup that I configured after leaving Asana (and realizing that my Ikea desk and chair were going to be the death of my back if I didn&#39;t upgrade). Now, I have the best of both worlds: I have a desk configuration that is perfectly situated for how I enjoy working, and I have an environment that is conducive to focusing. The only thing I&#39;m missing is face-to-face contact with the people that I enjoyed seeing every day at Asana. I&#39;ve mitigated this feeling by being proactive in scheduling time to see my closest friends regularly so that I am not lacking in human contact.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/goodbye-asana/home-desk.jpg&quot; alt=&quot;My home office setup&quot; /&gt;&lt;figcaption&gt;
      &lt;div class=&quot;figure-caption&quot;&gt;My current home office setup. &lt;br /&gt;I will share a post about how I decided on my equipment in the future.&lt;/div&gt;&lt;p class=&quot;figure-source&quot;&gt;
          &lt;small&gt;
            &lt;strong&gt;Source:&lt;/strong&gt;
            &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/&quot; title=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;/a&gt;
          &lt;/small&gt;
        &lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;professional-agency&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#professional-agency&quot;&gt;Professional agency&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Lastly, and perhaps most importantly, was the distinct lack of agency that I felt over the work that I was doing at Asana. I take an immense amount of pride in the work that I do, and I always strive to do the best work that I can given the circumstances. The problem, however, was the circumstances under which I was continually doing work at Asana. As a fast growing startup, everyone is expected to move quickly to help keep the company growing, so that we can continue meeting our goals, so that we can eventually capture the market, so that we can be a sustainable company… so on and so forth.&lt;/p&gt;
&lt;p&gt;This is all fine and good, but it came with one problem: we were usually in a state of reactivity instead of proactivity. &amp;quot;How quickly can we build this landing page for a new product&amp;quot; was my life for years at Asana, instead of &amp;quot;how can we design and implement a system that facilitates building landing pages quickly.&amp;quot; Instead of reflecting on how we could make improvements to allow for better work in the future, we consistently looked towards the next project that the marketing or sales team needed to meet their goals. This led to building on top of systems that were not designed for the size and scale of work that we were doing, which led to lower quality code, which led to sub-par design implementations, which led to personal dissatisfaction. Additionally, I was usually at the tail-end of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Waterfall_model&quot;&gt;waterfall planning&lt;/a&gt; process that usually happened with little or no input from me. As a result, project deadlines would be determined by the time that it was my turn for development, which offered little room for me to organize the work in an ideal way &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fn4&quot; id=&quot;fnref4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;As a freelancer, a large part of my job is planning and organizing &lt;em&gt;how&lt;/em&gt; the work should be done for a project, alongside &lt;em&gt;doing&lt;/em&gt; the work. I learned after leaving Asana that I need to create the circumstances under which I create high-quality work, not expect those circumstances to arise from external forces. As a result, I am growing comfortable telling clients that I will be organizing and orchestrating the entire development-side of a project while allowing other stakeholders to organize and orchestrate the areas where they are responsible. This enables me to build web projects that I am more proud of, set reasonable deadlines for work that needs to be done, and build confidence in my clients that I can be trusted to run a web project from start to finish. I am the expert, after all, and this is what people are paying me to do.&lt;/p&gt;
&lt;p class=&quot;-context -note &quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 448 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M448 309.5V96c0-35.35-28.65-64-64-64H64.01C28.66 32 .0065 60.65 .0065 96L0 416c0 35.35 28.65 64 64 64h213.5c16.97 0 33.25-6.742 45.26-18.75l106.5-106.5C441.3 342.7 448 326.5 448 309.5zM300.1 438.6C296.7 442.1 292.5 444.4 288 445.9V336c0-8.828 7.188-16 16-16h109.9c-1.566 4.477-3.844 8.668-7.297 12.12L300.1 438.6zM416 288h-112C277.5 288 256 309.5 256 336V448H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h320c17.64 0 32 14.36 32 32V288z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  &lt;span&gt;I will note, perhaps unnecessarily, that I am not trying to rag on Asana in any way. The issues that I experienced during my time working there are not uncommon to others who work in an office setting, specifically one that is in a metropolitan area. Even still, in order to create positive change for myself, I need to clearly understand what areas needed changing. My needs and desires might be different than yours, and that&#39;s okay. We all have things that we prioritize, and the trade-offs and decisions that we make are going to be a result of that prioritization.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;upward-and-onward&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#upward-and-onward&quot;&gt;Upward and onward&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This was a pretty long-winded post, but there was (and still is) a lot for me to unpack. I also realize that there are more things that I touched on that might be suitable for their own more comprehensive post in the future. Even still, I appreciate you sticking with me throughout all of this; including those of you reading this blog post who don&#39;t know me at all, and those of you reading this who do know me and have given me unconditional support throughout all of these years. I appreciate each and every one of you.&lt;/p&gt;
&lt;p&gt;As for me, well, I&#39;m now a freelancing web developer once again (well, I have been for almost eight months, but I already went over that). If you are interested in hiring me for a web project, you should &lt;a href=&quot;https://keenanpayne.com/contact&quot;&gt;get in touch&lt;/a&gt; and we can talk more about it. I&#39;m a systems focused front-end developer, which I enjoy working on projects where I can help architect and implement solutions that solve problems, big and small, in an intelligent and scalable way.&lt;/p&gt;
&lt;p&gt;If you are reading this and find what I have to say compelling or interesting, I encourage you to &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#newsletter&quot;&gt;sign up for my newsletter&lt;/a&gt;. Writing is something that I have wanted to do more regularly for years, but I have not made the time to do it until recently. I plan on writing about my experience as a freelancer, which will include sharing my thoughts and ideas, which &lt;em&gt;you&lt;/em&gt; might be able to use for your own career. I will also be occasionally sharing web development tutorials, tips, and musings if that is up your alley.&lt;/p&gt;
&lt;p&gt;And of course, if you feel so inclined, leave a comment down below and tell me what your thoughts are. Have you had similar experiences working in an office environment, or is the office environment more conducive to productive working for you? Either way, I would love to hear your thoughts and opinions.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;_label&quot;&gt;&lt;span&gt;Footnotes&lt;/span&gt;&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Of course, I expected the transition to remote-friendly work to grow steadily over time, but the unfortunate spread of Covid-19 seems to have kicked a foot into the back of companies&#39; asses who were resistant to setting up an infrastructure that allowed for remote-friendly work. &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Growing up with a completely informal education as a web developer ended up creating some confusion when I tried taking the skills that I had and match them to job listings I found online. I had no idea what I was; was I a web developer, web designer, front-end developer, software engineer, blah blah blah. Anyone who has applied for a technology job before probably knows how horrible job listings are. That, combined with my lack of understanding about &lt;em&gt;what&lt;/em&gt; exactly I was as a professional, led me to a bunch of awkward phone calls where both parties fully understood that I had no idea what I was talking about for a job to which I had applied. Oops. &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn3&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;I may not have hard numbers to back it up, but the number of projects that I have been able to complete during my first six months freelancing dwarfs what I was doing at Asana. Sure, this is anecdotal and there are plenty of caveats I could make, but I&#39;m listening to my gut on this one: I&#39;m much more productive right now than I ever have been. &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fnref3&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn4&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;I will note that the process for organizing and executing web projects got &lt;strong&gt;much&lt;/strong&gt; better during the last year that I worked at Asana. After years of being at the tail-end of waterfall planning, I was finally having more of a say in the planning process, which allowed for more flexible deadlines and better project planning. However, we still acted as a mostly reactive team, and rarely created time for ourselves to improve our processes and infrastructure. &lt;a href=&quot;https://keenanpayne.com/goodbye-asana-hello-freelancing/#fnref4&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Rotating text with CSS animations</title>
		<link href="https://keenanpayne.com/rotating-text-css-animation/"/>
		<updated>Fri, 12 Jul 2019 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/rotating-text-css-animation/</id>
		<content type="html">&lt;p&gt;I&#39;ve been toying with different ideas for how I can describe the work that I do to people visiting my website. One idea that I had involved rotating a single word or phrase inside of a sentence to list the different qualities of my work. Here&#39;s a quick tutorial of the prototype that I built for how this effect might be achieved using HTML and CSS.&lt;/p&gt;
&lt;p&gt;Here&#39;s an example of what we will be building:&lt;/p&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;500&quot; data-theme-id=&quot;0&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;mxjGmo&quot; style=&quot;height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;Rotating text with CSS animations&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/mxjGmo/&quot;&gt;
  Rotating text with CSS animations&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;writing-copy&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#writing-copy&quot;&gt;Writing copy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before writing any code, I knew that I wanted to have the following headline on my website:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&#39;ll make your website... [insert adjective here]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For my adjectives, I made a list of what I wanted to rotate through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beautiful&lt;/li&gt;
&lt;li&gt;maintainable&lt;/li&gt;
&lt;li&gt;perfect&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Having a rough idea of the copy that I will be using helps me understand what the markup will need to look like as I&#39;m coding.&lt;/p&gt;
&lt;h2 id=&quot;marking-up-the-dom&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#marking-up-the-dom&quot;&gt;Marking up the DOM&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After writing up my copy, I started marking up the DOM. Marking up the DOM before embarking on styling allows me to define the semantics of how this code should be written, then write the styles to fit these semantics.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  I&#39;ll make your website&lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;hellip;&quot;&gt;&amp;amp;hellip;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;beautiful&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;maintainable&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;perfect 👌&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;basic-styles&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#basic-styles&quot;&gt;Basic styles&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After marking up the DOM, I styled my text so that I could get an understanding of how the styles would be changing as the animation runs.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.rotatingText&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Georgia&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; italic&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 18px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Open Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; normal&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 700&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;350&quot; data-theme-id=&quot;0&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;9b5c0f4a869310dfa38d21be5a42f004&quot; style=&quot;height: 350px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;Rotating text with CSS animations [step 1]&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/9b5c0f4a869310dfa38d21be5a42f004/&quot;&gt;
  Rotating text with CSS animations [step 1]&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;h2 id=&quot;adding-the-animation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#adding-the-animation&quot;&gt;Adding the animation&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our headline is starting to come together after adding some styles. Now it&#39;s time to tackle the animation.&lt;/p&gt;
&lt;h3 id=&quot;toggling-visibility&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#toggling-visibility&quot;&gt;Toggling visibility&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The first step in the animation is ensuring that all of the adjectives in our headline are hidden until the animation runs. Hiding things on the web can be done in many different ways, and it&#39;s important that our approach will not impact the accessibility of our content for visitors using screen readers or other assistive technologies. For this project, the visibility of our content will change by toggling the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/opacity&quot;&gt;&lt;code&gt;opacity&lt;/code&gt;&lt;/a&gt; property on the &lt;code&gt;.rotatingText-adjective&lt;/code&gt; class.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Open Sans&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; normal&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 700&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;ins class=&quot;highlight-line highlight-line-add&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/ins&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;-context -tip&quot;&gt;
  &lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; class=&quot;icon&quot; role=&quot;img&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 640 512&quot;&gt;&lt;!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --&gt;&lt;path d=&quot;M119.1 33.74l-64-31.1c-7.875-3.1-17.5-.875-21.38 7.125c-4 7.875-.875 17.5 7.125 21.37l64 31.1C107.1 63.36 109.5 63.99 112 63.99c7.375 0 13.88-5.125 15.62-12.37C129.3 44.49 125.8 36.99 119.1 33.74zM112 287.1c-2.5 0-4.875 .625-7.125 1.75l-64 31.1c-8 3.875-11.12 13.5-7.25 21.37c4 7.1 13.62 11.12 21.5 7.25l64-31.1c6.625-3.375 10.12-10.87 8.5-17.1C125.9 293.1 119.4 287.1 112 287.1zM528 63.99c2.5 0 4.875-.625 7.125-1.75l64-31.1c8-3.875 11.12-13.5 7.125-21.37c-3.875-7.1-13.5-11.12-21.38-7.125l-64 31.1c-6.625 3.25-10.12 10.75-8.5 17.87C514.1 58.86 520.6 63.99 528 63.99zM96 175.1C96 167.1 88.88 159.1 80 159.1h-64c-8.875 0-16 7.125-16 15.1S7.125 191.1 16 191.1h64C88.88 191.1 96 184.9 96 175.1zM624 159.1h-64c-8.875 0-16 7.125-16 15.1s7.125 15.1 16 15.1h64c8.875 0 16-7.125 16-15.1S632.9 159.1 624 159.1zM599.1 321.7l-64-31.1c-7.875-3.1-17.5-.75-21.5 7.125c-3.875 7.875-.75 17.5 7.25 21.5l64 31.1c7.875 3.875 17.5 .75 21.5-7.25C610.3 335.2 607.1 325.6 599.1 321.7zM319.5 .0154C222.7 .2967 144 79.89 144 177.4c0 42.91 15.47 84.34 43.55 116.6c13.33 15.31 35.84 49.59 43.73 76.02c1.078 8.687 8.844 14.62 17.64 13.71c8.703-.9687 14.98-8.965 14.11-17.65l-.6094-3.312c-10.31-34.97-36-72.84-50.73-89.77C188.7 246.5 176 212.6 176 177.4c0-81.24 63.05-145.1 143.5-145.3H320c38.13 0 74.05 14.87 101.2 41.94C448.8 101.5 464 138.2 464 177.4c0 35.19-12.67 69.15-35.67 95.62c-14.75 16.94-40.44 54.8-50.75 89.77l-.625 3.344c-1.047 8.75 4.938 17.59 13.67 18.68c.7813 .0938 1.531 .1562 2.281 .1562c7.797 0 14.36-5.121 15.36-13.12c8.344-28.25 30.86-62.53 44.2-77.84C480.5 261.7 496 220.3 496 177.4c0-47.71-18.55-92.49-52.22-126.1C410.5 18.08 365.6-1.172 319.5 .0154zM383.1 415.1H256c-8.846 0-16.01 7.18-16 16.03l.0746 22.34c.0098 6.27 1.884 12.46 5.359 17.68l17.09 25.69c5.225 7.855 17.22 14.28 26.65 14.28h61.72c9.418 0 21.41-6.43 26.63-14.27l17.09-25.69c2.953-4.441 5.351-12.36 5.359-17.68l-.0254-22.34C399.1 423.2 392.8 415.1 383.1 415.1zM367.9 454.4l-16.11 24.45c-.4766 .4375-1.686 1.086-.8672 1.117l-60.29 .1172c-.4238-.1016-1.138-.2773-1.423-.2773c-.1406 0-.1348-.2266 0 0l-17.1-25.48l-.0098-6.367h95.94l.0039 5.18C367.9 453.6 367.7 454.4 367.9 454.4C367.9 454.4 367.8 454.5 367.9 454.4zM336 80.02c0-8.84-7.156-16-16-16c-61.75 0-112 50.24-112 111.1c0 8.844 7.156 16 16 16s16-7.159 16-16c0-44.1 35.88-79.1 80-79.1C328.8 96.01 336 88.86 336 80.02z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
  Hiding content on the web is tricky. For deeper dives, I recommend reading Scott O&#39;Hara&#39;s &lt;a href=&quot;https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html&quot;&gt;article on inclusively hiding content&lt;/a&gt; and Zell Liew&#39;s article on &lt;a href=&quot;https://zellwk.com/blog/hide-content-accessibly/&quot;&gt;using opacity to hide content&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;With the adjectives hidden, we can write an animation using CSS keyframes that toggle the &lt;code&gt;opacity&lt;/code&gt; property.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;20%,
  80%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We then add this animation to each of our adjectives so that it runs one after another. This effect is accomplished by staggering the values in the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/animation-delay&quot;&gt;&lt;code&gt;animation-delay&lt;/code&gt;&lt;/a&gt; property.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(1)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(2)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.75s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(3)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;350&quot; data-theme-id=&quot;0&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;7f725b7f624840b9155fe2c6127c143b&quot; style=&quot;height: 350px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;Rotating text with CSS animations [step 2]&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/7f725b7f624840b9155fe2c6127c143b/&quot;&gt;
  Rotating text with CSS animations [step 2]&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;h3 id=&quot;finessing-the-last-adjective&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#finessing-the-last-adjective&quot;&gt;Finessing the last adjective&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The animation is successfully running! However, our last adjective slides away with the rest, so we&#39;ll need to make some adjustments so that it stays on the screen. To do this, we can create a set of keyframes specifically for our last animation:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate-last&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We then apply this animation to our last adjective:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(3)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;ins class=&quot;highlight-line highlight-line-add&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate-last&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/ins&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;ins class=&quot;highlight-line highlight-line-add&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;animation-fill-mode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; forwards&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/ins&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also note that I added the declaration &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/animation-fill-mode&quot;&gt;&lt;code&gt;animation-fill-mode: forwards&lt;/code&gt;&lt;/a&gt; which indicates that the animation should stop on the last frame of the animation after running.&lt;/p&gt;
&lt;h3 id=&quot;moving-the-text&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#moving-the-text&quot;&gt;Moving the text&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that the visibility of the text is toggled, we can update our keyframes to create the rotating effect that we want:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;20%,
  80%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; -25px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is done by animating the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d&quot;&gt;&lt;code&gt;translate3d()&lt;/code&gt;&lt;/a&gt; value inside of the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/transform&quot;&gt;&lt;code&gt;transform&lt;/code&gt;&lt;/a&gt; property. The &lt;code&gt;translate3d()&lt;/code&gt; value accepts three arguments: x, y, and z-axis positions. Because our text should be moving from the bottom up, we are only concerned with updating the y-axis.&lt;/p&gt;
&lt;p&gt;To give our text the effect of moving from the bottom up, we push it down on the y-axis fifty pixels. We move our text into position by resetting our y-axis to zero. Finally, we slide our text out of place by negative twenty-five pixels on the y-axis. This gives us the rotating effect that we want.&lt;/p&gt;
&lt;p&gt;We will use a slightly modified version of this code for our last adjective. Because our last adjective should stay in place, we can omit the declaration that moves our adjective negative twenty-five pixels.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate-last&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;50%,
  100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With that, we have a fully functional rotating headline just like we wanted:&lt;/p&gt;
&lt;p class=&quot;codepen&quot; data-height=&quot;350&quot; data-theme-id=&quot;0&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-slug-hash=&quot;dd5fe271f920ab9c22b2506a590e0e9d&quot; style=&quot;height: 350px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-pen-title=&quot;Rotating text with CSS animations [step 3]&quot;&gt;
  &lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/dd5fe271f920ab9c22b2506a590e0e9d/&quot;&gt;
  Rotating text with CSS animations [step 3]&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;)
  on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Our final code looks like this:&lt;/p&gt;
&lt;h3 id=&quot;html&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#html&quot;&gt;HTML&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  I&#39;ll make your website&lt;span class=&quot;token entity named-entity&quot; title=&quot;&amp;hellip;&quot;&gt;&amp;amp;hellip;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;beautiful&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;maintainable&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rotatingText-adjective&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;perfect 👌&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;css&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#css&quot;&gt;CSS&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.rotatingText&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Georgia&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; italic&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 18px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Open Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; normal&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 700&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(1)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(2)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.75s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.rotatingText-adjective:nth-of-type(3)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; rotate-last&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;animation-fill-mode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; forwards&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;20%,
  80%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; -25px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@keyframes&lt;/span&gt; rotate-last&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;0%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token selector&quot;&gt;50%,
  100%&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate3d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wrap-up&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/rotating-text-css-animation/#wrap-up&quot;&gt;Wrap-up&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Animating the &lt;code&gt;translate3d()&lt;/code&gt; value on the &lt;code&gt;transform&lt;/code&gt; property is a simple but powerful way to move elements on a page. This same property can be used to move elements along all three axes, offering many different animation possibilities.&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
</content>
	</entry>
	
	<entry>
		<title>Naming typography patterns in CSS</title>
		<link href="https://keenanpayne.com/naming-typography-patterns-css/"/>
		<updated>Wed, 26 Jun 2019 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/naming-typography-patterns-css/</id>
		<content type="html">&lt;p&gt;I read a great article the other day by Dan Mall titled &lt;a href=&quot;https://danmall.me/articles/typography-in-design-systems/&quot;&gt;Typography in Design Systems&lt;/a&gt;. In it, Dan talks about how he approaches naming conventions for typography in design systems; specifically, some of the problems that he has encountered trying to scale common naming conventions. This is a topic that I&#39;ve also been thinking about recently, having encountered similar issues as Dan in codebases that I work in. I’ve taken a different approach to address this problem, which is why I thought it would be useful to share my thoughts.&lt;/p&gt;
&lt;h2 id=&quot;clothing-and-naming&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/naming-typography-patterns-css/#clothing-and-naming&quot;&gt;Clothing and naming&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When working on web projects, abstracting user interface patterns such as typography into easily reusable pieces of code is common, and often desirable. Doing so promotes design consistency and can improve developer efficiency. However, the details of how patterns and abstractions get implemented into a codebase will inform how useful they become. Naming is one such implementation detail that, when overlooked or not sufficiently evaluated, can impede usability and clarity.&lt;/p&gt;
&lt;p&gt;Many web developers are likely familiar with the clothing size metaphor when naming things in CSS. This naming convention can manifest in many ways, but one of the most common that I’ve encountered is for font-sizes. Here is a common way to create consistent font-sizes using Sass mixins:&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-md&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-lg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-xl&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.25rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 600&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;See an example of this typographic scale in action at&lt;/em&gt; &lt;a href=&quot;https://type-scale.com/?size=16&amp;amp;scale=1.500&amp;amp;text=Naming%20is%20hard&amp;amp;font=Playfair%20Display&amp;amp;fontweight=400&amp;amp;bodyfont=Poppins&amp;amp;bodyfontweight=400&amp;amp;lineheight=1.45&amp;amp;backgroundcolor=white&amp;amp;fontcolor=%23333&amp;amp;preview=false&quot;&gt;&lt;em&gt;type-scale.com&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is common to use clothing sizes as a metaphor for naming font-sizes. Initially, this seems like a useful metaphor. It can feel intuitive to call our smaller font-sizes &amp;quot;small&amp;quot; and our larger font-sizes &amp;quot;large.&amp;quot; This metaphor can work well for systems that have a limited typographic scale (e.g., xs, sm, md, lg, xl), but how does this metaphor scale when we work in a system with more expansive typographic needs? Using such a metaphor, we might resort to naming something &lt;code&gt;fontSize-xxxxl&lt;/code&gt;. Such a convention can work depending on the context—be that the needs of the business, preferred design/development workflow, or the preference of the developer—but it can be problematic for all of the same reasons.&lt;/p&gt;
&lt;h2 id=&quot;naming-is-not-one-size-fits-all&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/naming-typography-patterns-css/#naming-is-not-one-size-fits-all&quot;&gt;Naming is not one size fits all&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I am part of a group of folks working on building the first brand design system at &lt;a href=&quot;https://asana.com/?noredirect&quot;&gt;Asana&lt;/a&gt;. As a part of this effort, I have been taking preliminary steps to think about how we want to architect our codebase to accommodate the type of design system that we hope to build. This includes thinking about how the building blocks of our web pages are architected so that developer efficiency and designer flexibility are optimized. One such building block that needed re-evaluating is how typography is handled in our codebase.&lt;/p&gt;
&lt;p&gt;We’ve run into issues with scaling the clothing size naming convention for typography in our codebase. Our designers prefer flexible, context-dependent styling for type, and the inherent limitations of scaling the clothing size metaphor make it difficult to achieve that. As a result, we have a growing list of font-size variables that is almost impossible to remember, which slows down development. Additionally, this naming convention adds overhead for designers who must name type styles in Sketch files so that there’s a one-to-one match with the variable names in our codebase.&lt;/p&gt;
&lt;p&gt;Our design system should use conventions that designers and developers can understand, facilitates the development of new pages and components, and can scale as our needs grow over time. Our current solution for naming typography is not checking these boxes, which indicates that it’s time for re-evaluation.&lt;/p&gt;
&lt;h3 id=&quot;out-of-the-metaphorical-and-into-the-literal&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/naming-typography-patterns-css/#out-of-the-metaphorical-and-into-the-literal&quot;&gt;Out of the metaphorical and into the literal&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With this outcome in mind, my predominant thought around naming typography has been to move out of the metaphorical, and into the literal. Here’s an example of what this might look like:&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fontSize-36&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.25rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 600&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this example, we scrap the clothing size metaphor and name our mixins after their pixel representation. When we want a sixteen-pixel font-size, we reference &lt;code&gt;fontSize-16()&lt;/code&gt; in our codebase. This mixin can then convert our font-size into ems or rems if we wish, as well as provide accompanying font styles if necessary (e.g., &lt;code&gt;font-weight&lt;/code&gt;, &lt;code&gt;line-height&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;A system like this could work well at Asana because our brand design team works with pixel font-sizes in their Sketch files. Translating a design into code could be made easier for developers, as there is a one-to-one match between our mixin names and the font-sizes that we see in design files. This means that we no longer have to continually cross-reference variable names with values to determine which to use. There’s also infinite room to scale our typography without impeding clarity; if we need a larger font-size, we can add a new mixin. Lastly, by removing the naming convention, we have reduced the work that designers have to do when building their files. Wins all around!&lt;/p&gt;
&lt;h2 id=&quot;architecture-is-contextual&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/naming-typography-patterns-css/#architecture-is-contextual&quot;&gt;Architecture is contextual&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Context is critical when making architectural decisions. What works under one set of circumstances may not work under another. In this instance, because web developers at Asana are building new pages and components from Sketch files, it’s important that developers can easily understand which class, mixin, or variable to use when translating designs into code. Because we have the additional requirement of wanting a flexible type system, it makes sense to use a naming convention that can easily scale as the needs of our designs change. These are all considerations that must be taken into account when making architectural decisions.&lt;/p&gt;
&lt;p&gt;It is also important to acknowledge that architectural decisions are rarely made without any trade-offs. There is never a silver bullet solution that solves every problem without consequence. In this instance, we make trade-offs if we move forward with this new naming convention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Difficult to remember:&lt;/strong&gt; One of the efficiencies that is provided by using a metaphor for naming conventions is the reduced cognitive overhead for remembering names. For me, it’s easier to remember “extra-small” than it is to remember a string of numbers (e.g., 16, 24, 36, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infinite font sizes:&lt;/strong&gt; Using the clothing size metaphor, we were able to identify when typography styles started getting out of hand. Seeing something named “xxxxl” indicates that something needs re-evaluating: either the way that font-sizes are implemented in the codebase or the number of font-sizes that are used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trade-offs should be evaluated on a case-by-case basis. The circumstances and priorities under which decisions are made will directly inform the value of various trade-offs, and should hopefully guide you in making a decision.&lt;/p&gt;
&lt;h2 id=&quot;closing-thoughts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/naming-typography-patterns-css/#closing-thoughts&quot;&gt;Closing thoughts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Will we stick with this new naming convention for our font sizes? I’m not entirely sure at the moment. I think that this could be a decent solution for naming font-sizes, but more time must be spent evaluating our options and getting buy-in from teammates and stakeholders. Either way, it was fun to think outside of our existing paradigms and conventions and wonder how we can make improvements.&lt;/p&gt;
&lt;p&gt;How would you have approached this problem? Have you had trouble scaling this clothing size metaphor with naming things well? Feel free to leave a comment below! I’d love to hear what you think.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Defining metrics that help with static site generator evaluation</title>
		<link href="https://keenanpayne.com/evaluating-static-site-generators/"/>
		<updated>Thu, 26 Jul 2018 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/evaluating-static-site-generators/</id>
		<content type="html">&lt;p&gt;When choosing a static site generator (SSG) for your next project, how do you decide on which tool to use? What is important to you or your organization? Different individuals or organizations often have drastically different priorities when it comes to choosing software.&lt;/p&gt;
&lt;p&gt;While evaluating software to use, it is important to surface the metrics and considerations that are important to you or your organization. You need to have something by which different pieces of software are evaluated, and defining metrics is an important step in doing that.&lt;/p&gt;
&lt;p&gt;For the past few months at Asana, our web development team has recently been evaluating SSGs with the hope of finding one that will scale with both our growing website and our growing team. As we started evaluating software, it became apparent that each member of our team was using different metrics to do evaluations. Each team member has different things that they believe are important. Having different opinions can be helpful for surfacing metrics that would have otherwise been left out. However, using inconsistent metrics can lead to a lack of shared understanding which can create friction when making a decision.&lt;/p&gt;
&lt;p&gt;When our team first kick-started the evaluation, we were sharing feedback that included all sorts of metrics. We were all prioritizing something different as we did our evaluation. After recognizing that this would never lead to a conclusive answer, we took a step back and had a few discussions around what metrics were important to us when deciding our next SSG. To have a productive evaluation, our team needed to create a shared understanding of the metrics we would measure to compare the different tools. After a few discussions, our metrics list looked like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecture (extensibility, language(s), framework(s))&lt;/li&gt;
&lt;li&gt;Developer velocity (set-up and hot reloading times)&lt;/li&gt;
&lt;li&gt;Project build time (compiling static pages and assets)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also had &amp;quot;considerations&amp;quot; that are important points to note but are harder to quantify:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recruitment efforts around our tech stack&lt;/li&gt;
&lt;li&gt;Long-term viability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With these metrics in mind we restarted our evaluation efforts with the hopes of finding an SSG to suit our website and our development needs. We could have saved time by defining these metrics ahead of time, then proceeding with the evaluation. Yet I am still grateful that I was able to learn something from the experience, and I hope it is useful for you.&lt;/p&gt;
&lt;p&gt;What metrics have you used when evaluating a static site generator? Do you have any other advice for your fellow developers hoping to choose a piece of software?&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Allow elements to hang outside of their fixed-width parents without scrollbars</title>
		<link href="https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/"/>
		<updated>Thu, 22 Feb 2018 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/</id>
		<content type="html">&lt;p&gt;I was recently working on a landing page at Asana that was designed by &lt;a href=&quot;http://jacoviello.com/&quot;&gt;Devin Jacoviello&lt;/a&gt;, one of our talented communication designers at Asana. The page was beautiful and seemed to be a relatively straight-forward project. As we discussed developing the page during our design hand-off, there was one area that did not seem straight-forward in its implementation.&lt;/p&gt;
&lt;p&gt;The area that confused me was the component that we call the &amp;quot;masthead.&amp;quot; This component lives at the top of the page and contains our page title, subtitle, and a CTA. Additionally, the masthead component for this specific landing page has floating elements that surround the content and provide some visual elegance.&lt;/p&gt;
&lt;p&gt;Because this landing page is not live, let&#39;s say the design looks something like this:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/elements-hang-outside-parents/example-design.png&quot; alt=&quot;Landing page design&quot; /&gt;&lt;/figure&gt;
&lt;p&gt;As Devin and I walked through the implementation details, he described the interaction for the masthead component. He explained that at sub-1920 pixel viewports the floating elements would be positioned off-screen surrounding the content. If the screen grew larger, the elements would remain at their location, but more of the element would be visible to the user.&lt;/p&gt;
&lt;p&gt;When described to me, this seemed like a pretty straight-forward interaction. I had never built something like this before, but I wouldn&#39;t imagine it being very hard to accomplish.&lt;/p&gt;
&lt;p&gt;If that were the case, I wouldn&#39;t be writing this blog post.&lt;/p&gt;
&lt;h2 id=&quot;approaches&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/#approaches&quot;&gt;Approaches&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;solution-1&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/#solution-1&quot;&gt;Solution 1&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;During my first pass at implementing the design, I built a layout with a fixed-width container that contains many child elements that are absolutely positioned to achieve the desired effect.&lt;/p&gt;
&lt;p data-height=&quot;500&quot; data-theme-id=&quot;dark&quot; data-slug-hash=&quot;a4d4d78c334a82834eec8a23d1aa94a3&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-embed-version=&quot;2&quot; data-pen-title=&quot;Allow elements to hang outside of a fixed-width container [Attempt 1]&quot; class=&quot;codepen&quot;&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/a4d4d78c334a82834eec8a23d1aa94a3/&quot;&gt;Allow elements to hang outside of a fixed-width container [Attempt 1]&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;This solution achieves the desired effect, with one caveat: we have horizontal overflow because of our off-screen content.&lt;/p&gt;
&lt;h3 id=&quot;solution-2&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/#solution-2&quot;&gt;Solution 2&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Naturally, if we want to remove the horizontal overflow for our off-screen content, we can apply &lt;code&gt;overflow-x: hidden;&lt;/code&gt; to our container and see if that solves our problem.&lt;/p&gt;
&lt;p data-height=&quot;500&quot; data-theme-id=&quot;dark&quot; data-slug-hash=&quot;f61d113cfe2f39438c845b32e3e90c73&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-embed-version=&quot;2&quot; data-pen-title=&quot;Allow elements to hang outside of a fixed-width container [Solution 2]&quot; class=&quot;codepen&quot;&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/f61d113cfe2f39438c845b32e3e90c73/&quot;&gt;Allow elements to hang outside of a fixed-width container [Solution 2]&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This solution works well on sub-1920 pixel viewports, but when you have a larger viewport, we get the following issue:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://keenanpayne.com/images/posts/elements-hang-outside-parents/example-complete.png&quot; alt=&quot;Landing page design&quot; /&gt;&lt;/figure&gt;
&lt;p&gt;Because we&#39;re removing all horizontal overflow from our container, when you have a viewport larger than 1920 pixels, the remaining parts of our floating elements are cut off.&lt;/p&gt;
&lt;h3 id=&quot;solution-3&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/#solution-3&quot;&gt;Solution 3&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We need a solution that allows our floating elements to be positioned off-screen on sub-1920 pixel viewports without any horizontal overflow, and on viewports larger than 1920 pixels the entire floating elements are visible.&lt;/p&gt;
&lt;p&gt;To achieve this, we are going to add an additional container to our layout.&lt;/p&gt;
&lt;p data-height=&quot;600&quot; data-theme-id=&quot;dark&quot; data-slug-hash=&quot;321f001ab7cfd3ba9b696192cba6614c&quot; data-default-tab=&quot;result&quot; data-user=&quot;keenanpayne&quot; data-embed-version=&quot;2&quot; data-pen-title=&quot;Allow elements to hang outside of a fixed-width container&quot; class=&quot;codepen&quot;&gt;See the Pen &lt;a href=&quot;https://codepen.io/keenanpayne/pen/321f001ab7cfd3ba9b696192cba6614c/&quot;&gt;Allow elements to hang outside of a fixed-width container&lt;/a&gt; by Keenan Payne (&lt;a href=&quot;https://codepen.io/keenanpayne&quot;&gt;@keenanpayne&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io/&quot;&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Reduce the zoom of your browser window if you have a monitor smaller than 1920 pixels and wish to see the effect.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now, when our user visits this page on a 1920 pixel monitor, they will see all of the floating content, similar to the image at the beginning of this post.&lt;/p&gt;
&lt;p&gt;Why does this work? It&#39;s because we shift the logic to ensure that horizontal overflow is not visible. We place &lt;code&gt;overflow-x: hidden;&lt;/code&gt; on our outer-most container, and in our inner container, we nest all of our absolutely positioned floating elements. Because we are not hiding the overflow in our inner container, the elements that are nested inside of it will display on larger viewports but will not overflow on smaller viewports thanks to our outer container. It&#39;s a pretty simple trick and only requires one extra element to work properly.&lt;/p&gt;
&lt;h2 id=&quot;shouts-out&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/elements-hang-outside-parents-without-scrollbars/#shouts-out&quot;&gt;Shouts Out&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Quick shout out to &lt;a href=&quot;https://chrissilich.com/&quot;&gt;Chris Silich&lt;/a&gt; that wrote a blog post about this a few years ago, but no longer seems to be published. This post was one of the only resources I found documenting this solution, and I thought it would be valuable to write about it again since his original post contains broken images and no working examples.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Just another &#39;hello, world&#39; introduction</title>
		<link href="https://keenanpayne.com/introduction/"/>
		<updated>Fri, 22 Dec 2017 24:00:00 GMT</updated>
		<id>https://keenanpayne.com/introduction/</id>
		<content type="html">&lt;p&gt;Hello, my name is Keenan Payne, which you probably already discerned if you&#39;re reading this post. If you haven&#39;t, greetings it&#39;s nice to meet you. 👋🏻&lt;/p&gt;
&lt;p&gt;I&#39;m starting this blog with the intention of sharing any helpful knowledge that I have as it pertains to coding (Maybe I&#39;ll branch out in the future). I&#39;ve always found writing to be a helpful exercise in both teaching and learning. By spending time writing, I get to share my thoughts and ideas with you on a given subject, but I also get to spend time re-evaluating my thoughts and ideas. This cycle of re-evaluation helps me think of things that I might otherwise have missed initially. It also gives me the space to think of alternatives and ensure that I&#39;m providing you, the reader, my best thoughts at any given time on a subject.&lt;/p&gt;
&lt;h3 id=&quot;topics-of-conversation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://keenanpayne.com/introduction/#topics-of-conversation&quot;&gt;Topics of Conversation&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;What exactly will I be talking about? Well, by profession I&#39;m a front-end developer so I&#39;ll be sharing plenty of thoughts on HTML, CSS, and JavaScript. This might manifest itself in the form of in-depth tutorials, quick tips, helpful hacks, analysis, and more.&lt;/p&gt;
&lt;p&gt;I&#39;m lucky enough to work on different projects on a daily basis, always solving challenges that arise. If it takes me more than an hour to solve a single problem, then it&#39;s deserving of a blog post. Additionally, my solutions are almost guaranteed to be sub-optimal, which is why I have a comments box for each post. I would love nothing more than to engage in civil discourse with other developers in an effort to hear new opinions and learn how other developers might solve a given problem.&lt;/p&gt;
&lt;p&gt;Outside of my daily work, I&#39;m also sporadically involved in different open source projects. These include tools for developers (i.e., &lt;a href=&quot;https://concisecss.com/&quot;&gt;Concise&lt;/a&gt;), or what I believe to be useful websites (coming soon - 😮). These projects grant me the opportunity to work with new technologies, and to take a stab at making the life of my fellow developers easier.&lt;/p&gt;
&lt;p class=&quot;-large&quot;&gt;
  As I start to work on new projects, I think that this blog would be a perfect outlet for outlining the work that I&#39;m doing, how I&#39;m doing it, and why.
&lt;/p&gt;
&lt;p&gt;I&#39;m looking forward to getting the chance to write more and share what I can with you. I hope you follow along with this blog and share your thoughts as you find appropriate.&lt;/p&gt;
</content>
	</entry>
</feed>

    </main>

    <footer class="footer">
  <div class="footer-content _container">
    <nav class="footer-left footer-nav">
      <span class="footer-label _label-sans">
        Footer Navigation
      </span>

      <div class="footer-nav-items"><a class="footer-nav-item " href="/about/">
            About
          </a><a class="footer-nav-item " href="/portfolio/">
            Portfolio
          </a><a class="footer-nav-item " href="/services/">
            Services
          </a><a class="footer-nav-item " href="/testimonials/">
            Testimonials
          </a><a class="footer-nav-item " href="/contact/">
            Contact
          </a></div>
    </nav>

    <div class="footer-right">
      <div class="footer-socials">
        <span class="footer-label _label-sans">
          Follow me
        </span>

        <ul class="footer-socials-list">
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -linkedin" target="_blank" rel="noopener" href="https://linkedin.com/in/keenanpayne" title="Find me on linkedin">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -dribbble" target="_blank" rel="noopener" href="https://dribbble.com/keenanpayne" title="Find me on dribbble">
                <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -codepen" target="_blank" rel="noopener" href="https://codepen.com/keenanpayne" title="Find me on codepen">
                <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -bluesky" target="_blank" rel="noopener" href="https://bsky.app/profile/keenanpayne.bsky.social" title="Find me on bluesky">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -twitter" target="_blank" rel="noopener" href="https://twitter.com/KeenanPayne_" title="Find me on twitter">
                <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -mastodon" target="_blank" rel="noopener" href="https://pkm.social/@Keenan" title="Find me on mastodon">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -threads" target="_blank" rel="noopener" href="https://www.threads.net/@keenancodes" title="Find me on threads">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z"/></svg>
              </a>
            </li>
          
              <li class="footer-socials-item">
              
              

              <a class="footer-socials-link -behance" target="_blank" rel="noopener" href="https://behance.com/keenanpayne" title="Find me on behance">
                <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"/></svg>
              </a>
            </li>
          
        </ul>
      </div>
    </div>

    <div class="footer-bottom">
      <span class="_text-small">
        Live and direct from Denver, Colorado ✌🏻
      </span>
    </div>
  </div>
</footer> 
  </body>
</html>
