<?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>Forem: Emma Bostian ✨</title>
    <description>The latest articles on Forem by Emma Bostian ✨ (@emmabostian).</description>
    <link>https://forem.com/emmabostian</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%2F123155%2Fcac9093b-f5a4-49e8-92c8-13c44121115a.jpg</url>
      <title>Forem: Emma Bostian ✨</title>
      <link>https://forem.com/emmabostian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/emmabostian"/>
    <language>en</language>
    <item>
      <title>Lights, Camera, Action! My Tech Setup For Recording Courses &amp;&amp; Podcasts</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Sat, 03 Oct 2020 10:58:36 +0000</pubDate>
      <link>https://forem.com/emmabostian/lights-camera-action-my-tech-setup-for-recording-courses-podcasts-2p6j</link>
      <guid>https://forem.com/emmabostian/lights-camera-action-my-tech-setup-for-recording-courses-podcasts-2p6j</guid>
      <description>&lt;p&gt;Earlier this week I posted a couple of tweets regarding my new camera and lighting setup! Many people were interested in what technologies I use to record online courses and podcasts so I’m here today to share all of the details!&lt;/p&gt;

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

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



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1311940745344024577-483" src="https://platform.twitter.com/embed/Tweet.html?id=1311940745344024577"&gt;
&lt;/iframe&gt;

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



&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyi7433td9rgd3zelchv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyi7433td9rgd3zelchv.png" alt="People asking me to post my setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a quick note, I am NOT a tech equipment expert. In fact I was advised to buy this specific equipment by trained professionals who have created online content for years. &lt;/p&gt;

&lt;p&gt;I also want to explicitly note that this equipment is EXPENSIVE. I understand that many of you are not able to afford most of this equipment and for that I apologize. Where possible I will recommend more affordable equipment but the reality of it is that if you want the best quality content you have to spend some money. &lt;/p&gt;

&lt;p&gt;Some of this equipment was provided by work, but the camera, lights, adapters, tripod, camlink, and keyboard I purchased myself. It was painful for me to spend the money but I keep reminding myself that this is a business expense and it will pay off in the long-run.&lt;/p&gt;

&lt;p&gt;Also remember that this is my setup and yours could look completely different! I haven’t tried a ton of equipment variants so I am a bit biased in my reviews. I advise you to do your own homework and research the best solutions that fit your budget. You don’t have to purchase all of the equipment at once; you can accumulate it over time!&lt;/p&gt;

&lt;p&gt;Please don’t judge me for the cat hair and fingerprints on my equipment. I ain’t got time to clean that shit everyday. With that, let’s jump right in!&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp7pncja0kj2fs34zvtan.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp7pncja0kj2fs34zvtan.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Keyboard
&lt;/h1&gt;

&lt;p&gt;Okay I’ll admit, I have a keyboard problem. I’ve tried a bunch of different keyboards in all different price ranges and every time I see a fun new keyboard I have an overwhelming desire to purchase it.&lt;/p&gt;

&lt;p&gt;I recently backed the &lt;a href="https://www.kickstarter.com/projects/keytron/keychron-k3-ultra-slim-compact-wireless-mechanical-keyboard?ref=ksr_email_backer_backer_confirmation" rel="noopener noreferrer"&gt;Keychron K3 Ultra Slim Compact Wireless Mechanical Keyboard&lt;/a&gt; and am very much looking forward to receiving that in the mail someday.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl1kd5zpd53l48mfzfbhj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl1kd5zpd53l48mfzfbhj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The keyboard I’ve been using for a long time is the &lt;a href="https://www.duckychannel.com.tw/en/One-2-Mini-Frozen-Llama-RGB" rel="noopener noreferrer"&gt;Mini Ducky Frozen Llama keyboard&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxbnzq1h9p33ib92s1yxv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxbnzq1h9p33ib92s1yxv.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This keyboard uses the Cherry MX mechanical switches, which means it’s not as deafeningly loud as other mechanical keyboard switches (so your coworkers won’t hate you as much).&lt;/p&gt;

&lt;p&gt;While I love this mechanical keyboard and find it both aesthetically pleasing and easy to type on, I have some issues with it.&lt;/p&gt;

&lt;p&gt;First, this is a Windows OS layout and while many of the keys map to Mac OS, I still find it a bit hard to use as the command and option keys are swapped from the Mac layout. &lt;/p&gt;

&lt;p&gt;You’ll also notice that I don’t have an up-arrow key. This is because the Frozen Llama keyboard is a 60% layout, meaning it doesn’t have all the keys.&lt;/p&gt;

&lt;p&gt;When I received the keyboard it didn’t have any arrow keys, but I re-mapped the keyboard and replaced the keycaps on the right-hand side to use the shift key as the up arrow. This poses issues when I try to use the right-side shift key and instead get an up-arrow.&lt;/p&gt;

&lt;p&gt;This keyboard isn’t wireless which means it adds to the spaghetti nightmare of cables on my desk. Not a huge fan, but not a dealbreaker.&lt;/p&gt;

&lt;p&gt;Lastly there is no back tick (`) / tilde (~) key which makes coding a freaking nightmare. There are keys on the Ducky keyboard which map to these characters but in all honesty I have no idea what they are and end up using my Mac keyboard when I need to insert those characters.&lt;/p&gt;

&lt;p&gt;I paid about $99 for this keyboard off of &lt;a href="https://mechanicalkeyboards.com/shop/index.php?l=product_detail&amp;amp;p=5269" rel="noopener noreferrer"&gt;mechanicalkeyboards.com&lt;/a&gt; and it took a few weeks to arrive. I probably wouldn’t re-purchase this. While it’s great it’s a bit impractical and I’d opt for something with a wider layout.&lt;/p&gt;

&lt;h1&gt;
  
  
  Laptop Stand
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ebfppshkbrhus8xycrg.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ebfppshkbrhus8xycrg.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use the &lt;a href="https://www.amazon.com/Twelve-South-Laptops-MacBooks-ergonomic/dp/B07377XVNY/ref=sr_1_12?dchild=1&amp;amp;keywords=s%20laptop%20stand&amp;amp;qid=1601716453&amp;amp;sr=8-12" rel="noopener noreferrer"&gt;Twelve South Curve laptop stand&lt;/a&gt; and I absolutely love it. I received this stand through work but it retails for about $50 give or take. I would 110% recommend this stand and purchase it for myself if something bad happened to it (but let’s hope it doesn’t).&lt;/p&gt;

&lt;h1&gt;
  
  
  Mac Adapter
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3cy4ay6d3syt2ot4xh4o.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3cy4ay6d3syt2ot4xh4o.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have a MacBook then you understand the f*cking struggle of not having enough holes to plug your shit into (sorry for the profanity, I feel very strongly about this). And when you’re expanding your tech equipment you’re gonna have a lot of shit to plug in.&lt;/p&gt;

&lt;p&gt;I’ve used this Mac adapter for years and really love it. I don’t know the exact brand but I did buy it off of Amazon. &lt;a href="https://www.amazon.com/Hiearcool-MacBook-Multiport-Compatible-Nintendo/dp/B07WPTG7NX/ref=sr_1_5?dchild=1&amp;amp;keywords=mac%20adapter&amp;amp;qid=1601716711&amp;amp;sr=8-5" rel="noopener noreferrer"&gt;Here’s a comparable model&lt;/a&gt; that runs about $24.99.&lt;/p&gt;

&lt;p&gt;If you’re going to be using a 4k monitor, be sure to have a 4k HDMI port (the one I linked above does). For all of the equipment I use, I need three USB ports and a 4K HDMI port but if you have a wireless keyboard you won’t need the third USB port (so the link above should work, and no it’s not an affiliate link although maybe it should be).&lt;/p&gt;

&lt;h1&gt;
  
  
  Monitor
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faqtsb2peio7thzqru6h4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faqtsb2peio7thzqru6h4.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use the &lt;a href="https://www.amazon.com/Dell-Ultrasharp-U2719DX-2560x1440-Resolution/dp/B07KGR784M/ref=sr_1_1?dchild=1&amp;amp;keywords=dell%20ultrasharp%2027&amp;amp;qid=1601717063&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Dell Ultrasharp 27”&lt;/a&gt; monitor. I’ll just come out and say it: this shit is expensive retailing at over $400. I absolutely love this monitor but if it wasn’t provided through work I wouldn’t have purchased it (I am cheap ironically). The thought of spending more than $200 on a monitor seems absurd to me but then again I do appreciate the high-quality so really what do I know.&lt;/p&gt;

&lt;p&gt;But to be fair it does move up and down, tilt forwards and backwards, rotate for landscape or portrait mode. It’s wide AF so you can troll Twitter while on a Zoom call without anyone knowing you’re not paying attention. And it’s a matte display so you won’t see all the nasty fingerprints left when eating Doritos while coding.&lt;/p&gt;

&lt;p&gt;I’ll also admit that I know nothing about computer monitors, but the kind people of Twitter do know something about monitors so feel free to &lt;a href="https://twitter.com/EmmaBostian/status/1272921057419309056" rel="noopener noreferrer"&gt;check out this thread&lt;/a&gt; on the best monitors for your workspace.&lt;/p&gt;

&lt;h1&gt;
  
  
  Microphone
&lt;/h1&gt;

&lt;p&gt;When I began podcasting I started with the &lt;a href="https://www.amazon.com/Shure-SM58-LC-Cardioid-Dynamic-Microphone/dp/B000CZ0R42/ref=sr_1_2?dchild=1&amp;amp;keywords=Shure%20SM58%20LC&amp;amp;qid=1601717526&amp;amp;sr=8-2" rel="noopener noreferrer"&gt;Shure SM58 LC microphone&lt;/a&gt; (I think). This microphone was provided through a podcast I frequent, &lt;a href="https://changelog.com/jsparty" rel="noopener noreferrer"&gt;JSParty&lt;/a&gt; and I used this with a &lt;a href="https://www.amazon.com/Shure-RK183WS-Black-Snap-Fit-Windscreens/dp/B003B1IPSE/ref=sr_1_9?dchild=1&amp;amp;keywords=Shure%20pop%20filter&amp;amp;qid=1601717590&amp;amp;sr=8-9" rel="noopener noreferrer"&gt;pop filter&lt;/a&gt; (a noise protection filter for microphones that eliminate popping sounds). for quite a while. The quality was really good so I’d recommend this mic to someone starting out in the podcast industry. It retails for about $99 and you’ll need a &lt;a href="https://www.amazon.com/InnoGear-Upgraded-Adjustable-Microphone-Snowball/dp/B07F82BPLV/ref=sr_1_11?dchild=1&amp;amp;keywords=microphone%20desk%20stand&amp;amp;qid=1601717747&amp;amp;sr=8-11" rel="noopener noreferrer"&gt;mic stand&lt;/a&gt; to hold it up (unless you want to pretend you’re at a karaoke bar).&lt;/p&gt;

&lt;p&gt;You’ll also need an adapter for this microphone (it’s not a USB) and an audio box (which we’ll discover in a subsequent section of this blog post). The &lt;a href="https://www.thomann.de/se/the_sssnake_sm10_bk.htm" rel="noopener noreferrer"&gt;adapter is an XLR male to XLR female&lt;/a&gt; and retails for about $8. All I could find is the German website so I apologize but you can likely find the same product in the U.S. if that’s where you’re shopping from.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw1cq60u0qc5kqm6n67xf.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw1cq60u0qc5kqm6n67xf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next I migrated over to the &lt;a href="https://www.amazon.com/Blue-Yeti-USB-Microphone-Silver/dp/B002VA464S/ref=sr_1_4?dchild=1&amp;amp;keywords=yeti%20microphone&amp;amp;qid=1601717780&amp;amp;sr=8-4" rel="noopener noreferrer"&gt;Blue Yeti USB microphone&lt;/a&gt; which retails for about $115. This mic is great for anyone looking to create online content or sound way cooler than their coworkers on meetings. It’s also free standing which is nice and allows you to plug your headphones directly into the microphone to hear yourself.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl79mutvk0jpohuluha5f.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl79mutvk0jpohuluha5f.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, if you’re looking for the ultimate podcaster/content creator/influencer setup, I got you covered. Enter the &lt;a href="https://www.amazon.com/Shure-SM7B-Cardioid-Dynamic-Microphone/dp/B0002E4Z8M/ref=sr_1_1?dchild=1&amp;amp;keywords=shure%20sm7b&amp;amp;qid=1601718105&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Shure SM7B microphone&lt;/a&gt;. This is the ultimate badass podcaster microphone.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn7mz3n1bk1rr4msmlb7q.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn7mz3n1bk1rr4msmlb7q.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This microphone doesn’t mess around, it’s super legitimate and as far as I know one of the best microphones on the market. It does cost about $400 but the quality is unparalleled. I recommend using the round pop filter the microphone comes with as I’ve been told it’s the most effective and I blindly listen to other people’s advice without fact checking.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftdfhpl4ffv9lo44bn280.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftdfhpl4ffv9lo44bn280.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Similarly to the first Shure microphone, you’ll need a &lt;a href="https://www.thomann.de/se/the_sssnake_sm10_bk.htm" rel="noopener noreferrer"&gt;male-to-female adapter&lt;/a&gt; as well as an in-line microphone preamplifier. I use the &lt;a href="https://www.thomann.de/se/tritonaudio_fethead_germanium.htm" rel="noopener noreferrer"&gt;TritonAudio FetHead Germanium&lt;/a&gt; which is also expensive at a retail price of 929 SEK (Swedish kronor) or about $104.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx8wtsnc92fgxhuz017ar.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx8wtsnc92fgxhuz017ar.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again you will need an AudioBox (which I’ll cover in the next section) and a microphone arm (which I’ll also cover) so in total this microphone setup retails for about $520 depending upon where you purchase each product. I’d recommend using a legitimate audio equipment website versus Amazon not only to support more local businesses but to ensure the quality of your products.&lt;/p&gt;

&lt;h1&gt;
  
  
  Audio Box
&lt;/h1&gt;

&lt;p&gt;If you’re going to use a microphone that requires an adapter (like the two Shure microphones mentioned above), you’ll need to buy an audio box. I use the &lt;a href="https://www.amazon.com/Presonus-Audio-Interface-Audiobox-iTwo/dp/B00KBMAJZS/ref=sr_1_2?dchild=1&amp;amp;keywords=presonus%20audiobox%20i2&amp;amp;qid=1601718925&amp;amp;sr=8-2" rel="noopener noreferrer"&gt;PreSonus AudioBox iTwo&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs3yn9psom7j12d7luc13.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs3yn9psom7j12d7luc13.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This audio box allows for two device hookups (i.e. two microphones) and retails for about $150. If you don’t need two inputs you can opt for a one-input audio box like the &lt;a href="https://www.amazon.com/Focusrite-Scarlett-Audio-Interface-Tools/dp/B07QR6Z1JB/ref=sr_1_2?dchild=1&amp;amp;keywords=audiobox&amp;amp;qid=1601719037&amp;amp;sr=8-2" rel="noopener noreferrer"&gt;Scarlet Solo&lt;/a&gt; which retails for about $100.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjk0bftbe1zasn12sgvru.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjk0bftbe1zasn12sgvru.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I haven’t used this audio box but I was sent it by LinkedIn Learning to record a course so I’m sure their audio engineers have vetted the plethora of audio boxes available on the market. I’m also pretty sure Ali and Kelly use the Scarlet Solo to record our &lt;a href="https://ladybug.dev/" rel="noopener noreferrer"&gt;Ladybug Podcast episode&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Remember you’ll need a preamp to connect your microphone adapter to your audio box (I’ve listed mine above). Then you can connect your audio box to your computer via USB port. Here is what my setup looks like. (microphone =&amp;gt; mic adapter =&amp;gt; preamp =&amp;gt; audio box =&amp;gt; USB into computer).&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fne3whndely4pvxezlsis.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fne3whndely4pvxezlsis.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When using an audio box you’ll want to learn about mic gain and how to set up your audio box. &lt;a href="https://www.youtube.com/watch?v=1l86SOlxyps" rel="noopener noreferrer"&gt;Here’s a video that explains the whole process&lt;/a&gt;. Admittedly I have no idea how to use my audio box; I generally plug it in and hope it works so I should probably watch the video I just recommended lol.&lt;/p&gt;

&lt;h1&gt;
  
  
  Microphone Arm
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy9d7pnnc88b2l507isyd.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy9d7pnnc88b2l507isyd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To hold up my Shure SM7B microphone I use the &lt;a href="https://www.yellowtec.com/mika.html" rel="noopener noreferrer"&gt;MIKA YellowTec mic arm&lt;/a&gt;. This mic arm is extremely expensive at about $400 depending upon where you purchase it. It comes preloaded with a mic adapter although if you move your mic arm in a specific way, the wires inside can snap and you’re screwed. I did this. Don’t be like me. Treat it gently.&lt;/p&gt;

&lt;p&gt;You’ll also need to buy a mic arm clamp. I use the &lt;a href="https://www.thomann.de/gb/yellowtec_mika_table_clamp_yt3210.htm" rel="noopener noreferrer"&gt;YellowTec MIKA YT3210 Table Clamp&lt;/a&gt; which costs about $50. It’s one of the best clamps I’ve ever used and is easily adjusted. Your mic arm just sits inside of it!&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgwlzi50a0t2rainmq555.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgwlzi50a0t2rainmq555.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is my desk with the mic arm, clamp, microphone, and adapter all hooked up! Please disregard the cat hair…&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ynef7aygtjoxdc0sk0r.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ynef7aygtjoxdc0sk0r.JPG" alt="Alt Text"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2zvuatug7asxjj8ps4cv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2zvuatug7asxjj8ps4cv.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Lighting
&lt;/h1&gt;

&lt;p&gt;I don’t understand much about lighting but I did purchase a light for my setup (as recommended). I haven’t used it yet because it’s still light out in Sweden but come the Swedish winter it will become my best friend!&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdgr7u3db8y3qavmcsx83.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdgr7u3db8y3qavmcsx83.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use the &lt;a href="https://www.amazon.com/Elgato-Key-Light-Professional-App-Enabled/dp/B07L755X9G/ref=sr_1_3?dchild=1&amp;amp;keywords=elgato%20key%20light&amp;amp;qid=1601720024&amp;amp;sr=8-3" rel="noopener noreferrer"&gt;Elgato Key Light LED Panel With 2800 Lumens&lt;/a&gt;. Again, this shit is expensive, but it seems to be the best on the market. It retails for about $199 per light and since I’m cheap I only bought one but I might invest in a second come winter-time. It comes with the desk clamp and is extremely easy to assemble!&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vpmhsyh4dhuczvkeshq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vpmhsyh4dhuczvkeshq.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Camera
&lt;/h1&gt;

&lt;p&gt;Okay now on to the equipment everyone wants to know about: the camera. I bought the &lt;a href="https://www.amazon.com/Sony-16-50mm-Mirrorless-Digital-Camera/dp/B00MHPAFAG/ref=sr_1_1?dchild=1&amp;amp;keywords=sony%20a5100&amp;amp;qid=1601720237&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Sony a5100&lt;/a&gt; for about $500 (yeah, it freaking hurt). I didn’t purchase any additional lenses.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8jxsqsvbrmekxikbbwt5.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8jxsqsvbrmekxikbbwt5.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be honest, I have no idea how to use this camera. I don’t know what the specs mean or how to adjust aperture or whatever else anyone who’s decently versed in cameras talks about. I just plugged it in and went on my merry way. Again, I was advised to purchase this. So far so good but yeah… not cheap. Although, there are more expensive cameras out there so… yeah I have no idea what I’m talking about.&lt;/p&gt;

&lt;p&gt;I also purchased the &lt;a href="https://www.amazon.com/GorillaPod-Compact-Ballhead-Mirrorless-Charcoal/dp/B074WC9YKL/ref=sr_1_1_sspa?crid=25T81TQLED6Y4&amp;amp;dchild=1&amp;amp;keywords=joby%20gorillapod&amp;amp;psc=1&amp;amp;qid=1601720448&amp;amp;spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyQkNRSFk4NElFRUJOJmVuY3J5cHRlZElkPUEwNjE5NjEyM0FXUzFZQ0lKNE8yRyZlbmNyeXB0ZWRBZElkPUEwMDYzNjA1MzI1UEJUMkZQUVlUVCZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU%3D&amp;amp;sprefix=joby%20gor%2Caps%2C253&amp;amp;sr=8-1-spons" rel="noopener noreferrer"&gt;Joby JB01507 GorillaPod&lt;/a&gt; tripod for about $50. It’s honestly super cool but it’s a table-top / “I can cling to things” tripod, not a standing tripod, so there are limitations.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl1xto0h8jng7681r5gzg.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl1xto0h8jng7681r5gzg.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Along with the camera I purchased some accessories. The first is an adapter. This functions as a “battery” and allows you to keep your camera charging while using it. I use the &lt;a href="https://www.dustinhome.se/product/5010091091/adapter-ac-l200?LGWCODE=5010091091%3B89813%3B5443&amp;amp;gclid=Cj0KCQjwwuD7BRDBARIsAK_5YhXzElBb-DNsgwvFSnTTf2gGVaPARPHYnrNu_dTDv619DFP8mU6RancaAkUJEALw_wcB&amp;amp;ssel=true" rel="noopener noreferrer"&gt;Sony AC Adapter&lt;/a&gt;. I want to say it was around $100 and if you plan to use your camera as your web meeting camera, I highly encourage you to purchase it.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8g5xswrbu2iz30lc13iq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8g5xswrbu2iz30lc13iq.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I bought a remote control for camera recording. I haven’t used it yet but it will definitely come in handy when recording online courses. I bought the &lt;a href="https://www.sony.com/electronics/interchangeable-lens-cameras-tripods-remotes/rm-vpr1" rel="noopener noreferrer"&gt;Sony Cybershot remote control&lt;/a&gt;. This cost about $70 and sadly I can’t tell you my opinion as I haven’t used it.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcpqk3fwtbuue5m3elev2.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcpqk3fwtbuue5m3elev2.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lastly I purchased the &lt;a href="https://www.elgato.com/en/gaming/cam-link-4k" rel="noopener noreferrer"&gt;Elgato CamLink 4k&lt;/a&gt;. This allows me to use my camera as a web camera in meetings. It costs about $150 (so not cheap) but the quality is unparalleled.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm9azh4qtl401ieksdxwa.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm9azh4qtl401ieksdxwa.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lastly I bought a micro-HDMI cable to connect my camera to the CamLink and a USB card (obviously). Both of these things can be purchased for relatively cheap at most home/electronics stores. My setup is: camera =&amp;gt; mini HDMI cable =&amp;gt; USB cable =&amp;gt; CamLink =&amp;gt; Mac adapter.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwchdl5q7e7017nvvbnsc.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwchdl5q7e7017nvvbnsc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;And that’s my entire setup! I spent way too long on this blog post so I hope it’s useful for you! I know this is all completely overwhelming and very expensive but if you’re looking to create a business out of digital content creation, unfortunately at some point you’ll need to spend a decent amount of money to achieve the quality you’re looking for.&lt;/p&gt;

&lt;p&gt;If you have any questions, feel free to leave a comment but I probably won’t know the answers to most of them lol.&lt;/p&gt;

&lt;p&gt;Have a lovely day!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>5 Things You Need To Become A Senior Developer</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Tue, 29 Sep 2020 08:09:01 +0000</pubDate>
      <link>https://forem.com/ladybug/5-skills-you-need-to-become-a-senior-developer-3poe</link>
      <guid>https://forem.com/ladybug/5-skills-you-need-to-become-a-senior-developer-3poe</guid>
      <description>&lt;p&gt;In this week's Ladybug Podcast episode we chatted about the skills it takes to level up from a junior to a senior developer.&lt;/p&gt;


&lt;div class="podcastliquidtag"&gt;
  &lt;div class="podcastliquidtag__info"&gt;
    &lt;a href="/ladybugpodcast/junior-to-senior-developer-career-progression-for-programmers"&gt;
      &lt;h1 class="podcastliquidtag__info__episodetitle"&gt;Junior to Senior Developer: Career Progression for Programmers&lt;/h1&gt;
    &lt;/a&gt;
    &lt;a href="/ladybugpodcast"&gt;
      &lt;h2 class="podcastliquidtag__info__podcasttitle"&gt;
        Ladybug Podcast
      &lt;/h2&gt;
    &lt;/a&gt;
  &lt;/div&gt;
  &lt;div id="record-junior-to-senior-developer-career-progression-for-programmers" class="podcastliquidtag__record"&gt;
    &lt;img class="button play-butt" id="play-butt-junior-to-senior-developer-career-progression-for-programmers" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fplaybutt-5e444a2eae28832efea0dec3342ccf28a228b326c47f46700d771801f75d6b88.png" alt="play"&gt;
    &lt;img class="button pause-butt" id="pause-butt-junior-to-senior-developer-career-progression-for-programmers" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fpausebutt-bba7cb5f432cfb16510e78835378fa22f45fa6ae52a624f7c9794fefa765c384.png" alt="pause"&gt;
    &lt;img class="podcastliquidtag__podcastimage" id="podcastimage-junior-to-senior-developer-career-progression-for-programmers" alt="Ladybug Podcast" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fpodcast%2Fimage%2F96%2F00b3c6d0-8231-4a5c-9163-18ced3eea07c.png"&gt;
  &lt;/div&gt;

  &lt;div class="hidden-audio" id="hidden-audio-junior-to-senior-developer-career-progression-for-programmers"&gt;
  
    
    Your browser does not support the audio element.
  
  &lt;div id="progressBar" class="audio-player-display"&gt;
    &lt;a href="/ladybugpodcast/junior-to-senior-developer-career-progression-for-programmers"&gt;
      &lt;img id="episode-profile-image" alt="Junior to Senior Developer: Career Progression for Programmers" width="420" height="420" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fpodcast%2Fimage%2F96%2F00b3c6d0-8231-4a5c-9163-18ced3eea07c.png"&gt;
      &lt;img id="animated-bars" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fanimated-bars-4e8c57c8b58285fcf7d123680ad8af034cd5cd43b4d9209fe3aab49d1e9d77b3.gif" alt="animated volume bars"&gt;
    &lt;/a&gt;
    &lt;span id="barPlayPause"&gt;
      &lt;img class="butt play-butt" alt="play" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fplaybutt-5e444a2eae28832efea0dec3342ccf28a228b326c47f46700d771801f75d6b88.png"&gt;
      &lt;img class="butt pause-butt" alt="pause" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fpausebutt-bba7cb5f432cfb16510e78835378fa22f45fa6ae52a624f7c9794fefa765c384.png"&gt;
    &lt;/span&gt;
    &lt;span id="volume"&gt;
      &lt;span id="volumeindicator" class="volume-icon-wrapper showing"&gt;
        &lt;span id="volbutt"&gt;
          &lt;img alt="volume" class="icon-img" height="16" width="16" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fvolume-cd20707230ae3fc117b02de53c72af742cf7d666007e16e12f7ac11ebd8130a7.png"&gt;
        &lt;/span&gt;
        &lt;span class="range-wrapper"&gt;
          
        &lt;/span&gt;
      &lt;/span&gt;
      &lt;span id="mutebutt" class="volume-icon-wrapper hidden"&gt;
        &lt;img alt="volume-mute" class="icon-img" height="16" width="16" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fvolume-mute-8f08ec668105565af8f8394eb18ab63acb386adbe0703afe3748eca8f2ecbf3b.png"&gt;
      &lt;/span&gt;
      &lt;span class="speed" id="speed"&gt;1x&lt;/span&gt;
    &lt;/span&gt;
    &lt;span class="buffer-wrapper" id="bufferwrapper"&gt;
      &lt;span id="buffer"&gt;&lt;/span&gt;
      &lt;span id="progress"&gt;&lt;/span&gt;
      &lt;span id="time"&gt;initializing...&lt;/span&gt;
      &lt;span id="closebutt"&gt;×&lt;/span&gt;
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Before jumping into this topic I want to preface this with the fact that every single employer has different qualifications for what constitutes a senior developer, and just because you're a senior developer at one company doesn't necessarily mean you'll be a senior developer at another company.&lt;/p&gt;

&lt;p&gt;Nothing frustrates me more than seeing "I became a senior developer in six months after joining the tech industry" blog posts. Not only do they instill a sense of inferiority in developers who take longer than six months, but there are many factors that go into a promotion. &lt;/p&gt;

&lt;p&gt;Having a computer science degree, having a social media following, having a backlog of content to showcase your skills, and having excess time outside of your 9–5 job are all examples of privilege that facilitate your ability to become a senior developer. &lt;/p&gt;

&lt;p&gt;As an industry, we must stop perpetuating this idea that if you hustle hard enough, it only takes "X" months to become a senior developer. It may take you sixth months, or it may take you six years. Don't let anyone influence your idea of how long it should take you to achieve a promotion. &lt;/p&gt;

&lt;p&gt;Talk with your manager. Find out which boxes you need to check off before becoming a senior developer, and block out the noise that is present on social media.&lt;/p&gt;

&lt;p&gt;But despite each company having their own definition of what it takes to become a senior developer, there are a few characteristics which all senior developer exhibit. Today we'll take a look at five of these characteristics which will jumpstart your progress towards becoming a senior developer.&lt;/p&gt;




&lt;h1&gt;
  
  
  Autonomy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Independence or freedom.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One of the primary qualities of a senior developer is having autonomy, or being independent. As a senior developer, you're expected to deliver work without needing much assistance. This doesn't mean you can't ask questions(in fact, you should ask questions), but it means that if you're given a task you're able to construct a solution and you know what questions to ask if you get stuck.&lt;/p&gt;

&lt;p&gt;Autonomy is one of the characteristics I have struggled with for several years. Early on in my programming career, I felt lost. It's absurdly nerve-wracking to pair with senior team members and watch them seamlessly navigate their way through the code. How do they know where to start? How did they know this bug was originating in this file? How did they know to ask this specific person for help? &lt;/p&gt;

&lt;p&gt;I'll let you in on a secret: all of these questions can be answered with "it just takes time and experience." It's safe to bet that your team members also felt this impending sense of impostor syndrome when they joined the company. And no matter how much programming experience you have, joining a new company with a new tech stack and new colleagues will always require time to acclimate.&lt;/p&gt;

&lt;p&gt;When I joined Spotify this July, my manager and colleagues told me it would take at least six months to feel self-sufficient and productive. It's important to set appropriate and realistic expectations for yourself when joining a new company (especially as an entry-level developer).&lt;/p&gt;

&lt;p&gt;But if your goal is to be promoted to a senior developer role, you must start exhibiting autonomy with your work tasks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Initiative
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;The power or opportunity to act or take charge before others do.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before promoting you to a senior developer, your manager wants to see that you take the initiative to find challenging tasks and help team members in need. &lt;/p&gt;

&lt;p&gt;If you finish your task early, actively seek out other tasks or bugs that you can work on. If you see a team member struggling with their task, offer your assistance. If you see additional areas outside of your team to get involved, like helping to plan an internal conference or mentor a new team member, go for it!&lt;/p&gt;

&lt;p&gt;You should also keep a list of your accomplishments. This will make it easier to reach the next level as you won't be scrambling to remember what you accomplished the past year.&lt;/p&gt;

&lt;p&gt;Don't wait around for someone to give you work: actively seek out new and challenging work and write down your accomplishments.&lt;/p&gt;

&lt;h1&gt;
  
  
  Communication
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;The imparting or exchanging of information by speaking, writing or using some other medium.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahh "soft skills", every programmer's favorite area to excel in. I personally don't understand why "soft skills" are taught as a lesser skill for programmers. The higher up the ladder you climb, the more important your communication skills become.&lt;/p&gt;

&lt;p&gt;The ability to write and speak effectively has many benefits. Whether it's impressing your colleagues during a technical presentation or writing up an internal blog post, communication is key.&lt;/p&gt;

&lt;p&gt;To become a senior developer you must be good at explaining not just what you're doing, but why. This is especially important when mentoring more junior team members. &lt;/p&gt;

&lt;p&gt;Understanding and conveying the why behind tasks will solidify the skills you're learning as well as the skills you're teaching.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem Solving
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;The process of finding solutions to difficult or complex issues.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Problem solving is an undervalued skill for all developers because it's not necessarily a skill developers are taught in bootcamp or degree programs. The ability to solve complex problems will arise throughout your career and will scale in complexity the longer you spend in the industry. &lt;/p&gt;

&lt;p&gt;Learning how to problem solve early-on in your career will put you at an advantage when looking to achieve a promotion. I won't delve into the specifics of problem solving in this post but let's take a look at the general process.&lt;/p&gt;

&lt;p&gt;First, you must identify and clarify the problem. Problems are often more nuanced than we initially perceive. What are you trying to solve? Are there dependent sub-problems that must be solved along the way?&lt;/p&gt;

&lt;p&gt;Once you understand the problem you should list the possible solutions. What are the different ways you can solve the problem?&lt;/p&gt;

&lt;p&gt;Now you're ready to evaluate your options. What benefits and drawbacks does each solution present? Are there performance implications for a solution? What about accessibility concerns?&lt;/p&gt;

&lt;p&gt;You're now ready to select an option and build it. If you realize along the way that your solution isn't technically feasible or you encounter an unforeseen issue, you can always go back to step three and reevaluate your options.&lt;/p&gt;

&lt;p&gt;Lastly, you can document your solution so that your team members can understand why you selected the solution you did.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy0rtjexlrhy9ite3d8nj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy0rtjexlrhy9ite3d8nj.png" alt="Problem solving process defined above"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Problem solving is an invaluable skill and it's undeniably one you'll need to become a senior developer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Mentorship
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;A period of time during which a person receives guidance from a mentor.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest factors in becoming a senior developer is the ability to mentor another team member. Mentorship is often though of as a formal relationship wherein the mentor has all the answers to the mentee's questions. This is an archaic definition of mentorship.&lt;/p&gt;

&lt;p&gt;Mentorship is a symbiotic relationship where both parties are gaining knowledge. While most of the information will flow from the mentor to the mentee, the mentor should also be open to learning from their counterparts.&lt;/p&gt;

&lt;p&gt;Mentors also shouldn't give out answers to the mentees' questions. Asking a question and receiving an answer has short-term benefits. Instead, a mentor's job is to guide the mentee towards the solution. By providing boundaries for your mentee to ideate and learn, their problem solving skills and confidence will grow more quickly.&lt;/p&gt;

&lt;p&gt;As a senior developer you're expected to mentor more junior team members. It doesn't need to be formal (although a formal mentorship will serve your promotion more easily than an informal mentorship) but the act of supporting another team member will make strides towards your desired promotion.&lt;/p&gt;




&lt;p&gt;The biggest piece of advice I can give to those looking to level up from a junior developer to a senior developer is to exhibit the characteristics of a senior developer before you have the title. If your company provides a chart with senior developer qualifications, make sure you're achieving the senior developer requirements before applying for a promotion. &lt;/p&gt;

&lt;p&gt;And lastly, be patient. Being promoted to a  senior developer can take months or years so don't compare yourself to other developers outside of your company.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Creating A Custom Scroll Bar In 24 Lines Of CSS</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Thu, 27 Aug 2020 13:36:16 +0000</pubDate>
      <link>https://forem.com/emmabostian/creating-a-custom-scroll-bar-in-24-lines-of-css-4gg0</link>
      <guid>https://forem.com/emmabostian/creating-a-custom-scroll-bar-in-24-lines-of-css-4gg0</guid>
      <description>&lt;p&gt;Have you ever encountered a website with a beautiful scrollbar and thought to yourself “wow, I wish I could create something like that.” Me too! And after a little investigation, I figured out that creating a custom scroll bar for your blog or personal portfolio doesn’t take a ton of CSS.&lt;/p&gt;

&lt;p&gt;Today we’ll build a gradient progress bar that fades in from zero opacity to full opacity as you scroll. This tutorial only requires foundational HTML, CSS, and JavaScript knowledge and won’t make use of any JavaScript frameworks or libraries. You can find the full code on &lt;a href="https://codepen.io/emmawedekind/pen/VwabMpX"&gt;CodePen&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/emmawedekind/embed/VwabMpX?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  HTML.
&lt;/h1&gt;

&lt;p&gt;First let’s create our document structure. Inside of the HTML CodePen editor let’s add two elements: our progress bar and our progress container.&lt;/p&gt;

&lt;p&gt;The progress bar will indicate how far down the page the user has scrolled. The progress bar container will span the entire height of the page and contain the progress bar.&lt;/p&gt;

&lt;p&gt;Let’s also add a page header with the text “Welcome” and some lorem ipsem paragraphs. I added seven of these paragraphs but for the brevity of this post will only include one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Welcome.&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
  Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
  provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
  Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what our web page currently looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3NlD3BSB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ywep5g9wskux9p1c6j0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3NlD3BSB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ywep5g9wskux9p1c6j0v.png" alt="HTML page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  CSS.
&lt;/h1&gt;

&lt;p&gt;Now we’re ready to add our styles. First let’s add some basic page styling to make our site look a little nicer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#171414&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Courier New"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Courier&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;monospace&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15%&lt;/span&gt; &lt;span class="m"&gt;15%&lt;/span&gt; &lt;span class="m"&gt;5%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:first-of-type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-5%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;-apple-system&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BlinkMacSystemFont&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;"Segoe UI"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Roboto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Oxygen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Ubuntu&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Cantarell&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;"Open Sans"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;"Helvetica Neue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M5PybV8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yi71ifxijhhinx55mzn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M5PybV8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yi71ifxijhhinx55mzn2.png" alt="CSS 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next let’s hide the default browser scroll bar. We can use the webkit vendor prefix to hide the scroll bar in Chrome and Safari.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;::-webkit-scrollbar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’ll need to make special considerations for Firefox as it’s not a webkit browser and won’t respond to the webkit vendor prefix (like Chrome and Safari).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;scrollbar-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we’re ready to style our custom scroll bar. First let’s set up our scroll bar container. We want our scroll bar container to be fixed to the right side of the viewport so we’ll use position fixed with top and right values set to 0. We’ll give the scroll container a width of ten pixels and a very light grey background.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#progressBarContainer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should now see the scroll container appearing on the right side of the viewport.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x8xp3l23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tjn42dlbk91wqqyqt3eq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x8xp3l23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tjn42dlbk91wqqyqt3eq.png" alt="CSS 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our progress bar will also be fixed to the right side of the viewport and have a width of ten pixels, however, we’ll give it a linear gradient from red to violet in order to make it stand out.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#progressBar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;top&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;violet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DsINbRPc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pyhkn7346gjfwpqfwvig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DsINbRPc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pyhkn7346gjfwpqfwvig.png" alt="CSS 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We want to dynamically update the height and opacity of our progress bar on scroll so let’s set height and opacity to zero.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#progressBar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;top&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;violet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  JavaScript.
&lt;/h1&gt;

&lt;p&gt;To update the height and opacity of our progress bar we’ll need to write a few lines of JavaScript. Let’s first grab our progress bar DOM node.&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;progressBar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#progressBar&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;We’ll also need to calculate the total height of our web page. We can calculate the total height by subtracting the window inner height from the entire document body scroll height.&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;let&lt;/span&gt; &lt;span class="nx"&gt;totalPageHeight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;scrollHeight&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHeight&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, let’s add an event listener to the window. When we scroll we want to calculate the new progress height. We can calculate this by first dividing the window’s page Y offset by the total page height to get a decimal fraction. To use this value in our CSS code we must multiply this fraction by 100 (to get a percentage).&lt;/p&gt;

&lt;p&gt;Lastly, we can set the progress bar’s height and opacity to the new progress height.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Unfamiliar with the &lt;code&gt;${}&lt;/code&gt; syntax? It’s called a template string or template literal and it allows you to combine evaluated expressions (the values between the ${}) with plain strings.&lt;/em&gt;&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="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onscroll&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;newProgressHeight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageYOffset&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;totalPageHeight&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;progressBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;newProgressHeight&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;%`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;progressBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;opacity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;newProgressHeight&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;%`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Conclusion.
&lt;/h1&gt;

&lt;p&gt;And that’s it! You now have a beautiful custom scroll bar in just a few lines of CSS.&lt;/p&gt;

</description>
      <category>css</category>
    </item>
    <item>
      <title>5 Tips On Landing Your First Developer Job</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Fri, 31 Jul 2020 14:30:34 +0000</pubDate>
      <link>https://forem.com/emmabostian/5-tips-on-landing-your-first-developer-job-3hc9</link>
      <guid>https://forem.com/emmabostian/5-tips-on-landing-your-first-developer-job-3hc9</guid>
      <description>&lt;p&gt;This week, Honeypot.io published a short video where I gave “&lt;a href="https://www.youtube.com/watch?v=n18iJYxWy3w&amp;amp;t=41s"&gt;5 Tips For Junior Developers | How To Break Into The Industry.&lt;/a&gt;” &lt;/p&gt;

&lt;p&gt;One of the first comments that appeared said “‘How to break into the industry’ should be about how to get that job at IBM, and not what you did after you got it. Or am I missing something?”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C-jJenQ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2ALuwXLCHJNc_sZfrvGgichA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C-jJenQ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2ALuwXLCHJNc_sZfrvGgichA.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a bit of reflection, I realized that Stefan was completely right! I had skipped over a vital time in the developer’s journey: how to land your first developer job. &lt;/p&gt;

&lt;p&gt;Today I want to address this gap and give you five tips on landing your first developer job.&lt;/p&gt;

&lt;p&gt;I want to preface this post with the caveat that I was very privileged in my job search. I completed an internship at IBM and from there was offered a role internally at IBM. I did not have to apply for a multitude of jobs to land my first developer job.&lt;/p&gt;

&lt;p&gt;Prior to landing a job with LogMeIn (my second role) and subsequently at Spotify, I applied for as many jobs as I possibly could. I did not hear back from nine-out-of-ten companies that I applied for and I struggled to determine why. I had landed my first job without much effort, why was I having so much trouble landing a second job?&lt;/p&gt;

&lt;p&gt;The following tips have come out of my struggle to land a role and I hope they help any developer out there struggling to find their first or second role.&lt;/p&gt;

&lt;h1&gt;
  
  
  Have A Unique &amp;amp; Complete Resume
&lt;/h1&gt;

&lt;p&gt;Let’s be honest: landing a job interview is difficult in-and-of-itself. We always discuss how anxiety-inducing the technical interview process is but we don’t often discuss how difficult it is to even get an interview in the first place.&lt;/p&gt;

&lt;p&gt;When applying for your first role it can be intimidating to know which roles to apply for. Do you apply for a junior developer role? Do you apply for an entry-level developer role? Often the job requirements don’t perfectly align with what you deem your skillset to be, so you have two options: apply only to roles which you feel tightly align with your skillset or apply to all roles you think you generally fit into.&lt;/p&gt;

&lt;p&gt;Regardless of which option you choose one thing is certain: you must have a stand-out resume to get noticed. Recruiters see hundreds of resumes and only spend about &lt;a href="https://www.hrdive.com/news/eye-tracking-study-shows-recruiters-look-at-resumes-for-7-seconds/541582/"&gt;7.4 seconds on average&lt;/a&gt; reviewing resumes.&lt;/p&gt;

&lt;p&gt;A few tips for having a notable resume include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a fun resume design to stand out from the other candidates&lt;/li&gt;
&lt;li&gt;Prioritize the most important information at the top&lt;/li&gt;
&lt;li&gt;List your contact information at the top&lt;/li&gt;
&lt;li&gt;Don’t include a photo&lt;/li&gt;
&lt;li&gt;List what direct impact you had on the success of a project in your work experience bullet points&lt;/li&gt;
&lt;li&gt;Include quantitative data points to back up your work experience “so what” statements&lt;/li&gt;
&lt;li&gt;I won’t be diving into the nuances for creating a technical resume, but I did create a full course with &lt;a href="https://www.linkedin.com/learning/writing-a-tech-resume/color?autoplay=true"&gt;LinkedIn Learning&lt;/a&gt; that you can check out for more details!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s what my resume looks like! Remember, we’re in a creative industry so you have a bit of freedom when designing your resume!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjc0Bc6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AX9-gdmzJZb0s-kCq" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjc0Bc6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AX9-gdmzJZb0s-kCq" alt="Resume"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Demonstrate Your Willingness To Learn New Skills
&lt;/h1&gt;

&lt;p&gt;When companies are looking to hire an entry-level developer they want someone who is motivated to learn. As a developer, we’re expected to stay up-to-date and learn continuously, thus it’s imperative to highlight your willingness to learn during the interview process.&lt;/p&gt;

&lt;p&gt;If you have the time and ability to take a few online courses I highly recommend it. &lt;a href="http://freecodecamp.org/"&gt;FreeCodeCamp&lt;/a&gt;, &lt;a href="https://www.linkedin.com/learning/writing-a-tech-resume/color?autoplay=true"&gt;LinkedIn Learning&lt;/a&gt;, and &lt;a href="https://www.coursera.org/"&gt;Coursera&lt;/a&gt; are a few online learning platforms that offer certificates upon completing a course. You can add these to your resume and your LinkedIn profile.&lt;/p&gt;

&lt;p&gt;Additionally, if you’re asked in an interview if you have experience with X technology, you can state “I haven’t worked with X before but I would be eager to learn it!” This shows that you’re excited to grow as a developer and from the company’s perspective this translates into a candidate who will be a great investment.&lt;/p&gt;

&lt;h1&gt;
  
  
  Avoid The Ego Trap
&lt;/h1&gt;

&lt;p&gt;Straight out of college I had the biggest ego you can probably imagine (especially with an IBM internship behind me). “I deserve a great job and I won’t have any trouble getting an offer.”&lt;/p&gt;

&lt;p&gt;There is a massive difference between having confidence and having an ego. I had a massive ego and it hindered my growth as a developer (and a human) for several years. I’ve seen many new developers also fall into the ego trap. The longer you work in the tech industry the more you realize how much there is to learn.&lt;/p&gt;

&lt;p&gt;When hiring managers are making their decision they want to bring on a team member with humility. They want someone who is a team player and is not afraid to admit when they don’t know the answer to something.&lt;/p&gt;

&lt;p&gt;Some of you reading this may not have fallen into the ego trap but I certainly did. Take some time to reflect on how you present yourself to interviewers but also how you view your own skillset. If you’re riding the border between confidence and ego it might be time to do some self-reflection. It will positively impact your success at landing your first developer job.&lt;/p&gt;

&lt;h1&gt;
  
  
  Demonstrate Your Skills With Projects
&lt;/h1&gt;

&lt;p&gt;If you completed a college degree in software engineering or computer science you have an advantage over other applicants who did not complete a technical degree. If you completed a boot camp you likely have one or two projects that showcase your skills. But if you’re self-taught or are switching industries you likely don't have a large backlog of projects.&lt;/p&gt;

&lt;p&gt;While it’s becoming more commonplace to hire candidates without formal education, I would be remiss if I didn’t acknowledge the privilege that comes with a relevant college degree. If you don’t have relevant formal education, I highly encourage you to have two or three coding projects on GitHub that showcase your work. It will be time-consuming but having these projects will increase your chances of landing your first job.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn How To Solve Complex Problems
&lt;/h1&gt;

&lt;p&gt;Technical interviews are hard, it’s why I’m currently in the process of creating a full course on how to be successful in your technical interviews. A good technical interviewer will want to see how you approach complex problems, they won’t necessarily expect you to find the correct solution.&lt;/p&gt;

&lt;p&gt;I never learned how to effectively solve problems and it put me at a massive deficit during technical interviews. A few tips for demonstrating good problem-solving skills during technical interviews include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clarify the question (they’re left with a few missing pieces to see if you can deduce them)&lt;/li&gt;
&lt;li&gt;Write down the functional requirements (what are the things your solution absolutely must include)&lt;/li&gt;
&lt;li&gt;List possible solutions as well as benefits &amp;amp; drawbacks&lt;/li&gt;
&lt;li&gt;Speak your thoughts out loud&lt;/li&gt;
&lt;li&gt;Admit when you don’t know something&lt;/li&gt;
&lt;li&gt;Optimize your solution&lt;/li&gt;
&lt;li&gt;Test your solution&lt;/li&gt;
&lt;li&gt;Explain areas for improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m not an expert on how to solve problems so I encourage you to take time to learn how to solve complex problems. But by following the guidelines above you’ll improve your technical interviewing skills.&lt;/p&gt;




&lt;p&gt;Landing your first developer role is exhausting and frightening. Keep in mind that everyone in the industry has gone through the same process. The reality of it is that it may take time to land a job interview and it will likely take you several tries to land a job offer.&lt;/p&gt;

&lt;p&gt;I won’t tell you not to get discouraged: you will. Let yourself experience your emotions. Take a break from applying and interviewing and focus on your mental health, and come back to the process once you’re ready. You can do this.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Beginner's Guide To Creating &amp; Growing Your Blog!</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Fri, 17 Jul 2020 09:43:14 +0000</pubDate>
      <link>https://forem.com/emmabostian/the-beginner-s-guide-to-creating-growing-your-blog-1lik</link>
      <guid>https://forem.com/emmabostian/the-beginner-s-guide-to-creating-growing-your-blog-1lik</guid>
      <description>&lt;p&gt;Over the past month I've been working hard to write and publish The Beginner's Guide To Creating &amp;amp; Growing Your Blog and the wait is finally over!&lt;/p&gt;

&lt;p&gt;In June I ran pre-sales of this e-book as a fundraiser for Black Lives Matter. I donated several thousand (cumulative) Resilient Coders, Black Women Speak, and Until We Are All Free. A huge thank you to everyone who pre-ordered the book and supported the fundraiser.&lt;/p&gt;

&lt;p&gt;I am happy to say that the book is available again for purchase! There are two versions of the book: basic and complete.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://payhip.com/b/aFnA"&gt;basic version&lt;/a&gt; is priced at $19 and includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 activities&lt;/li&gt;
&lt;li&gt;276 pages&lt;/li&gt;
&lt;li&gt;Lifetime updates to the book&lt;/li&gt;
&lt;li&gt;EPUB, MOBI, and PDF formats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://payhip.com/b/FX8C"&gt;complete version&lt;/a&gt; is priced at $30 and includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 activities&lt;/li&gt;
&lt;li&gt;306 pages&lt;/li&gt;
&lt;li&gt;30 pages of financial breakdown &amp;amp; analysis&lt;/li&gt;
&lt;li&gt;Lifetime updates to the book&lt;/li&gt;
&lt;li&gt;EPUB, MOBI, and PDF formats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kPfHzTjE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d2ocklqn0koz6b.cloudfront.net/eyJidWNrZXQiOiJwZTU2ZCIsImtleSI6Im9fMWVkZTI0aDltMWRhbDE3bjFwcGQxNnYzMWFjZm0ucG5nIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjo2NzAsImZpdCI6ImNvbnRhaW4ifX19" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kPfHzTjE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d2ocklqn0koz6b.cloudfront.net/eyJidWNrZXQiOiJwZTU2ZCIsImtleSI6Im9fMWVkZTI0aDltMWRhbDE3bjFwcGQxNnYzMWFjZm0ucG5nIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjo2NzAsImZpdCI6ImNvbnRhaW4ifX19" alt="TOC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read it? Let me know what you think!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why We're Not Publishing A New Episode This Week</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Mon, 01 Jun 2020 06:24:12 +0000</pubDate>
      <link>https://forem.com/ladybug/why-we-re-not-publishing-a-new-episode-this-week-272e</link>
      <guid>https://forem.com/ladybug/why-we-re-not-publishing-a-new-episode-this-week-272e</guid>
      <description>&lt;p&gt;Dear Ladybug Podcast friends,&lt;/p&gt;

&lt;p&gt;We’re writing today to inform you that we won’t be publishing an episode this week. We strongly believe that the death of George Floyd and the protests happening across the country are of utmost importance. We are taking this week to remember not only Mr. Floyd but all Black people who have been unjustly killed.&lt;/p&gt;

&lt;p&gt;We have donated our sponsorship profits from the next episode in support of &lt;a href="https://www.joincampaignzero.org/#vision" rel="noopener noreferrer"&gt;Campaign Zero&lt;/a&gt;. Donating is just one way we can help the Black community and we encourage all of our listeners, if you’re financially able, to do the same.&lt;/p&gt;

&lt;p&gt;We’re taking this week to educate ourselves about anti-racism and hope you will too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nmaahc.si.edu/learn/talking-about-race/topics/being-antiracist" rel="noopener noreferrer"&gt;Being Antiracist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wmagazine.com/story/george-floyd-protests-minnesota/" rel="noopener noreferrer"&gt;Justice for George Floyd: What to Read and What You Can Do&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/1BRlF2_zhNe86SGgHa6-VlBO-QgirITwCTugSfKie5Fs/mobilebasic" rel="noopener noreferrer"&gt;Anti-Racism Resources For White People&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.plutobooks.com/9780861043798/aint-i-a-woman/" rel="noopener noreferrer"&gt;Ain’t I a Woman: Black Women and Feminism&lt;/a&gt; by bell hooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.penguinrandomhouse.com/books/3924/i-know-why-the-caged-bird-sings-by-maya-angelou/" rel="noopener noreferrer"&gt;I Know Why the Caged Bird Sings&lt;/a&gt; by Maya Angelou&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.sealpress.com/titles/ijeoma-oluo/so-you-want-to-talk-about-race/9781580056779/" rel="noopener noreferrer"&gt;So You Want To Talk About Race&lt;/a&gt; by Ijeomo Oluo&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibramxkendi.com/how-to-be-an-antiracist-1" rel="noopener noreferrer"&gt;How To Be An Antiracist&lt;/a&gt; by Ibram X. Kendi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Racism is not a “United States” issue: it’s a world issue. We all have a responsibility to stand against racism and support the Black community. Our Black friends and colleagues are hurting. Are you listening?&lt;/p&gt;

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

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



 &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1266246773812588545-778" src="https://platform.twitter.com/embed/Tweet.html?id=1266246773812588545"&gt;
&lt;/iframe&gt;

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



 &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1266893273039159296-728" src="https://platform.twitter.com/embed/Tweet.html?id=1266893273039159296"&gt;
&lt;/iframe&gt;

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



 &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1266808675169009665-640" src="https://platform.twitter.com/embed/Tweet.html?id=1266808675169009665"&gt;
&lt;/iframe&gt;

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



 &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1266421245140221952-855" src="https://platform.twitter.com/embed/Tweet.html?id=1266421245140221952"&gt;
&lt;/iframe&gt;

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



 &lt;/p&gt;

</description>
    </item>
    <item>
      <title>What's the kindest thing someone's ever done for you during your career?</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Tue, 21 Apr 2020 16:16:03 +0000</pubDate>
      <link>https://forem.com/emmabostian/what-s-the-kindest-thing-someone-s-ever-done-for-you-during-your-career-3k13</link>
      <guid>https://forem.com/emmabostian/what-s-the-kindest-thing-someone-s-ever-done-for-you-during-your-career-3k13</guid>
      <description>&lt;p&gt;We need some love during these difficult times, so let's start a wholesome thread.&lt;/p&gt;

&lt;p&gt;What is the kindest thing someone's ever done for you during your career?&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Passed The Google Technical Interviews; You Can Too.</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Thu, 16 Apr 2020 10:26:14 +0000</pubDate>
      <link>https://forem.com/emmabostian/i-passed-the-google-technical-interviews-you-can-too-4i6m</link>
      <guid>https://forem.com/emmabostian/i-passed-the-google-technical-interviews-you-can-too-4i6m</guid>
      <description>&lt;p&gt;All of my illustrations come from &lt;a href="//undraw.co/illustrations"&gt;UnDraw&lt;/a&gt;. Thank you for your work!&lt;/p&gt;

&lt;p&gt;I pulled myself out of the Google hiring process after passing the technical interview process. I know what you're thinking: "Are you crazy?! Who pulls out of the Google interview process?"&lt;/p&gt;

&lt;p&gt;This blog post will discuss my history with interviewing at Google as well as tips for passing your technical interview process (at any company).&lt;br&gt;
Google is notorious for having difficult technical interviews, and is a highly coveted company to work for, which is why I chose to highlight it in this blog post. &lt;/p&gt;

&lt;p&gt;That being said, there are many amazing companies to work for (some which aren't as well-known as this tech giant) and THAT IS OKAY. You don't need to work for a well-known company to be a successful developer.&lt;/p&gt;

&lt;p&gt;Additionally working for a big company has drawbacks as well as benefits (which I'll cover in this post). Determine what you want out of a job and look for companies that emulate those core values and working environment.&lt;/p&gt;

&lt;p&gt;I can only speak to the JavaScript/front-end interview process at Google (or any other company) and my interviewing experience might not mirror your interviewing experiences so please take my advice and experience with a grain of salt.&lt;/p&gt;

&lt;p&gt;I won't divulge the interview questions asked during my Google interviews (or any other technical interviews) as I believe it's unfair to company. As a candidate you want to be hired for your problem solving skills and that's why I chose to highlight the skills you should study versus the interview questions I was asked.&lt;/p&gt;

&lt;p&gt;Don't memorize solutions, learn the problem solving skills needed to build a performant solution! You can refer to the interviewing tips section for more insight on having a successful technical interview.&lt;/p&gt;

&lt;p&gt;Lastly I just want to say thank you to the entire Google team as well as any current or former employees I talked with. My recruiters were phenomenal and every interviewer I met was wonderful to talk to. They never made me feel unintelligent and made me feel comfortable. The questions I were asked were fair and assessed skills I would encounter in my day job. And for that I say thank you.&lt;/p&gt;

&lt;h1&gt;
  
  
  History
&lt;/h1&gt;

&lt;p&gt;This was my third time interviewing with Google (each time I got a bit farther). Here's the overview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Round 1: 2016
&lt;/h2&gt;

&lt;p&gt;The first time I interviewed was back in 2016 when I was still living in Austin, Texas. I was DULY unprepared for the technical interviews but managed to make it through the recruiter phone screen and had two technical phone challenges before I was rejected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Round 2: 2019
&lt;/h2&gt;

&lt;p&gt;The second time I interviewed with Google was at the tail end of 2019. I thought I was interviewing for a UX Engineering role on the Material Design team, however I ended up going through the full Software Engineering interview process and was a bit unprepared.&lt;/p&gt;

&lt;p&gt;I passed the phone coding challenge and moved on to the on-site interview on the Munich campus. I had two front-end technical interviews, two data structures and algorithms interviews, and one interview centered around development process, communication and cultural fit.&lt;/p&gt;

&lt;p&gt;One of my front-end interviews was conducted on a Chromebook over Google Hangouts and unfortunately we had technical issues (i.e. the Chromebook wouldn't start up, Hangouts wasn't screen sharing) and spent half of the interview troubleshooting. I was also told that my JavaScript skills could use some improvement.&lt;/p&gt;

&lt;p&gt;As a result the interview was thrown out and the team wanted me to re-interview in a month or two back in Munich. At that time life was a bit chaotic and I declined to re-interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Round 3: 2020
&lt;/h2&gt;

&lt;p&gt;Early in 2020 I re-interviewed with Google for a UX Engineering role and because I had just interviewed with them a few months prior the interview process was expedited for me (I did not have to re-do my phone coding challenge or on-site data structures and algorithms or process/cultural fit interviews).&lt;/p&gt;

&lt;p&gt;I did a take home UX/engineering project where I designed user flows and information architecture, created high-fidelity mock-ups using Sketch, and built an app. I then documented my process and tooling selections in a succinct document.&lt;/p&gt;

&lt;p&gt;Once past the take-home challenge I had three "on-site" interviews which were conducted over Google Hangouts (due to COVID-19). I had two front-end technical (coding) interviews and one UX interview discussing my take home project and enhancements that could have been made from a UX perspective.&lt;br&gt;
After the "on-site" interviews I was informed by my recruiter (two days later) that I had passed the interviews and would move on to the hiring committee and team matching phase.&lt;/p&gt;

&lt;p&gt;I met with a potential hiring manager to discuss the role at hand. Ironically I had met the manager during the second round of interviewing in Munich so it was nice to meet him again.&lt;/p&gt;

&lt;p&gt;After meeting with the manager I waited for several weeks, and in the mean time continued interviewing with other companies. Unfortunately due to COVID-19 the internal hiring process was a bit chaotic and I ultimately ended up accepting an offer at another company.&lt;/p&gt;

&lt;p&gt;I'll never know if I would have received an offer from Google, however I'm pretty damn proud of myself for passing the technical interviews. As someone who was told I wasn't good enough and felt I wasn't good enough to make it in this industry, I was proud I had even made it to the on-site interview round.&lt;/p&gt;

&lt;h1&gt;
  
  
  What It Takes To Get Hired
&lt;/h1&gt;

&lt;p&gt;To be hired at Google you have to exhibit the following characteristics.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be a kind person&lt;/li&gt;
&lt;li&gt;Have a willingness to learn&lt;/li&gt;
&lt;li&gt;Have good communication skills&lt;/li&gt;
&lt;li&gt;Be a good problem solver&lt;/li&gt;
&lt;li&gt;Exhibit great teamwork&lt;/li&gt;
&lt;li&gt;Have empathy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on my experience they're not looking for geniuses, but rather kind-hearted, hard-working people with great communication and teamwork skills, and this holds true for many companies.&lt;/p&gt;

&lt;h1&gt;
  
  
  General Interview Process
&lt;/h1&gt;

&lt;p&gt;The general Google interview process has five to six phases:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2A9WO8DjQyIsQw_HCT0P82rA.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%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2A9WO8DjQyIsQw_HCT0P82rA.png" alt="process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The general Google interview process has 5–6 phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recruiter phone interview&lt;/li&gt;
&lt;li&gt;Technical phone interview / coding challenge&lt;/li&gt;
&lt;li&gt;Take home assessment*&lt;/li&gt;
&lt;li&gt;On-site interview&lt;/li&gt;
&lt;li&gt;Team matching phase&lt;/li&gt;
&lt;li&gt;Hiring committee&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;* This step was only necessary for the UX Engineering role and not the Software Engineering role.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's dig a little deeper into each phase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recruiter Phone Interview
&lt;/h2&gt;

&lt;p&gt;During the recruiter phone interview the recruiter will tell you a bit more about the role and the interview process. Don't take this interview lightly, however, as each step in the interview process is important and counts towards your overall performance.&lt;/p&gt;

&lt;p&gt;Some tips for the recruiter phone interview include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read up on the role and the company ahead of time&lt;/li&gt;
&lt;li&gt;Be on time&lt;/li&gt;
&lt;li&gt;Have two or three questions prepared to ask the recruiter&lt;/li&gt;
&lt;li&gt;Thank them for their time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your recruiter will fight hard to get you an offer, so treat them kindly!&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Phone Interview
&lt;/h2&gt;

&lt;p&gt;If your recruiter phone interview goes well you'll move on to the technical phone interview. During this call you'll pair up with a Googler who will give you a coding challenge question.&lt;/p&gt;

&lt;p&gt;I had one question to answer and it primarily tested the following skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM manipulation (accessing DOM nodes, performing some task, dynamically generating new DOM nodes)&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I coded my solution in a Google document. Here is the approach I took to problem solve.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2Ah7VUWdJzX8AojwmAwmkP-A.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%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2Ah7VUWdJzX8AojwmAwmkP-A.png" alt="Coding challenge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask clarifying questions: The questions are left with a few missing pieces because the recruiter wants to see how you think.&lt;/li&gt;
&lt;li&gt;Write pseudo-code: Writing pseudo-code allows you to get your thoughts in order before you jump into the code.&lt;/li&gt;
&lt;li&gt;Code a brute force solution: You don't have to code the most efficient solution first. Starting with a brute force solution then optimizing shows your attention to performance.&lt;/li&gt;
&lt;li&gt;Optimize your solution: Once you have a brute force solution, where can you optimize it? Can you refactor a nested for-loop into two top-level loops?&lt;/li&gt;
&lt;li&gt;Test for edge cases: Once your solution is working and optimized, create some test cases. These will allow you to see if you missed any corner cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Coding Project
&lt;/h2&gt;

&lt;p&gt;If your technical phone interview goes well you may be asked to complete a take home coding project. I was not asked for a project during the Software Engineering interviews, however I was asked to complete one for my UX Engineering interview.&lt;/p&gt;

&lt;p&gt;I thoroughly enjoyed completing the coding project for a few reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I was able to pick from two projects which showcased different skills&lt;/li&gt;
&lt;li&gt;I had a week or so to complete the project (although I was informed it should only take a few hours) which reduced the "on-the-spot" pressure of a coding interview&lt;/li&gt;
&lt;li&gt;I was able to showcase some of my strongest skills like thorough documentation, user flows, and information architecture&lt;/li&gt;
&lt;li&gt;I was able to pick my tech stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should clarify project requirements with your recruiter before diving in. For example if you want to use a JavaScript framework you should ask if this is allowed.&lt;br&gt;
Some tips for your coding projects include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try not to rely too heavily on third-party libraries. I chose to use Material UI, Google's design system, for the UI work because it showcased my knowledge of design systems and kept the UI consistent, however using a UI framework can have performance implications.&lt;/li&gt;
&lt;li&gt;Be honest about the areas you would like to improve upon. One part I always include when submitting a take-home assessment is "areas for improvement." If you had an extra few hours or weeks, what would you have done differently?&lt;/li&gt;
&lt;li&gt;Run you application through an accessibility tester. I ran my app through Google Lighthouse to test for accessibility.&lt;/li&gt;
&lt;li&gt;Don't pour your heart and soul into the project. If the recruiter says to spend 2–3 hours on the project, don't spend a week working on it. You'll burn out and feel taken advantage of if they reject you after this step (I know from personal experience.)&lt;/li&gt;
&lt;li&gt;Clean up your code. Be sure to remove comments and format your code appropriately.&lt;/li&gt;
&lt;li&gt;Think about project architecture. Your file structure should be clear and organized.&lt;/li&gt;
&lt;li&gt;Include setup instructions. If the person reviewing your code doesn't know how to run your application you probably won't move on to the next round.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  On-Site Interviews
&lt;/h2&gt;

&lt;p&gt;If you've made it to the on-site interviews, CONGRATULATIONS! This is a huge step and you should be proud of yourself!&lt;/p&gt;

&lt;p&gt;During my second interview with Google I was able to visit the Munich campus and get a tour of the office (it was beautiful!), however during my latest interview process all of the on-site interviews were conducted over Google Hangouts due to COVID-19.&lt;/p&gt;

&lt;p&gt;The on-site interviews consist of five rounds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two front-end interviews (coding)&lt;/li&gt;
&lt;li&gt;Two data structures and algorithms interviews (coding)&lt;/li&gt;
&lt;li&gt;One process/teamwork/culture fit interview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The front-end interviews will focus on front-end technologies like HTML, CSS, and JavaScript but may touch other areas like performance and asynchronous JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  Front-End Interviews
&lt;/h3&gt;

&lt;p&gt;Here are the skills I recommend studying for the front-end interviews:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2A-YiJyBppziPcv-YD8eXhhw.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%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2A-YiJyBppziPcv-YD8eXhhw.png" alt="Frontend"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For an accessible gist please follow &lt;a href="https://gist.github.com/emmabostian/aea646464456c2fb4ad66f1051faba83" rel="noopener noreferrer"&gt;this link&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Structures &amp;amp; Algorithms Interviews
&lt;/h3&gt;

&lt;p&gt;Here are the skills I recommend studying for the data structures and algorithms interviews:&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%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2AuPBwPQAoszz7ZAh91v1V5A.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%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2AuPBwPQAoszz7ZAh91v1V5A.png" alt="Data structures"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For an accessible version please follow &lt;a href="https://gist.github.com/emmabostian/c996c68458dd5eb770529b52dd7bfb00" rel="noopener noreferrer"&gt;this link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Teamwork, Process &amp;amp; Culture Fit Interview
&lt;/h3&gt;

&lt;p&gt;The teamwork/process/culture fit interview will be an amalgamation of topics ranging from Agile methodology or workflow, teamwork and collaboration, and conflict resolution.&lt;/p&gt;

&lt;p&gt;To ensure success in this interview here are a few tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have two or three projects you can discuss.&lt;/li&gt;
&lt;li&gt;Have 1–2 team conflicts you were able to resolve.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Team Matching Phase
&lt;/h3&gt;

&lt;p&gt;If you complete your on-site interviews, you've passed the hard part! Some candidates move directly to the hiring committee but some candidates go through the team matching phase.&lt;/p&gt;

&lt;p&gt;In this phase you'll meet with prospective managers and discuss the team you'd be joining and the type of work you would do.&lt;/p&gt;

&lt;p&gt;If a team wants you, they'll tell your recruiter and it will be added to your portfolio which will then be submitted to the hiring committee.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hiring Committee
&lt;/h3&gt;

&lt;p&gt;The hiring committee is the last phase of the interview process. From my understanding the committee is comprised of several Googlers who review a candidate's performance throughout the entirety of the interview process.&lt;/p&gt;

&lt;p&gt;In the day or two leading up to the hiring committee meeting, the reviewers read the candidate's packet and makes a recommendation on whether or not to hire the candidate.&lt;br&gt;
At the meeting the reviewers discuss their feedback and if all members agree an offer will be extended.&lt;/p&gt;

&lt;p&gt;I never received feedback about the hiring committee feedback, as I pulled out of the process before receiving it, so unfortunately I can't speak to the statistics of receiving an offer after going through the hiring committee.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning Tips
&lt;/h1&gt;

&lt;p&gt;When interviewing here are a few general tips to ensure you perform to the best of your abilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do a little each day
&lt;/h2&gt;

&lt;p&gt;Although it might not feel like you're making huge strides, small bits of information compound to achieve amazing results. I love the book Atomic Habits by James Clear which dives into this idea more in-depth.&lt;/p&gt;

&lt;p&gt;When you do a more focused amount of learning each day, you have a lower risk of burning out, and gives your brain more time to process the information you've learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mix learning with doing
&lt;/h2&gt;

&lt;p&gt;You can learn all the skills in the world but if you don't apply them to various projects you'll have a harder time using them in an interview. I recommend learning a skill or two and then finding an example application to utilize them in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn to read other peoples' solutions
&lt;/h2&gt;

&lt;p&gt;Your solution might work and might be optimized, but it's always a great idea to read other peoples' solutions and understand how they think. You might find a more performant way to complete a task, but in general learning to read code is a wonderful skill, and a necessary one, to have.&lt;/p&gt;

&lt;h1&gt;
  
  
  Interview Tips
&lt;/h1&gt;

&lt;p&gt;When the on-site interview finally arrives, here a a few tips to keep you grounded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drink water
&lt;/h2&gt;

&lt;p&gt;Having something to drink will provide you with a moment to catch your breath and relax. Your interviewer should ask if you'd like one but if they don't you're welcome to ask.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask clarifying questions
&lt;/h2&gt;

&lt;p&gt;White-boarding questions are purposefully left with a few holes because the interviewer wants to see your ability to problem solve. If something seems unclear, it probably is! Write down the things you know and deduce what you don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brute-force then optimize if stuck
&lt;/h2&gt;

&lt;p&gt;If you have absolutely no idea where to begin, start with a less-performant solution; you can optimize later.&lt;/p&gt;

&lt;p&gt;For example if you're asked to search for a number in a sorted array and return true if it exists, you can always start with a for-loop that iterates through each index and returns true if the number is found. In the worst-case scenario this leaves you with O(n), where n is the length of the array, because we're checking every single element in the array.&lt;/p&gt;

&lt;p&gt;Further along in the interview you might realize "oh the array is sorted! I can use binary search to find the element!" Binary search is a wonderful divide and conquer algorithm that repeatedly searches for the target element by reducing the size of the array each time. This might end up being a more performant solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speak your thought process
&lt;/h2&gt;

&lt;p&gt;The point of the interview is to see how you think, so you must speak your thoughts out loud! Your interviewer can't read your mind.&lt;/p&gt;

&lt;p&gt;If you're stuck between two solutions, tell your interviewer and explain your reservations about both. They might be able to put you on the right track.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test your solution
&lt;/h2&gt;

&lt;p&gt;Once you have a solution and you've optimized it, it's time to test. Many candidates forget about testing but this is a vital part of a coding challenge. Your solution might work for 75% of test cases but forget to account for the other 25% of edge cases.&lt;/p&gt;

&lt;p&gt;Testing your solution is a must in an interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't rely on tooling
&lt;/h2&gt;

&lt;p&gt;Google typically uses word documents or a plain text editor for their coding challenges so don't rely on linters or Prettier to format your code. Learn to write code in an environment without tooling.&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Google isn't the "be-all-end-all" company to work for. You might not even enjoy working at a large company!&lt;/p&gt;

&lt;p&gt;The most important thing to remember when interviewing is that this is a two-way interview. You're interviewing the company as much as they're interviewing you.&lt;/p&gt;

&lt;p&gt;The skills you have are valuable and even if you get rejected it doesn't mean you're not good enough.&lt;/p&gt;

&lt;p&gt;We all get more rejections than offers so hang in there.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Five Tips For Coding Interviews</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Thu, 27 Feb 2020 07:47:08 +0000</pubDate>
      <link>https://forem.com/ladybug/five-tips-for-coding-interviews-2e11</link>
      <guid>https://forem.com/ladybug/five-tips-for-coding-interviews-2e11</guid>
      <description>&lt;p&gt;Technical interviews are scary; the thought of having to write code on a whiteboard is anxiety-inducing.&lt;/p&gt;

&lt;p&gt;Throughout our research and years in the industry we've put together some tips for helping you during your coding challenges.&lt;/p&gt;

&lt;p&gt;Whether you're frontend or backend, knowing these tips, and practicing them before your interview, will ensure you put your best foot forward and hopefully land a job offer!&lt;/p&gt;

&lt;p&gt;Do you have any additional tips? Leave them in the comments 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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0zsrt0yi7969z4oja28e.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0zsrt0yi7969z4oja28e.jpg" alt="Speak your mind"&gt;&lt;/a&gt;&lt;br&gt;
Communication is key in any interview but in technical interviews it's imperative you explain your thought process.&lt;/p&gt;

&lt;p&gt;Your interviewer wants you to succeed, but in order to help you, and potentially give you hints, they need to know your thought process.&lt;/p&gt;

&lt;p&gt;If you need a minute to think, tell your interviewer! There's no shame in saying "I just need a second to think."&lt;/p&gt;

&lt;p&gt;But if you're internally reasoning between two solutions, talk it out.&lt;/p&gt;

&lt;p&gt;For example, if you're trying to decide the best method of sorting an array of integers from lowest to highest.&lt;/p&gt;

&lt;p&gt;"I have two ideas in my mind. The first requires brute forcing the solution where we would compare every element in the index to its neighbor and if the integer on the right is lower in value than the integer on the left, swap them. &lt;/p&gt;

&lt;p&gt;But this isn't optimal as it would require O(n^2) checks to ensure everything is sorted. I know merge sort is a more optimized sorting algorithm with a worst-case runtime of O(n log n), however I'm a bit unsure how to code that."&lt;/p&gt;

&lt;p&gt;Stating your thoughts out loud will allow the interviewer to guide you and is often a chance to showcase your knowledge about data structures and algorithms.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa0is4ijqk23pdewg6usc.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa0is4ijqk23pdewg6usc.jpg" alt="Ask clarifying quesitons"&gt;&lt;/a&gt;&lt;br&gt;
In almost every case the question you receive for a coding challenge will have a few holes in it. The interviewer won't give you all of the information up front because they want to see you deductive reasoning and problem solving skills.&lt;/p&gt;

&lt;p&gt;Thus it's important to think through all of the key information you'll need to solve the problem, and ask if something is unclear.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa7ue1xcocpzvi275dqir.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa7ue1xcocpzvi275dqir.jpg" alt="Brute force then optimize"&gt;&lt;/a&gt;&lt;br&gt;
If you receive a question and you have no idea where to start, don't panic; we've all had this moment!&lt;/p&gt;

&lt;p&gt;First, think about the information you have. What pieces of information do you need to solve this problem?&lt;/p&gt;

&lt;p&gt;Second, what are you missing? In the previous tip we mentioned asking clarifying questions. This is great practice if you're stuck or need a moment.&lt;/p&gt;

&lt;p&gt;Next, at the core of the problem, how would you brute-force this answer? In tip one we had the example problem of sorting an array of integers from lowest to highest.&lt;/p&gt;

&lt;p&gt;The brute force method would be bubble sort where we're comparing every integer against every other integer and swapping if needed. And even though this isn't an optimized solution, getting the brute-force solution up on a whiteboard will allow you to refactor to something more optimal.&lt;/p&gt;

&lt;p&gt;Is it possible to remove one of the nested for-loops in our sorting algorithm? Perhaps we can refactor to use a divide and conquer algorithm like merge sort!&lt;/p&gt;

&lt;p&gt;A brute-force solution is better than no solution.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc7b8s7zjzrxa2jjbhl9.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc7b8s7zjzrxa2jjbhl9.jpg" alt="Don't BS your answer"&gt;&lt;/a&gt;&lt;br&gt;
There will inevitably come a time when you simply don't know the answer to a question.&lt;/p&gt;

&lt;p&gt;For example if you're asked "what's the difference between == and ===?" and you simply have no idea, just tell the interviewer!&lt;/p&gt;

&lt;p&gt;You might say: "I'm not positive but if I had to make an educated guess I would say..."&lt;/p&gt;

&lt;p&gt;This indicates that you're self-aware and honest but you're still willing to take a guess.&lt;/p&gt;

&lt;p&gt;If you simply BS the answer and pretend you know what you're talking about, this indicates that you're not a truthful person and you likely won't receive a job offer.&lt;/p&gt;

&lt;p&gt;Additionally if you ever receive a coding challenge question that you've seen the solution for or have already gotten in a past interview, be honest about it.&lt;/p&gt;

&lt;p&gt;Your interviewer will be able to tell if you're regurgitating a memorized answer so it's best to be transparent. Plus your interviewer should appreciate your honesty.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhgqxo29m632kttrnz7n4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhgqxo29m632kttrnz7n4.jpg" alt="Test your solution"&gt;&lt;/a&gt;&lt;br&gt;
Once you have a solution down, take ten minutes to test it. What are the obvious use cases? What are the corner cases? You'll likely find holes in your solution and can go back and refine them.&lt;/p&gt;

&lt;p&gt;If you spit out an answer without testing it, you probably won't receive a job offer.&lt;/p&gt;

&lt;p&gt;For example if you're asked to write an algorithm which determines whether there is a loop (or a broken edge) in a binary tree, think about the possible use cases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does your algorithm work if there are no nodes in the tree?&lt;/li&gt;
&lt;li&gt;How about if there is only a root node&lt;/li&gt;
&lt;li&gt;What if there is no broken edge/loop?&lt;/li&gt;
&lt;li&gt;What if the broken edge is on the last node in the tree (bottom right)?&lt;/li&gt;
&lt;li&gt;What if it's in the first level?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions will allow you to refine your solution. It might help you determine whether you want to use depth-first search over breadth-first search.&lt;/p&gt;

&lt;p&gt;Testing is important! So don't forget it!&lt;/p&gt;



&lt;p&gt;Keeping these five tips in mind will help calm your anxiety about coding interviews. Focus on solving the problem at hand while communicating clearly. You'll receive a job offer in no time!&lt;/p&gt;

&lt;p&gt;You can check out our full episode for more tips!&lt;br&gt;
&lt;iframe src="https://open.spotify.com/embed/episode/5qdH3BvSM4s8ZJM4cynv9U" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DISCUSS: Technical Interview Horror Stories</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Mon, 24 Feb 2020 13:43:45 +0000</pubDate>
      <link>https://forem.com/ladybug/discuss-technical-interview-horror-stories-3k47</link>
      <guid>https://forem.com/ladybug/discuss-technical-interview-horror-stories-3k47</guid>
      <description>&lt;p&gt;In this week's &lt;a href="https://www.ladybug.dev/frontend-interviews"&gt;Ladybug Podcast episode&lt;/a&gt; we discussed the frontend technical interview process.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/5qdH3BvSM4s8ZJM4cynv9U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Technical interviews are terrifying, and I'm sure we've all had bad experiences. Hopefully talking about why our experiences were not so great can help educate the tech ecosystem about how to give a great technical interview!&lt;/p&gt;

&lt;p&gt;I'll go first.&lt;/p&gt;

&lt;p&gt;Years ago, probably in 2016, I was interviewing with an overseas company. It was a startup and it was a product I genuinely liked. I had a great talk with the recruiter but decided to pull out of the interview process as I was unprepared to move abroad at the time.&lt;/p&gt;

&lt;p&gt;I truly had a great experience with the recruiter though so I wanted to stay in touch.&lt;/p&gt;

&lt;p&gt;Fast forward two years later, I re-connected with the same interviewer except this time was... not so great.&lt;/p&gt;

&lt;p&gt;He called me at 6 am my time (due to time zone differences), and proceeded to badger me with technical interview questions like "whats the difference between const and let?", which I explained correctly but he made me feel like I gave the &lt;em&gt;wrong&lt;/em&gt; answer. &lt;/p&gt;

&lt;p&gt;I was duly unprepared for the technical interview questions, and explicitly stated as much, yet he kept throwing them at me.&lt;/p&gt;

&lt;p&gt;Not only that, but the recruiter seemed like a different person. &lt;/p&gt;

&lt;p&gt;The first time we interviewed he was SUPER down-to-earth and made me feel special. This time around he started the conversation with "have we met before" which threw me because A) we spent a lot of time communicating and you made me feel like you remembered me through email communication and B) you clearly didn't take two minutes to check if we had previously interviewed.&lt;/p&gt;

&lt;p&gt;He even was answering Slack messages during our interview because "my teammate is having Zoom issues and I'm the only one who knows how to fix them."&lt;/p&gt;

&lt;p&gt;Horribly unprofessional.&lt;/p&gt;

&lt;p&gt;I left the interview and told him "thanks but no thanks."&lt;/p&gt;

&lt;p&gt;He just reached back out to me (a year later) and needless to say I &lt;em&gt;won't&lt;/em&gt; be following up with him.&lt;/p&gt;

&lt;p&gt;What's your technical interview horror story? Leave it below!&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Six Data Structures To Help You Ace Your Technical Interview</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Fri, 07 Feb 2020 19:17:10 +0000</pubDate>
      <link>https://forem.com/ladybug/six-data-structures-you-should-know-in-2020-3h5a</link>
      <guid>https://forem.com/ladybug/six-data-structures-you-should-know-in-2020-3h5a</guid>
      <description>&lt;p&gt;It's a new year which means many of us are searching for our next role. It's no secret technical interviews are hard, so we've compiled (hehe) a list of six data structures you should be comfortable with in 2020.&lt;/p&gt;

&lt;p&gt;If you're going through a technical interview, these are must-knows.&lt;/p&gt;

&lt;p&gt;We chatted about data structures &amp;amp; algorithms on this week's &lt;a href="https://www.ladybug.dev/data-structures-and-algorithms" rel="noopener noreferrer"&gt;Ladybug Podcast&lt;/a&gt; so I recommend checking that out if you haven't already! We'll cover a lot more than the six data structures here!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/36bNHccJuFkGgz78UNdSsi" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Since these data structures have been written about until the cows come home, here are some of our favorite resources for learning them!&lt;/p&gt;

&lt;p&gt;Good luck, devs!&lt;/p&gt;

&lt;h1&gt;
  
  
  🐞 Arrays
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F70hr5mwpa9ky6hpgy0ee.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F70hr5mwpa9ky6hpgy0ee.png" alt="Array"&gt;&lt;/a&gt;&lt;br&gt;
Arrays are the bread and butter of data structures. They are list-like data structures which allow you to keep track of elements. These elements can be reference types, like objects or other arrays, or primitives, like numbers or strings.&lt;/p&gt;

&lt;p&gt;The length of an array in JavaScript is not fixed, meaning you can add values to the array easily.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" rel="noopener noreferrer"&gt;Full array methods&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/https-medium-com-gladchinda-hacks-for-creating-javascript-arrays-a1b80cb372b/" rel="noopener noreferrer"&gt;Free Code Camp arrays&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🐞 Linked Lists
&lt;/h1&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--2IiQrKI4--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2cq9rn3vn1z1zrvgvlnq.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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--2IiQrKI4--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2cq9rn3vn1z1zrvgvlnq.png" alt="Linked list"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linked lists are a data structure which isn't built-in to JavaScript, but can be created out of other JavaScript data structures.&lt;/p&gt;

&lt;p&gt;A linked list represents a series of nodes where each node points to the next node in the list.&lt;/p&gt;

&lt;p&gt;There are also doubly-linked lists where each node also points to the previous node in the list.&lt;/p&gt;

&lt;p&gt;This structure uses the LIFO, or last-in-first-out, method where nodes are added to and deleted from the same end.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/aspittel/thank-u-next-an-introduction-to-linked-lists-4pph"&gt;Ali's 'Thank U Next' blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/emmabostian/creating-linked-lists-with-javascript-391e"&gt;Emma's linked list blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://egghead.io/lessons/javascript-linked-list-data-structure-in-javascript" rel="noopener noreferrer"&gt;Kyle Shevlin's Egghead.io course on data structures with JS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🐞 Stacks
&lt;/h1&gt;

&lt;p&gt;A stack is not a built-in JavaScript data structure but can be built using arrays.&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--nsKF_YXk--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AO91_4SoZ3V2uouYqeEYQlQ.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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--nsKF_YXk--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AO91_4SoZ3V2uouYqeEYQlQ.png" alt="Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A stack is based on the LIFO, or last-in-first-out, concept. A stack is like a pile (or stack) of books where you have to take the top book off before you can get to the bottom book (unless you're a savage).&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--Gy5Vb00x--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AalBuMMj2DMwZm750uzRs_Q.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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--Gy5Vb00x--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AalBuMMj2DMwZm750uzRs_Q.png" alt="Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stacks allow for constant time adding and removing of an item but unfortunately they don't provide constant-time access to the nth item in the stack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/emmabostian/stacks-vs-queues-in-javascript-4d1o"&gt;Emma's 'Stacks vs. Queues in JavaScript' blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/emmabostian/creating-3-stacks-with-1-array-in-javascript-514b"&gt;Emma's 'Creating Three Stacks With One Array' blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/implementation-stack-javascript/" rel="noopener noreferrer"&gt;Stacks in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🐞 Queues
&lt;/h1&gt;

&lt;p&gt;A queue is similar to a stack, but uses the FIFO, or first-in-first-out, method. You can think of a queue like a line of people waiting to buy a movie ticket. The person who has been in line the longest (first) is the first to be serviced.&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--_pp5Lukw--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AA143SzcQuOhlZixXbFBpoA.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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--_pp5Lukw--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AA143SzcQuOhlZixXbFBpoA.png" alt="Queue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/emmabostian/stacks-vs-queues-in-javascript-4d1o"&gt;Emma's 'Stacks vs. Queues in JavaScript' blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🐞 Binary Trees
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw3v7c9lg6z7xw52d3oo4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw3v7c9lg6z7xw52d3oo4.png" alt="BST"&gt;&lt;/a&gt;&lt;br&gt;
Binary trees are a data structure consisting of a series of nodes where each node can have a maximum of two child nodes as well as a value. The root is the top node in the tree structure and doesn't have a parent node.&lt;/p&gt;

&lt;p&gt;A binary search tree is another type of binary tree where all node values are distinct, every parent node has a left child whose value is less than it and a right child whose value is greater than it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://egghead.io/lessons/javascript-linked-list-data-structure-in-javascript" rel="noopener noreferrer"&gt;Kyle Shevlin's Egghead.io course on data structures with JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/implementation-binary-search-tree-javascript/" rel="noopener noreferrer"&gt;BST in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🐞 Graphs
&lt;/h1&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--Kv5ciqHz--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AbH2AHhFt9P_Tb8Opp6bhLQ.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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--Kv5ciqHz--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%252AbH2AHhFt9P_Tb8Opp6bhLQ.png" alt="Graph"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Graphs are a data structure comprised of nodes with edges. If a graph is directed, that means each edge has a direction associated with it (like a one-way street). In contrast, undirected doesn't have associated edge directions.&lt;/p&gt;

&lt;p&gt;You might have a graph of people (purple) and movies (green) where each person can have several favorite movies but movies don't have a favorite person.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/emmabostian/creating-graphs-with-javascript-4efm"&gt;Emma's 'Creating Graph's With JavaScript' blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adrianmejia.com/data-structures-for-beginners-graphs-time-complexity-tutorial/" rel="noopener noreferrer"&gt;Graphs in JS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;What are some other resources you like for learning data structures and algorithms?!&lt;/p&gt;

&lt;p&gt;Leave yours below! 👇&lt;/p&gt;

</description>
      <category>computerscience</category>
    </item>
    <item>
      <title>I Built A Successful Blog In One Year, And You Can Too; 7 Tips For Enhancing Readership</title>
      <dc:creator>Emma Bostian ✨</dc:creator>
      <pubDate>Mon, 09 Dec 2019 07:39:40 +0000</pubDate>
      <link>https://forem.com/emmabostian/i-built-a-successful-blog-in-one-year-and-you-can-too-7-tips-for-enhancing-readership-5f8b</link>
      <guid>https://forem.com/emmabostian/i-built-a-successful-blog-in-one-year-and-you-can-too-7-tips-for-enhancing-readership-5f8b</guid>
      <description>&lt;p&gt;At the time of writing this post, I've been blogging on the Dev Community for almost a year and have 12,509 followers.&lt;/p&gt;

&lt;p&gt;I always loved writing. From a young age I would write "books" which were really just ~4 page fiction stories that gathered dust in the corner. I believe my enjoyment for writing stemmed from my voracious love of reading.&lt;/p&gt;

&lt;p&gt;And while I always loved writing, I never intended to make a part-time career of it, yet I'm humbled to say that my blog has taken off in the past year and I want to share some of my tips for growing a successful blog.&lt;/p&gt;

&lt;p&gt;I want to preface this post with the admission that, over the past year, my social media following has exponentially blown up which had an invaluable impact on the visibility of my blog. If you want to read more details about the crazy Twitter journey, you can check out &lt;a href="https://dev.to/emmawedekind/how-i-gained-27000-twitter-followers-in-6-months-2hog"&gt;my post&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Write consistently
&lt;/h1&gt;

&lt;p&gt;The best advice I received from my mentor, &lt;a href="https://twitter.com/kahliltweets"&gt;Kahlil Lechelt&lt;/a&gt;, was to blog consistently.&lt;/p&gt;

&lt;p&gt;"If you post it, they will come."&lt;/p&gt;

&lt;p&gt;Blogging consistently allowed me to develop a backlog of content. And while blogging consistently was difficult, I quickly learned that I had to blog for myself and let go of the angst about the possibility that nobody else would read it, or even like it.&lt;/p&gt;

&lt;p&gt;When I say "blog consistently" I don't necessarily mean publish a blog every single Monday, but publishing a new blog every week or so will allow you to build up a wonderful backlog of posts for others to read. &lt;/p&gt;

&lt;p&gt;The goal should be to hook readers with one post, and then capture their attention with a nice backlog of other posts.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Include high-quality images and graphics
&lt;/h1&gt;

&lt;p&gt;One of the things I did, which I believe had a positive impact on the success of my blog posts, was to include high-quality header photos and supplement the technical content with custom-designed graphics.&lt;/p&gt;

&lt;p&gt;You can find free images for your blog post headers on &lt;a href="//unsplash.com/"&gt;Unsplash&lt;/a&gt; for free, however the images are often quite popular so be conscientious of the fact that others will use the popular images, and select less frequently used images when possible.&lt;/p&gt;

&lt;p&gt;I also designed custom graphics and charts to demonstrate more technical concepts. I built my graphics using &lt;a href="https://www.sketch.com/"&gt;Sketch&lt;/a&gt;, and while this does require a bit of design knowledge, you can create custom graphics too!&lt;/p&gt;

&lt;p&gt;Sketch is a paid tool and only works on Mac, however &lt;a href="https://www.figma.com/"&gt;Figma&lt;/a&gt; is a free web-based tool that provides the same capabilities.&lt;/p&gt;

&lt;p&gt;Additionally if you're not a graphic designer and you're looking for amazing illustrations, I cannot recommend &lt;a href="https://undraw.co/"&gt;Undraw&lt;/a&gt; enough. All of the illustrations are free SVGs and as such are fully customizable.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Link to relevant resources
&lt;/h1&gt;

&lt;p&gt;If you discuss or note a technology, tool, or person in your blog post, &lt;strong&gt;link to it&lt;/strong&gt;. I cannot tell you how many times I've had to open a new tab and Google something in a blog post because they didn't link it.&lt;/p&gt;

&lt;p&gt;Take the burden off of your readers and link to valuable related resources.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Explain acronyms and related topics
&lt;/h1&gt;

&lt;p&gt;If you're writing a technical blog post, please define your acronyms. I like to make the assumption that someone reading my blog post has very little prior knowledge of the topic I'm writing about.&lt;/p&gt;

&lt;p&gt;So if I'm writing a blog post about JAMstack, I should define what JAMstack means (JavaScript, APIs, and Markup) so the reader doesn't have to.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Ensure images, graphics, and code snippets are accessible
&lt;/h1&gt;

&lt;p&gt;If you're writing a post, everyone regardless of circumstance should be able to read it.&lt;/p&gt;

&lt;p&gt;In the past I've made the mistake of including code snippets as images simply because they looked nicer. Accessibility trumps aesthetics. Use &lt;a href="https://gist.github.com/"&gt;gist&lt;/a&gt; for code snippets. They're accessible and easily embedded.&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Use quantifiable numbers where applicable
&lt;/h1&gt;

&lt;p&gt;One thing I've noticed is that readers love a finite number of tips. &lt;br&gt;
 Some of my most successful blog posts are of the format: "X Tips For ... " People love actionable blog posts, hence the numbered tips in this post.&lt;/p&gt;

&lt;p&gt;I recommend keeping the number of tips at 10 or below to maximize readership.&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Write about your passions
&lt;/h1&gt;

&lt;p&gt;I cannot say this loudly enough: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CREATE CONTENT YOU LOVE, NOT CONTENT YOU THINK OTHERS WANT TO ABSORB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're not passionate about what you're teaching, nobody will read it.&lt;/p&gt;

&lt;p&gt;First and foremost I write for myself. I write blog I can reference for years to come. And chance are if you love what you write, and you find value in it, others will too.&lt;/p&gt;




&lt;p&gt;If your blog isn't catching on quickly, be patient. I recognize the fact that my growth was an anomaly. It can take years to develop a "successful" blog, but success is subjective. What I deem successful is different than what you deem successful.&lt;/p&gt;

&lt;p&gt;For me, success is not a number, it's the impact I have on the community. If I can help one person, I've written a successful blog.&lt;/p&gt;

&lt;p&gt;Go forth and kick ass, my friends.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Header image by  LUM3N on Unsplash&lt;/em&gt;&lt;/p&gt;

</description>
      <category>blogging</category>
    </item>
  </channel>
</rss>
