<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roy Weru</title>
    <description>The latest articles on DEV Community by Roy Weru (@roy_weru).</description>
    <link>https://dev.to/roy_weru</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%2F1116144%2F68506c88-9873-4abf-b724-55ae1a1ac525.jpg</url>
      <title>DEV Community: Roy Weru</title>
      <link>https://dev.to/roy_weru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roy_weru"/>
    <language>en</language>
    <item>
      <title>Memorizing on my first days learning how to code..</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Fri, 11 Oct 2024 19:54:13 +0000</pubDate>
      <link>https://dev.to/roy_weru/memorizing-on-my-first-days-learning-how-to-code-1he1</link>
      <guid>https://dev.to/roy_weru/memorizing-on-my-first-days-learning-how-to-code-1he1</guid>
      <description>&lt;p&gt;Today, I found myself pondering what it truly means to be a beginner in the world of coding. A newbie might wonder: Is coding really that difficult? Is programming—essentially giving instructions to a computer—some kind of magic?&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%2Fnwvz14pwjyedohd1j9py.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwvz14pwjyedohd1j9py.gif" alt="Image description" width="168" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;I'm going to answer these questions to the best of my ability&lt;/strong&gt;&lt;/em&gt;, drawing from personal experience, which I believe will give the most honest perspective. I remember the first piece of code I ever wrote in HTML—it was three years ago. It was a simple H1 tag that said, 'Hello, world!' (Of course, right? 😂). I was so excited to work on a YouTube clone, thanks to a tutorial. I felt like a genius! The best part was launching the website live using the 'Live Server' extension—my very first VS Code extension. Every time I hit Ctrl + S, the page would refresh instantly. Man, that feeling was exhilarating! From designing buttons, padding divs, to styling paragraphs, it all felt like magic. I used to wonder how web and mobile applications worked—it seemed so mysterious. Honestly, creating my first website felt like an achievement reserved for geniuses, something I never thought a regular person like me could do 😂😂👨🏾‍💻.&lt;/p&gt;

&lt;p&gt;As I ventured deeper into the world of programming, writing, and deploying code, I began to realize something:_ coding isn't reserved for 'very smart people' or geniuses._ Instead, the coding world is &lt;em&gt;built for those who are tough, resilient, and mentally strong&lt;/em&gt;—not for the faint-hearted. When I created my first application, I was nearly convinced that I’d land my first job or get paid for a project within days. But after a year or so, reality hit hard🥲🥲. I learned that to be good at coding, you first have to struggle and, quite frankly, suck at it🤨 .&lt;br&gt;
Yep, '&lt;em&gt;to be good at it, you have to suck at it&lt;/em&gt;'—that's the phrase I'd tell any beginner seeking guidance in this field. The best programmers are the ones who have faced the most bugs and errors. You will be surprised to find out that even the most experienced ones still have some learning to do and they google for solutions .To achieve and truly learn, you have to make mistakes—there’s no way around it. You'll encounter bugs that might take days, even weeks, to solve. When you finally crack the code, it feels like a major victory, but that joy is short lived. Before long, you’re staring down another bug or challenge, forcing you back to the drawing board to rethink your approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The journey to becoming a great programmer mirrors life itself—it's full of challenges.&lt;/strong&gt; Ever wonder why so many developers give up so quickly? It’s because the lack of motivation and the weight of constant setbacks can be overwhelming. The truth is, you’re not going to land your dream job overnight. You won’t become a 100x developer in a snap. It takes time, experience, and a level of commitment that many beginners struggle to embrace.&lt;br&gt;
Watching a single tutorial on HTML, CSS, or React won’t land you a job. As a web developer, one thing that helped me grow was paying close attention to the websites I visit every day. Take LinkedIn, for example—try to figure out how they enable users to upload videos, files, and pictures. What backend technologies might they use? How can I implement similar features in my application? Should I use Amazon's S3 or another service for file uploads? When you visit your favorite online store, ask yourself: How do their filters work? How am I able to search for a specific product? What technologies do they use to fetch products and sort them into categories? These questions are crucial for understanding real-world web development and pushing yourself beyond the basics.&lt;/p&gt;

&lt;p&gt;Working on projects that solve real-world problems is the true start of your journey to success as a developer. It’s not just about a sleek interface or beautiful design—it’s about what the system actually does. When you shift your focus to creating solutions that have real-world applications, you’ll naturally start to level up your skills. You’ll learn more, expand your thinking, and ultimately stand out. As I mentioned before, bugs and errors are inevitable, so don’t give up when you hit those roadblocks. I’ve had countless sleepless nights designing databases, wrestling with what to include, what to leave out, and what’s truly necessary. Wrapping my head around these decisions often leaves me with headaches! But whenever I’m on the verge of quitting, I remind myself: nothing worthwhile comes easy, and neither should this. So, keep pushing forward.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>juniordev</category>
      <category>softwaredevelopment</category>
      <category>developer</category>
    </item>
    <item>
      <title>Demystifying Django, how I built this simple blog application with the Django framework...🙌🙌💯💯</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Thu, 15 Feb 2024 05:22:22 +0000</pubDate>
      <link>https://dev.to/roy_weru/demystifying-django-how-i-built-this-simple-blog-application-with-the-django-framework-5akg</link>
      <guid>https://dev.to/roy_weru/demystifying-django-how-i-built-this-simple-blog-application-with-the-django-framework-5akg</guid>
      <description>&lt;p&gt;Hey there fellow developers and tech enthusiasts, have you ever heard about the Django framework. Lets work together to create this simple blog application with a step by step guide..&lt;/p&gt;

&lt;p&gt;You have to be familiar with the Django framework and have some experience with it. We start off by initializing the virtual env, I use the pipenv and I will be using visual studio code as my editor for this tutorial.&lt;/p&gt;

&lt;p&gt;If you don't have pipenv installed start by running the following command &lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install pipenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;once pipenv is installed choose a directory for your project you can use the mkdir command to create a new directory or navigate to a new directory using the cd e.g&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd desktop
mkdir Django-blog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After choosing the directory run the command &lt;br&gt;
&lt;code&gt;pipenv install django&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Wait for Django to be installed and all the requirements, after this is done run the command &lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will generate a requirements.txt folder which will be very useful later on.&lt;/p&gt;

&lt;p&gt;Make sure you have navigated to your new directory in which you are going to work in. If you were working on your terminal and want a shortcut make sure you are in the directory you want to open and if not you can access using the cd command and once you in the directory you want to open run the command code .&lt;/p&gt;

&lt;p&gt;They are other options to create a virtual environment but I prefer to use the pipenv as it is much simpler and more modern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;LETS NOW BEGIN WORKING ON THE PROJECT&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you followed my guide on using the pipenv you should be seeing something like this:&lt;/p&gt;

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

&lt;p&gt;If you have those two important files you are completely on the right path and you can initialize your project&lt;/p&gt;

&lt;p&gt;&lt;code&gt;django-admin startproject your-project-name .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The full stop at the end will avoid creating two directories with the same name which mostly leads to confusion. You can run&lt;br&gt;
&lt;code&gt;py manage.py runserver&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;on your terminal to test and see if everything is ok and your website is running live. &lt;/p&gt;

&lt;p&gt;We will need to have another whole "app" in our project which will act as new directory similar to the one created on initializing the project. This will be great to work with as Django give one the opportunity and flexibility to divide a big project into many other independent small sections which one can handle and be able to manage even very huge projects. Run the following command on your terminal.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python manage.py startapp your-app-name&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Make sure you assign a different name, personally this is how my directories look like:&lt;/p&gt;

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

&lt;p&gt;This will now come in hand when it comes to managing our modules and more. Navigate to your setings.py in the root directory and head over to the INSTALLED_APPS and add your new app.&lt;/p&gt;

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

&lt;p&gt;Head over to the urls.py to configure your urls to include the urls that you will have on your new app directory:&lt;/p&gt;

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

&lt;p&gt;Now make sure you have models.py, urls.py and views.py on your admin directory.This is how the urls.py in the new app directory will be looking like:&lt;/p&gt;

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

&lt;p&gt;Let's create the models.py :&lt;/p&gt;

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

&lt;p&gt;We create a class called Post and Topic and we define our models as I have done. I have also added authentication to my blog website and a video of how it operates &lt;a href="https://youtu.be/yrBwf1CZBTc"&gt;Link to video&lt;/a&gt;. I cannot be able to complete the whole tutorial with this one blog so I have a part two blog which will elaborate more and finish on the tutorial&lt;/p&gt;

</description>
      <category>django</category>
      <category>webdev</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>What does it mean to be a developer?</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Sun, 11 Feb 2024 17:25:29 +0000</pubDate>
      <link>https://dev.to/roy_weru/what-does-it-mean-to-be-a-developer-4f1e</link>
      <guid>https://dev.to/roy_weru/what-does-it-mean-to-be-a-developer-4f1e</guid>
      <description>&lt;p&gt;Today I asked myself the question, &lt;em&gt;&lt;strong&gt;what does it really means to be a web developer/software developer/programmer?&lt;/strong&gt;&lt;/em&gt; A new bee might also ask is it really hard to code or program or give instructions to a computer, is it some kind of magic?&lt;/p&gt;

&lt;p&gt;I’m going to answer this questions to the best of my ability and from my own personal experience, this I think will be the most honest answer and view. I reminisce on the first code that I wrote in HTML ( that was 3 years ago). It was a H1 tag with the statement "hello world!" 😂😂 obviously. I was very excited on working on a YouTube clone with the help of a tutorial of course. I felt as if I was this kind of genius and the most awesome part was being able to launch the website live using the ‘live server extension’ that was the  first vs code extension I downloaded. Whenever I pressed on the Ctrl key + S on my keyboard it automatically reloaded and refreshed the page. Men! I tell you it was so exciting and satisfying, from designing the buttons and padding the divs to styling the paragraphs, it was something that always seemed like magic to me. I used to think and wonder how web applications, mobile applications work and think it is magic. Creating my first website to be honest was almost something I never thought a normal human being but only geniuses were able to achieve.&lt;/p&gt;

&lt;p&gt;_As I began to venture more into the world of programming , writing ,deploying code _I began to realize some things about the field and that actually coding was not really meant for ‘very smart people’ or geniuses. The software development field was actually meant for the tough, mentally strong and not the ‘soft hearted or the give up easily type’. On creating my first application I was almost close to certain that I would land a first job or get my first paycheck on a project within a few days .It took me an year or so to be hit by the harsh reality that to be good at it you have to suck at it.&lt;/p&gt;

&lt;p&gt;Yep,” &lt;strong&gt;to be good at it you have to suck at it&lt;/strong&gt; “ , that’s the phrase I would tell any beginner in the field who would seek for some kind of guidance .** The best programmers are those that have dealt with the most programming bugs and errors**.&lt;/p&gt;

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

&lt;p&gt;In order to achieve and learn something you have to make mistakes and I use the phrase “have to”. Bugs and errors that last for days and might even make you quit are the real teachers. The journey of becoming a great programmer is actually like life itself which comes with a lot of ups and downs. Watching one tutorial about the basics of HTML CSS or React is not going to make be that programmer that you desire to be. You really have to ask yourself   a question what kind of applications do I interact with everyday? If I’m able to upload a profile picture or a video or a file and submit how did the developers achieve that? How I’m  I able to subscribe to Netflix ,medium what kind of code or technology do they use? How can I create an application in the real world that users will be able to accomplish various tasks, uploads images receive feedback emails ? &lt;/p&gt;

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

&lt;p&gt;Working on projects that can actually solve problems in the real world as a developer is the beginning of your path to success. It’s not just about the simple interface or the beautiful design it’s actually what the system can do. With this view you will start focusing more on projects that actually make a difference and you will not just be any other developer but one who can actually make an impact. It will make you learn a lot more and expand your horizons of reasoning and you will surely stand out. As I mentioned on bugs and errors this are part of the process to getting somewhere. I almost get sleepless nights trying to design my database and thinking of what to include what to leave out, what would be appropriate and what will not be of need e.t.c…trying to wrap my head around this things can at times leave you with headaches. Whenever I’m about to quit I remind myself its not really easy and nothing great should &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>sotware</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>The job market for software developers in 2024</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Sat, 03 Feb 2024 19:40:54 +0000</pubDate>
      <link>https://dev.to/roy_weru/the-job-market-for-software-developers-in-2024-2bhp</link>
      <guid>https://dev.to/roy_weru/the-job-market-for-software-developers-in-2024-2bhp</guid>
      <description>&lt;p&gt;In the sunny dystopian year of 2024, the job market for software developers is abuzz – kind of like how your phone buzzes when you get a text. Only, this time, it's buzzing with opportunity. Now, developers are no longer just locked within the confines of writing code for mobile apps or designing websites; they are the smack-dab in the middle of some cool, almost science-fiction-like, evolution in technology. &lt;br&gt;&lt;br&gt;Remember that scene from Transcendence when Johnny Depp becomes an AI? Well, we are not there yet, but developers are making some serious headway in the realm of AI and machine learning. As businesses are going digital at a pace faster than Usain Bolt can run, no one can quench their thirst for data analytics, predictive algorithms, and automating processes. Who’s the new-age hero quenching this thirst? You guessed it right - software developers. &lt;br&gt;&lt;br&gt;2024 has also given developers a turbo boost to transcend the traditional domain boundaries. Health-tech, Edutech, Agri-tech - you name it, and there’s a high demand for skilled developers. One day you could be putting your coding skills to work to improve a Fitness App, and the next, you might find yourself creating a virtual farming assistant. Now, how's that for diversity. &lt;br&gt;&lt;br&gt;Ah, and did we talk about the burgeoning gig economy? Well, if you still picture yourself in a 9-to-5 routine, it’s time for a reality check. Companies are bidding a fond farewell to geographical limitations, and thus, remote work is no longer a perk but a norm. So, you could be chilling on the beaches in Bali with a margarita in one hand and your laptop in the other. Just remember to get your time zones right! &lt;br&gt;&lt;br&gt;One field that seems to be gaining momentum is Cybersecurity. As Dennis Hughes from the FBI once said, "The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one." In 2024, developers who can crack codes while preventing others from doing the same are more valuable than ever before. &lt;br&gt;&lt;br&gt;Furthermore, a new trend is emerging for developers to have a wide berth of soft skills. Being able to communicate effectively and work in teams is becoming as important as writing a slick piece of code. Employers are looking for versatility – someone who can code, design, innovate, and play nice with others. &lt;br&gt;&lt;br&gt;So, if there's any takeaway here, it's that being a software developer in 2024 is not just about being a code ninja anymore. It’s about understanding and leveraging technology to make the world a better place. It’s about wearing multiple hats and delivering quality solutions across domains. And, most importantly, it’s about ensuring that should an AI like Johnny Depp's ever come to life, it’s friendly. &lt;br&gt;&lt;br&gt;The job market for software developers is zestier, merrier, and more exciting than ever before. It’s a smorgasbord of opportunity: dig in, enjoy the spread, and never stop learning. It's an excellent time to break out of the shell, keep your skills razor-sharp, and ride this wave. After all, the future is now, and it’s coded. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>softwaredevelopment</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>The web developer roadmap for 2024:</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Wed, 31 Jan 2024 18:06:34 +0000</pubDate>
      <link>https://dev.to/roy_weru/the-web-developer-roadmap-for-2024-3gf9</link>
      <guid>https://dev.to/roy_weru/the-web-developer-roadmap-for-2024-3gf9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Web development&lt;/strong&gt; is a rapidly evolving field, and staying up-to-date with the latest technologies and trends is essential for success. In this article, we’ll explore the web developer roadmap for 2024, covering the basics of web development, the tools and technologies to learn, and the tips for preparing for the job market.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is web development?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Web development is the process of creating a digital environment that is intuitive, responsive, and engaging. It involves combining the aesthetics of frontend development and the functionality of backend development, using technologies like HTML, CSS, JavaScript, and frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The role of web developers&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Web developers are responsible for creating websites and applications using frontend and backend technologies. They work with clients, designers, and other developers to ensure that the final product meets the requirements. They also test, debug, and deploy code to ensure that it is working correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How long does it take to become a web developer?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learning the basics of HTML, CSS, and JavaScript can take anywhere from 3 to 6 months. Building simple websites and learning advanced topics can take 1 to 2 years. Choosing the right framework and learning backend development can take additional time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Tools for web development _&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Text editors like Visual Studio Code, Sublime Text, Atom, and JetBrains are popular choices for web developers. They offer features like auto-completion, syntax highlighting, extensions, and keyboard shortcuts. GitHub is a popular platform for code repositories, version control, collaboration, and hosting.&lt;br&gt;
_&lt;br&gt;
HTML, CSS, and JavaScript HTML_ is used for structuring web pages, using semantic markup and elements. CSS is used for styling web pages, using layout techniques like flexbox and grid. CSS preprocessors like Sass and frameworks like Bootstrap, Materialize, and Tailwind can help streamline the development process. JavaScript is used for creating dynamic user experiences, using core concepts and modern features. TypeScript can be used to add static typing to JavaScript, improving code quality and reliability.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;JavaScript frameworks and libraries React, Vue, Svelte, and Angular&lt;/em&gt; are popular choices for creating modern web applications. React is known for its component-based architecture and reusable UI elements. Vue is known for its progressive framework and approachable learning curve. Svelte is known for shifting the work to compile time and reducing the need for virtual DOM diffing. Angular is known for its support for complex applications and TypeScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Preparing for the job market&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To prepare for the job market, it’s important to show your potential by building projects, pushing code to &lt;em&gt;GitHub&lt;/em&gt;, and showcasing your work. Having strong problem-solving skills and knowing data structures and algorithms is also important. Learning how to use terminal, git, and developer tools is essential. Exploring backend development and learning server-side languages and databases can also be beneficial.&lt;/p&gt;

&lt;p&gt;I hope this helps! Let me know if you have any other questions....👨🏾‍💻👨🏾‍💻👨🏾‍💻💯💯&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>coding</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Rising Era of AI: How Artificial Intelligence is Taking Over the Coding World and Transforming Programming Jobs</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Thu, 04 Jan 2024 12:39:17 +0000</pubDate>
      <link>https://dev.to/roy_weru/the-rising-era-of-ai-how-artificial-intelligence-is-taking-over-the-coding-world-and-transforming-programming-jobs-5bhh</link>
      <guid>https://dev.to/roy_weru/the-rising-era-of-ai-how-artificial-intelligence-is-taking-over-the-coding-world-and-transforming-programming-jobs-5bhh</guid>
      <description>&lt;p&gt;&lt;strong&gt;_The Impact of AI on Programming Jobs&lt;/strong&gt;_&lt;/p&gt;

&lt;p&gt;In recent years, programming has been shaping the world as we know it in a constantly evolving way. Nevertheless, with the advent of artificial intelligence (AI), the question arises: Will AI replace programmers in the future?&lt;/p&gt;

&lt;p&gt;Advancements in AI and Programming&lt;/p&gt;

&lt;p&gt;Artificial intelligence has already made remarkable strides in various industries, and programming is no exception. AI-powered tools and technologies are being developed to streamline and automate various aspects of the programming process. From code generation to bug fixing, AI is revolutionizing the way programmers work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Automation and Efficiency in Programming&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI has the potential to automate repetitive and mundane programming tasks, enabling programmers to focus on more creative and complex problem-solving. With AI algorithms capable of writing code, developers can leverage these tools to accelerate development cycles and increase productivity. However, this doesn't necessarily mean that programmers will become obsolete.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evolution of Programming Roles&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While AI can automate certain programming tasks, it cannot replicate the creative thinking, intuition, and domain expertise that human programmers bring to the table. As AI takes over routine tasks, programmers will need to adapt and embrace new roles that involve overseeing AI systems, designing complex algorithms, and applying their expertise to tackle challenging problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-Powered Tools for Programmers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UWkuw0xP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/83g2x4jiyjx03yuxurzz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UWkuw0xP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/83g2x4jiyjx03yuxurzz.jpg" alt="Image description" width="563" height="845"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Program Writing Assistance&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI-powered programming tools can assist developers by generating code snippets based on predefined requirements. These tools analyze existing codebases, identify patterns, and provide suggestions, saving programmers time and effort in writing repetitive code segments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bug Detection and Resolution&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI can help identify and fix bugs in code by analyzing vast amounts of data, identifying patterns, and making accurate predictions. Programmers can leverage AI-powered bug detection and resolution tools to streamline the debugging process, leading to more efficient and reliable software development.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Project Delivery Estimation and NLP&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Estimating project delivery timelines is a crucial aspect of software development. AI can analyze historical data, project complexity, and various other factors to provide accurate delivery estimations. This helps project managers and programmers plan their work effectively and meet deadlines more consistently. Natural Language Processing (NLP) is an AI subfield that focuses on enabling machines to understand and interpret human language. NLP can assist programmers in tasks such as code documentation, requirement analysis, and code comprehension. By understanding human language and translating it into executable code, NLP-powered AI systems can enhance programmer productivity and efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhancing Code Quality with AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code Optimization&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI algorithms can analyze codebases and identify areas where optimization is possible. By suggesting code improvements and performance optimizations, AI can help programmers create more efficient and robust software solutions. This not only enhances the overall quality of the code but also improves the software's performance and user experience.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Human Intelligence vs. AI Writing Code&lt;/em&gt;_&lt;/p&gt;

&lt;p&gt;AI has not yet reached the level of being able to replace programmers and human intelligence. Currently, it is part of the "augmented" developer movement, which allows users to write code faster and with fewer bugs. Furthermore, it can help a lot of people break into the tech industry.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Collaboration and Coexistence in Programming&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The future of programming lies in collaboration between human programmers and AI systems. Programmers can leverage AI technologies to boost their productivity, accelerate development cycles, and enhance the quality of their code. AI can handle routine tasks, freeing up time for programmers to focus on higher-level design, architecture, and innovation. The coexistence of human intelligence and AI in programming will lead to more efficient, intelligent, and innovative software solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RYi-D7Ip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1j221zidfkrkpw1gelyp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RYi-D7Ip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1j221zidfkrkpw1gelyp.jpg" alt="Image description" width="563" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Future of Programming and AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Complementing Rather Than Replacing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While AI is undoubtedly transforming the programming landscape, it is more likely to complement human intelligence rather than completely replace programmers. AI excels at automating repetitive tasks and offering suggestions, but it still lacks the creative and critical thinking abilities of humans. The synergy between human programmers and AI technologies will be crucial for innovation and problem-solving in the future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Collaboration Between Human Programmers and AI Systems&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The future of programming is shaped by the increasing influence of artificial intelligence. While aitechnologies have the potential to automate certain programming tasks, they are unlikely to replace programmers entirely. Instead, AI will empower programmers, making them more productive, efficient, and capable of delivering high-quality software solutions. The collaboration between human intelligence and AI systems will drive the future of programming, leading to continuous innovation and advancements in the field.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What is the impact of AI on the coding world?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Artificial intelligence is revolutionizing the coding world by automating repetitive tasks, assisting in code writing, bug detection, and resolution. It enhances code quality, accelerates development cycles, and improves overall productivity and efficiency.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How is AI shaping the future of programming?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI is shaping the future of programming by complementing human intelligence and automating routine tasks. It allows programmers to focus on higher-level design, architecture, and innovation, leading to more efficient and innovative software solutions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What are the advantages of AI in programming and coding?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI in programming and coding offers numerous advantages, including automation of repetitive tasks, code generation, bug detection, and resolution. It enhances productivity, efficiency, and code quality, allowing programmers to deliver high-quality software solutions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Will AI completely replace the need for human programmers?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No, AI is unlikely to completely replace the need for human programmers. While it can automate certain tasks, human programmers bring creative thinking, intuition, and domain expertise that are essential for innovation and problem-solving in programming. The future of programming lies in collaboration between human programmers and AI systems.&lt;/p&gt;

&lt;p&gt;please don't forget to leave a like and follow ..😍😍😊&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TG4HtIpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkgx481w7v8cpem8u80d.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TG4HtIpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkgx481w7v8cpem8u80d.gif" alt="Image description" width="401" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>Bootstrap CSS vs Tailwind CSS .Let's settle the discussion.</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Sun, 23 Jul 2023 12:31:34 +0000</pubDate>
      <link>https://dev.to/roy_weru/bootstrap-css-vs-tailwind-css-lets-settle-the-discussion-2a4p</link>
      <guid>https://dev.to/roy_weru/bootstrap-css-vs-tailwind-css-lets-settle-the-discussion-2a4p</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello everybody&lt;/strong&gt;, I have had people coming up to me with the question, which is a better CSS framework between bootstrap and tailwind, well here is my opinion.&lt;/p&gt;

&lt;p&gt;In the world of web development, choosing the right CSS framework can significantly impact your workflow and productivity. Among the popular choices, Bootstrap CSS and Tailwind CSS have emerged as two of the most powerful and versatile front-end frameworks. While both aim to simplify the process of building attractive and responsive websites, they take different approaches to achieve this goal. In this blog guide, we will dive into the features, pros, and cons of Bootstrap CSS and Tailwind CSS, helping you make an informed decision about which one suits your project needs best.&lt;/p&gt;

&lt;p&gt;Bootstrap CSS is one of the oldest and most widely used CSS frameworks. Developed by Twitter, it offers a plethora of pre-designed components, templates, and utilities to streamline web development. Its primary focus is on providing a robust grid system, responsive layout, and ready-to-use UI components, allowing developers to create responsive and visually appealing websites with ease.&lt;/p&gt;

&lt;p&gt;Tailwind CSS, on the other hand, is a relatively newer framework that gained rapid popularity for its unique utility-first approach. Instead of relying on pre-designed components, Tailwind CSS provides an extensive set of utility classes that you can combine to build custom and highly optimized designs. This approach offers greater flexibility and control over the appearance and functionality of the website.&lt;/p&gt;

&lt;p&gt;Personally, I think both of these are great tools and I don't have one that is more favorite than the other. As a front-end developer or full stack dev, it is always wise to have a plan before starting on a project. When you have a strategy, you can now decide which tools you need to implement. Both of the frameworks have their pros and cons. According to my experience bootstrap is very smooth and easy to use with normal HTML. I have had great experiences working with bootstrap in Django, flask projects that basically render the raw HTML. Its so easy to set-up bootstrap with such. All you need is to have bootstrap linked to your main template and it becomes so easy to integrate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OKgXflzg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnc3f9ed5ewp3mwstv57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OKgXflzg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnc3f9ed5ewp3mwstv57.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tTZSsgP2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rry8g6qgczgbw3l5pcso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTZSsgP2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rry8g6qgczgbw3l5pcso.png" alt="Image description" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bootstrap CSS Features:&lt;/p&gt;

&lt;p&gt;Grid System: Bootstrap CSS offers a responsive, mobile-first grid system that allows you to create flexible layouts for different screen sizes.&lt;br&gt;
Pre-styled Components: It comes with a wide range of pre-built components like buttons, forms, navigation bars, modals, and more, making it easy to create consistent designs.&lt;br&gt;
Browser Compatibility: Bootstrap CSS ensures compatibility across various browsers, reducing the need for extensive testing.&lt;br&gt;
Customizable Themes: The framework supports theming, enabling developers to create unique and branded designs by customizing the default styles.&lt;/p&gt;

&lt;p&gt;This are some of the &lt;strong&gt;pros&lt;/strong&gt; of working with bootstrap:&lt;br&gt;
Quick Prototyping: With ready-made components, developers can rapidly prototype and create functional designs.&lt;br&gt;
Community and Documentation: Bootstrap CSS has a large and active community, providing extensive documentation and support.&lt;br&gt;
Browser Compatibility: It ensures consistent rendering across various browsers, saving developers time and effort.&lt;/p&gt;

&lt;p&gt;and this are the &lt;strong&gt;cons&lt;/strong&gt;:&lt;br&gt;
Bloated CSS: Using pre-designed components may lead to bloated CSS files, impacting performance.&lt;br&gt;
Design Limitations: The pre-styled components may sometimes limit creativity and make designs look generic.&lt;/p&gt;

&lt;p&gt;When it comes to tailwind CSS it's another different story. Basically I think Tailwind is so easy and great to use with Frameworks such as Next JS, Svelte, Vite and so on. They have offered a documentation which shows a step by step guide to get started on whichever framework you are using, even on simple HTML &lt;a href="https://tailwindcss.com/docs/installation"&gt;Getting started with Tailwind&lt;/a&gt;:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vsDt-5VM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rkopcydnejazrcscb6r7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vsDt-5VM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rkopcydnejazrcscb6r7.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing though that might blow your mind🙌🙌🫢 is the &lt;a href="https://www.floatui.com/components"&gt;Float UI&lt;/a&gt; which is just wonderful&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jDRsAQ6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/heuvnk5r6s4qmrlsos7w.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jDRsAQ6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/heuvnk5r6s4qmrlsos7w.gif" alt="Image description" width="250" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is library built on top of Tailwind offering beautiful and sexy components needed to style up your website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--caoDFmBf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fvmmq0bqnjkeotpabrmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--caoDFmBf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fvmmq0bqnjkeotpabrmu.png" alt="Image description" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of a code I just pasted and implemented to bring out a beautiful and cool component for my webpage:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xgGk3F8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/61tmtdmribfmcz8qpkts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xgGk3F8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/61tmtdmribfmcz8qpkts.png" alt="Image description" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a finished up website with Tailwind and Next JS. I have a step by step guide to building such a website &lt;a href="https://dev.to/roy_weru/a-step-by-step-guide-to-creating-a-full-stack-web-app-using-next-js-and-supabase--bib"&gt;Link&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e94i25S_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwmhep7v7mp6age25i7o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e94i25S_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwmhep7v7mp6age25i7o.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tailwind CSS features:&lt;br&gt;
Utility-first Approach: Tailwind CSS's utility classes allow developers to apply styles directly in the markup, providing more control and speeding up development.&lt;br&gt;
Low Specificity: The utility classes are designed to have low specificity, making it easier to override styles without using !important.&lt;br&gt;
Configurability: Tailwind CSS is highly configurable, allowing developers to add, modify, or remove utility classes based on their project requirements.&lt;br&gt;
PurgeCSS: It includes PurgeCSS by default, which automatically removes unused CSS classes, resulting in smaller file sizes for production.&lt;/p&gt;

&lt;p&gt;The pros and cons of working with Tailwind CSS.&lt;br&gt;
&lt;strong&gt;pros&lt;/strong&gt;:&lt;br&gt;
Customizable: Tailwind CSS offers complete design freedom, enabling developers to create unique designs without writing custom CSS.&lt;br&gt;
Performance: Its utility-first approach and PurgeCSS result in optimized and lightweight production-ready code.&lt;br&gt;
Highly Scalable: Tailwind CSS scales well for large projects due to its modular and organized utility classes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cons&lt;/strong&gt;:&lt;br&gt;
Learning Curve: Developers new to Tailwind CSS might face a learning curve when getting used to the utility classes.&lt;br&gt;
Larger HTML Files: The utility classes applied directly in HTML can make the markup larger and less clean.&lt;/p&gt;

&lt;p&gt;I would like to wrap up with a reminder that both of this frameworks are very powerful and of great essence but it's up to you to make a decision on which one you would prefer. &lt;/p&gt;

&lt;p&gt;Let's keep up with the discussion in the comment section I would love to hear from you 😊😉😁 and another developer would want your opinion. Follow me on my upcoming twitter account &lt;a href="https://twitter.com/roy_weru"&gt;twitter&lt;/a&gt;, you can also check out my GitHub &lt;a href="https://github.com/Royweru"&gt;GitHub&lt;/a&gt;. I will appreciate ❤️❤️👍 thanks. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N6ZyO7tJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x8zylpa6l952m9ph84u3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N6ZyO7tJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x8zylpa6l952m9ph84u3.gif" alt="Image description" width="401" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bootstrap</category>
      <category>tailwindcss</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A STEP BY STEP GUIDE TO CREATING A FULL STACK WEB APP USING NEXT JS AND SUPABASE 🙌🙌💥..</title>
      <dc:creator>Roy Weru</dc:creator>
      <pubDate>Sun, 09 Jul 2023 16:02:33 +0000</pubDate>
      <link>https://dev.to/roy_weru/a-step-by-step-guide-to-creating-a-full-stack-web-app-using-next-js-and-supabase--bib</link>
      <guid>https://dev.to/roy_weru/a-step-by-step-guide-to-creating-a-full-stack-web-app-using-next-js-and-supabase--bib</guid>
      <description>&lt;p&gt;In today's digital era, applications play a vital role in our lives, providing instant access to information and services. If you have a passion for baking or want to share your favorite cake recipes with the world, building a cake recipe application can be an exciting project. In this blog post, we will guide you through the process of creating a cake recipe application using Supabase and Next.js, two powerful tools that make development efficient and enjoyable.&lt;/p&gt;

&lt;p&gt;What is Supabase?&lt;br&gt;
Supabase is an open-source Firebase alternative that provides a set of backend services, including authentication, database, and real-time functionality. It allows you to rapidly build web and mobile applications without the need for server-side development. With Supabase, you can easily handle user authentication, store data, and implement real-time updates.&lt;/p&gt;

&lt;p&gt;Why choose Next.js?&lt;br&gt;
Next.js is a popular React framework that enables server-side rendering (SSR) and provides an excellent development experience. It offers features like automatic code splitting, server-side rendering, and static site generation, making it a perfect choice for building performant and SEO-friendly applications. Next.js also provides an intuitive routing system and seamless integration with React components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To get started, make sure you have Node.js and npm installed on your machine. Here's how you can set up the project:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a new Next.js project by running the following command make sure to include tailwind:&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
npx create-next-app cakes&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
`&lt;br&gt;
I named mine cakes but you can name yours anything you are comfortable with.&lt;/p&gt;

&lt;p&gt;Navigate into the project directory:&lt;br&gt;
cd cakes&lt;/p&gt;

&lt;p&gt;Install Supabase client library and dependencies:&lt;br&gt;
npm install @supabase/supabase-js&lt;/p&gt;

&lt;p&gt;Head over to supabase.com and register for an account or you can simply log in with your GitHub account. Create a database and create a new table. Interesting thing about supabase is that it gives a very friendly UI and is very easy to work with I just love it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--10sJAC1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4akcalv1oyrmq7b6j0ol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--10sJAC1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4akcalv1oyrmq7b6j0ol.png" alt="Image description" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a table and named it Cakes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xEy4d0c7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6btmj10n2s2mf961lnlm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xEy4d0c7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6btmj10n2s2mf961lnlm.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;once you are done head over back to vs studio so that we can start working on our project 😊😊&lt;/p&gt;

&lt;p&gt;Designing the User Interface:&lt;br&gt;
Next.js provides various options for styling your application, including CSS modules, styled-components, or tailwind CSS. Choose the one that suits your preferences. Create a layout and component structure for your application, including pages for the home screen, recipe list, and individual recipe details.&lt;/p&gt;

&lt;p&gt;Personally I used Float UI , I can guarantee you that this is a game changer in the design of the front-end working🔥with tailwind 💥👌👌🔥.Just head over to their website &lt;a href="https://floatui.com/"&gt;Float UI&lt;/a&gt; and you can see the amazing components that they have:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JEzN52kW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ispj6v2giidv7bs0rdxs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JEzN52kW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ispj6v2giidv7bs0rdxs.png" alt="Image description" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its just a copy and paste. I will be importing some code from Float UI. You can run the *&lt;em&gt;npm run dev *&lt;/em&gt; command in your cli to make sure that your Next js website is up and running correctly. You can now start designing your webpage to fit your design. Im going ahead to create a components directory inside of my src/app directory:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4mk4yPGn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9i0sjcxhz8dqgf6adxb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4mk4yPGn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9i0sjcxhz8dqgf6adxb9.png" alt="Image description" width="227" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a file named Nav.tsx and head over to Float UI to get the code .You can pick one of the Navbars that fit your intrest and copy paste the code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DUst3ZBk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3uc1gshl4om93ai87if.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DUst3ZBk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3uc1gshl4om93ai87if.png" alt="Image description" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BnrPRDIm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2sgmw43fj4fq5l15cdpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BnrPRDIm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2sgmw43fj4fq5l15cdpt.png" alt="Image description" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;import the Nav component to your main layout.tsx and have it inside the body tag just before {children}:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pXL-Dh7Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b91nzsnl3u21d00k06vo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pXL-Dh7Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b91nzsnl3u21d00k06vo.png" alt="Image description" width="593" height="728"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We first need to fetch data from supabase which we can work with. Lets start by creating a file named supabase.js in the root directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YVdICT8m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k723q62vca8n36sukw3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YVdICT8m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k723q62vca8n36sukw3w.png" alt="Image description" width="263" height="872"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need to head over to supabase and get the public anon key which we will later add to our .env.local file and the url which we will need.&lt;/p&gt;

&lt;p&gt;Open your project settings in supabase go to API:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pn4y6xAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uazx197dz5vn2c4bcop0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pn4y6xAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uazx197dz5vn2c4bcop0.png" alt="Image description" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will need both the url and anon public. Copy paste the supabase anon key in your.env.local file that you have created in the root directory:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HyCEhIRE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68gnvu8wc9w4z2f7u65a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HyCEhIRE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68gnvu8wc9w4z2f7u65a.png" alt="Image description" width="387" height="47"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Back to the supabase.js file have the code below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3vEGMfbP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7w4488vohbyj8x22wjx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3vEGMfbP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7w4488vohbyj8x22wjx.png" alt="Image description" width="749" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;copy and paste your supabase url.&lt;/p&gt;

&lt;p&gt;In the main page.tsx fetch the data with the help of useEffect hook and useState hooks :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--69cw1YyT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar07tebjv73euz4njptb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--69cw1YyT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar07tebjv73euz4njptb.png" alt="Image description" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure you have created a table and input some data to be fetched. Supabase offers a simple GUI to help you achive this. Make sure that you disable the row level security first as nothing will be returned but an empty array:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WUWwQcd5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rqw2lgt1nsa7kvq2f7dl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WUWwQcd5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rqw2lgt1nsa7kvq2f7dl.png" alt="Image description" width="800" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My table basically has five columns the id and created_at are there by default . I added the title column which is a text field, image for the image url which is a varchar field and the recipe column which is a text field.&lt;/p&gt;

&lt;p&gt;Once you have added data to your rows you can check out the APIs offered by supabase for your table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FcQvwx_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21k8bolp76c9oomwg2my.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FcQvwx_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21k8bolp76c9oomwg2my.png" alt="Image description" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the components directory have a Cards component where data will be mapped over and be displayed to the client in different cards. I passed over the data that I fetched as a prop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OMgaQG2N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwz9i2x92tv26mkyfn2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OMgaQG2N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwz9i2x92tv26mkyfn2j.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An advantage of using typescript is that it comes in handy when defining the model in your database where you can create a type/interface which will make it easier while working with your data. I do this by having my types in the types.d.ts file in the root directory&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6wWg8krp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0jbi34fklg8lyk19qs5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6wWg8krp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0jbi34fklg8lyk19qs5a.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was my final result 🔥🧯:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N2k94SiJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kwxnhe1ydq5sv6l0jxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N2k94SiJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kwxnhe1ydq5sv6l0jxm.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UWCpdFad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vsux718reedzkxgulrpy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UWCpdFad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vsux718reedzkxgulrpy.gif" alt="Image description" width="401" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;coming up soon with another blog on how to add row level security and implement it in your tables for extra security.&lt;/p&gt;

&lt;p&gt;Please show some love by heading over to my GitHub repository &lt;a href="https://github.com/Royweru/cake-recipes"&gt;Github Repo&lt;/a&gt; and adding a star 😊😊. I will be grateful see you soon&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l-kg6vyX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ot67sxkbygj5bpm2bn2p.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l-kg6vyX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ot67sxkbygj5bpm2bn2p.gif" alt="Image description" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>react</category>
    </item>
  </channel>
</rss>
