<?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: Alex Curtis-Slep | Looking for Remote Dev role</title>
    <description>The latest articles on Forem by Alex Curtis-Slep | Looking for Remote Dev role (@alexcurtisslep).</description>
    <link>https://forem.com/alexcurtisslep</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%2F745791%2Fa02bf8cf-32b0-483e-b967-96a8c1685202.jpg</url>
      <title>Forem: Alex Curtis-Slep | Looking for Remote Dev role</title>
      <link>https://forem.com/alexcurtisslep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alexcurtisslep"/>
    <language>en</language>
    <item>
      <title>CSS Masonry Catness</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Mon, 28 Oct 2024 12:02:42 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/css-masonry-catness-2nhj</link>
      <guid>https://forem.com/alexcurtisslep/css-masonry-catness-2nhj</guid>
      <description>&lt;p&gt;CSS is like anything else in tech-it's always changing and evolving. An ongoing development in the space is &lt;a href="https://www.w3.org/TR/css-grid-3/" rel="noopener noreferrer"&gt;CSS Grid Layout Module Level 3 aka CSS Masonry Layout&lt;/a&gt;. &lt;a href="https://youtu.be/W91Wst6fMNU?si=LPLJVzMcXV2DOk0H" rel="noopener noreferrer"&gt;Theo made a video&lt;/a&gt; about how it's developing and the debate Apple and Google are having about how it gets implemented.&lt;/p&gt;

&lt;p&gt;All of that got me excited to give CSS masonry a try! The &lt;a href="https://webkit.org/demos/grid3/photos/" rel="noopener noreferrer"&gt;WebKit photo demos&lt;/a&gt; inspired me to make a similar view with pics of cats! Who doesn't love cats?&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;To view what we're going to build you'll need the &lt;a href="https://developer.apple.com/safari/technology-preview/" rel="noopener noreferrer"&gt;Safari Technology Preview&lt;/a&gt;, or to make the feature flag &lt;code&gt;layout.css.grid-template-masonry-value.enabled&lt;/code&gt; true in Firefox.&lt;/p&gt;

&lt;p&gt;To access the feature flags in Firefox, type &lt;code&gt;about:config&lt;/code&gt; in your address bar. Hit enter and you can search grid or the string mentioned above. Toggle it to true and you're good to go!&lt;/p&gt;

&lt;p&gt;Basic familiarity with TypeScript/JavaScript, React, and Next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup a new project
&lt;/h3&gt;

&lt;p&gt;Create a new Next project in the terminal.&lt;/p&gt;

&lt;p&gt;Run this command: &lt;code&gt;npx create-next-app@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then you may need to install the following package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create-next-app@15.0.1
Ok to proceed? (y) y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Name your project. I call mine &lt;code&gt;cat-pics-waterfall&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Continue setting up the Next project in the terminal (be sure to not use Tailwind):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Would you like to use TypeScript?  Yes
Would you like to use ESLint?  Yes
Would you like to use Tailwind CSS? No
Would you like your code inside a 'src/' directory?  No
Would you like to use App Router? (recommended) Yes
Would you like to use Turbopack for next dev? No
Would you like to customize the import alias (@/* by default)? No
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When your project is done setting up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Change directories into your project by running this command in your terminal &lt;code&gt;cd your-project-name&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open it in VSCode by then running this command &lt;code&gt;code .&lt;/code&gt; (&lt;a href="https://www.freecodecamp.org/news/how-to-open-visual-studio-code-from-your-terminal/" rel="noopener noreferrer"&gt;setup this command if you haven't&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Remove the boilerplate
&lt;/h3&gt;

&lt;p&gt;Inside the app folder there is a file called &lt;code&gt;page.tsx&lt;/code&gt; This has all the code that is rendered in the boilerplate.&lt;/p&gt;

&lt;p&gt;Remove that code and keep a div or fragment for now. Here's an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/page.tsx&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also a stylesheet for the page within the app folder. It's called &lt;code&gt;page.module.css&lt;/code&gt; and you can open that up, select all the styles in it, and delete them.&lt;/p&gt;

&lt;p&gt;Let's change our metadata and make it more clear what our app does. Update &lt;code&gt;layout.tsx&lt;/code&gt; like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/layout.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Metadata&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./globals.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Metadata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cat Pics&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bringing cats your way with experimental CSS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;RootLayout&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="nb"&gt;Readonly&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&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="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/body&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/html&lt;/span&gt;&lt;span class="err"&gt;&amp;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;p&gt;Add a cat favicon if you'd like too (how to &lt;a href="https://nextjs.org/docs/app/api-reference/file-conventions/metadata/app-icons" rel="noopener noreferrer"&gt;add a favicon in Next&lt;/a&gt;)!&lt;/p&gt;

&lt;h3&gt;
  
  
  Create .env file
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file at the root of the project. This is where we'll store the API key from &lt;a href="https://thecatapi.com/" rel="noopener noreferrer"&gt;The Cat API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Signup for The Cat API
&lt;/h3&gt;

&lt;p&gt;Signup for a &lt;a href="https://thecatapi.com/signup" rel="noopener noreferrer"&gt;free API key from The Cat API&lt;/a&gt;. After the initial signup, you'll receive an email with your API key. Copy that API key and make a new variable in &lt;code&gt;.env&lt;/code&gt;. I call my key &lt;code&gt;CAT_KEY&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Your local &lt;code&gt;.env&lt;/code&gt; should look like this: &lt;code&gt;CAT_KEY=your_api_key&lt;/code&gt;. If you deploy this make sure to add this wherever it's deployed too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bring in the cat pics!
&lt;/h3&gt;

&lt;p&gt;I glean from the aforementioned WebKit demos to create the page and styles for the cat pics. Here we call our API, map through the results, and render the pics that get returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/page.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;styles&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./page.module.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.thecatapi.com/v1/images/search?limit=50&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CAT_KEY&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;CatImage&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getCatPics&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-api-key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Unable to get the cute cats! &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;error&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;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getCatPics&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;page&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="nx"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="na"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CatImage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;figure&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;card&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;
            &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;catPic&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`Cat &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&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="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/figure&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="p"&gt;))}&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/main&lt;/span&gt;&lt;span class="err"&gt;&amp;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;h3&gt;
  
  
  Style the pics
&lt;/h3&gt;

&lt;p&gt;Now that we've brought in the pics, let's see CSS masonry in action! Taking a page out of WebKit's book, here is &lt;code&gt;page.module.css&lt;/code&gt;:&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="nc"&gt;.page&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auto-fill&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8rem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;14rem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8rem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;masonry&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.card&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;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;counter-increment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item-counter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.catPic&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;100%&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="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1ch&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;If you save your files and run &lt;code&gt;npm run dev&lt;/code&gt; in your terminal, it should give you a page like this (with images selected at random):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6u65yv0xppknl9k9dwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6u65yv0xppknl9k9dwo.png" alt="Image description" width="800" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's a lot of potential to build on top of this! The images maintain their quality and without media queries the page feels responsive. You can use what's coming here to CSS in other ways, Theo showcased them in &lt;a href="https://www.youtube.com/watch?v=W91Wst6fMNU" rel="noopener noreferrer"&gt;his video&lt;/a&gt; and the demos from &lt;a href="https://webkit.org/demos/grid3/" rel="noopener noreferrer"&gt;WebKit&lt;/a&gt; and &lt;a href="https://developer.chrome.com/blog/masonry" rel="noopener noreferrer"&gt;Google&lt;/a&gt; do too.&lt;/p&gt;

&lt;p&gt;It's sweet to be a developer right now. Lots of amazing tooling, features, runtimes, and more are being built. Time will tell exactly how this gets implemented in CSS. However it gets decided upon, the takeaway is that CSS is getting cooler.&lt;/p&gt;

&lt;p&gt;Have a look at the &lt;a href="https://github.com/AlexVCS/cat-pics-waterfall" rel="noopener noreferrer"&gt;repo I made for this project&lt;/a&gt;. I deployed it on Vercel too, if you use one of the two browser setups mentioned in the prerequisites, you can &lt;a href="https://cat-pics-waterfall.vercel.app/" rel="noopener noreferrer"&gt;check it out here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can build a page that renders pictures of cats for the heck of it, or get stuff done at work. What do you think of these features coming to CSS? How are you going to use them?&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Lessons from Starting an Open Source Project</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Fri, 01 Dec 2023 02:50:22 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/lessons-from-starting-an-open-source-project-2g3l</link>
      <guid>https://forem.com/alexcurtisslep/lessons-from-starting-an-open-source-project-2g3l</guid>
      <description>&lt;p&gt;Starting &lt;a href="https://github.com/AlexVCS/Duguetia"&gt;my own open source project&lt;/a&gt; has taught me a lot. While the project isn't mature, it's shifting my perspective on coding and how I approach each task. Let's get more granular about why these changes are occurring:&lt;/p&gt;

&lt;h2&gt;
  
  
  Clear Communication
&lt;/h2&gt;

&lt;p&gt;There are tons of tasks we do as developers. Terminal configurations, GitHub actions, CSS, and everything in between. When we're coding on our own, or with folks we've worked with before, we tend to make assumptions.&lt;/p&gt;

&lt;p&gt;We're using X framework, we don't need to import Y. This CSS isn't impacting the placement of the nav, for example.&lt;/p&gt;

&lt;p&gt;When creating issues for new people to work on, being clear and concise is as important as a flavorful broth for soup. If there are questions a prospective contributor has, then you're losing valuable time and progress your project could be making.&lt;/p&gt;

&lt;p&gt;On the contrary, when a developer can review the docs, setup their local environment, and work through the issue, you're both digging into a delicious open source roasted cauliflower bisque.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't just Code &amp;amp; Push to Main
&lt;/h2&gt;

&lt;p&gt;Coding up a personal project and collaborating in open source are dramatically different workflows. Often feeling the liberty of working on my own thing I'd work and push to main to make things easier.&lt;/p&gt;

&lt;p&gt;I'm rethinking that now. This project has me pivoting into a much more sane workflow. Make an issue and an accompanying branch, apply and push changes, and, if no conflicts arise, and it's a needed change, merge into main.&lt;/p&gt;

&lt;p&gt;This helps break down each task I take on, not make unwanted changes (hopefully!), and is a flow contributors can follow.&lt;/p&gt;

&lt;p&gt;I wholeheartedly &lt;a href="https://dev.to/alexcurtisslep/fall-in-love-with-open-source-aib"&gt;love open source&lt;/a&gt; and was enamored by the concept early in life. Starting a project isn't for everyone, but navigating forward as a technologist with these learnings in mind might help you on your coding journey.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Volunteer at a Tech Conference!</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Mon, 08 May 2023 12:28:59 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/volunteer-at-a-tech-conference-113l</link>
      <guid>https://forem.com/alexcurtisslep/volunteer-at-a-tech-conference-113l</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g20R3CY2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/257rx5dyfbvf4u9sx93j.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g20R3CY2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/257rx5dyfbvf4u9sx93j.jpeg" alt="photo of volunteers at React Miami" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently volunteered at the &lt;a href="https://www.reactmiami.com/"&gt;React Miami&lt;/a&gt; conference. Volunteering made the conference experience better than if I had just attended! Let's talk about why and why YOU should volunteer at a conference 😃&lt;/p&gt;

&lt;h3&gt;
  
  
  Network of Volunteers
&lt;/h3&gt;

&lt;p&gt;Volunteering at a conference gets you around fellow volunteers. The volunteers are also in tech (usually), and you get to know them while volunteering together. If you're newer to tech (like me), or not sure if you'll know many people/make connections, volunteering shines as it builds you a network right off the bat!&lt;/p&gt;

&lt;p&gt;Come curious, open-minded, and receptive to fellow volunteers and they'll introduce you to people they know. It snowballs from there! The volunteers for React Miami were incredible, hard working, and gregarious.&lt;/p&gt;

&lt;p&gt;While every conference has it's own set of people, goals, and roles volunteers can fill, the people helping should be awesome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sense of Purpose
&lt;/h3&gt;

&lt;p&gt;Tech conferences are a hoot, but they can be a lot too! Folks party hard, sometimes a little too hard. Volunteering can keep you from going too far off the deep end, keeping you engaged with what's happening in the talks and/or with attendees.&lt;/p&gt;

&lt;p&gt;I mainly helped check people into the conference I recently attended. This was important early on, lots of folks showed up right at the beginning. It was great to help and welcome them!&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn a Ton
&lt;/h3&gt;

&lt;p&gt;React Miami featured amazing talks from people in many areas of tech. Being able to attend thanks to volunteering opened my eyes to so much. Video editing in the browser, metrics I hadn't heard of to measure web performance, and a demo of style queries, to name a few!&lt;/p&gt;

&lt;p&gt;Learning continually is a pillar of a great technophile. Volunteer and use your free time to be a sponge and soak up all the transformative information you can absorb.&lt;/p&gt;

&lt;p&gt;I haven't even broached the idea of traveling and volunteering at a conference you've been eyeing. There are lots of benefits, but these are the highlights for me. Shoutout to &lt;a href="https://www.grammerhub.org/"&gt;Grammerhub&lt;/a&gt; for making it possible for me to volunteer.&lt;/p&gt;

&lt;p&gt;Take the plunge, you'll thank yourself after you volunteer, particularly if you're newer in tech, trust me!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Questions are a Developer Superpower</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Fri, 18 Nov 2022 21:45:12 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/questions-are-a-developer-superpower-120o</link>
      <guid>https://forem.com/alexcurtisslep/questions-are-a-developer-superpower-120o</guid>
      <description>&lt;p&gt;Asking questions is a developer superpower. Many new devs are often hesitant to ask questions though! It could be due to &lt;a href="https://dev.to/bekahhw/overcoming-imposter-syndrome-23a3"&gt;imposter syndrome&lt;/a&gt;, fear about the impression their question would bring, or any number of reasons.&lt;/p&gt;

&lt;p&gt;Questions that are broad and over simplified are the wrong way to go. Before we look at great questions, let's look at questions people ask and how they could be improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can you teach me to code?&lt;/li&gt;
&lt;li&gt;How can I become a developer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning to code and becoming a developer is great, but posing questions like this is similar to wondering if a buffet will serve food. Are you more of a visual person (who might prefer frontend development?)? Do you like sushi or would Indian cuisine be more your to your liking? Maybe working towards becoming a software reliability engineer would be best.&lt;/p&gt;

&lt;p&gt;There are different types of developers, and the work they do varies widely. It depends, and in tech, it depends can be an answer to most things. That's why being specific and providing context can allow questions to &lt;strong&gt;get you unstuck when coding&lt;/strong&gt;, &lt;strong&gt;endear you to a potential future colleague&lt;/strong&gt;, and help others along their journey.&lt;/p&gt;

&lt;p&gt;Here are examples of detailed questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I'm working on landing my first frontend developer role. My stack is React, Next, Node, and SQL. I've built my own projects, contributed to open source, and gotten two certifications (one in frontend, the other in API's/backend). What can I do to continue to learn, grow, and meet people who could help me land a job?&lt;/li&gt;
&lt;li&gt;I tried running the e2e (end to end) tests but am returning errors. I noticed a recent change that was merged in changed a filename. I pulled in those changes, but could the change be causing an error elsewhere that's making the tests fail?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another special part about tech is &lt;strong&gt;people want to help you&lt;/strong&gt;. When you ask questions that are more in line with the last two examples, people are much more likely to give you an answer, or try and find someone who can give you an answer.&lt;/p&gt;

&lt;p&gt;Developers are resourceful by necessity, but we all know not every single question has an exact answer from Google. Dig into what's making you curious. Be as detailed as you can, but also keep your question concise.&lt;/p&gt;

&lt;p&gt;Questions can unlock your career as a developer. Remember how important they are, why they need to be well worded, and you'll be that much better of a developer!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>database</category>
    </item>
    <item>
      <title>Why you Should Participate in Hacktoberfest</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Mon, 12 Sep 2022 14:05:50 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/why-you-should-participate-in-hacktoberfest-4ji4</link>
      <guid>https://forem.com/alexcurtisslep/why-you-should-participate-in-hacktoberfest-4ji4</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j_bxDNhT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnps44exy96bfkoym6je.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j_bxDNhT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnps44exy96bfkoym6je.png" alt="Hacktoberfest logo" width="800" height="292"&gt;&lt;/a&gt;&lt;br&gt;
Hacktoberfest is just around the corner. &lt;a href="https://hacktoberfest.com/"&gt;Hacktoberfest&lt;/a&gt; is a yearly event put on by DigitalOcean. Open source projects take contributions from anyone and the first 40,000 participants who complete Hacktoberfest (complete = four separate changes to projects that get accepted) earn either a shirt or a tree planted in their name. It's September now and you have time to prepare to jump into the fun.&lt;/p&gt;

&lt;p&gt;Why should you participate in Hacktoberfest?&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Make a difference.
&lt;/h3&gt;

&lt;p&gt;You'd be surprised how much small changes mean for a project. The more a project scales, the easier it is for small errors to live within it. You can correct documentation, edit files that have typos, and make a meaningful difference in tech.&lt;/p&gt;

&lt;p&gt;While fixing typos may be seemingly insignificant, across hundreds of thousands of projects, the more people do it, the more accurate and production ready open source becomes as a whole.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Find community.
&lt;/h3&gt;

&lt;p&gt;The people who run and actively contribute to open source are amazing (almost always!). Many open source projects have a Discord or Slack for folks to socialize and share links, etc.&lt;/p&gt;

&lt;p&gt;I've contributed to multiple open source projects and enjoyed talking with maintainers and contributors. One community that I joined earlier this year was &lt;a href="https://novu.co/"&gt;Novu&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another awesome part of open source is pairing with someone else (I talk more about my &lt;a href="https://dev.to/alexcurtisslep/fall-in-love-with-open-source-aib"&gt;pairing experience here&lt;/a&gt;). This gets you chatting with someone who may know more than you, or at least wants to talk it out and work towards a solution.&lt;/p&gt;

&lt;p&gt;While working through issues I was having on my local version of the project, we talked about where we live and how each place would be a great place to visit (among other things).&lt;/p&gt;

&lt;p&gt;No matter how technical or not technical you feel you are, you can find people with common interests! The possibilities are endless for what that could do for you. You could land a job, experience a different country or town like you never have before, or finally find someone else who feels just as passionate about pickleball (for example) as you!&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Discover newfound passion.
&lt;/h3&gt;

&lt;p&gt;When you go down a new street, you might discover a new coffee shop that has a terrific atmosphere and views. Similarly when contributing to projects that you may not have been exposed to before, you might find you love machine learning, computer vision, or making sure all the tests pass when you're squashing a bug!&lt;/p&gt;

&lt;p&gt;People tend to think that coding is only for a specific subset of individuals. The beautiful part about Hacktoberfest is it presents a chance for people from all walks of life to take off that veil and test the technical waters.&lt;/p&gt;

&lt;p&gt;While your contributions don't have to be incredibly technical, be open minded, take the plunge, and see how you go!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Two Ways to Get Noticed in the Tech Job Hunt</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Thu, 07 Apr 2022 00:34:10 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/two-ways-to-get-noticed-in-the-tech-job-hunt-4k8</link>
      <guid>https://forem.com/alexcurtisslep/two-ways-to-get-noticed-in-the-tech-job-hunt-4k8</guid>
      <description>&lt;p&gt;You're fresh out of a bootcamp, a seasoned self-taught developer, maybe even have a CS degree under your belt. That's fine and dandy, but what can you do to catch the eyes of potential employers in tech? What can you do to pole vault yourself into interviews and even offers?&lt;/p&gt;

&lt;p&gt;These are in no particular order!&lt;/p&gt;

&lt;h3&gt;
  
  
  Cold Email the Recruiter
&lt;/h3&gt;

&lt;p&gt;Applying to a job and calling it a day may work for some, but when you're breaking into tech, go the extra mile. After you apply to a job, email the recruiter. Jobs on LinkedIn sometimes have the individual who posted the job listed, but many of them don't (if the person who posted the job is listed, skip down to the Cold Email Time header). Go to LinkedIn and search for the company where you applied.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--beQpMeZH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3u97rvsik3tzyfxrd24g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--beQpMeZH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3u97rvsik3tzyfxrd24g.png" alt="Screenshot showing a LinkedIn example search for Postman" width="880" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, click on the company's profile page (Postman in this case), and find and click on the employees:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c1Kkl__i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2frbvy68vhkr8urdqhr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c1Kkl__i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2frbvy68vhkr8urdqhr4.png" alt="Screenshot of a LinkedIn company page and arrow pointing to where to click to see their employees" width="880" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you'll look for the All filters button towards the top right. Click on that and then scroll down the different filters until you get to the keywords section. There you can type in recruiter under title:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I45Zb9ds--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cxi0m6rgce7ams2vhzk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I45Zb9ds--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cxi0m6rgce7ams2vhzk8.png" alt="Screenshot showing how to access LinkedIn filters and search by title" width="880" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, look for the recruiter who works with tech talent, or has the most experience at the company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cold Email Time
&lt;/h3&gt;

&lt;p&gt;Even if you don't have LinkedIn premium (which you don't need!), &lt;strong&gt;you can and should &lt;a href="https://arrivein.com/career-ca/how-to-write-compelling-linkedin-connection-request-messages/"&gt;send a message&lt;/a&gt; to the recruiter&lt;/strong&gt;. Please note that sending a note along with your connection request is NOT available on the LinkedIn mobile app at the time of this writing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arrivein.com/career-ca/how-to-write-compelling-linkedin-connection-request-messages/"&gt;Check this out&lt;/a&gt; to learn how to hone your cold email skills.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks to Ian, who has a &lt;a href="https://techinterview.guide/"&gt;Tech Interview Guide&lt;/a&gt; for showing this on his &lt;a href="https://www.twitch.tv/iandouglas736"&gt;Twitch steam&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Find an Error in the Job Description and @ the Company
&lt;/h3&gt;

&lt;p&gt;Not every job description has errors in it, but you'd be surprised how many do! This strategy got me a job interview, here's what happened:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j84g6pLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ji32rvlgmz0vs29pfuf9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j84g6pLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ji32rvlgmz0vs29pfuf9.jpeg" alt="Screenshot from Twitter showing how I got an interview by pointing out mistakes in a job description" width="880" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This goes to show that it's always important to do your due diligence when looking for work. Read the job description, research the company, and make sure you have a solid understanding of why you fit the role you're applying for.&lt;/p&gt;

&lt;p&gt;Whilst being discerning, if you see a glaring mistake in the job description like this, use it your advantage. Tweet at the company, and say you're applying while pointing out the mistake. Hiring managers don't want to have mistakes out in the public, but you can use that to get your foot in the door.&lt;/p&gt;

&lt;p&gt;Don't be afraid to see if the door is unlocked 😉&lt;/p&gt;

&lt;p&gt;The worst things companies can say to you is no. Don't let rejections get you down. It's part of the journey, and you'll go further faster if you focus on what you can control. Hope these tips help you in the job hunt!&lt;/p&gt;

</description>
      <category>career</category>
      <category>linkedin</category>
      <category>techjob</category>
      <category>writing</category>
    </item>
    <item>
      <title>Fall in Love with Open Source 🍁</title>
      <dc:creator>Alex Curtis-Slep | Looking for Remote Dev role</dc:creator>
      <pubDate>Fri, 05 Nov 2021 22:28:26 +0000</pubDate>
      <link>https://forem.com/alexcurtisslep/fall-in-love-with-open-source-aib</link>
      <guid>https://forem.com/alexcurtisslep/fall-in-love-with-open-source-aib</guid>
      <description>&lt;p&gt;Last month I participated in &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt;. I made four contributions to open source projects. I learned a bunch, got more development experience, and solidified a bond with open source.&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%2Fuploads%2Farticles%2Ff8voojj862e8tfsqr9zc.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%2Fuploads%2Farticles%2Ff8voojj862e8tfsqr9zc.jpg" alt="Open source visual thanks to Giulia Forsythe on Flickr&amp;lt;br&amp;gt;
"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2021 was the eighth year Hacktoberfest rocked and rolled. Last year there were &lt;a href="https://www.digitalocean.com/blog/hacktoberfest-recap2020/" rel="noopener noreferrer"&gt;166,057 PR's&lt;/a&gt; merged and this year probably eclipsed that!&lt;/p&gt;

&lt;p&gt;Open source has always intrigued me and I jumped into making contributions before Hacktoberfest. Having gone through Hacktoberfest I can say that it lit a spark under me.&lt;/p&gt;

&lt;p&gt;I did brand new things like create a robots.txt file. Never knew about them before! I made that file for an Elm project. I had never heard of Elm before.&lt;/p&gt;

&lt;p&gt;The magic behind Hacktoberfest and open source runs deep. Not only are there new languages, techniques, and concepts you can indulge in, there are amazing maintainers and contributors you can collaborate and learn from.&lt;/p&gt;

&lt;p&gt;I had Zoom sessions with two project maintainers. They were both super helpful, upbeat and willing to help in any and every way. Shout out to &lt;a class="mentioned-user" href="https://dev.to/kirkcodes"&gt;@kirkcodes&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/nickytonline"&gt;@nickytonline&lt;/a&gt; 🙌.&lt;/p&gt;

&lt;p&gt;Kirk's project was the &lt;a href="https://github.com/tkshill/Quarto" rel="noopener noreferrer"&gt;Elm game&lt;/a&gt; I made a robots.txt for. Not only was he helpful with any questions I had, he gave me a great overview of Elm! I had done some research on it, but hearing more about it from someone using it shed even more light on Elm.&lt;/p&gt;

&lt;p&gt;Nick's web3 starter project accounted for two of my contributions. The second of the two issues was trickier than the first. I needed to get Storybook working with webpack5.&lt;/p&gt;

&lt;p&gt;This is a relatively new setup and Nick made updates to his code-base that helped smooth things out. After hitting roadblocks on my own I jumped on a call with Nick, pulled in recent changes, and got it running smoothly.&lt;/p&gt;

&lt;p&gt;Pair programming is a part of working on any team and these were great examples of the power it yields. Open source can offer these important experiences for any developer at any level.&lt;/p&gt;

&lt;p&gt;Going forward I'll do Hacktoberfest every year. It's an opportunity to work on new projects, skills and with folks you may have never worked before.&lt;/p&gt;

&lt;p&gt;Open source doesn't just open its doors in October either. Contributions can be made all year round.&lt;/p&gt;

&lt;p&gt;There's a special energy that emanates when everyone is diving into open source collectively. Hacktoberfest and the community at &lt;a href="https://virtualcoffee.io/" rel="noopener noreferrer"&gt;Virtual Coffee&lt;/a&gt; made it special.&lt;/p&gt;

&lt;p&gt;No matter what time of year it is, find &lt;a href="https://www.codetriage.com/" rel="noopener noreferrer"&gt;projects&lt;/a&gt; you'd like to contribute to. Ask to be assigned to an issue, work and seek help as needed, and get your PR merged like a boss!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
