<?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: mich_thedev</title>
    <description>The latest articles on Forem by mich_thedev (@themaker).</description>
    <link>https://forem.com/themaker</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%2F990358%2Facdc2569-b3eb-42d6-b3ef-a37115be5605.jpeg</url>
      <title>Forem: mich_thedev</title>
      <link>https://forem.com/themaker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/themaker"/>
    <language>en</language>
    <item>
      <title>Product Design: How Design Drives Business Impact</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sun, 18 Jan 2026 06:37:00 +0000</pubDate>
      <link>https://forem.com/themaker/product-design-how-design-drives-business-impact-ion</link>
      <guid>https://forem.com/themaker/product-design-how-design-drives-business-impact-ion</guid>
      <description>&lt;p&gt;Lately, I’ve been brainstorming ways to move beyond aesthetics and prove design’s business value.&lt;/p&gt;

&lt;p&gt;I understand typography, iconography and colour theory. I know how to build beautiful, functional interfaces, and I’ve been in the industry long enough to have built cool stuff.&lt;/p&gt;

&lt;p&gt;Okay, last year, I attended a hangout for designers.&lt;/p&gt;

&lt;p&gt;Just a small get-together for individuals in the creative industry. Have a few drinks, talk about your accomplishments, network with people. Stuff like that.&lt;/p&gt;

&lt;p&gt;There was a section of the hangout where key speakers would speak on their experience and give tips on how to grow as a designer irrespective of the design industry you’re in.&lt;/p&gt;

&lt;p&gt;Ernest, one of the speakers, mentioned something profound.&lt;/p&gt;

&lt;p&gt;He said: “the need to learn how design drives business impact.”&lt;/p&gt;

&lt;p&gt;That was my key takeaway from the hangout.&lt;/p&gt;

&lt;p&gt;I left pondering what that meant and how I could apply it to my craft.&lt;/p&gt;

&lt;p&gt;Fast forward 2 weeks later, when my friends and I started building our Design Collective.&lt;/p&gt;

&lt;p&gt;I went back to understand deeply: “the need to learn how design drives business impact.”&lt;/p&gt;

&lt;p&gt;Because somehow, somewhere, it’d be crucial in the success of our collective.&lt;/p&gt;

&lt;p&gt;I opened Claude AI.&lt;/p&gt;

&lt;p&gt;Cuz what’s the best way to brainstorm ideas fast if not AI.&lt;/p&gt;

&lt;p&gt;My prompt was essentially one question: “I know component libraries and design systems are crucial to design but what can I do beyond that to drive business impact, provide value to users and measure it”.&lt;/p&gt;

&lt;p&gt;Claude gave me a response (which I had to filter through, of course 😏)&lt;/p&gt;

&lt;p&gt;The response had these key points:&lt;/p&gt;

&lt;p&gt;→ Product Strategy and Vision&lt;br&gt;&lt;br&gt;
→ Business Model Design&lt;br&gt;&lt;br&gt;
→ User research and insights&lt;/p&gt;

&lt;p&gt;For brevity I will talk about product strategy only (other points may be covered in subsequent posts, so stay tuned).&lt;/p&gt;

&lt;p&gt;The product strategy solution followed a 4-week framework I could use for every design/tool I would build:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Week 1: Define Success&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What’s your goal for the flow/design/application?&lt;/li&gt;
&lt;li&gt;Pick 2-3 metrics to track&lt;/li&gt;
&lt;li&gt;Write your hypothesis: “This tool should save me X time”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;→ Week 2: Measure Reality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Track for 5 days: Watch yourself use the tool in real work scenarios. Write down every frustration immediately&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Week 3: Find the Bottleneck&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Map your workflow, the actual steps you take to achieve your goal.&lt;/p&gt;

&lt;p&gt;Where do people drop off most?&lt;/p&gt;

&lt;p&gt;That’s your constraint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Week 4: Fix ONE Thing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick the biggest constraint&lt;/li&gt;
&lt;li&gt;Design one targeted solution&lt;/li&gt;
&lt;li&gt;Predict the outcome&lt;/li&gt;
&lt;li&gt;Build it, measure for another week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple right 🙂?&lt;/p&gt;

&lt;p&gt;I chose to test the framework on a tool I built earlier: a device simulator, Mobily Responsive.&lt;/p&gt;

&lt;p&gt;See, I had built this device simulator for website responsiveness testing.&lt;/p&gt;

&lt;p&gt;Has iPhone and iPad options.&lt;/p&gt;

&lt;p&gt;But I only ever test iPhone 15 Pro.&lt;/p&gt;

&lt;p&gt;30% device coverage when the business goal was 100%.&lt;/p&gt;

&lt;p&gt;What would most people do? Add more devices.&lt;/p&gt;

&lt;p&gt;What did I do instead? I measured WHY.&lt;/p&gt;

&lt;p&gt;I tracked my behaviour for 5 days.&lt;/p&gt;

&lt;p&gt;The issue wasn’t missing devices.&lt;/p&gt;

&lt;p&gt;It was friction.&lt;/p&gt;

&lt;p&gt;Switching between devices meant:&lt;/p&gt;

&lt;p&gt;→ Click dropdown&lt;br&gt;&lt;br&gt;
→ Scroll through list&lt;br&gt;&lt;br&gt;
→ Select device&lt;br&gt;&lt;br&gt;
→ Wait for reload&lt;br&gt;&lt;br&gt;
→ Repeat 2-3 times&lt;/p&gt;

&lt;p&gt;So, I redesigned how I switched between them. The solution? Preset workflows that load entire testing environments with one click. Here’s what I built:&lt;/p&gt;

&lt;p&gt;→ “Quick Mobile” Workflow → Just iPhone 15 Pro&lt;br&gt;&lt;br&gt;
→ “Full Mobile” Workflow→ 3 phone sizes&lt;br&gt;&lt;br&gt;
→ “Everything” Workflow→ Phones + iPad&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this works:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I removed the micro-decisions that created friction. One click loads your entire testing environment, meaning no mental overhead, no excuses to skip devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I’m Doing Next:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Taking this exact framework to client work.&lt;/p&gt;

&lt;p&gt;When they ask for a redesign, I’ll say: “Let’s first measure how people use what you have. Find where they drop off. Then design the intervention.”&lt;/p&gt;

&lt;p&gt;Data first. Design second.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, I want you to try this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pick one tool you use daily.&lt;/p&gt;

&lt;p&gt;Track your behavior for 5 days.&lt;/p&gt;

&lt;p&gt;Find where YOU drop off.&lt;/p&gt;

&lt;p&gt;Fix that one constraint.&lt;/p&gt;

&lt;p&gt;You’ll learn more about product strategy in one week than reading 10 books.&lt;/p&gt;

&lt;p&gt;Then bring that thinking to your team. Watch what happens.&lt;/p&gt;

&lt;p&gt;Questions? Want to talk design strategy? Hit me up on X @mich_thedev&lt;/p&gt;

&lt;p&gt;Till next time.&lt;/p&gt;

</description>
      <category>uxdesign</category>
      <category>productdesign</category>
      <category>agency</category>
    </item>
    <item>
      <title>Who knew hiring could be so tiring?</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Thu, 01 Jan 2026 23:00:00 +0000</pubDate>
      <link>https://forem.com/themaker/who-knew-hiring-could-be-so-tiring-35lf</link>
      <guid>https://forem.com/themaker/who-knew-hiring-could-be-so-tiring-35lf</guid>
      <description>&lt;p&gt;My design collective is hiring a marketer to position our brand to clients.&lt;/p&gt;

&lt;p&gt;The original plan was to reach out to people in our circle, see if they had experience positioning tech products or services with a sprinkle of design/dev knowledge.&lt;/p&gt;

&lt;p&gt;After days of outreach, no candidates (I am still surprised I don’t have any marketers in my circle 😳).&lt;/p&gt;

&lt;p&gt;We knew the search would slow other projects down (our portfolio design would have to take a halt), so I volunteered to continue the recruitment while the rest of the team focused on our portfolio design.&lt;/p&gt;

&lt;p&gt;Back to the drawing board for me.&lt;/p&gt;

&lt;p&gt;Since I wanted to hire design-focused marketers, design-focused companies became my search ground.&lt;br&gt;
Figma, Linear and Rive were good fits. I would search among marketing team members or marketers who follow these companies at least.&lt;/p&gt;

&lt;p&gt;I quickly drew up a three step framework for recruitment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find marketers who follow these companies’ marketing team members on X.&lt;/li&gt;
&lt;li&gt;Score each candidate on their 

&lt;ul&gt;
&lt;li&gt;Audience quality (are their audience our target clients).&lt;/li&gt;
&lt;li&gt;Design/dev content understanding.&lt;/li&gt;
&lt;li&gt;Clarity expressed in their bio and posts they make.&lt;/li&gt;
&lt;li&gt;Lastly engagement quality.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reach out to them via DM and offer for them to join if they passed the test (scored 90 or higher)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I went through a good number of candidate’s X profiles.&lt;/p&gt;

&lt;p&gt;Every one of them failed the test.&lt;/p&gt;

&lt;p&gt;I saw profiles whose audience were simply not our target clients, showing no substantial design/dev content understanding.&lt;/p&gt;

&lt;p&gt;On the flip side, profiles with design/dev content understanding (the ones at Figma, Linear e.t.c) don’t get clients—they support an existing product that already has demand. Like product marketers 🤦‍♂️. &lt;/p&gt;

&lt;p&gt;Seeing all this, I made small changes to the framework:&lt;/p&gt;

&lt;p&gt;Firstly, re-defined the marketing role. The potential hire would generate inbound leads and build our collective’s presence on X and LinkedIn, so the role changed from Product Marketing to Growth Marketing.&lt;/p&gt;

&lt;p&gt;I joined a few Design/Agency communities such as Design Buddies, to reach out and connect with said Growth Marketer.&lt;/p&gt;

&lt;p&gt;Then offer for them to join if their portfolio was convincing.&lt;/p&gt;

&lt;p&gt;I’ve met promising candidates using this new strategy and after I take the next steps, I’ll tell you guys all about it.&lt;/p&gt;

&lt;p&gt;If you want to ask any questions or just have a talk with me, do reach out to me on X @mich_thedev.&lt;/p&gt;

</description>
      <category>hiring</category>
      <category>marketing</category>
      <category>uxdesign</category>
      <category>productdesign</category>
    </item>
    <item>
      <title>Effects of listening 🎧 to music while coding</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sun, 08 Oct 2023 06:01:00 +0000</pubDate>
      <link>https://forem.com/themaker/effects-of-listening-to-music-while-coding-43ag</link>
      <guid>https://forem.com/themaker/effects-of-listening-to-music-while-coding-43ag</guid>
      <description>&lt;p&gt;"Do you listen to music 🎵 while coding?"&lt;/p&gt;

&lt;p&gt;I was asked this question recently by a friend of mine.&lt;/p&gt;

&lt;p&gt;Well, I do it a lot, even though it is a bad habit.&lt;/p&gt;

&lt;p&gt;🤚 Don't get me wrong.&lt;/p&gt;

&lt;p&gt;Listening to music 🎶 is great. It can: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve your mood.&lt;/li&gt;
&lt;li&gt;Help reduce depression.&lt;/li&gt;
&lt;li&gt;And decrease anxiety.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But becomes a problem when you do it too often.&lt;/p&gt;

&lt;p&gt;Especially when listening to high-BPM music while doing work that you are required to be deeply immersed in.&lt;/p&gt;

&lt;p&gt;This leads to sensory overload, which is the overstimulation of one or more of the body's five senses. &lt;/p&gt;

&lt;p&gt;When our brains 🧠 are constantly bombarded with sensory information or have to process too much complex information, we become overwhelmed and exhausted.&lt;/p&gt;

&lt;p&gt;The solution to this?&lt;/p&gt;

&lt;p&gt;I recommend listening to Lo-Fi music while working. &lt;/p&gt;

&lt;p&gt;Lo-fi music is a genre that features mellow melodies and calming vibes, making it ideal for creating a relaxing atmosphere while studying and working.&lt;/p&gt;

&lt;p&gt;This type of music is often instrumental, with minimal lyrics, which can reduce distractions and help you improve concentration.&lt;/p&gt;

&lt;p&gt;Do like 👍 and 🏃 follow for more content.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Client-side data storage with IndexedDB</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sun, 01 Oct 2023 05:45:00 +0000</pubDate>
      <link>https://forem.com/themaker/client-side-data-storage-with-indexeddb-4k5p</link>
      <guid>https://forem.com/themaker/client-side-data-storage-with-indexeddb-4k5p</guid>
      <description>&lt;p&gt;IndexedDB is a well sophisticated database for persisting data in a user's browser.&lt;br&gt;
Although, there are other storage options like localStorage or Cookies, they are rather limited and cannot handle complex data types.&lt;/p&gt;

&lt;p&gt;In this article, we'll delve into what IndexedDB is and its key features, so get ready to learn something new today.&lt;/p&gt;

&lt;p&gt;What is IndexedDB?&lt;/p&gt;

&lt;p&gt;IndexedDB is a client side database for &lt;br&gt;
storing data directly in the the browser. It is based on the same origin policy, meaning that web pages of different domains cannot access the same IndexedDB database.&lt;/p&gt;

&lt;p&gt;An IndexedDB Database is simply a collection of object stores.&lt;/p&gt;

&lt;p&gt;So called object stores as their name implies are the storage of IndexedDB. It is where the actual data is stored. An IndexedDB database may have multiple object stores.&lt;/p&gt;

&lt;p&gt;An object store holds records which are key 🗝️-value pairs. The keys of an object store can be a string, date, float, a binary blob, or an array.&lt;/p&gt;

&lt;p&gt;Objects that can be stored must support the structured clone algorithm.&lt;/p&gt;

&lt;p&gt;Haven't heard of the structured clone algorithm 🤔?&lt;/p&gt;

&lt;p&gt;The structured clone algorithm is a mechanism that JavaScript engines use when copying objects using certain APIs. These objects can be arrays, maps, sets, objects and other built-in JavaScript data types (with the exception of functions, DOM nodes and Error objects).&lt;/p&gt;

&lt;p&gt;The IndexedDB API uses many requests for its operation. What do I mean?&lt;/p&gt;

&lt;p&gt;An IndexedDB API usage can happen in these steps: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You send a request to open a connection to the database. This request can either fail or succeed, so you can add event listeners 👂 to the success event.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inside the success event handler, you create a transaction, get an object store from the transaction, then add or delete data to the object store. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: every attempt to add, delete or update data in an IndexedDB database object store must be wrapped 🎁 in a transaction 😲.&lt;/p&gt;

&lt;p&gt;Now, what is a transaction? &lt;/p&gt;

&lt;p&gt;A transaction is a group of operations to be performed on a database that should either all succeed or all fail. If you’re doing a lot of writes to an object store, it’s much faster if they happen in one transaction.&lt;/p&gt;

&lt;p&gt;This is just the surface level of the IndexedDB API ad want it can do. &lt;/p&gt;

&lt;p&gt;If you would like me to explain more about IndexedDB and other client-side storage options, you can tell me in the comments.&lt;/p&gt;

&lt;p&gt;Image credits: &lt;a href="https://dribbble.com/mattandersondesign" rel="noopener noreferrer"&gt;Matt Anderson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do like 👍 and follow 🏃 for more content.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>database</category>
    </item>
    <item>
      <title>🛑 Stop learning many frameworks.</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Tue, 26 Sep 2023 05:45:00 +0000</pubDate>
      <link>https://forem.com/themaker/stop-learning-many-frameworks-1dak</link>
      <guid>https://forem.com/themaker/stop-learning-many-frameworks-1dak</guid>
      <description>&lt;p&gt;I have a confession...&lt;/p&gt;

&lt;p&gt;While starting out as a software developer, I jumped from React to Solid and back and forth. Then, eventually, I'd abandon the project I was working on.&lt;/p&gt;

&lt;p&gt;I fell victim to learning many stacks at once.&lt;/p&gt;

&lt;p&gt;There was no clarity.&lt;/p&gt;

&lt;p&gt;I didn't have a clear roadmap.&lt;/p&gt;

&lt;p&gt;I learnt that I should focus on building something I truly resonated with, something that really solved a problem I had.&lt;/p&gt;

&lt;p&gt;So I stuck with that for some time.&lt;/p&gt;

&lt;p&gt;After a while: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I realized that my consistency to work on one project had 10xed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I was learning better and understanding concepts quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I had better project management skills.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach led me to finishing a note taking PWA successfully (link 🖇️ in the comments). Which I am so glad about.&lt;/p&gt;

&lt;p&gt;What to learn from this?&lt;/p&gt;

&lt;p&gt;You can build software with any language, any framework you want to use. Just pick one and stick with it.&lt;/p&gt;

&lt;p&gt;Good luck on your software developer journey 🛣️.&lt;/p&gt;

&lt;p&gt;Do like 👍 and follow 🏃 for more content.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Looping over a reactive array in NixixJS</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sun, 24 Sep 2023 06:45:00 +0000</pubDate>
      <link>https://forem.com/themaker/looping-over-a-reactive-array-in-nixixjs-40j7</link>
      <guid>https://forem.com/themaker/looping-over-a-reactive-array-in-nixixjs-40j7</guid>
      <description>&lt;p&gt;Looping over elements in an array is a very useful technique for programmers to know.&lt;br&gt;
It is essential when manipulating the DOM, as I mentioned in my last post, how all JavaScript developers should know how to manipulate the DOM. &lt;/p&gt;

&lt;p&gt;Fortunately, JavaScript provides developers with many different ways of performing this operation seamlessly, but that is beyond the scope of this post.&lt;/p&gt;

&lt;p&gt;In this post, I will explain how to loop over a reactive array(an array which it's elements change when state changes) in NixixJS using the built-in 'For' component.&lt;br&gt;
Be sure to keep reading because you will learn something new by the end of this post.&lt;/p&gt;

&lt;p&gt;✔️ First, create a component that returns some JSX to create the UI.&lt;/p&gt;

&lt;p&gt;✔️ Next, create a reactive array(also known as a store) with the 'callStore' function exported by the 'nixix/primitives' module; The function returns a tuple which the first element is the argument passed to it and the second is the setter function for the store.&lt;/p&gt;

&lt;p&gt;✔️ Third, import the For component from the 'nixix/hoc' module; You can use the component in your code as it is used in the example below.&lt;/p&gt;

&lt;p&gt;The For component requires three props - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The each prop: is the reactive array. &lt;br&gt;
Behind the scenes, the For component &lt;br&gt;
appends an effect which is called when &lt;br&gt;
the length of the reactive array changes.&lt;br&gt;&lt;br&gt;
The effect does not replace old nodes&lt;br&gt;&lt;br&gt;
with new ones when the array changes, &lt;br&gt;
rather it creates reusable DOM nodes &lt;br&gt;
and uses the DocumentFragment Web &lt;br&gt;
API to append new nodes to reduce the &lt;br&gt;
DOM reflow time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The children prop: is only one callback &lt;br&gt;
that returns the nodes to be shown when &lt;br&gt;
the reactive array is looped over.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The fallback prop: is the node to be shown when the length of the array is 0. This prop is optional.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the example below, when the nodes are first created, three divs will be shown in the DOM. The next time - when the button is clicked and the reactive arrays length changes is '2', the first two of the formerly created divs are still shown in the DOM, with their props updated, and then the third div will be cached(removed from the DOM and kept in memory) for later use without destroying it wasteful recreating and replacing existing DOM nodes.&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%2Fzgcyugip2zjs2demqmik.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%2Fzgcyugip2zjs2demqmik.png" alt="Snappify code example" width="800" height="899"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is just the tip of the iceberg of how the For component works, there is a plethora of exciting features to learn about. You can ask me about them in the comments below 😉. &lt;/p&gt;

&lt;p&gt;Do like 👍 and follow  🏃 for more content.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>nixix</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Benefits of note taking...</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sat, 23 Sep 2023 12:53:49 +0000</pubDate>
      <link>https://forem.com/themaker/benefits-of-note-taking-2e5a</link>
      <guid>https://forem.com/themaker/benefits-of-note-taking-2e5a</guid>
      <description>&lt;p&gt;My productivity was dead...&lt;/p&gt;

&lt;p&gt;I was spending hours working without recovering and getting nothing done.&lt;/p&gt;

&lt;p&gt;After 2 weeks: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I had more focus and motivation to work.&lt;/li&gt;
&lt;li&gt;I was working 3 hours a day and getting more done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's how I did it:&lt;/p&gt;

&lt;p&gt;First, I started bedtime writing ✍️.  This helped me sleep faster 😴 and get me motivated to do what I wrote when I woke up.&lt;/p&gt;

&lt;p&gt;Second, writing easily achievable and few goals. The trick is to make your brain 🧠 think you have less work, thereby putting all your focus on what you have to do without feeling overwhelmed. It's a rule of thumb "Greater focus plus fewer goals equals the best result".&lt;/p&gt;

&lt;p&gt;You can try it out and comment what your experience was like below 👇.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
    <item>
      <title>Making the Dummy Component</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Mon, 13 Feb 2023 14:21:09 +0000</pubDate>
      <link>https://forem.com/themaker/making-the-dummy-component-3i1o</link>
      <guid>https://forem.com/themaker/making-the-dummy-component-3i1o</guid>
      <description>&lt;p&gt;In the last part of this series, we made the Navbar component which returns a nav element that has reactive variables. So in this part, I will explain the Dummy component. You may be wondering why it's called a "Dummy"; this is because this component will return some style dummy text i.e (Lorem ipsum dolor...).&lt;/p&gt;

&lt;p&gt;Let's get started!!!&lt;/p&gt;

&lt;p&gt;First, make a file called 'Dummy.svelte' in the lib directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;touch &lt;/span&gt;Dummy.svelte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We are going to create two h3 elements that have some text inside them and style the elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dummy.svelte&lt;/strong&gt;&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;h3&amp;gt;&lt;/span&gt;
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum quia quas voluptate assumenda quae ipsum incidunt, temporibus ducimus molestias, atque sunt amet sequi distinctio enim nostrum dolorum, culpa deleniti animi!
  &lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;
    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nulla dolor architecto facere expedita amet ex eum. Odit magni repellendus consequatur beatae. Animi voluptates quo, accusamus consequuntur soluta deserunt eius iure?
  &lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;h3&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;0&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.3&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="s2"&gt;'Trebuchet MS'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;z-index&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;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="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that the h3 has a CSS z-index property of '0' and a position of 'relative'. In the &lt;a href="https://dev.to/michthebrandofficial/making-the-navbar-component-945"&gt;Navbar component&lt;/a&gt; we set the z-index of the 'nav.nav-bar' element to 1. We did this so that the  nav element will stay on top of the dummy text when it appears. To better understand what I mean, here's a link to the &lt;a href="https://css-tricks.com/almanac/properties/z/z-index/" rel="noopener noreferrer"&gt;CSS z-index property&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Tip for VSCode users: type 'lorem' and hit tab to give you some dummy text. Powered by Emmet.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To test this in the browser, we will render the component we just made. Let's go into App.svelte and import 'Dummy', declare and import some styles in App.css. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App.svelte&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Dummy&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./lib/Dummy.svelte&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;main&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;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Dummy&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that we did not declare any exports in the 'Dummy.svelte' file, that is just how svelte works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App.css&lt;/strong&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="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#000&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="no"&gt;whitesmoke&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;strong&gt;main.js&lt;/strong&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.svelte&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="s1"&gt;./App.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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;App&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, we have just made the main element have a padding of 5px to give some space from the sides. Type in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click on the 'localhost:5173/' to see it in your browser.&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%2Fs0f1efl8wp6wkdd45jf5.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%2Fs0f1efl8wp6wkdd45jf5.png" alt="Dummy text" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is it for the Dummy component, in the next part we will  import the Navbar component into App.svelte and finish up the navigation bar.&lt;/p&gt;

&lt;p&gt;Thank you for reading and stay tuned for the next part.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Making the Navbar component</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sat, 11 Feb 2023 14:18:26 +0000</pubDate>
      <link>https://forem.com/themaker/making-the-navbar-component-945</link>
      <guid>https://forem.com/themaker/making-the-navbar-component-945</guid>
      <description>&lt;p&gt;In this tutorial, we will be using SvelteJS for interactivity, CSS for styling and boxicons for icons to make a navigation bar that hides when a user scrolls down and appears when a user scrolls up on a mobile device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What we will be making&lt;/em&gt;&lt;/strong&gt;&lt;br&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%2Fe0vw58ahrf0pp99z5zuh.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%2Fe0vw58ahrf0pp99z5zuh.png" alt="navbar" width="376" height="557"&gt;&lt;/a&gt;&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%2Ff0hqmebgs73a2hstmimg.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%2Ff0hqmebgs73a2hstmimg.png" alt="non-navbar" width="375" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get started with this project, you have to install Svelte with npm. That is, if you haven't already. If you have not, type this in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  npm create svelte@latest my-hidden-navbar 
  &lt;span class="nb"&gt;cd &lt;/span&gt;my-hidden-navbar 
  npm &lt;span class="nb"&gt;install 
  &lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will download the all the Svelte dependencies and devDependencies into a node_modules directory and 'npm run dev' command will open up a development server that you can click on to view in the browser. Also, if you are using VSCode, you can download the 'Svelte for VSCode' extension to get syntax highlighting and intellisense for Svelte components.&lt;/p&gt;

&lt;p&gt;That is it for the configuration, time to get coding.&lt;br&gt;
In the terminal, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;cd &lt;/span&gt;src &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; lib &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;mkdir &lt;/span&gt;lib
  &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; App.css App.svelte &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;touch &lt;/span&gt;App.css App.svelte 
  &lt;span class="nb"&gt;cd &lt;/span&gt;lib &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;touch &lt;/span&gt;Navbar.svelte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navbar.svelte will be the main component that will have our navigation bar. To make the navbar, our component will have a script tag for the functionality, a style tag for the CSS styling and a nav element that with a child ul element inside of it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navbar.svelte&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;icons&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bx bx-home&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bx bx-info-circle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bx bx-user-circle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bx bx-message-dots&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;let&lt;/span&gt; &lt;span class="nx"&gt;opacity&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;let&lt;/span&gt; &lt;span class="nx"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we have an array of strings that are actually boxicon classes which we will loop over to make icons; and two exported variables, which we will talk about later. They are called props by the way.&lt;/p&gt;

&lt;p&gt;Next is the template syntax for our component. Add this to the Navbar.svelte. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navbar.svelte&lt;/strong&gt;&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;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav-bar"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"opacity: {opacity}; bottom: {bottom};"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav-bar_nav"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      {#each icons as icon}
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;i&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;{icon}&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 35px;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      {/each}
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code block contains a nav element with a utility class which has a child ul element. The nav element has the opacity and bottom CSS properties in curly braces to interpolate the variables 'opacity' and 'bottom' as the values, so that when ever the values change, the CSS properties will update with the new values. What I mean:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The variables and their values in the script tag.&lt;/strong&gt;&lt;br&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%2Fxx7eoh21by4ubd9l5ue2.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%2Fxx7eoh21by4ubd9l5ue2.png" alt="opacity and bottom variables in script" width="621" height="273"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;The values interpolated into the CSS properties.&lt;/strong&gt;&lt;br&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%2F640gcq1igwi0zkv8slfp.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%2F640gcq1igwi0zkv8slfp.png" alt="bottom and opacity interpolated" width="579" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the values change&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The new variable values in the script tag.&lt;/strong&gt;&lt;br&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%2Fjz227qhzz34hhv3ustzy.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%2Fjz227qhzz34hhv3ustzy.png" alt="new values" width="613" height="276"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;The new values interpolated into the CSS properties.&lt;/strong&gt;&lt;br&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%2Ftdxatny51pwuy8dms2oy.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%2Ftdxatny51pwuy8dms2oy.png" alt="interpolated" width="618" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The block that starts and ends with '{each}' is called an 'each block' and is very similar to the 'for loop' in VanillaJS. It is mainly used for making lists and iterating over arrays. This code appears weird at first glance, but is really just a way of saying 'for each of the values in the icons array, make an li element which has a child i element with the class of the current value in the icons array'. For example, the first iteration will produce:&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;li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bx bx-home"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 35px;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last part is styling our component. This can be done in various ways- by writing the styles directly in a style tag or writing the styles in a separate CSS file and importing it inside the script tag of our component. &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%2Fuc559dx1j8rmaola2irs.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%2Fuc559dx1j8rmaola2irs.png" alt="Import CSS stylesheet" width="679" height="382"&gt;&lt;/a&gt;&lt;br&gt;
But, we will be writing our's in a style tag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navbar.svelte&lt;/strong&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;margin&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;padding&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;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.nav-bar&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;80%&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;65px&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="no"&gt;orangered&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;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;margin&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;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15px&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;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-10%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;transition-property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;transition-duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;transition-timing-function&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&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;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.nav-bar_nav&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="m"&gt;100%&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;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;list-style-type&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="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;space-around&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&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;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the styling, I will explain the main properties we set on the elements. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We set all the elements to have a padding and margin of 0 and a box-sizing of 'border-box'. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we want the nav element to be 80% of the width of the body element and to have a height of 65px, padding of 15px, border-radius of 15px to make the corners rounded, a postion of 'fixed', so it stays in the same position when it appears, and a z-index of '1' to make it stay ontop of the main content. Left and transform properties of '50%' and 'translateX(-50%)' respectively to center the navbar horizontally,  bottom of '-10%' to make the navbar stay at the bottom when it is not visible (I will explain how it will later). Now, for the transition, the transition-property to 'opacity' and 'bottom', duration of 0.5s and timing-function of 'ease' so the transition goes smoothly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lastly, for the ul element, width and height of '100%', display of 'flex', list-style-type of 'none' so we can override the bullet point style, justify-content of 'space-around' to give the icons some space around themselves and align-items of 'center' to align them vertically in the center. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the next post of this series, we will make a component to render some dummy text(lorem ipsum...) and I will explain how the Navbar component will be connected to the dummy text component. Thank you for reading!!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>podman</category>
      <category>bash</category>
      <category>linux</category>
    </item>
    <item>
      <title>Should I really make my project open source???</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Mon, 23 Jan 2023 21:33:19 +0000</pubDate>
      <link>https://forem.com/themaker/should-i-really-make-my-project-open-source-5764</link>
      <guid>https://forem.com/themaker/should-i-really-make-my-project-open-source-5764</guid>
      <description>&lt;p&gt;I want to make a recent project of mine open-source, but I am not really sure on how to get people to know and help me on the project, in fact, I have never really done any open source project before.&lt;/p&gt;

&lt;p&gt;If you have an answer to my question, please answer in the comment section. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Debugging "Fatal: remote end hung up unexpectedly" problem in git terminal.</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Tue, 20 Dec 2022 10:48:37 +0000</pubDate>
      <link>https://forem.com/themaker/debugging-fatal-remote-end-hung-up-unexpectedly-problem-in-git-terminal-56cf</link>
      <guid>https://forem.com/themaker/debugging-fatal-remote-end-hung-up-unexpectedly-problem-in-git-terminal-56cf</guid>
      <description></description>
      <category>nosql</category>
      <category>database</category>
    </item>
    <item>
      <title>How do you deploy a React app on digitalocean?</title>
      <dc:creator>mich_thedev</dc:creator>
      <pubDate>Sun, 18 Dec 2022 18:07:37 +0000</pubDate>
      <link>https://forem.com/themaker/how-do-you-deploy-a-react-app-on-digitalocean-1o2b</link>
      <guid>https://forem.com/themaker/how-do-you-deploy-a-react-app-on-digitalocean-1o2b</guid>
      <description></description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
