<?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: Devyn Clark</title>
    <description>The latest articles on Forem by Devyn Clark (@atombrown).</description>
    <link>https://forem.com/atombrown</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%2F2677603%2F46369964-4d31-465c-8ccc-a2e09ef4ca87.jpg</url>
      <title>Forem: Devyn Clark</title>
      <link>https://forem.com/atombrown</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/atombrown"/>
    <language>en</language>
    <item>
      <title>Tailwind v4.0</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Fri, 31 Jan 2025 18:03:57 +0000</pubDate>
      <link>https://forem.com/atombrown/tailwind-v40-3k24</link>
      <guid>https://forem.com/atombrown/tailwind-v40-3k24</guid>
      <description>&lt;p&gt;Tailwind v4.0 is finally here!&lt;/p&gt;

&lt;p&gt;This new version of the popular CSS framework has been reconfigured for greater efficiency and is taking the new web platform by the horns to lighten the load on all of web-dev!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Boosted Performance engine&lt;/strong&gt;&lt;br&gt;
Full builds have now increased to five times the speed. If that isn't enough, the speed of an incremental build has boosted by 100 times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplified Installation&lt;/strong&gt;&lt;br&gt;
The amount of dependencies has lessened as well as zero configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic content detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adding onto the lack of configuration needed, your template files may now be detected automatically.&lt;/p&gt;

&lt;p&gt;An instance of this would be avoiding scan your project's '.gitignore' file or any binary extensions like images or videos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS-first configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a major shift, you may now use your CSS file to directly configure your customizations when you've imported tailwind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS theme variables&lt;/strong&gt;&lt;br&gt;
Tailwind v4.0 allows you to take your design tokens and make them available as variables by default, allowing you to reference them during the runtime.&lt;/p&gt;

&lt;p&gt;This will make using them as inline styles or passing them to libraries like Motion easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional 3-D transformation ultlities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;New API's have been added to bump up 3-D transformations: 'rotate-x-&lt;em&gt;', 'rotate-y-&lt;/em&gt;', 'scale-z-&lt;em&gt;', 'translation-z-&lt;/em&gt;' as well as others.&lt;/p&gt;

&lt;p&gt;Look to the updated transform-style, rotate, perspective, and perspective-origin documentation to get started.&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Updates</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Wed, 22 Jan 2025 12:16:37 +0000</pubDate>
      <link>https://forem.com/atombrown/css-updates-3cki</link>
      <guid>https://forem.com/atombrown/css-updates-3cki</guid>
      <description>&lt;p&gt;As one of the most essential and popular Front-end languages, CSS has received a litany of new updates to assist developers in the new year ahead and beyond. As is expected of updates in the world of Web Development, the storied language has again found a way to pick up speed.&lt;/p&gt;

&lt;p&gt;Starting things off is the new @property syntax which can be used to create custom properties in your CSS selectors. &lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;@property --my-textColor {&lt;br&gt;
  syntax: ' ';&lt;br&gt;
  inherits:true;&lt;br&gt;
  initial-value:black;&lt;br&gt;
}&lt;br&gt;
.element {&lt;br&gt;
 color: var(--my-color); /* Defaults to black */&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax:&lt;/strong&gt; Specifies our allowed data type that will be used in type-checking and validations, to prevent any unexpected behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inherits:&lt;/strong&gt; This syntax controls if the property can inherit its value from parent elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial-Value:&lt;/strong&gt; Sets the default value going forward.&lt;/p&gt;

&lt;p&gt;I happen to quite like this syntax since it not only decreases the amount of time spent on global-scale CSS, but also allows for a great amount of variety in potential website themes as well as the ability to toggle between said themes.&lt;/p&gt;

&lt;p&gt;Moving from @property, we also have &lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt;. As implied by the name, this syntax applies a range to the rules created by your selectors.&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
  &lt;p&gt;This paragraph is inside the scope.&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;This paragraph is outside the scope.&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt; (#my-component) {&lt;br&gt;
  p {&lt;br&gt;
    color: black;&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;With &lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt;, style conflicts can be nothing more than a distant memory, thanks to it preventing styles from leaking into parts of the page where they don’t belong. This can be a particular boon when using third-party libraries and or Component-based architecture since it can quarantine any Widgets or Components that overlap with the rules of other elements in your website.&lt;/p&gt;

&lt;p&gt;The mod() function allows Modulo operations to be done in the comfort of your stylesheet. The function takes the first argument as the dividen and the second element as the divisor, before returning the remainder as the value.&lt;/p&gt;

&lt;p&gt;.container {&lt;br&gt;
  width: mod(500px, 120px); /* Returns 20px */&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;As seen above this function can see great use in calculating the size of certain elements as well as calculating the positions as well as creating patterns for the elements that you animate. Combining mod() with media queries can also be used to simplify responsive design.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HTML Updates</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Mon, 20 Jan 2025 01:29:56 +0000</pubDate>
      <link>https://forem.com/atombrown/html-updates-3ab7</link>
      <guid>https://forem.com/atombrown/html-updates-3ab7</guid>
      <description>&lt;p&gt;HTML Updates&lt;/p&gt;

&lt;p&gt;With 2025 here at last, HTML has received a plethora of updates that we as developers can sink our teeth into to improve our skills.&lt;/p&gt;

&lt;p&gt;A group of  tags can now be used in a manner similar to an accordion layout, meaning that only one tag’s summary may be opened at a time. In addition to this, any non-summary content can now be styled with CSS using the Sub Selector ::details-content.&lt;/p&gt;

&lt;p&gt;Speaking of styling your elements,  tags can now have their  tags styled through the ::picker(select) CSS Selector. Additionally, your tags can also be separated horizontally through the &lt;/p&gt;
 tag.

&lt;p&gt;Back on the purely HTML side of things, your checkbox  may now be toggled when given the switch attribute, providing further accessibility. In terms of your text-typed inputs, they may now be wrapped in the  tags to provide future developers an easier time reading legacy code.&lt;/p&gt;

&lt;p&gt;After having been removed from browsers for years, the Media attribute is once again usable for  tags. In case you don’t remember, the use of this attribute allows for you to make your video files as responsive as your img files.&lt;/p&gt;

&lt;p&gt;In terms of updates on the server-side, the Declarative Shadow DOM now allows for better use of Web Components without the need for Javascript. For the longest time, the use of Javascript rendering was the only way for a developer to have a Web Component use the Shadow DOM, and leaving the Component without the Server-Side Rendering needed for faster performance, resilience, and hosting options. Now all you must do is place the shadowrootmode attribute to their elements and breathe a sigh of relief.&lt;/p&gt;

&lt;p&gt;With all this and more, the future is looking bright for HTML.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>development</category>
    </item>
    <item>
      <title>Single Page Multi-difficulty Quiz application</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Sat, 18 Jan 2025 14:55:41 +0000</pubDate>
      <link>https://forem.com/atombrown/single-page-multi-difficulty-quiz-application-4c5k</link>
      <guid>https://forem.com/atombrown/single-page-multi-difficulty-quiz-application-4c5k</guid>
      <description>&lt;p&gt;Looking to spice up your average Quiz app? With the power of ReactJs and a little creative thinking, I might have created just the idea.&lt;/p&gt;

&lt;p&gt;We will start off with three arrays containing a maximum of ten objects. &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%2Ffbr8jh4pidemxssh3daz.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%2Ffbr8jh4pidemxssh3daz.png" alt="Image description" width="800" height="848"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each new Array will serve as the content for a new type of difficulty, from easy to hard, to extreme. Each object within the array will contain three properties: the question number, question text, and most importantly, the Array containing the potential answers for the question. The answers Array will contain four objects, each containing a string property of a potential answer and another property denoting the answer as true and or false. These Arrays will then be exported to the quiz navigation file where the real work begins.&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%2F0ed3klecup0mp4dcr9sr.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%2F0ed3klecup0mp4dcr9sr.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After importing the various arrays to our chooseDifficulty file, we will create a Component for to select which difficulty we want along with our chosenQuiz variable which will be used to contain the selected quiz.&lt;/p&gt;

&lt;p&gt;Our next task is to create two const variables: const navigate will be used to navigate to our page proper and const setDifficulty will then be used to determine which set of quizzes we will use. &lt;/p&gt;

&lt;p&gt;For our navigate const, we will import useNavigate and get navigate to equal useNavigate. From there, we will have to set up the route for our quiz Component in App.js. &lt;/p&gt;

&lt;p&gt;Using the event object, setDifficulty will use the event value of the various buttons on the page in order to determine which quiz to load into the chosenQuiz variable as stringified JSON. It will decide this through the use of a switch statement.&lt;/p&gt;

&lt;p&gt;The switch statement will then place the selected array in the chosenQuiz variable and will then load that variable into localStorage under the key name of "chosenQuiz".&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%2F85byhjp9mw9t69o5x0yq.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%2F85byhjp9mw9t69o5x0yq.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Component's return statement, we will create three buttons and give them the values that we want to be accessed through the setDifficulty function. In the onClick function, we will put both of our const variables in an object so they will both be called at the same time.&lt;br&gt;
Within the parentheses of const navigate type the string that you defined the quiz route with in order to navigate to the quiz Component upon the click of the button. Within the parentheses of setDifficulty place the event object in so that it may be read when called.&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%2Fbfklf4gzeokdo7quvxz3.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%2Fbfklf4gzeokdo7quvxz3.png" alt="Image description" width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the buttons are clicked, the quiz will be loaded. We will use the State const of currentQuestion to define which question we are on and increment the value the further that we get through the quiz.&lt;/p&gt;

&lt;p&gt;The variable of quizData will equal the localStorage item of "ChosenQuiz" and then will have its JSON parsed by and placed into the displayedQuiz const to allow the data to be read by a map method.&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%2Fx3hdirrybo3h6wv3sncq.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%2Fx3hdirrybo3h6wv3sncq.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, we will use the currentQuestion const in order to guide our map method to append list elements with the answers that correspond with currentQuestion's current value.&lt;/p&gt;

</description>
      <category>react</category>
      <category>tutorial</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>2025 Programming Goals</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Sat, 18 Jan 2025 08:54:20 +0000</pubDate>
      <link>https://forem.com/atombrown/2025-programming-goals-dp4</link>
      <guid>https://forem.com/atombrown/2025-programming-goals-dp4</guid>
      <description>&lt;p&gt;What Happens Next&lt;/p&gt;

&lt;p&gt;With 2025 on the move, my plans for breaking into the Front-End side of web development will be facing challenges new and old. I’ll have a few languages to learn and a few more to deepen my understanding of. There will also be a few more technologies outside of languages that I’ll be adding to my arsenal. And above all, I’ll be deepening my knowledge of the industry as a whole.&lt;/p&gt;

&lt;p&gt;Languages New and Old&lt;br&gt;
In terms of new languages, I will be putting PHP on my shelf of skills: HTML, CSS, JavaScript, React. On the side of older languages, I’ll be using JavaScript to improve my array-sorting skills,as well as my understanding of time complexity. I’ll also be brushing up on my React skills and creating new projects to test how far I’ve come with the language. Finally, with HTML being upgraded with new tags this year, I’ll be having my hands full getting those down along with everything else.&lt;/p&gt;

&lt;p&gt;Beyond Languages&lt;br&gt;
 Most of the non-language  technologies I'll be putting under my belt will be command-based, since I haven’t had a chance to grasp them in the past. For my first new technology to add, I’ll be putting work into learning GitBash commands. I’ll also be looking into NodeJS down the line to speed projects along. Learning Node will be particularly helpful since it will deepen my understanding of React projects and allow me to work with various packages that I’ve been neglecting.&lt;/p&gt;

&lt;p&gt;The Better the Dev, the Better the Chance&lt;br&gt;
Most importantly, this will be the year where I attempt to expand my knowledge of Web Development as an industry as opposed to just a practice. I’ll be bringing attention to myself and my career through not only my projects but community challenges such as this. I’ll also regularly look into news surrounding the job market for new and promising technologies to master. Above all, I’m hoping to make this year one where I can move closer to getting my career and keep up my growth as a web dev.&lt;/p&gt;

</description>
      <category>newyearchallenge</category>
      <category>webdev</category>
      <category>career</category>
      <category>careerdevelopment</category>
    </item>
    <item>
      <title>Looking for companies</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Fri, 10 Jan 2025 23:17:43 +0000</pubDate>
      <link>https://forem.com/atombrown/looking-for-companies-k33</link>
      <guid>https://forem.com/atombrown/looking-for-companies-k33</guid>
      <description>&lt;p&gt;Does anyone know of any companies that are accepting remote work for junior front-end devs or UI designers? I'm not even looking for something from Big Tech, just some remote work for me to get my feet wet with.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>softwaredevelopment</category>
      <category>developer</category>
    </item>
    <item>
      <title>Is there anything left for me?</title>
      <dc:creator>Devyn Clark</dc:creator>
      <pubDate>Wed, 08 Jan 2025 21:45:26 +0000</pubDate>
      <link>https://forem.com/atombrown/is-there-anything-left-for-me-3id1</link>
      <guid>https://forem.com/atombrown/is-there-anything-left-for-me-3id1</guid>
      <description>&lt;p&gt;As a student in college looking for a way to break into Front-end Web Development, the rise of things such as AI being used to replace juniors has really unnerved me. Is there any place for my skills(HTML, CSS, JavaScript, ReactJS) outside of Front-end?&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>css</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
