<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thuy Doan</title>
    <description>The latest articles on DEV Community by Thuy Doan (@clearlythuydoan).</description>
    <link>https://dev.to/clearlythuydoan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F6899%2Fa7ed9b1c-f7c2-490d-b591-eafdaac318c3.jpg</url>
      <title>DEV Community: Thuy Doan</title>
      <link>https://dev.to/clearlythuydoan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/clearlythuydoan"/>
    <language>en</language>
    <item>
      <title>The Blog, The Cake, and the Podcast: The Secret Ingredient to Fulfilling Self-Expression</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Fri, 25 Mar 2022 15:42:59 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/the-blog-the-cake-and-the-podcast-the-secret-ingredient-to-fulfilling-self-expression-1190</link>
      <guid>https://dev.to/clearlythuydoan/the-blog-the-cake-and-the-podcast-the-secret-ingredient-to-fulfilling-self-expression-1190</guid>
      <description>&lt;p&gt;A lot of things deter people from putting things out into the world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's not good enough.&lt;/li&gt;
&lt;li&gt;Who cares what I have to say?&lt;/li&gt;
&lt;li&gt;There are already resources/content like this out there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does any of that sound familiar? &lt;/p&gt;

&lt;p&gt;I've been creating things for a while now. I’ve had a lifestyle blog, baked cakes, wrote copy and content, coded, given career-related talks in tech, and most recently &lt;a href="https://candidandcringe.transistor.fm/"&gt;released a podcast&lt;/a&gt; (also known as the most vulnerable and fulfilling content I have ever put out). I haven't always been proud, motivated, nor convinced of the value of my creations though. &lt;/p&gt;

&lt;p&gt;But I am now. So how did I get here?&lt;/p&gt;

&lt;h2&gt;
  
  
  Chapter 2015: Dress Up, Chow Down
&lt;/h2&gt;

&lt;p&gt;During this era, blogs were very popular. It was how I indulged my interest in fashion. I was enamored by it and ended up starting my own. I even got a logo done for it, as well as professional photography, and I’d work on it while at my day job when it was slow. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UovU5oz6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/0mwkqHH/Thuy-Summer-6559.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UovU5oz6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/0mwkqHH/Thuy-Summer-6559.jpg" alt="A young Asian woman sitting at a big cafe window drinking coffee, wearing a trench coat and blue capris and flats." width="640" height="959"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the time, I was embarrassed to explain what I did for a living. I was a social media manager and it didn’t feel like my work was important or impressive enough. My day job motivation was quickly waning. I became irritable, got lost in the clout of receiving free things, and eventually stopped publish&lt;br&gt;
ing on my blog and switched careers. &lt;/p&gt;

&lt;h2&gt;
  
  
  Chapter 2018: Cake, Cake, Cake
&lt;/h2&gt;

&lt;p&gt;Outside of travel and dining, which are expensive hobbies, I had no day-to-day, simple pleasures. So I began baking as an attempt to find a hobby. At first, I made myself bake once every month. Eventually, though, that became something I didn’t have to mandate. I liked baking - even when I failed to make the thing!&lt;/p&gt;

&lt;p&gt;Eventually, people wanted to buy my baked goods. I was apprehensive, though, because the last time I tried to monetize my hobby it didn’t go well. Thankfully, because of my blog experience, I knew the reason I was doing this couldn’t be primarily because of money or fame. I had to do it because I liked it and I needed to enjoy it even if no one was buying. &lt;/p&gt;

&lt;p&gt;With that in mind, I began selling cakes, eventually doing my first bridal shower and creating my first original design (seen below, a two-tiered floral cake painted with buttercream).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fWMVM5w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/g95HXRn/First-Original-Design-2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fWMVM5w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/g95HXRn/First-Original-Design-2.jpg" alt="Thuy Doan's first original cake design. Two tiered. Floral." width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Chapter 2021: The Birth of a Candid Podcast
&lt;/h2&gt;

&lt;p&gt;After the death of my parents, I became interested in the concept of legacy. &lt;/p&gt;

&lt;p&gt;I wanted to create something that helped people based on my experiences. However, I was hesitant because who would listen? Was anything I had to say even valuable? &lt;/p&gt;

&lt;p&gt;That is until &lt;a href="https://twitter.com/jlengstorf"&gt;a fellow developer&lt;/a&gt; told me that everyone has something to teach. Even if there is already content out there about what you have to say, you have a unique set of experiences, and that might resonate with someone more than other content.&lt;/p&gt;

&lt;p&gt;Since then I proudly display my creative work on websites like Polywork, destigmatize mental health / difficult topics, and help early career developers grow and break into tech.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Secret Ingredient
&lt;/h2&gt;

&lt;p&gt;You see, that developer was my gateway to something I hadn’t thought was important until I was &lt;a href="https://candidandcringe.transistor.fm/episodes/003-burnout-and-things-i-learned-in-therapy"&gt;going through the most difficult period of my life, aside from the death of a loved one&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;That thing is a &lt;strong&gt;community&lt;/strong&gt; that shares a vision / experiences and uplifts one another.&lt;/p&gt;

&lt;p&gt;What makes the work of a writer meaningful? How about a YouTuber, chef, or musician? It’s the people who have a shared experience of being positively affected by the work, who desire to connect with the creator about it, and who take that energy and pay it forward. &lt;/p&gt;

&lt;p&gt;Creating with and for a community is what allows us to realize that our efforts are, in fact, valuable. It allows us to understand and be understood. But I was not doing that before. &lt;/p&gt;

&lt;p&gt;I was just trying to excel alone.&lt;/p&gt;

&lt;p&gt;If the secret ingredient is community, what can you do to find it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Actionable Tips
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Start with finding out where people who share your interests congregate. For me, fellow BTS stans were on Twitter while &lt;a href="https://www.patreon.com/cassidoo"&gt;my developer community was on Discord&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;When you find your community, think about the role you have in it: what you want out of it and what others want out of it. Aim to give that joy to each other. For example, I want to share &lt;a href="https://twitter.com/clearlyTHUYDOAN/status/1488720279169908740?s=20&amp;amp;t=k6L9Oj7X4rp_xCqW-Unx8A"&gt;my love of BTS&lt;/a&gt; and mental health. I want people to not feel alone.&lt;/li&gt;
&lt;li&gt;Lastly, if you’re having trouble finding your community, whether it’s because you have a niche interest or you don’t know where to start, &lt;a href="https://www.polywork.com/"&gt;try a social platform like Polywork&lt;/a&gt;. On social networks like Twitter, it can be hard to sift through existing communities. Polywork makes it easier to do that because you can self-identify with badges that reflect your interests (i.e. knitter) and then filter based on those interests. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rra8Wz3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/mhz4rHx/Screen-Shot-2022-02-06-at-10-56-17-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rra8Wz3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/mhz4rHx/Screen-Shot-2022-02-06-at-10-56-17-PM.png" alt="Screenshot of Polywork's search for collaborators feature." width="640" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think true and tangible self-expression, whether vocational, passionate, or lucrative, cannot be done in a vacuum. It is bi-directional. If you find and grow your community, on hard days it will be easier to a) remember the reason you create and b) appreciate the value that you and others bring to this small corner of the universe we call home. Happy creating! ✨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZMsAw26d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/RY5Nd9v/Screen-Shot-2022-02-06-at-11-40-13-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZMsAw26d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ibb.co/RY5Nd9v/Screen-Shot-2022-02-06-at-11-40-13-PM.png" alt="A reply on Twitter to Thuy Doan from someone named Max. The tweet says, &amp;quot;Purple heart emoji. Purple heart emoji. I honestly appreciate your vulnerability to sharing how you identified you were/are burnt out. It ain't easy, it ain't easy to overcome, but recognizing all the work you've done to move forward is helpful for anyone undergoing the same feelings. (I know it is helpful to me.&amp;quot;" width="640" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://blog.polywork.com/podcast-secret-ingredient-to-fulfilling-self-expression/"&gt;Originally posted in collaboration with Polywork on Polywork&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>mentalhealth</category>
      <category>career</category>
      <category>writing</category>
    </item>
    <item>
      <title>Move Over LinkedIn, Instagram, and Twitter: Why I Chose Polywork Over These Platforms to Showcase Work</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Wed, 05 Jan 2022 15:04:05 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/move-over-linkedin-instagram-and-twitter-why-i-chose-polywork-over-these-platforms-to-showcase-work-3dol</link>
      <guid>https://dev.to/clearlythuydoan/move-over-linkedin-instagram-and-twitter-why-i-chose-polywork-over-these-platforms-to-showcase-work-3dol</guid>
      <description>&lt;p&gt;I've been on social networks for a long time - as far back as 2005 if you count once-popular Myspace. You could even say that I'm ancient. From flexing my coffee addiction and &lt;a href="https://twitter.com/clearlyTHUYDOAN/status/241019687809458177?s=20" rel="noopener noreferrer"&gt;Subway receipts as a regular&lt;/a&gt; on Twitter, to heavily filtered photos on Instagram before I embraced #NoFilter, to regaling other professionals with my career accomplishments (translation: &lt;em&gt;extracurriculars&lt;/em&gt; when I was still in school), I've dedicated a lot of space online to expressing myself in the niche ways each platform was - and is still - built for.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-270350437297836033-627" src="https://platform.twitter.com/embed/Tweet.html?id=270350437297836033"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-270350437297836033-627');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=270350437297836033&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;h2&gt;
  
  
  My Meet-Cute with Polywork
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FJz8978R%2FScreen-Shot-2021-12-28-at-8-55-14-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FJz8978R%2FScreen-Shot-2021-12-28-at-8-55-14-PM.png" alt="Urban Dictionary definition of "&gt;&lt;/a&gt;
by Caffrin March 11, 2004"/&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.urbandictionary.com/define.php?term=meet-cute" rel="noopener noreferrer"&gt;Urban Dictionary&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Earlier this year, I experienced two things that set in motion the series of events that would lead me to resigning from my dev job of almost five years to start a new opportunity: &lt;strong&gt;1)&lt;/strong&gt; I got rejected after years of not interviewing and &lt;strong&gt;2)&lt;/strong&gt; I started creating content again after a short, fun stint with a &lt;a href="https://www.instagram.com/dressupchowdown/" rel="noopener noreferrer"&gt;lifestyle blog&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Firstly, I interviewed for a developer position at [redacted] in April. For one reason or another, they didn't move forward with me and sent me a, "Thank you," email in May. That experience made me realize that I was rusty and needed to prepare better for the job market if I wanted to challenge myself somewhere else. Secondly, I found out that &lt;a href="https://theworst.dev/breaking-into-developer-experience" rel="noopener noreferrer"&gt;Developer Experience was a &lt;em&gt;thing&lt;/em&gt;&lt;/a&gt; and that I was interested in pursuing it. As a result, I started interacting a lot with the creative developer community, for the first time since I became a developer myself in 2016, and from there I discovered &lt;strong&gt;&lt;a href="https://www.polywork.com/" rel="noopener noreferrer"&gt;Polywork&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F7g76RDN%2FScreen-Shot-2021-12-28-at-9-07-26-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F7g76RDN%2FScreen-Shot-2021-12-28-at-9-07-26-PM.png" alt="Screenshot of my Polywork profile header. The cover photo is an illustration that depicts me writing code on the left in my office, writing with stacks of paper around me in the middle, and recording a podcast on the right. It also shows my name and my verified profile badge along with the fact that I am a software developer, a writer, and a speaker."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At that time, I only had half of the equation to make the switch to Developer Experience (DX). I had developer experience and a personal brand but I did not have technical content produced for a developer audience. &lt;/p&gt;

&lt;p&gt;I also realized - after looking at my dev career holistically - that in the last five years, I had not done anything to help uplift other developers. And that was a problem because it wasn't the person I wanted to be. I had to change that.&lt;/p&gt;

&lt;p&gt;So I just started with what I knew or was learning: a &lt;a href="https://community.codenewbie.org/clearlythuydoan" rel="noopener noreferrer"&gt;talk on early career confidence&lt;/a&gt;, a &lt;a href="https://dev.to/newrelic/becoming-comfortable-embracing-the-tech-space-with-thuy-doan-1kl5"&gt;guest podcast&lt;/a&gt; on getting into development from advertising, a &lt;a href="https://dev.to/clearlythuydoan/big-o-notation-as-a-mid-level-developer-who-has-been-avoiding-it-since-bootcamp-arrays-and-time-complexity-np8"&gt;blog on big o notation&lt;/a&gt;, and most recently, &lt;a href="https://candidandcringe.transistor.fm/" rel="noopener noreferrer"&gt;my own podcast&lt;/a&gt;. Pretty soon I had more than enough things to showcase. But, there was another problem.&lt;/p&gt;

&lt;p&gt;I did not have a website. In fact, I hadn't had one since 2017.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deterrents to Showcasing Work
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F7kdVsvK%2FScreen-Shot-2021-12-29-at-7-40-38-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F7kdVsvK%2FScreen-Shot-2021-12-29-at-7-40-38-PM.png" alt="An excerpt from Laurie Barth's blog titled, "&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://laurieontech.com/posts/meta-blog/" rel="noopener noreferrer"&gt;Laurie Barth&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I don't know about you but building a personal website stresses me out. Which font / typography? What colour palette? Which technologies do I build it with? Can I justify why? What about a custom domain name? A &lt;em&gt;cool&lt;/em&gt; one? &lt;/p&gt;

&lt;p&gt;And then actually doing it...except your brain wants to hyper-fixate on something else. &lt;a href="https://turnipprophet.io/" rel="noopener noreferrer"&gt;Like selling turnips for max profit!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then what happens if some of the stuff you want to showcase only exists on Twitter? Sure, I've posted a lot (of arguably &lt;a href="https://twitter.com/clearlyTHUYDOAN/status/1374875760767479823?s=20" rel="noopener noreferrer"&gt;cool stuff&lt;/a&gt;) on there because &lt;em&gt;ancient&lt;/em&gt; but it's way too unorganized on there. And then how about LinkedIn? Definitely a professional network but is it too stuffy for a podcast about mental health? That's a lot of stress when you have jobs to apply for.&lt;/p&gt;

&lt;p&gt;Polywork took that &lt;strong&gt;where&lt;/strong&gt; and &lt;strong&gt;how&lt;/strong&gt; stress away for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reducing the Friction with Polywork
&lt;/h2&gt;

&lt;p&gt;My one line-description is Polywork is more in-depth and multi-dimensional than LinkedIn but less labour intensive than maintaining a personal website. (With features we know and love from Twitter and Instagram mixed in.)&lt;/p&gt;

&lt;p&gt;For starters, similar to Twitter, it displays profile content in a timeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FkGkk8r1%2FScreen-Shot-2021-12-29-at-8-56-32-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FkGkk8r1%2FScreen-Shot-2021-12-29-at-8-56-32-PM.png" alt="Screenshot of my Polywork timeline. It depicts two posts. One dated October 22, 2021 and the other October 26, 2021. They are both showing that my blog post about Big O Notation have been featured in two separate newsletters."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, unlike Twitter, where both significant and inconsequential thoughts move by very quickly, buried underneath other quips - perhaps a culture influenced by the early tweet limit of 140 characters (now 280) - Polywork is instead more organized due to it prioritizing a curation of "Highlights". &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FS0sDD99%2FScreen-Shot-2021-12-29-at-9-02-25-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FS0sDD99%2FScreen-Shot-2021-12-29-at-9-02-25-PM.png" alt="Screenshot of my Polywork's definition of a highlight: "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://support.polywork.com/hc/en-us/articles/4409031712667-Creating-and-editing-Highlights" rel="noopener noreferrer"&gt;Polywork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F6072SxP%2FScreen-Shot-2021-12-29-at-9-02-47-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F6072SxP%2FScreen-Shot-2021-12-29-at-9-02-47-PM.png" alt="Screenshot of my Polywork's button to create a highlight. There are two options when you click the button: 1) Past: Highlight something you did in the past or 2) Ongoing: Highlight something you're currently working on."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polywork also helps you organize by offering a feature called, "&lt;a href="https://support.polywork.com/hc/en-us/articles/4409459257499-Creating-collections" rel="noopener noreferrer"&gt;Collections&lt;/a&gt;". Similar to Instagram Highlights with Stories, you can group Highlights you have posted in the past into easy-to-view groups such as my &lt;a href="https://www.polywork.com/clearlythuydoan/collections/1165" rel="noopener noreferrer"&gt;Technical Writing&lt;/a&gt; collection. This way, when you're asked to provide samples of your writing or your dev projects on short-notice, you can just link the recruiter to your collection. No more precious real-estate lost on your resume and no more worrying about building that website in time for your job search.&lt;/p&gt;

&lt;p&gt;Last but not least, Polywork encourages its users to share projects and accomplishments of all kinds - not just the kinds that are filtered enough for the crowd on LinkedIn. So you can post that new job along with that &lt;a href="https://www.polywork.com/jessicaross/highlights/a3ac10a2-bcb4-4b4b-8c13-e91ef02a9d4f" rel="noopener noreferrer"&gt;indie game you're building&lt;/a&gt; or that &lt;a href="https://www.twitch.tv/videos/1237519115" rel="noopener noreferrer"&gt;10-hour Twitch stream&lt;/a&gt; full of expletives showing how you finished your CS project due that day. You have &lt;em&gt;layers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FTXJmqbUeyO8AAAAC%2Fshrek-ogres-have-layers.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FTXJmqbUeyO8AAAAC%2Fshrek-ogres-have-layers.gif" alt="Gif of a scene from the Shrek movie where Shrek explains to Donkey that ogres have layers just like onions."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Polywork knows this. People are multi-faceted.&lt;/p&gt;

&lt;p&gt;To be clear, while I think Polywork is less labour intensive than building a website from scratch, Polywork is not a &lt;em&gt;direct replacement&lt;/em&gt; for a website. I still intend to build one. Why? Because there's &lt;a href="https://www.stephaniemorillo.co/post/what-is-content-ownership" rel="noopener noreferrer"&gt;still value in owning your own content&lt;/a&gt;. However, if you find yourself blocked from showcasing your work because of the ol', "building my own site," are looking for a fast way to colourfully highlight projects in a way that's organized, professional, sharable and acts as an archive of your feats, or you're simply an early adopter of social networks, Polywork could be for you. Like it was for me 😬&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FyQ9sFyr%2FRachel-website.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FyQ9sFyr%2FRachel-website.jpg" alt="Screenshot of an Instagram conversation with someone I know who is on the job market. It says, "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Polywork is currently a beta product that is invite-only. However, every current user is able to invite people to the platform. To join without being put on the waitlist, use my VIP code &lt;strong&gt;clearlythuydoan&lt;/strong&gt; to join today.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>portfolio</category>
      <category>webdev</category>
      <category>resume</category>
      <category>writing</category>
    </item>
    <item>
      <title>Big O Notation as a Mid-Level Developer Who Has Been Avoiding It Since Bootcamp: Arrays and Time Complexity</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Tue, 12 Oct 2021 13:41:15 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/big-o-notation-as-a-mid-level-developer-who-has-been-avoiding-it-since-bootcamp-arrays-and-time-complexity-np8</link>
      <guid>https://dev.to/clearlythuydoan/big-o-notation-as-a-mid-level-developer-who-has-been-avoiding-it-since-bootcamp-arrays-and-time-complexity-np8</guid>
      <description>&lt;p&gt;At the beginning of this year, I was promoted to intermediate developer 🎊&lt;/p&gt;

&lt;p&gt;At your company, that might be an IC2 - or whichever level is after your entry level developer, but right before the senior developer. In any case, I was now at a place in my career where computer science fundamentals needed to be stronger compared to the beginning when I could just throw myself into building things with what I learned in full-stack Javascript bootcamp.&lt;/p&gt;

&lt;p&gt;I decided I needed to better understand data structures and be more comfortable with algorithms. Not because I wanted to leetcode more. I really don't want to leetcode more. But I couldn't shake the feeling that I would be better off if I understood more why data structure A over data structure B.&lt;/p&gt;

&lt;p&gt;So I reached out to a friend for help and this is what I've learned 🤓&lt;/p&gt;

&lt;h2&gt;
  
  
  What did I know about Big O notation?
&lt;/h2&gt;

&lt;p&gt;My mental model of Big O has always been this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; A unit of measurement&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; Related to computer science that&lt;br&gt;
&lt;strong&gt;3)&lt;/strong&gt; Describes the complexity of things&lt;/p&gt;

&lt;p&gt;From here, I needed to understand &lt;em&gt;why&lt;/em&gt;? 💭&lt;/p&gt;
&lt;h2&gt;
  
  
  Why must we measure the complexity of things?
&lt;/h2&gt;

&lt;p&gt;As developers, we deal with data. &lt;/p&gt;

&lt;p&gt;Sometimes not very much of it, like on a static website. Sometimes a whole lot of it. The multi-millions of users kind. And most of the time, that data is not in a format that we need and we need to manipulate it. Sort it, filter it, or find something. Sometimes we even need to change it into an entirely different format! And how efficiently we do that matters at scale.&lt;/p&gt;

&lt;p&gt;What's also true is that there are many ways to solve a problem. This is especially true in programming. You can then think of Big O notation as a way to describe how efficient a solution is relative to another one.&lt;/p&gt;
&lt;h2&gt;
  
  
  What types of Big O notation are there?
&lt;/h2&gt;

&lt;p&gt;In this post, we'll focus just on the types that apply to arrays but know there are a number of them that you can see below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FMDd1Nj0%2FScreen-Shot-2021-10-11-at-8-49-03-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FMDd1Nj0%2FScreen-Shot-2021-10-11-at-8-49-03-PM.png" alt="Graph depicting different big o notation time complexities with O(n!), O(2^n), O(n^2) as horrible; O(n log n) as bad; O(n) as fair; and O(log n) or O(1) between good and excellent"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.bigocheatsheet.com/" rel="noopener noreferrer"&gt;Big O Cheatsheet&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For arrays, you can have 2 types of time complexities (or Big O):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Constant time or O(1)&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; Linear time or O(n)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Fh26791X%2FScreen-Shot-2021-10-11-at-8-55-27-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Fh26791X%2FScreen-Shot-2021-10-11-at-8-55-27-PM.png" alt="Table with two columns with headings: Operation and Time Complexity, respectively. Under Operation, it lists 4 items: Searching, Access, Insertion, and Removal. Under Time Complexity, we have O(N) or linear time for searching; O(1) or constant time for access; O(N) for insertion unless it's inserting something at the end of the array, in which case it is O(1) or constant time; and lastly, O(N) for removal unless removing something at the end of the array, in which case it is also O(1) or constant time."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.youtube.com/watch?v=jyGYhHOnFzU&amp;amp;ab_channel=KodingKevin" rel="noopener noreferrer"&gt;Big O Notation for Arrays by KodinKevin on YouTube&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With Big O, the n refers to the amount of data you are working with. &lt;/p&gt;
&lt;h2&gt;
  
  
  Practical Examples
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Example A. Kanto Starter Pokemon
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2Fd9%2F0e%2F5f%2Fd90e5f91087da1b1faf2939b30d7b1ab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2Fd9%2F0e%2F5f%2Fd90e5f91087da1b1faf2939b30d7b1ab.png" alt="Kanto Starter Pokemon. There's a cute orange lizard, a grassy type of creature that has a flower bulb and walks on all fours, and a blue turtle that looks cheerful."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's say you're building a Pokemon app and you have an array of Pokemon.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;kantoStarters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Charmander&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bulbasaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Squirtle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you know the index of Squirtle in the array, you can access it by simply doing &lt;code&gt;kantoStarters[index]&lt;/code&gt;. If this was instead an array of all 151 Kanto Pokemon, the number of steps it takes to access a Pokemon at a known index will be the &lt;strong&gt;same&lt;/strong&gt; as when there were only 3 starter Pokemon because you can go directly to the index of the Pokemon. Hence, access in an array is considered &lt;strong&gt;constant time&lt;/strong&gt; - also known as O(1).&lt;/p&gt;

&lt;p&gt;Because constant time takes the least number of steps to complete an operation, it is considered the most efficient. Check that first graph out again!&lt;/p&gt;

&lt;h3&gt;
  
  
  Example B. All Kanto Pokemon
&lt;/h3&gt;

&lt;p&gt;Let's say instead of knowing where exactly to look for a Pokemon in an array, we have to flip through it like a clothing rack at the mall or files in a filing cabinet. In this case, it would take at worst as many steps as there are Pokemon. Remember that n in Big O notation stands for the amount of data we are working with. So should we have to look through an unordered array of all 151 Pokemon to find a Psyduck it would take us O(n) steps. This is called &lt;strong&gt;linear time&lt;/strong&gt; because given more data we take proportionately more steps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2F66%2F8a%2F8c%2F668a8cccacc792924fa588b4adca8f68.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2F66%2F8a%2F8c%2F668a8cccacc792924fa588b4adca8f68.gif" alt="Animation of flipping back and forth through a book"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, since constant time - or O(1) - takes a constant amount of steps, no matter the amount of data versus linear time - or O(n) - which takes proportionately more steps when given more data, we can say that constant time is faster or more efficient than linear time 💨&lt;/p&gt;

&lt;h3&gt;
  
  
  Example C. It Depends
&lt;/h3&gt;

&lt;p&gt;Once we move into insertion or removal of data into an array, it gets a little nuanced. Let's say we create a new type of Pikachu that wears a coloured party hat (think Nintendo 64 Super Smash Bros) and we wanted to officially recognize it as a Kanto Pokemon: Party Pikachu. If we add Party Pikachu to the end of the list of Pokemon, that would only take one step. Hence, insertion at the end of arrays is constant time - or O(1). The same goes for removal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.kindpng.com%2Fpicc%2Fm%2F1-19709_alternate-skins-for-pikachu-in-the-original-super.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.kindpng.com%2Fpicc%2Fm%2F1-19709_alternate-skins-for-pikachu-in-the-original-super.png" alt="4 versions of Pikachu wearing different coloured party hats"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's different, however, if we're trying to insert or remove an item from any other place in the array. Why? If we added Party Pikachu to the beginning, all the indices of the Pokemon after it would have to change because the order of Pokemon is now different. This also applies if Party Pikachu were to be added in the middle of the list. We would have to take as many steps as the number of Pokemon that come after it to change the indices to the new ones. Hence, insertion or removal anywhere but the end is linear time - or O(n).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;originalKantoPokemon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bulbasaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ivysaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Venusaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// and so on&lt;/span&gt;
&lt;span class="c1"&gt;// Where Bulbasaur is index 0&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newKantoPokemon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Party Pikachu&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bulbasaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ivysaur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// and so on&lt;/span&gt;
&lt;span class="c1"&gt;// Where Bulbasaur is now index 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Career Value
&lt;/h2&gt;

&lt;p&gt;You might be thinking, "That's great and all but why do I need to know this?" That's fair. I've been able to have a successful last 4-5 years as a developer without it. Heck, I even got promoted. But there's two possible reasons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) You want to get hired at a company that does leetcode.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FAANG companies - also known as Facebook, Amazon, Apple, Netflix, and Google - or similar, are infamous for testing leetcode, algorithms, and data structures in their interview process. If you want to get hired by them, you need to be able to reference Big O when you write an algorithmic solution. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) You need to come up with efficient solutions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even if you &lt;a href="https://github.com/poteto/hiring-without-whiteboards" rel="noopener noreferrer"&gt;avoid interviewing for companies that do leetcode&lt;/a&gt;, you will still have to work with data. And unless you can always work with a small amount of data, how performant the solutions you write to handle data will be important. Especially as you become a more senior engineer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(This will become more apparent as I continue this series by moving into showing actual algorithms. Follow me and stay tuned!)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm personally in the second boat but I've since been opening myself up to the idea of the first one. Let's get better first then we'll see 🤡&lt;/p&gt;

&lt;h2&gt;
  
  
  Onward
&lt;/h2&gt;

&lt;p&gt;I was the kind of kid who was, for all intents and purposes, intelligent but didn't identify with being good at STEM subjects despite being an honour roll student throughout my education. Heck, my favourite subject was music. But at some point, you hit a wall that makes you realize your work could go much more smoothly if you deepened your knowledge in a particular area 🚀&lt;/p&gt;

&lt;p&gt;My goal is to be able to confidently answer &lt;strong&gt;why&lt;/strong&gt; we should store data a certain way (i.e. dictionary vs. list) or traverse large amounts of data in a certain way, no matter if I'm being asked in an interview or if I simply have to complete a task for a job I'm currently employed for 💃🏻&lt;/p&gt;

&lt;p&gt;You can think of what we discussed so far as the &lt;strong&gt;building blocks&lt;/strong&gt; for choosing between multiple ways of handling data. If we know that searching through an array is linear time and we later find out that there's an alternate solution for searching through data that is constant time, which is faster, we might want to use the latter solution. However, there's other things to weigh, like readability and maintainability. More on that another time.&lt;/p&gt;

&lt;p&gt;I'll keep learning and be sure to share more 😬&lt;/p&gt;

&lt;p&gt;Off to study linked lists!&lt;/p&gt;

&lt;p&gt;Keep it candid,&lt;/p&gt;

&lt;p&gt;Thuy 🙋🏻‍♀️&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This post focuses more on practical examples than it does on mathematical visuals. This is because not everyone will understand Big O with mathematical graphs. But if you are someone that will, I recommend &lt;a href="https://towardsdatascience.com/the-big-o-notation-d35d52f38134" rel="noopener noreferrer"&gt;this&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>beginners</category>
      <category>devjournal</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Guide: Setting Up a Dreamhost Subdomain with Netlify and Polywork</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Wed, 04 Aug 2021 03:37:51 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/how-to-set-up-a-dreamhost-domain-with-polywork-3me9</link>
      <guid>https://dev.to/clearlythuydoan/how-to-set-up-a-dreamhost-domain-with-polywork-3me9</guid>
      <description>&lt;p&gt;There's a new social network on the market and it's called &lt;a href="//www.polywork.com"&gt;Polywork&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yG8W_eqb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/xhz5RVY/Screen-Shot-2021-08-03-at-10-32-38-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yG8W_eqb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/xhz5RVY/Screen-Shot-2021-08-03-at-10-32-38-PM.png" alt="Screenshot of the hero image on polywork.com. It is purple and depicts 3D illustrations of fantastical characters including humans and dragons standing in a group. The text reads, &amp;quot;It's important the world knows what you can do.&amp;quot;"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Trying out &lt;a href="https://twitter.com/PolyworkHQ?ref_src=twsrc%5Etfw"&gt;@PolyworkHQ&lt;/a&gt;. Linkedin meets Myspace meets Twitter? Let's see if this is any fun! &lt;a href="https://twitter.com/hashtag/polywork?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#polywork&lt;/a&gt;&lt;/p&gt;— Jet Weevers (@jetweevers) &lt;a href="https://twitter.com/jetweevers/status/1408058822707474445?ref_src=twsrc%5Etfw"&gt;June 24, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;strong&gt;This post is for you if&lt;/strong&gt; you already have an idea of how Polywork works and want to quickly set up a subdomain. Especially if your provider is Dreamhost.&lt;/p&gt;

&lt;p&gt;If the only thing standing in your way is a code, use mine &lt;strong&gt;clearlythuydoan&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TOW_LfVb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/h29wgMt/Screen-Shot-2021-08-03-at-11-31-31-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOW_LfVb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/h29wgMt/Screen-Shot-2021-08-03-at-11-31-31-PM.png" alt='A baby blue button with a purple background behind it that says, "Have a VIP code?"'&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lzaBSwf9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/TTwQP1P/Screen-Shot-2021-08-03-at-11-32-06-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lzaBSwf9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/TTwQP1P/Screen-Shot-2021-08-03-at-11-32-06-PM.png" alt="Screenshot of a signup form for Polywork that asks you for your first name, last name, email address, and password"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting Up Your Dreamhost Domain
&lt;/h2&gt;

&lt;p&gt;On the whole, Polywork has a &lt;a href="https://docs.google.com/document/d/1sy1bb7cIr1wcEPuJIKRwcYzn_NvCavW-bjP_QowNNGY/edit"&gt;good guide&lt;/a&gt; for most domain providers.&lt;/p&gt;

&lt;p&gt;However, unfortunately for me, my domain provider was not listed.&lt;/p&gt;

&lt;p&gt;For the first three steps, you can follow the steps that are depicted when you go to your Profile Settings. Skip to Step 4 if you've already done those steps.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1. Select your non-provider
&lt;/h3&gt;

&lt;p&gt;In the dropdown for your provider, select, "My Provider isn't here, but I know what I'm doing." &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2CaGIoJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/R6KPRcR/Screen-Shot-2021-08-03-at-10-48-37-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2CaGIoJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/R6KPRcR/Screen-Shot-2021-08-03-at-10-48-37-PM.png" alt="Screenshot of a dropdown with the item, &amp;quot;My Provider isn't here, but I know what I'm doing,&amp;quot; selected"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2. Setup your custom domain
&lt;/h3&gt;

&lt;p&gt;Input your intended subdomain. For me, I chose &lt;code&gt;updates&lt;/code&gt; as my subdomain but you could also choose something like &lt;code&gt;timeline&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dnnGWywj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/s3KKyxp/Screen-Shot-2021-08-03-at-10-51-22-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dnnGWywj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/s3KKyxp/Screen-Shot-2021-08-03-at-10-51-22-PM.png" alt='Screenshot of a disabled input field with the value, "updates.clearlythuydoan.com"'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3. Generate your custom DNS target
&lt;/h3&gt;

&lt;p&gt;Because this step is custom, I can't show a screenshot of mine but the custom DNS generated for you will generally look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;adjective&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;noun&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;h4sH3D5tr1nG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;herokudns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4. Direct Dreamhost subdomain to custom DNS &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Go to your Dreamhost dashboard and navigate through Domain &amp;gt; Manage Domains. Click the blue button that says, "Add Hosting to a Domain/Sub-Domain" above the section titled "Hosted Domains".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DC1ercdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/XyWhFP2/Screen-Shot-2021-08-03-at-10-57-47-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DC1ercdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/XyWhFP2/Screen-Shot-2021-08-03-at-10-57-47-PM.png" alt='Screenshot of two buttons. The left button is blue with white text and says, "Add Hosting to a Domain/Sub-Domain" while the right button is white with blue text and says, "Register a New Domain"'&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MFRQX0IN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/pJDLFcg/Screen-Shot-2021-08-03-at-10-57-56-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MFRQX0IN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/pJDLFcg/Screen-Shot-2021-08-03-at-10-57-56-PM.png" alt='Screenshot of a form field with two input fields. The label for the first input field says, "Domain to redirect: subdomains are okay!" The label for the second input field says, "Redirect to URL".'&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the first form field, input your subdomain from Step 2.&lt;/p&gt;

&lt;p&gt;In the second form field, input your custom DNS from Step 3.&lt;/p&gt;

&lt;p&gt;If your domain is with Dreamhost but you are hosting somewhere else, like Netlify, continue onto Step 5 for additional configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5. Configure Netlify (if applicable)
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Note: This step assumes you already have your main domain pointing at Netlify name servers. If you don't, follow &lt;a href="https://docs.netlify.com/domains-https/netlify-dns/delegate-to-netlify/"&gt;these steps&lt;/a&gt; first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After completing Step 4, refresh your Dreamhost domain DNS settings page until you see your subdomains listed in an indented fashion beneath your main domain. You should see the subdomain you just created along with the action, "Deactivate redirect". Doing this will replace the settings with the name servers your main domain is pointing to (which should be Netlify's).&lt;/p&gt;

&lt;p&gt;Click, "Deactivate redirect".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fDXnJPNi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/CBn3gm6/Screen-Shot-2021-08-03-at-11-09-41-PM.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fDXnJPNi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/CBn3gm6/Screen-Shot-2021-08-03-at-11-09-41-PM.jpg" alt="Screenshot of DNS settings for the domain clearlythuydoan.com on Dreamhost. Subdomains appear indented beneath the main domain."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here, log into your Netlify account and go to Domains. Then click the domain you want to add a subdomain for.&lt;/p&gt;

&lt;p&gt;Under "DNS Settings", click "Add new record".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---qZDPX0v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/xXH8Fgz/Screen-Shot-2021-08-03-at-11-11-04-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---qZDPX0v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/xXH8Fgz/Screen-Shot-2021-08-03-at-11-11-04-PM.png" alt="Screenshot of the modal for creating a new DNS record on Netlify"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create your new subdomain record on Netlify by choosing "CNAME" as the type. Type the prefix of your subdomain in the "Name" field i.e. "updates" or "timeline". Then fill out the value with the custom DNS generated in Step 3.&lt;/p&gt;

&lt;p&gt;Then wait 24 hours and VOILA, it should work! 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/s2qXK8wAvkHTO/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/s2qXK8wAvkHTO/giphy.gif" alt="Gif of a man with a moustache and a baby blue suit throwing confetti looking very pleased with himself"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have questions or encounter any difficulties, &lt;strong&gt;let me know&lt;/strong&gt; and I'll try my best to help. Polywork - as great as they are - had trouble helping me too 😁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cBDeMGIo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/4dhhJcH/Screen-Shot-2021-08-03-at-11-27-11-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cBDeMGIo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/4dhhJcH/Screen-Shot-2021-08-03-at-11-27-11-PM.png" alt="Screenshot of my Polywork profile which includes a display picture, pill badges for topics I identify with such as mental health and DEI, and a bio about myself."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you so fancy, &lt;a href="//updates.clearlythuydoan.com"&gt;follow me&lt;/a&gt; on Polywork 🙋🏻‍♀️&lt;/p&gt;

</description>
      <category>career</category>
      <category>networking</category>
      <category>polywork</category>
      <category>netlify</category>
    </item>
    <item>
      <title>Debugging a Docker Build Failure: Cannot Find /dist</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Wed, 28 Jul 2021 03:21:04 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/debugging-a-docker-build-failure-cannot-find-dist-580e</link>
      <guid>https://dev.to/clearlythuydoan/debugging-a-docker-build-failure-cannot-find-dist-580e</guid>
      <description>&lt;p&gt;The other day I caused a build failure that prevented my teammates from merging in their respective PRs. It didn't surface until I merged my PR.&lt;/p&gt;

&lt;p&gt;Or so I thought.&lt;/p&gt;

&lt;p&gt;There are two reasons I want to share this experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Share my thought process to help you solve a similar problem&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; Destigmatize breaking things at work because &lt;a href="https://twitter.com/HBOMaxHelp/status/1405712235108917249"&gt;it happens&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And I suppose also because our memories are fickle.&lt;/p&gt;


&lt;h2&gt;
  
  
  Debugging Adventure Begins
&lt;/h2&gt;

&lt;p&gt;It started with this build failure in our pipeline Slack channel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// truncated&lt;/span&gt;
&lt;span class="nx"&gt;yarn&lt;/span&gt; &lt;span class="nx"&gt;workspace&lt;/span&gt; &lt;span class="nx"&gt;v1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;xx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;
&lt;span class="nx"&gt;yarn&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;v1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;xx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;
&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ENOENT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;no&lt;/span&gt; &lt;span class="nx"&gt;such&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;scandir&lt;/span&gt; 
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/app/your-package/dist&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first thing I had to go off of was &lt;a href="https://stackoverflow.com/questions/22842691/what-is-the-meaning-of-the-dist-directory-in-open-source-projects"&gt;the thing&lt;/a&gt; that is supposedly missing, which is the &lt;code&gt;dist&lt;/code&gt; folder. The &lt;code&gt;dist&lt;/code&gt; folder contains all code meant for production and it is generated by running the related build script.&lt;/p&gt;

&lt;p&gt;To run the build for production in this package, we could&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; &lt;code&gt;yarn run build:production&lt;/code&gt; (or whatever is in your &lt;code&gt;package.json&lt;/code&gt;)&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; &lt;code&gt;yarn workspace your-package run build:production&lt;/code&gt; (in &lt;code&gt;Dockerfile&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Now that I had a better sense of what the thing was that was missing, I moved onto reproducing the issue and there were two ways I could do that.&lt;/p&gt;

&lt;p&gt;I tried running the production build locally first.&lt;/p&gt;

&lt;p&gt;It succeeded. Which lined up with the fact that I didn't see any issues when I was the testing feature changes for the application locally.&lt;/p&gt;

&lt;p&gt;Next, I tried building it again in my QA box.&lt;/p&gt;

&lt;p&gt;The error showed up!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/SYcpSY0lNdPIHhCvjT/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/SYcpSY0lNdPIHhCvjT/giphy.gif" alt="confused white cat trying to solve an equation while holding its  hands up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried 3 different things based on the fact that this was my first time introducing a new shared package in a monorepo. I figured I probably missed a couple steps. So I tried to copy pasta exactly from a similar PR. But nope.&lt;/p&gt;

&lt;p&gt;Still failed so I dropped those commits.&lt;/p&gt;

&lt;p&gt;It was at this point that I decided to search through our company's Slack for my error message to see if someone else had run into a similar issue. &lt;/p&gt;

&lt;p&gt;Turns out, someone did. 1 year ago.&lt;/p&gt;

&lt;p&gt;Apparently, when you suddenly decide that a package in your mono-repo needs to import another package in your mono-repo, you need to make sure you explicitly list the import package as a dependency in the &lt;code&gt;package.ison&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I felt kind of silly reading that. It felt so obvious.&lt;/p&gt;

&lt;p&gt;But the underlying reason why is really the kicker. And it really took me back to my time on the devops side of our company a couple years back.&lt;/p&gt;

&lt;p&gt;When you run your package locally, assuming everything is up-to-date, all the dependencies you need should be available. So when I ran my feature branch locally, I didn't see an issue for that reason. I had everything I needed.&lt;/p&gt;

&lt;p&gt;However, a &lt;a href="https://circleci.com/blog/tips-for-optimizing-docker-builds/"&gt;best practice for Docker builds&lt;/a&gt; is to not install unnecessary dependencies in order to save time and build size. So unless you explicitly list a package as a dependency, it will not be installed when &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; runs 🐳&lt;/p&gt;

&lt;p&gt;Since my QA box runs a docker build each time we build the box, it should have shown me the error while I was testing. Turns out the reason I didn't see it is because I happened to gloss over the error line (it visually wasn't obvious there was an error aka no glaring red colour and no alarms) and I had coincidentally observed that my feature was working as expected on the box.&lt;/p&gt;

&lt;p&gt;After testing my fix, I updated my teammates and all was well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--28nU-sEo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/zxJzPDq/Screen-Shot-2021-07-27-at-10-56-34-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--28nU-sEo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/zxJzPDq/Screen-Shot-2021-07-27-at-10-56-34-PM.png" alt="Screenshot of Slack message with emoji reactions. The Slack message says, &amp;quot;so that's the way the cookie crumbles 🍪. hopefully it merges all nice when i get a PR up tmrw 😴&amp;quot; with 3 heart reactions and 2 clapping reactions"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; I'm curious if other developers would have &lt;strong&gt;searched in Slack&lt;/strong&gt; sooner than I had. &lt;strong&gt;I should get into the habit&lt;/strong&gt;. I tend to Google first. Unless it feels like a problem specific to my company i.e. cannot run package locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; If you have &lt;strong&gt;AFK time&lt;/strong&gt; that day, &lt;strong&gt;let your team know&lt;/strong&gt; so people can tag in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; What's still unclear is whether the error message I encountered was just a standard cryptic one or if our error handling could be better somehow...&lt;/p&gt;

&lt;p&gt;Not a lesson. But &lt;strong&gt;remember to celebrate your growth.&lt;/strong&gt; I think earlier in my career, I probably would have had a tough time solving this without pairing. And while there's nothing wrong with pairing, I do use my ability to solve more complex problems independently as a measure of growth.&lt;/p&gt;

&lt;p&gt;So here's to growing and sharing. &lt;strong&gt;Learning in public&lt;/strong&gt; 🥂&lt;/p&gt;

&lt;p&gt;Keep it candid,&lt;/p&gt;

&lt;p&gt;Thuy 🙋🏻‍♀️&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>cicd</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Everything You Need to Know About the AccessiBe Debate</title>
      <dc:creator>Thuy Doan</dc:creator>
      <pubDate>Sun, 25 Jul 2021 15:23:59 +0000</pubDate>
      <link>https://dev.to/clearlythuydoan/everything-you-need-to-know-about-the-accessibe-debate-2kg7</link>
      <guid>https://dev.to/clearlythuydoan/everything-you-need-to-know-about-the-accessibe-debate-2kg7</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclaimer: The following views do not reflect my employer nor any person nor organization I am, or have ever been, affiliated with. Opinions are my own.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Jump to Section
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How accessiBe Really Works&lt;/li&gt;
&lt;li&gt;Accessibility and Disability Community Discourse&lt;/li&gt;
&lt;li&gt;Who accessiBe is For and Not&lt;/li&gt;
&lt;li&gt;That Which I Believe&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting the Scene
&lt;/h2&gt;

&lt;p&gt;Recently, I came across this article by Anna E. Cook, a Senior Accessibility Designer, on how there is no such thing as fully automated accessibility 🙅🏻‍♀️&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;I wrote this article last night, as promised.&lt;br&gt;&lt;br&gt;I hope only to add to the conversations already shared by others about accessiBe and similar products.&lt;a href="https://t.co/zKINM2tGPk" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/zKINM2tGPk" rel="noopener noreferrer"&gt;https://t.co/zKINM2tGPk&lt;/a&gt;&lt;/p&gt;— Anna E. Cook (&lt;a class="mentioned-user" href="https://dev.to/annaecook"&gt;@annaecook&lt;/a&gt;) &lt;a href="https://twitter.com/annaecook/status/1415666401663090701?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;July 15, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmadalyn.dev%2Fstatic%2Fb917d6a311a6de42b6f64848f4d9e5d3%2F8aace%2Ffrench-press.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmadalyn.dev%2Fstatic%2Fb917d6a311a6de42b6f64848f4d9e5d3%2F8aace%2Ffrench-press.png" alt="An illustrated french press machine being compared to automated tests. Grinding coffee beans is like automated testing catching under 25% of accessibility violations. Low effort is like the "&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Madalyn Parker's &lt;a href="https://madalyn.dev/blog/a11y-testing-coffee" rel="noopener noreferrer"&gt;blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Turns out, though, there is a company who claims that with just two things - an overlay and AI - it can make your website compliant with WCAG 2.1, ADA Title III, Section 508, and EAA/EN 301549, for an affordable price.&lt;/p&gt;

&lt;p&gt;This company is &lt;a href="https://accessibe.com/" rel="noopener noreferrer"&gt;accessiBe&lt;/a&gt; and they provide a solution that is automated and scalable, growing with you into the future as your site evolves.&lt;/p&gt;

&lt;p&gt;In other words, it saves you time and money if your product development cycle didn't include the disability community in the first place.&lt;/p&gt;

&lt;p&gt;I wanted to get the following answers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; What does accessiBe actually do under the hood? &lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; Does it actually make the lives of those in the disability community, better?&lt;/p&gt;
&lt;h2&gt;
  
  
  How accessiBe Actually Works &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I always like to guess how something actually works before going to see what it actually does. So I theorized it did the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* Missing alt text
  - Look for every instance of &amp;lt;img&amp;gt; tags using a parser
  - Check if it has an alt attribute
  - If it doesn't, use machine learning to determine what the 
    image is and create an alt attribute with the result
  - Celebrate DOM manipulation and AI powers with beers
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, I knew that there were three different demos on accessiBe's site explaining what it does - including a really long one from the CEO.&lt;/p&gt;

&lt;p&gt;However, like a reporter with a good cause, I needed to see it myself.&lt;/p&gt;

&lt;p&gt;So I signed up for a free trial 🤡 and tested it out on my website, whose code I am familiar with and is a work-in-progress.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(I provided the phone number of the &lt;a href="https://www.irsss.ca/" rel="noopener noreferrer"&gt;Indian Residential Schools Survivors Society&lt;/a&gt; so they can't call me. #reconciliation #sneaky)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Ft2P6Zgh%2FScreen-Shot-2021-07-24-at-3-32-53-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Ft2P6Zgh%2FScreen-Shot-2021-07-24-at-3-32-53-PM.png" alt="Screenshot of my website which has two main sections: on the left, a vertical hero image of me sitting on a rooftop and on the right, the text for my site"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: My dumpster &lt;a href="//clearlythuydoan.com"&gt;website&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The first thing that I noticed was I couldn't test accessiBe locally because you have to provide the domain name for your trial. Couldn't use localhost:3000.&lt;/p&gt;

&lt;p&gt;So I had to push this commit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F5xS66W6%2FScreen-Shot-2021-07-24-at-3-37-06-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F5xS66W6%2FScreen-Shot-2021-07-24-at-3-37-06-PM.png" alt="Git commit that reads, "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From inspecting the elements of my website, I could see that there were new css classes everywhere as well as aria attributes. And it created &lt;a href="https://www.w3.org/TR/WCAG20-TECHS/G1.html" rel="noopener noreferrer"&gt;skip links&lt;/a&gt; to make it easier for keyboard and screenreader users to move around the page.   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Fh8dxhKt%2FScreen-Shot-2021-07-24-at-3-46-19-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2Fh8dxhKt%2FScreen-Shot-2021-07-24-at-3-46-19-PM.png" alt="Screenshot of html"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when you activated it, you could access and do the following:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access skip links to navigate sections if there were none:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FG2CpjfV%2FScreen-Shot-2021-07-24-at-4-10-15-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FG2CpjfV%2FScreen-Shot-2021-07-24-at-4-10-15-PM.png" alt="Screenshot of a website using skip links"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make visual changes like improve readability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FqWMNyVk%2FScreen-Shot-2021-07-24-at-4-07-41-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FqWMNyVk%2FScreen-Shot-2021-07-24-at-4-07-41-PM.png" alt="Screenshot of a website's text readability being improved by enlarging it and altering the contrast"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FJxd6R71%2FScreen-Shot-2021-07-24-at-4-09-59-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FJxd6R71%2FScreen-Shot-2021-07-24-at-4-09-59-PM.png" alt="Screenshot of a website using a visual ruler that grays out everything beyond the focus zone to improve readability"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just to name a few.&lt;/p&gt;

&lt;p&gt;After watching the CEO's demo on 2x, he confirmed to me that I was right about how their AI handles images. He also went on to explain other situations like how it uses its AI to handle a lack of &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML" rel="noopener noreferrer"&gt;semantic html&lt;/a&gt;. Let's say a site has multiple lists but none of them use the appropriate tag. It will make the great guess as to which one is the main menu and then alter that tag in the DOM. &lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility / Disability Community Discourse &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;While accessiBe states that it includes people in the disability community in user testing, and states that its vision is "to make the entire internet fully accessible to people with disabilities by 2025", there has been backlash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Banned by largest U.S. Blind Advocacy Group&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Largest U.S. Blind Advocacy Group Bans Web &lt;a href="https://twitter.com/hashtag/Accessibility?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Accessibility&lt;/a&gt; Overlay Giant AccessiBe: &lt;a href="https://t.co/8HLMuFLffd" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/8HLMuFLffd" rel="noopener noreferrer"&gt;https://t.co/8HLMuFLffd&lt;/a&gt; via &lt;a href="https://twitter.com/Forbes?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@Forbes&lt;/a&gt; H/T &lt;a href="https://twitter.com/Spellacy?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@Spellacy&lt;/a&gt;! &lt;a href="https://twitter.com/hashtag/A11y?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#A11y&lt;/a&gt; &lt;a href="https://t.co/xAbclS863N" rel="noopener noreferrer"&gt;pic.twitter.com/xAbclS863N&lt;/a&gt;&lt;/p&gt;— Meryl Evans speaks at #ID24 and #CMWorld. (@merylkevans) &lt;a href="https://twitter.com/merylkevans/status/1410974302770450433?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;July 2, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;strong&gt;Descriptions about what's still bad even with use&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Broken headings and tables. Misleading alt text. False advertising. Trapped keyboard focus. Zero support for non-HTML content. Sock-puppet reviews.&lt;br&gt;Here's a vision: read our stories in the &lt;a href="https://twitter.com/hashtag/AccessiBe?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#AccessiBe&lt;/a&gt; thread before aggressively singling out critics for homework. &lt;a href="https://twitter.com/hashtag/BelieveUsers?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#BelieveUsers&lt;/a&gt; &lt;a href="https://t.co/svigYipn2j" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/svigYipn2j" rel="noopener noreferrer"&gt;https://t.co/svigYipn2j&lt;/a&gt;&lt;/p&gt;— Chancey Fleet 🌈👩‍🦯 (@ChanceyFleet) &lt;a href="https://twitter.com/ChanceyFleet/status/1366573648346284034?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;March 2, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;strong&gt;A talk about how you can't out-code bad design (agree).&lt;/strong&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;You can never out code bad &lt;a href="https://twitter.com/hashtag/design?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#design&lt;/a&gt;. Next week we discuss The Fatal Flaw of Overlays, led by the talented &lt;a href="https://twitter.com/ShellELittle?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@ShellELittle&lt;/a&gt;. Join us at 3pm ET on July 28th. &lt;a href="https://t.co/XyBzIfplK7" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/XyBzIfplK7" rel="noopener noreferrer"&gt;https://t.co/XyBzIfplK7&lt;/a&gt; &lt;a href="https://t.co/AG4rlY49WX" rel="noopener noreferrer"&gt;pic.twitter.com/AG4rlY49WX&lt;/a&gt;&lt;/p&gt;— A11yTalks (@A11YTalks) &lt;a href="https://twitter.com/A11YTalks/status/1418236907411099652?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;July 22, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;strong&gt;A comparison to cancer.&lt;/strong&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;accessiBe is a cancer on the internet. I wrote about the insidious framing it uses to source customers and propagate harm. &lt;a href="https://t.co/la4bj0pj1A" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/la4bj0pj1A" rel="noopener noreferrer"&gt;https://t.co/la4bj0pj1A&lt;/a&gt;&lt;/p&gt;— Eric Bailey (&lt;a class="mentioned-user" href="https://dev.to/ericwbailey"&gt;@ericwbailey&lt;/a&gt;) &lt;a href="https://twitter.com/ericwbailey/status/1418208693330399239?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;July 22, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;strong&gt;And a Deafblind human rights lawyer cautioning against it.&lt;/strong&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;An alarming number of companies have fallen for it. Millions of dollars have poured into it. Beware of &lt;a href="https://twitter.com/hashtag/AccessiBe?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#AccessiBe&lt;/a&gt;, &lt;a href="https://twitter.com/hashtag/AudioEye?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#AudioEye&lt;/a&gt;, &lt;a href="https://twitter.com/hashtag/EqualWeb?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#EqualWeb&lt;/a&gt;, &lt;a href="https://twitter.com/hashtag/User1st?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#User1st&lt;/a&gt;, &lt;a href="https://twitter.com/hashtag/UserWay?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#UserWay&lt;/a&gt;, &amp;amp; other automated web &lt;a href="https://twitter.com/hashtag/accessibility?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#accessibility&lt;/a&gt; "solutions." I made this video to alert those new to &lt;a href="https://twitter.com/hashtag/a11y?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#a11y&lt;/a&gt; &lt;a href="https://t.co/j0nAgpaFsb" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/j0nAgpaFsb" rel="noopener noreferrer"&gt;https://t.co/j0nAgpaFsb&lt;/a&gt; &lt;a href="https://t.co/IcsCHcJc1M" rel="noopener noreferrer"&gt;pic.twitter.com/IcsCHcJc1M&lt;/a&gt;&lt;/p&gt;— Haben Girma👩🏿‍🦯 (@HabenGirma) &lt;a href="https://twitter.com/HabenGirma/status/1390051536819023873?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 5, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;To summarize, main criticisms include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can't automate your way to accessible products&lt;/li&gt;
&lt;li&gt;Overlays do not work and are flawed&lt;/li&gt;
&lt;li&gt;Focuses more on lawsuits than people&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eric Bailey, a designer, depicts it best here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FE66gVYJXEAAOsDB%3Fformat%3Dpng%26name%3Dlarge" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FE66gVYJXEAAOsDB%3Fformat%3Dpng%26name%3Dlarge" alt="Graphic of a pyramid of people. At the top, where there are few people, are those who care about outcomes. Usually outcomes means profit. Below them are slightly more people who care about checking boxes. Boxes meaning compliance. Below them is a much larger group: people who care about solutions. And the group below that which is even larger consists of people who are actually affected by the solution."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who accessiBe is For and Not &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;At this point, what do I know?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Does accessiBe help some people in the community? Seems so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Does accessiBe help all people in the community? No.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; Does it help some companies reach compliance? Apparently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; Can you reach compliance and not be fully accessible? Yes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Is it more cost effective than skilling up your ICs? Debatable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6)&lt;/strong&gt; Is this a debated topic in the space? Yes. By users and professionals.&lt;/p&gt;

&lt;p&gt;I suppose if you were a company, and companies want to make money, and you were aware that almost &lt;a href="https://webaim.org/projects/million/#wcag" rel="noopener noreferrer"&gt;98% of homepages on the internet&lt;/a&gt; are inaccessible, then created a product that is affordable, low-effort and aimed it at businesses that are afraid to get sued, then I could see why you like the idea. I suppose you could also like the idea if you cared about equal access.&lt;/p&gt;

&lt;p&gt;You could argue that it does improve the quality of life of (some) people in the disability community, that it's the fastest way to get more businesses to reach compliance and, thus, closer to being fully accessible. And I suppose if you were really tired of the lack of urgency on the part of businesses' you might prioritize the approach to the future that accessiBe promises.&lt;/p&gt;

&lt;p&gt;(Trust me, I understand the anger at businesses' lack of accommodation.)&lt;/p&gt;

&lt;p&gt;But I have a hard time believing that you would also truly care about the needs and lived experiences of people in the accessibility and disability community.&lt;/p&gt;

&lt;p&gt;Especially if it continues to &lt;a href="https://twitter.com/turtlecatpurrz/status/1415189018313072641?s=20" rel="noopener noreferrer"&gt;hurt (some of) them&lt;/a&gt;. Or &lt;a href="https://threadreaderapp.com/thread/1367543823665139712.html" rel="noopener noreferrer"&gt;worse&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  That Which I Believe &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Overall, my concern is with what it encourages people to continue believing.&lt;/p&gt;

&lt;p&gt;A turnkey solution like this suggests multiple mindsets on the part of businesses, which accessiBe targets in their money-making model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ability to build accessible products is not worth investing in&lt;/li&gt;
&lt;li&gt;If we're not getting sued, we're good&lt;/li&gt;
&lt;li&gt;If we're compliant, we're good&lt;/li&gt;
&lt;li&gt;We don't build for "unicorns" but we'll pay to keep them happy&lt;/li&gt;
&lt;li&gt;Accessibility is not the responsibility of ICs&lt;/li&gt;
&lt;li&gt;The needs of users we're excluding is not our concern&lt;/li&gt;
&lt;li&gt;Only abled people are worth our resources&lt;/li&gt;
&lt;li&gt;HTML is not an important skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe in a different methodology to achieve equal access on the web.&lt;/p&gt;

&lt;p&gt;Instead, you should incorporate accessibility considerations into everything you do from beginning to end to provide equal access on the web, especially if you're a company that serves an "every" somebody. You may have heard, "shift left". Shift left with security considerations. Shift left with accessibility considerations. Include users with disabilities in your user testing and research. Create a feedback loop with them and maintain it. &lt;/p&gt;

&lt;p&gt;Do not consider accessibility as an item that can be de-prioritized below your other OKRs. Bake it into your roadmaps. Include accessibility in your acceptance criteria. Include it in your designs. Include it in your development's definition of done. Test with at &lt;em&gt;least&lt;/em&gt; one screen reader and tack on more as you become familiar with the others. Train your ICs.&lt;/p&gt;

&lt;p&gt;All of them. Actually invest in everyone. &lt;a href="https://twitter.com/CdnShieldCarla/status/1418987382339158018?s=20" rel="noopener noreferrer"&gt;Including recruitment&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you haven't been doing this from the start and you've been around a while, I get it. I'm disappointed, but I get it. Maybe you lacked the funds. Maybe you lacked the foresight. But you know now. Make a plan to remediate over time the UX debt you have accumulated that is preventing users from benefiting from your products or services and commit to shifting left incrementally for new features. You could also fully commit on an entire team first.&lt;/p&gt;

&lt;p&gt;Then make that commitment public and stick to it by providing &lt;a href="https://spotify.design/article/better-in-black-rethinking-our-most-important-buttons" rel="noopener noreferrer"&gt;updates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Accessibility should be part of your standard of quality. Do not rely long-term on one person or one team to make this commitment. Everyone in the company should commit to the quality of their product and consequently the actual impact to the experiences of their users and the users they are excluding. If you cannot pay a consultancy to train your entire staff, start with an external speaker. Bring them to an event where your ICs are present. &lt;/p&gt;

&lt;p&gt;And then actually iterate. &lt;/p&gt;

&lt;p&gt;Because truly quality things take time, repeated effort, and education.&lt;/p&gt;

&lt;p&gt;Not a single script tag in the body of your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FhDH9hBH%2Fmvp-meme.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FhDH9hBH%2Fmvp-meme.jpg" alt="A meme about minimum viable products that jokes about how we're going to iterate after releasing the MVP. Except we're not."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep it candid,&lt;/p&gt;

&lt;p&gt;Thuy 🙋🏻‍♀️&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
