<?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: Paul C. Ishaili </title>
    <description>The latest articles on DEV Community by Paul C. Ishaili  (@mrpaulishaili).</description>
    <link>https://dev.to/mrpaulishaili</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%2F715366%2Fcf7d92f6-98be-42bf-8d3d-6e192b562d1e.png</url>
      <title>DEV Community: Paul C. Ishaili </title>
      <link>https://dev.to/mrpaulishaili</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrpaulishaili"/>
    <language>en</language>
    <item>
      <title>Solved: Prisma "Cannot find module" &amp; pnpm Build Script Warnings in Next.js 15</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Sun, 25 May 2025 06:10:37 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/solved-prisma-cannot-find-module-pnpm-build-script-warnings-in-nextjs-15-28ej</link>
      <guid>https://dev.to/mrpaulishaili/solved-prisma-cannot-find-module-pnpm-build-script-warnings-in-nextjs-15-28ej</guid>
      <description>&lt;p&gt;Ever been stuck trying to get Prisma working in a brand-new Next.js 15 project using pnpm? I certainly was! It starts with a cryptic error, then leads to another, but don't worry – the fix is straightforward.&lt;/p&gt;

&lt;p&gt;Let me describe the exact sequence of events I experienced and, more importantly, the simple solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Initial Roadblock: "Cannot find module"
&lt;/h2&gt;

&lt;p&gt;My journey began when I tried to run pnpm prisma init for the first time. Instead of the expected output, I was greeted with an error message like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Cannot find module &lt;span class="s1"&gt;'C:\Users\ISHAIL~1\AppData\Local\Temp\@prisma\cli-init@latest-1748041200000\node_modules\@prisma\cli-init\dist\index.js'&lt;/span&gt; imported from C:&lt;span class="se"&gt;\U&lt;/span&gt;sers&lt;span class="se"&gt;\I&lt;/span&gt;shaili Paul C&lt;span class="se"&gt;\A&lt;/span&gt;ppData&lt;span class="se"&gt;\L&lt;/span&gt;ocal&lt;span class="se"&gt;\p&lt;/span&gt;npm-cache&lt;span class="se"&gt;\d&lt;/span&gt;lx&lt;span class="se"&gt;\8&lt;/span&gt;f1b58d75bac52f467fe74fc409e2c5f30d82b5c62aa5c7aeba18d87aadf6e07&lt;span class="se"&gt;\1&lt;/span&gt;97039ad1d8-2588&lt;span class="se"&gt;\n&lt;/span&gt;ode_modules&lt;span class="se"&gt;\.&lt;/span&gt;pnpm&lt;span class="se"&gt;\p&lt;/span&gt;risma@6.8.2&lt;span class="se"&gt;\n&lt;/span&gt;ode_modules&lt;span class="se"&gt;\p&lt;/span&gt;risma&lt;span class="se"&gt;\b&lt;/span&gt;uild&lt;span class="se"&gt;\i&lt;/span&gt;ndex.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This "Cannot find module" error means that Prisma's necessary command-line tools or core engine couldn't be located. This usually happens because a critical part of Prisma's installation—a "build script"—was skipped.&lt;/p&gt;

&lt;p&gt;My first instinct (and often a good one for package manager issues) was to clean up:&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;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; node_modules  &lt;span class="c"&gt;# Delete the node_modules folder&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; pnpm-lock.yaml &lt;span class="c"&gt;# Delete the pnpm lock file&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;       &lt;span class="c"&gt;# Re-run installation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This cleared the "Cannot find module" error, but immediately presented the real underlying issue in the form of a pnpm warning:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem: Ignored Build Scripts Warning
&lt;/h2&gt;

&lt;p&gt;After reinstalling, pnpm gave me this informative (but initially puzzling) message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;The following dependencies have build scripts that were ignored: @prisma/client, @prisma/engines, prisma, sharp, unrs-resolver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To allow the execution of build scripts for these packages, add their names to "pnpm.onlyBuiltDependencies" in your "package.json", then run &lt;code&gt;pnpm rebuild&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does this happen?
&lt;/h2&gt;

&lt;p&gt;Packages like @prisma/client, @prisma/engines, prisma (the CLI tool itself), and sharp aren't just simple JavaScript files. They often contain native code or need to run specific setup steps (called "build scripts" or "postinstall scripts") to download binaries (like Prisma's database query engine) or compile code specific to your operating system.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pnpm&lt;/code&gt; is designed for efficiency and strict dependency management. By default, it can be cautious about running these potentially complex build scripts during a standard pnpm install. While this can sometimes speed things up or prevent unexpected issues, for these specific packages, ignoring their build scripts means they won't function correctly. That's why you saw the "Cannot find module" error earlier – Prisma simply wasn't fully set up!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Tell pnpm What to Build!
&lt;/h2&gt;

&lt;p&gt;The fix is surprisingly simple and involves a quick configuration in your package.json file. &lt;/p&gt;

&lt;p&gt;We need to explicitly tell pnpm to execute the build scripts for these essential packages.&lt;/p&gt;

&lt;p&gt;Here's how to do it:&lt;/p&gt;

&lt;h3&gt;
  
  
  Open your package.json file.
&lt;/h3&gt;

&lt;p&gt;You'll find this at the root of your Next.js project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add the pnpm.onlyBuiltDependencies configuration.
&lt;/h3&gt;

&lt;p&gt;Insert a new top-level section named pnpm. Inside it, add an array called onlyBuiltDependencies. List every package that pnpm warned you about.&lt;/p&gt;

&lt;p&gt;Your package.json should look similar to this (pay close attention to the new pnpm block at the bottom):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-nextjs15-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next dev"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next start"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next lint"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^18"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"react-dom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^18"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"next"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"15.x.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Next.js&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;version&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@prisma/client"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.x.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Prisma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;client&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;version&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@prisma/engines"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.x.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Essential&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Prisma's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;core&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prisma"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.x.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Prisma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;CLI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;itself&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sharp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.33.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;image&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;processing&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"unrs-resolver"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^x.x.x"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;per&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;warning&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;other&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;dependencies&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;dev&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;dependencies&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pnpm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"onlyBuiltDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"@prisma/client"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"@prisma/engines"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"prisma"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"sharp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"unrs-resolver"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The pnpm block goes at the root level of your package.json, alongside name, version, dependencies, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The package names in onlyBuiltDependencies must exactly match those listed in the pnpm warning message.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run pnpm rebuild:
&lt;/h3&gt;

&lt;p&gt;After saving your package.json file, open your terminal in the project's root and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm rebuild
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command specifically tells pnpm to re-run the build scripts for the packages you've now explicitly allowed. You should see output from Prisma downloading its engine and potentially sharp compiling native modules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finally, Initialize Prisma!
&lt;/h3&gt;

&lt;p&gt;Once pnpm rebuild completes successfully, you can now run your Prisma initialization command without issues:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm prisma init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prisma should now successfully generate your schema.prisma file and .env file, getting you ready to define your database models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The "Cannot find module" error and the pnpm build script warning are two sides of the same coin when it comes to packages like Prisma. By understanding that certain dependencies require explicit permission to execute their build steps, you can quickly resolve these installation headaches using pnpm.onlyBuiltDependencies. &lt;/p&gt;

&lt;p&gt;This ensures all your native dependencies are correctly installed, allowing you to dive into building your Next.js 15 application with confidence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>VSCode IntelliSense Broken in Tailwind CSS v4? Here’s the Solution</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Thu, 20 Mar 2025 09:55:45 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/vscode-intellisense-broken-in-tailwind-css-v4-heres-the-solution-4d5</link>
      <guid>https://dev.to/mrpaulishaili/vscode-intellisense-broken-in-tailwind-css-v4-heres-the-solution-4d5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tailwind CSS v4 brings a bold new approach to styling—shifting from a JavaScript-based configuration to a CSS-first paradigm.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, this transition introduces a notable challenge: &lt;em&gt;&lt;strong&gt;VSCode IntelliSense no longer auto-suggests custom classes as it did before.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this article, we’ll dive deep into what’s changed in Tailwind CSS v4, explain why IntelliSense issues arise, and provide comprehensive workarounds and best practices for a smooth upgrade. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Whether you’re developing with React, Next.js, or another modern framework, this guide will help ensure your development workflow stays efficient and productive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What’s New in Tailwind CSS v4?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSS-First Configuration:&lt;/strong&gt;&lt;br&gt;
The traditional tailwind.config.js file is replaced by a more integrated, CSS-first approach. Customizations are now defined directly in your CSS files using directives like &lt;a class="mentioned-user" href="https://dev.to/theme"&gt;@theme&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/variant"&gt;@variant&lt;/a&gt;, and others. This change streamlines configuration and improves runtime performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Enhancements:&lt;/strong&gt;&lt;br&gt;
With the integration of tools like Lightning CSS (a Rust-based CSS processor), Tailwind v4 offers faster build times and more efficient style processing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modern Feature Support:&lt;/strong&gt;&lt;br&gt;
Tailwind v4 supports native cascade layers, container queries, and other cutting-edge CSS features that keep your projects future-proof.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;While these innovations bring many benefits, 🤔 at what cost?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why is this Intellisense issue happening?
&lt;/h2&gt;

&lt;p&gt;Many developers have reported that after upgrading to Tailwind CSS v4, VSCode IntelliSense no longer provides autosuggestions for custom classes. &lt;strong&gt;😜 I restarted my VSCode multiple times, hoping IntelliSense magically start working again!&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Here’s why:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;- Removal of the JavaScript Config File:&lt;/strong&gt;&lt;br&gt;
Previously, the tailwind.config.js file acted as a centralized source for theme customizations and class definitions. IntelliSense extensions relied on this file to parse and offer auto-completion suggestions. With the shift to a CSS-first approach, that explicit source is no longer present.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- File Detection Challenges:&lt;/strong&gt;&lt;br&gt;
If your project uses a global CSS file (or multiple files) to manage Tailwind directives, the IntelliSense extension may struggle to determine which file contains the relevant configuration. This can lead to incomplete or missing suggestions when you type class names in your markup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Project Structure Variations:&lt;/strong&gt;&lt;br&gt;
Depending on where you store your CSS files—whether in the project root or a subdirectory like assets — the extension might not automatically pick up changes in your &lt;a class="mentioned-user" href="https://dev.to/theme"&gt;@theme&lt;/a&gt; declarations.&lt;/p&gt;
&lt;h2&gt;
  
  
  Workarounds and Solutions
&lt;/h2&gt;

&lt;p&gt;Fortunately, there are practical solutions to restore IntelliSense functionality in VSCode:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the Experimental Config File Setting:&lt;/strong&gt; Tailwind CSS IntelliSense now includes an experimental setting that lets you explicitly point to your CSS file containing Tailwind’s configuration. Add the following to your VSCode settings (in your &lt;code&gt;settings.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"tailwindCSS.experimental.configFile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"path/to/your/global.css"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
Replace "path/to/your/global.css" with the relative path to the CSS file where you’ve defined your &lt;a class="mentioned-user" href="https://dev.to/theme"&gt;@theme&lt;/a&gt; and other custom directives. This directs the extension to the correct source, ensuring that autosuggestions are based on your current configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enable Quick Suggestions for Strings:&lt;/strong&gt; Sometimes, VSCode may not trigger suggestions inside JSX or TSX files. To remedy this, update your settings to enable quick suggestions for strings:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"editor.quickSuggestions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"strings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
. This will ensure that when you type class names within your markup, the IntelliSense popup will appear as expected.&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Validate Your Project Structure&lt;/strong&gt;: Ensure that your Tailwind CSS files are consistently located. If you’re using a global CSS file for your Tailwind directives, try to keep it in a central location that the IntelliSense extension can reliably detect. Also, If your repository contains multiple CSS files with similar configurations (e.g., one in the project root and another in an assets folder), consider consolidating them or temporarily removing the one not in use. This will minimise confusion for the extension.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restart the VSCode Extension Host&lt;/strong&gt;: Restarting the extension host can help apply changes immediately and clear temporary glitches. To do this: Open the command palette (&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; on Windows or &lt;code&gt;Cmd+Shift+P&lt;/code&gt; on macOS), then Type and select &lt;strong&gt;“Developer: Restart Extension Host”&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Best practices for a Smooth Tailwind CSS v4 Transition
&lt;/h2&gt;

&lt;p&gt;To ensure a smooth transition and maximize the benefits of Tailwind CSS v4,  follow these best practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Migrate your project incrementally:&lt;/strong&gt; Start with new components or modules using the CSS-first approach before converting your entire codebase. This minimizes risk and allows your team to adapt gradually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep Dependencies Updated:&lt;/strong&gt; Make sure that all your related dependencies (e.g., PostCSS, autoprefixer) are updated to versions compatible with Tailwind v4.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stay updated with the Community&lt;/strong&gt;: Follow the official Tailwind CSS GitHub repository, forums, and community channels. Developers often share fixes and workarounds for common issues, and updates to the IntelliSense extension may address these problems in future releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintain clear documentation:&lt;/strong&gt; Document your project’s configuration thoroughly. This will be useful for onboarding new team members and troubleshooting issues related to the new CSS-first configuration.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;While the transition to a CSS-first approach introduces challenges—such as the loss of traditional IntelliSense autosuggestions—the solutions outlined above can help you maintain an efficient development workflow.&lt;/p&gt;

&lt;p&gt;By configuring your VSCode settings to point to the correct global CSS file, enabling quick suggestions, and standardizing your project structure, you can overcome the IntelliSense hurdle and fully leverage the power of Tailwind CSS v4.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referenced Resources:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=28Mb6LnG5WU" rel="noopener noreferrer"&gt;Tailwind CSS IntelliSense V4 not Working With React 2025 New Fixed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=sHnG8tIYMB4" rel="noopener noreferrer"&gt;Tailwind CSS 4.0 is finally here - The NEW way to install with Vite + React (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=DenUCuq4G04" rel="noopener noreferrer"&gt;Tailwind CSS Tutorial for Beginners (2024) – What YOU need to know&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you’ve faced similar issues or found additional fixes, drop them in the comments! Let’s make this transition easier for everyone. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tailwindcss</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>How I created reusable React Icon Component using react-icons library in an AstroJs Project.</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Sun, 30 Jun 2024 02:43:37 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/how-i-created-reusable-react-icon-component-using-react-icons-library-in-an-astrojs-project-nk4</link>
      <guid>https://dev.to/mrpaulishaili/how-i-created-reusable-react-icon-component-using-react-icons-library-in-an-astrojs-project-nk4</guid>
      <description>&lt;p&gt;In the past weeks lately, I have been focused on building clean landing page websites using AstroJs framework.&lt;/p&gt;

&lt;p&gt;One of the difficulties I often face however is the limitation of the icon libraries available in the astro-icons, as compared to the react-icon library.&lt;/p&gt;

&lt;p&gt;So here's what I decided to do:&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;React&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;react&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;FaIcons&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;react-icons/fa&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;MdIcons&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;react-icons/md&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;AiIcons&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;react-icons/ai&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;GiIcons&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;react-icons/gi&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;IoIcons&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;react-icons/io&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;CiIcons&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/ci&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;FiIcons&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/fi&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;LuIcons&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/lu&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;iconSets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;fa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;FaIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;md&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MdIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;AiIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;gi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;GiIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;io&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;IoIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;ci&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CiIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;FiIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;lu&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;LuIcons&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Icon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fa&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;currentColor&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;IconComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;iconSets&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;IconComponent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Icon &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; from set &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;IconComponent&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After which I imported this IconX (which I called it, that it doesn't conflict with the icon component from astro-icons) component into the components I would like to use it in.&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;IconX&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ci&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;name&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="s2"&gt;CiSearch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nl"&gt;client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;load&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;Now I have access to the thousand of icons provided by react-icons right in my AstroJs Project.&lt;/p&gt;

&lt;p&gt;Do like, share and follow for more.&lt;/p&gt;

&lt;p&gt;Enjoy the read.&lt;/p&gt;

</description>
      <category>astro</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Building a Note-taking and Sharing App for University Students</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Thu, 09 May 2024 11:51:29 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/building-a-note-taking-and-sharing-app-for-university-students-g7n</link>
      <guid>https://dev.to/mrpaulishaili/building-a-note-taking-and-sharing-app-for-university-students-g7n</guid>
      <description></description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Introduction to C Programming and Data Structure.</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Sun, 20 Aug 2023 10:02:54 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/an-introduction-to-the-c-programming-language-290c</link>
      <guid>https://dev.to/mrpaulishaili/an-introduction-to-the-c-programming-language-290c</guid>
      <description>&lt;p&gt;From the smallest electronic devices to the largest supercomputers, computers are an essential part of our daily lives. Despite the wide variety of computer types, they all share one thing in common: they are all driven by the C programming language (S, 2023).&lt;/p&gt;

&lt;p&gt;Four important aspects of any programming language are: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the way it stores data, &lt;/li&gt;
&lt;li&gt;the way it operates upon the data, &lt;/li&gt;
&lt;li&gt;how it accomplishes input and output, and &lt;/li&gt;
&lt;li&gt;how it lets you control the sequence of execution instructions in a program.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C is a programming language developed at AT &amp;amp; T's Bell's Laboratories of USA in 1972 by Dennis Ritchie and became popular because it is simple and easy to use. The C progrmaming language has been one of the most popular programming languages for the past 40 - 45 years. &lt;/p&gt;

&lt;p&gt;Here are several reasons why you too should learn C as one of yor first programmming languages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; It makes more sense to learn C first and then migrate to C++, C#, or Java. Though this two-step learning process may take more time, at the end of it, you will definitely find it worthwhile of the trouble. C++, C#, or Java make use of the Object Oriented Programming (OOP) principle to organize programs which offers many advantages. While using this organizing principle, you need basic programming skills (Kanetkar, 2020).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Major components of well-known operating systems like Windows, UNIX, Linux, and Android are written in C. In addition, device driver programs, which are only written in C, are necessary to extend the operating system to work with new devices (Kanetkar, 2020).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Common consumer goods like microwaves, washing machines, and digital cameras are becoming smarter on a daily basis. This smartness comes from a microprocessor, an operating system, and a program embedded in these goods. These programs have to run quickly and operate in a limited amount of memory. C is the language of choice when building such operating systems and programs (Kanetkar, 2020).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; The popular gaming frameworks (like DirectX) that are used for developing such games are written in C. You must have seen several professional 3D computer games where the user navigates some object, say a spaceship, and fires bullets at invaders (Kanetkar, 2020).&lt;/p&gt;

&lt;p&gt;I hope that these are very convincing reasons why you should adopt C as the first step in your quest for learning programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of the C Language
&lt;/h2&gt;

&lt;p&gt;From the introduction, you can already deduce most of the interesting features of the C language. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qTx6qrvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.geeksforgeeks.org/wp-content/uploads/20200214125122/Features-of-C-Programming-Language.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qTx6qrvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.geeksforgeeks.org/wp-content/uploads/20200214125122/Features-of-C-Programming-Language.jpg" alt="Features of C Language" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modularity&lt;/strong&gt;: C is a general-purpose structured language. This feature of C language allows you to break a code into different parts using functions which can be stored in the form of libraries for future use and reusability.. Structuring the code using functions increases the visual appeal and makes the program more organized and less prone to errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic Memory Management&lt;/strong&gt;: One of the most significant features of C language is its support for dynamic memory management (DMA). It means that you can utilize and manage the size of the data structure in C during runtime. C also provides several predefined functions to work with memory allocation. For instance, you can use the free() function to free up the allocated memory at any time. Similarly, there are other functions such as malloc(), calloc(), and realloc() to perform operations on data structure and memory allocations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;: You can easily (and quickly) extend a C program. This means that if a code is already written, you can add new features to it with a few alterations. Basically, it allows adding new features, functionalities, and operations to an existing C program.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Portability:&lt;/strong&gt; Another feature of the C language is portability. To put it simply, C programs are machine-independent which means that you can run the fraction of a code created in C on various machines with none or some machine-specific changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple and Efficient:&lt;/strong&gt; The basic syntax style of implementing C language is very simple and easy to learn. This makes the language easily comprehensible and enables a programmer to redesign or create a new application. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recursion:&lt;/strong&gt; Recursion means that you can create a function that can call itself multiple times until a given condition is true, just like the loops. C language provides the feature of recursion and recursion in C programming provides the functionality of code reusability and backtracking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pointers:&lt;/strong&gt;  Pointers point to a specific location in the memory and interact directly with it. With the use of pointers in C, you can directly interact with memory which enables you to operate with memory, arrays, functions, and structures.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Getting Started with C
&lt;/h2&gt;

&lt;p&gt;Learning the English language and learning the C language are very similar, as illustrated in the figure below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JoxQJSgQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01wxqjaj3n7o4a5126yj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JoxQJSgQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01wxqjaj3n7o4a5126yj.png" alt="Figure illustrating similarities between learning English and learning C language." width="800" height="307"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;(Source: Kanetkar, 2020).&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Alphabets, Digits and Special Symbols
&lt;/h3&gt;

&lt;p&gt;Figure below shows the valid alphabets, numbers and special symbols allowed in C.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6Hc0bUE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7u0vnr1u7zd8gij8mwk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6Hc0bUE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7u0vnr1u7zd8gij8mwk7.png" alt="Figure showing valid alphabets, numbers and special symbols allowed in C." width="800" height="266"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;(Source: Kanetkar, 2020).&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Constants, Variables and Keywords
&lt;/h3&gt;

&lt;p&gt;The alphabets, digits and special symbols when properly combined form constants, variables and keywords.&lt;/p&gt;
&lt;h4&gt;
  
  
  Constants
&lt;/h4&gt;

&lt;p&gt;A constant is an entity that doesn’t change. Constants in programming are often called literals, and in C, they can be divided into two major categories:&lt;/p&gt;

&lt;p&gt;(a) Primary Constants&lt;/p&gt;

&lt;p&gt;(b) Secondary Constants&lt;/p&gt;

&lt;p&gt;These constants are further categorized as shown in the Figure below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6-tNmYTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ratd53j255lh3h4kj2ll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6-tNmYTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ratd53j255lh3h4kj2ll.png" alt="Figure showing major categories of constants" width="800" height="421"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;(Source: Kanetkar, 2020).&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Variables
&lt;/h4&gt;

&lt;p&gt;A variable, also known as identifiers in programming, is an entity that may change. There are as many types of variables in C as there are types of constants in it. This is because any C program performs many calculations, the results of which are stored in some cells (locations) of the computer's memory. To make the retrieval and usage of these values easy, the memory cells are given names. Since the value stored in each location may change, the names given to these locations are called variable names.&lt;/p&gt;

&lt;p&gt;A variable name can be any combination of 1 to 31 alphabets, digits or underscores. Some compilers allow variable names whose length could be up to 247 characters. Do not create unnecessarily long variable names as it adds to your typing effort.&lt;/p&gt;

&lt;p&gt;It's important to note also that the first character in the variable name must be an alphabet or underscore (_).&lt;/p&gt;
&lt;h4&gt;
  
  
  Keywords
&lt;/h4&gt;

&lt;p&gt;A keyword is a word that carries special meaning. There are only 32 keywords available in C; they are words whose meaning has already been communicated to the compiler (or, more broadly, to the computer) (Kanetkar, 2020). &lt;/p&gt;

&lt;p&gt;The figure below gives a list of these keywords.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--59DTX7-I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uxok3pcvjfd1lir1hqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--59DTX7-I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uxok3pcvjfd1lir1hqw.png" alt="Figure showing keywords in C" width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;(Source: Kanetkar, 2020).&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Although it is not recommended to use the keywords as variable names, some C compilers allow you to create variable names that closely resemble the keywords (Kanetkar, 2020).&lt;/p&gt;
&lt;h2&gt;
  
  
  Structure of a C program
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1TZSrBDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.geeksforgeeks.org/wp-content/uploads/20221219163357/Structure-of-C-Program.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1TZSrBDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.geeksforgeeks.org/wp-content/uploads/20221219163357/Structure-of-C-Program.png" alt="C Program Code Structure" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The structure of a basic C Program code consists of the Header and the Body.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To explain futher,&lt;/p&gt;

&lt;h3&gt;
  
  
  The Header
&lt;/h3&gt;

&lt;p&gt;This is the part that consists of all the header files inclusions, an example of this in our &lt;strong&gt;Hello World&lt;/strong&gt; code is the &lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt;. This line of code here means that we are including a header file, indicated by the &lt;strong&gt;.h&lt;/strong&gt; file extension, with the name &lt;strong&gt;stdio&lt;/strong&gt;. In adding this line, we have made all the function declarations and macro definitions in that file to now be accessible for our use in our program coding.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do you understand?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We will be seeing, exploring and using many more header files as we continue.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Body
&lt;/h3&gt;

&lt;p&gt;Yes, everything else apart from the head (this time, header). In thi C program, all codes that comes after the last line of the header files inclusion is part of the body.&lt;/p&gt;

&lt;p&gt;The body can consist of various components: variable declarations, functions, statements etc. Most importantly, in a basic C program, our Hello World, there must be a &lt;code&gt;int main() {}&lt;/code&gt;. This is the entry point for any C program and execution typically starts here.&lt;/p&gt;

&lt;p&gt;The curly braces in that line of code contains the statement&lt;br&gt;
that needs to be executed by the C program. In our case, we need our C program to print &lt;strong&gt;Hello World&lt;/strong&gt;, therefore, our entry point function became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;return 0&lt;/code&gt; is to indicate to the interpreter that our function ran successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;prinf()&lt;/code&gt; function
&lt;/h2&gt;

&lt;p&gt;The you notice that expression in our lines of code? Yes, the &lt;code&gt;print("")&lt;/code&gt;, it is a very powerful function in a C program that is used to&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing a C Program
&lt;/h2&gt;

&lt;p&gt;🤔 Right now! You too want to write your first Hello World Program? &lt;/p&gt;

&lt;p&gt;There are a number of online IDEs that are available for free that you can use to start writing your C program without installing a compiller. An example of this is &lt;a href="https://ide.geeksforgeeks.org/"&gt;GeeksforGeeksIDE&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For windows users, there are many IDEs available. Th most popular of them are CodeBlocks and Dev-CPP. &lt;a href="http://www.codeblocks.org/downloads/26"&gt;CodeBlocks&lt;/a&gt; has strongly been recommended by the netizen community for development in C.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't know what Netizen is? 🤔 It's the Internet Community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Linux users, GCC compiler comes bundled with Linux which compiles C programs and generates executables for us to run, and &lt;a href="http://www.codeblocks.org/downloads/26"&gt;CodeBlocks&lt;/a&gt; can also be used with Linux.&lt;/p&gt;

&lt;p&gt;🤓 Mac users, macOS already has a built-in text editor where you can just simply write the code and save it with a “.c” extension.&lt;/p&gt;

&lt;p&gt;My favourite code editor is the VsCode editor. I write more on our to download and setup on Mac, and possibly on Windows for development in the C language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share your thoughts and comments
&lt;/h2&gt;

&lt;p&gt;I am critically open for your constructive criticisms. Enjoy&lt;br&gt;
as you explore the world of programming in C.&lt;/p&gt;

&lt;p&gt;✌🏾 Peace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/mrpaulishaili/"&gt;&lt;strong&gt;Paul Ishaili C.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Kanetkar, Y. (2020). Let Us C: Authentic Guide to C PROGRAMMING Language 17th Edition (English Edition). Let Us C.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;S, R. A. (2023). Use of C language: Everything you need to know. Simplilearn.com. &lt;a href="https://www.simplilearn.com/tutorials/c-tutorial/use-of-c-language"&gt;https://www.simplilearn.com/tutorials/c-tutorial/use-of-c-language&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>coding</category>
      <category>c</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>5 Authentic Websites to Generate Stunning Favicons for Your Next.js or React Project</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Sat, 05 Aug 2023 22:20:31 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/5-authentic-websites-to-generate-stunning-favicons-for-your-nextjs-or-react-project-5eif</link>
      <guid>https://dev.to/mrpaulishaili/5-authentic-websites-to-generate-stunning-favicons-for-your-nextjs-or-react-project-5eif</guid>
      <description>&lt;p&gt;Have you ever come across a website with an impressive logo and a seamless user interface, yet found its browser tab lacking that distinctive touch? That's where favicons come into play! Favicons are those tiny, yet impactful, icons that grace your browser tabs, bookmarks, and browser history, leaving a lasting impression on your users.&lt;/p&gt;

&lt;p&gt;If you're developing a Next.js or React app, don't overlook the power of a well-crafted favicon. Not only does it add a touch of professionalism, but it also reinforces your brand and provides users with a visual cue that keeps them engaged. &lt;/p&gt;

&lt;p&gt;In this post, I'll share five authentic websites that will help you generate perfect favicons for your Next.js or React project. Let's dive in! 🚀&lt;/p&gt;

&lt;p&gt;1️⃣ Favicon.io 🎨 &lt;a href="https://favicon.io/"&gt;https://favicon.io/&lt;/a&gt;&lt;br&gt;
Favicon.io offers a user-friendly interface, making favicon creation a breeze. Simply upload your logo or icon, and Favicon.io generates a comprehensive set of favicon files compatible with all major browsers and devices. It also provides additional options like Apple Touch Icons and Windows 8/10 tiles for complete branding coverage.&lt;/p&gt;

&lt;p&gt;2️⃣ Favicon Generator 🛠️ &lt;a href="https://www.favicon-generator.org/"&gt;https://www.favicon-generator.org/&lt;/a&gt;&lt;br&gt;
Favicon Generator is a powerful tool that caters to both novices and advanced users. It allows you to upload your image and provides customization options for different platforms. Additionally, it offers an extensive library of pre-designed favicons if you're looking for some creative inspiration.&lt;/p&gt;

&lt;p&gt;3️⃣ RealFaviconGenerator 🔄 &lt;a href="https://realfavicongenerator.net/"&gt;https://realfavicongenerator.net/&lt;/a&gt;&lt;br&gt;
RealFaviconGenerator takes favicon generation to the next level. It automatically generates favicons for not only browsers but also for various platforms like Android, iOS, and even Windows. The website also checks for favicon compatibility issues and helps you fix any potential problems.&lt;/p&gt;

&lt;p&gt;4️⃣ Favic-O-Matic 📦 &lt;a href="https://favicomatic.com/"&gt;https://favicomatic.com/&lt;/a&gt;&lt;br&gt;
Favic-O-Matic is an easy-to-use tool that caters to those who prefer simplicity. Upload your image, and it instantly generates a package of favicon files for you. You'll find all the standard favicon formats, ensuring your website looks great across all devices.&lt;/p&gt;

&lt;p&gt;5️⃣ Genfavicon 🎯 &lt;a href="https://www.genfavicon.com/"&gt;https://www.genfavicon.com/&lt;/a&gt;&lt;br&gt;
Genfavicon is a nifty favicon generator that allows you to create favicons in a matter of seconds. It supports a wide range of image formats and provides handy options like favicon size adjustments, background color selection, and more.&lt;/p&gt;

&lt;p&gt;💡 Pro Tip: When choosing or designing your favicon, keep it simple, memorable, and aligned with your brand's identity. Also, ensure that the favicon is appropriately sized (usually 16x16 or 32x32 pixels) for optimal display.&lt;/p&gt;

&lt;p&gt;With a well-designed favicon, you're not just enhancing your website's identity, but also providing users with a memorable and cohesive browsing experience. ✌🏾 Happy development and coding!&lt;/p&gt;

&lt;p&gt;Follow me for more insights. I am Mr. Paul Ishaili, a dedicated Software Developer based in Abuja.&lt;/p&gt;

&lt;h1&gt;
  
  
  webdesign #favicons #branding #Nextjs #React #webdevtips
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How I fixed Module '"@prisma/client"' has no exported member 'PrismaClient'.ts</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Mon, 08 May 2023 09:23:18 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/how-i-fixed-module-prismaclient-has-no-exported-member-prismaclientts-hci</link>
      <guid>https://dev.to/mrpaulishaili/how-i-fixed-module-prismaclient-has-no-exported-member-prismaclientts-hci</guid>
      <description>&lt;p&gt;I switched to using &lt;code&gt;pnpm&lt;/code&gt; over &lt;code&gt;npm&lt;/code&gt; and &lt;code&gt;yarn&lt;/code&gt; after discovering the benefits over the other package manager for developments.&lt;/p&gt;

&lt;p&gt;So today i ran into the bug in the image, stating that &lt;strong&gt;Module '"@prisma/client"' has no exported member 'PrismaClient'.ts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oNow0ljz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ojkk917arz3izrmff450.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oNow0ljz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ojkk917arz3izrmff450.png" alt="Prisma import error in nextjs using pnpm" width="671" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, I thought this is an issue related to the prisma or @prisma/client package, until I browse through the web and discovered opened issues regarding this same error. it was coming from the pnpm package. &lt;/p&gt;

&lt;p&gt;This github issue thread really helped: &lt;a href="https://github.com/prisma/prisma/issues/13672"&gt;https://github.com/prisma/prisma/issues/13672&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I fixed?
&lt;/h2&gt;

&lt;p&gt;I navigated to prisma.schema file and updated my generator client block of code to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;generator&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;prisma-client-js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="nx"&gt;output&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../node_modules/.prisma/client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After which, I ran the &lt;code&gt;npx prisma generate&lt;/code&gt; command again, and 💥 Boom! Module import error got fixed! 🎉&lt;/p&gt;

&lt;p&gt;Thanks for reading, and I am happy to help.&lt;/p&gt;

&lt;p&gt;Remember to check out the &lt;a href="https://github.com/prisma/prisma/issues/13672"&gt;GITHUB THREAD&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/mrpaulishaili"&gt;Twiiter&lt;/a&gt; for more interesting updates!&lt;/p&gt;

</description>
      <category>react</category>
      <category>prisma</category>
      <category>programming</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Configuring vscode to Pro Level</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Wed, 18 Jan 2023 02:52:14 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/configuring-vscode-to-pro-level-2158</link>
      <guid>https://dev.to/mrpaulishaili/configuring-vscode-to-pro-level-2158</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/MDaxWffMjrQ"&gt;Lines between Code blocks in VS Code&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/f1HVI5slxms"&gt;Cool Arrow in VS Code&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/dp4u1NNFhtE"&gt;Best VS Code Themes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>vscode</category>
      <category>design</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introduction to Solidity</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Mon, 19 Dec 2022 03:24:31 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/introduction-to-solidity-26h3</link>
      <guid>https://dev.to/mrpaulishaili/introduction-to-solidity-26h3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the beginning, there was Bitcoin. It was a fast, easy way to exchange money in a decentralized way – no banks involved. And people could trust it because every transaction is recorded in a public ledger that can’t be changed.&lt;/p&gt;

&lt;p&gt;But Bitcoin was limited. Blockchain technology had the potential to do so much more than peer to peer currency exchanges if it had the right code. So the Ethereum network was created, underpinned by a new language called Solidity.&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%2F8k73hi03ck8mnm830xpu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8k73hi03ck8mnm830xpu.png" alt="Solidity Introduction logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Solidity?
&lt;/h2&gt;

&lt;p&gt;Solidity is a brand-new programming language created by the Ethereum which is the second-largest market of cryptocurrency by capitalization, released in the year 2015 led by Christian Reitwiessner. &lt;/p&gt;

&lt;p&gt;Solidity is an object-oriented, high-level langauge designed for implementing smart contracts on the Ethereum Virtual Machine (EVM).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While Bitcoin provides rewards for running a transaction, Ethereum charges fees for executing software instructions. The gas mechanism in Ethereum lets users pre-pay for the instructions they want to execute on the EVM using Ether, its native currency. The contracts that are run using the EVM are written using Solidity. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Solidity is currently the core language on Ethereum and other private blockchains operating on competing platforms, such as Monax and its Hyperledger Burrow blockchain which uses Tendermint for consensus. &lt;/p&gt;

&lt;h2&gt;
  
  
  Historical View
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;August 2014: The Solidity language is proposed by Gavin Wood.&lt;/li&gt;
&lt;li&gt;October 2014: Solidity is adopted as a language by Monax, a rival platform.&lt;/li&gt;
&lt;li&gt;August 2015: Solidity is officially released.&lt;/li&gt;
&lt;/ul&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%2F1g3w0tgm5rvd5gy57zaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1g3w0tgm5rvd5gy57zaz.png" alt="Solidity logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Solidity project team was led by Christian Reitwiessner, and they were successful in creating a Turing-complete, object oriented programming language for implementing smart contracts. Being a high-level language means developers create smart contracts without having to manipulate system-level information like memory or bytecode to perform computations.&lt;/p&gt;

&lt;p&gt;The profound influence of Solidity from C++ can be seen in the syntax for variable declarations, for loops, the concept of overloading functions, implicit and explicit type conversions and many other details.&lt;/p&gt;

&lt;p&gt;In the early days of the language, Solidity used to be partly influenced by JavaScript. This was due to function-level scoping of variables and the use of the keyword var. The JavaScript influence was reduced starting from version 0.4.0. Now, the main remaining similarity to JavaScript is that functions are defined using the keyword function. Solidity also supports import syntax and semantics that are similar to those available in JavaScript. Besides those points, Solidity looks like most other curly-bracket languages and has no major JavaScript influence anymore.&lt;/p&gt;

&lt;p&gt;Another influence to Solidity was Python. Solidity’s modifiers were added trying to model Python’s decorators with a much more restricted functionality. Furthermore, multiple inheritance, C3 linearization, and the super keyword are taken from Python as well as the general assignment and copy semantics of value and reference types.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terms Associated with Solidity language
&lt;/h2&gt;

&lt;p&gt;In programming with the solidity language there are terms associated with the sphere.&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%2Fyidlnqo792dnn6k6wuvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyidlnqo792dnn6k6wuvt.png" alt="Solidity langauage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Ethereum&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Ethereum is a decentralized open-source platform based on blockchain domain, used to run smart contracts i.e. applications that execute the program exactly as it was programmed without the possibility of any fraud, interference from a third party, censorship or downime. It serves a platform for nearly 260,00 different cryptocurrencies. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Ehter&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Ether is the cryptocurrency generated by ethereum miners used to reward for the computations performed to secure the blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Ehtereum Virtual Machine (EVM)&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Ethereum Virtual Machine (EVM) is a runtime environment for executing smart contracts in ethereum. It focueses widely on providing security and execution of ntrusted code using an internaitonal network of public node. EVM is specialized oto prevent Denial-of-Service attack and confirms that theprogram does not ensure that the commnication is established without any potential interference.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Smart contract&lt;/u&gt;
&lt;/h3&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%2Fyuiwyqiuas4sahix2838.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuiwyqiuas4sahix2838.png" alt="Smart contracts in Solidity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart contract are high-level program codes that are compiled to EVM byte codes and deployed to the ethereum blickchain for further execution. It allows us to perform credible transactions without any interference of the third party. These transactions are traceable and irreversible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of Solidity
&lt;/h2&gt;

&lt;p&gt;The features of Solidity programming language can be numerous, and these include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is high level programming langauge designed for implementing smart contracts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is a statically typed object-oriented (contract-oriented) language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is influenced by C++, Python and JavaScript and it is designed to run on the Ethereum Virtual Machine (EVM).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It supports complex user-defined programming libraries and inheritance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is the primary language for blockchains running platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is a language that can be used to creating contracts like voting, blind auctions, crowdfunding,  multi-signature wallet, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Solidity works
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The beauty of the Ethereum ecosystem is that so many different cryptocurrencies and decentralized applications can use it. Smart contracts make it possible for unique technologies to be made on Ethereum for all kinds of businesses and organizations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Smart contracts built using Solidity can be thought of as a way to automate business and non-business processes between different people. This ensures that people making transactions on the blockchain do not have to worry about risks such as fraud or not being able to use the same currency.&lt;/p&gt;

&lt;p&gt;One of the key components that makes the execution of Solidity code possible is the EVM. The EVM is described as a virtual computer on the blockchain which turns people’s ideas into code that runs applications on the blockchain.&lt;/p&gt;

&lt;p&gt;Under the hood, Solidity creates machine-level code that is executed on the EVM. A compiler is used to break down high-level human-readable code, which it turns into instructions that the processor reads. Different platforms provide free Solidity compilation, including the Remix online compiler and a downloaded command-like compiler on a PC.&lt;/p&gt;

&lt;p&gt;EVM smart contracts have some limitations which need to be addressed. One of the most significant of these is the limited access to useful library functions for parsing JSON structures or floating-point arithmetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Solidity language
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The feasibility of Solidity programming for Ethereum blockchain depends a lot on the value advantages it delivers. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Other than the basic functionalities, Solidity offers many interesting features which verify that it is a better option than many Ethereum-based programming languages. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The first benefit of Solidity programming refers to the support for complicated data types and member variables alongside the fundamental data types. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Furthermore, Solidity programming language also offers an Application Binary Interface or ABI for enabling data type safety. The Application Binary Interface (ABI) could help in quick identification of errors when the compiler recognizes any data type mismatch for specific variables. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another popular highlight of Solidity programming in Ethereum points towards the effect of ‘Natural Language Specification.’ Solidity leverages the Natural Language Specification for transforming user-centric specifications into a language that is comprehensible to machines. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The other critical advantages of using Solidity to build decentralized applications and smart contracts would include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy access to object-oriented attributes in smart contracts, such as multi-level inheritance traits. &lt;/li&gt;
&lt;li&gt;Solidity supports multiple variants of supporting roles by leveraging the Application Binary Interface or ABI.&lt;/li&gt;
&lt;li&gt;The easier syntax helps beginners in learning the fundamentals of smart contracts and blockchain development. &lt;/li&gt;
&lt;li&gt;Development of smart contracts on Solidity programming language would help in driving secure and trustworthy processes for various platforms dealing with agreements between two parties.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Applications of Solidity
&lt;/h2&gt;

&lt;p&gt;Solidity is the foundation of the Ethereum network. No Solidity = no Ethereum. Here’s what you can do, thanks to the language.&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%2Fq99204s9b8xcuxeh7ufx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq99204s9b8xcuxeh7ufx.png" alt="Solidity with Ethereum"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dapps:&lt;/strong&gt; The programming language gives developers the ability to create their own decentralized apps. A way to think about  is like apps you get on your smartphone. You can download all kinds of apps from the app store, from games to fitness to banking. Dapps are the same. The main difference is that they are open source and don’t have a middleman (hence the word decentralized’). Just like apps in the Apple app store are built to run on iOS, Dapps on Ethereum are built to run on Solidity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smart contracts:&lt;/strong&gt; Within Dapps, there are pieces of code known as smart contracts. These help people exchange money, shares, property and nearly anything of value when certain conditions are met. That eliminates the need for an expensive third party like a notary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ICOs:&lt;/strong&gt; Developers can also create their own tokens and launch an ICO right on the Ethereum platform. These tokens are known as ERC20 tokens; examples include OmiseGO, 0x, and the Basic Attention Token.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Ethereum is changing. The slew of developments and upgrades are bundled together under the banner, Ethereum 2.0. This will include developments like a new proof of stake, and sharding to make the blockchain run faster.&lt;/p&gt;

&lt;p&gt;It’s all being done as an open source project by a large group of developers and researchers. This community goes far beyond the Ethereum Foundation – the group behind Ethereum. As such, there have been problems, disagreements, and roadblocks along the way, you can read about some of those issues in our ongoing coverage on the future of Ethereum. But whatever happens Solidity is here to stay.&lt;/p&gt;




&lt;h2&gt;
  
  
  Futher Reading &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bitcoin Whitepaper. &lt;a href="https://bitcoin.org/bitcoin.pdf" rel="noopener noreferrer"&gt;https://bitcoin.org/bitcoin.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ethereum Whitepaper. &lt;a href="https://ethereum.org/en/whitepaper/" rel="noopener noreferrer"&gt;https://ethereum.org/en/whitepaper/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to learn Solidity in 30 days. &lt;a href="https://medium.com/coinmonks/how-to-learn-solidity-in-30-days-78b02e503d23" rel="noopener noreferrer"&gt;https://medium.com/coinmonks/how-to-learn-solidity-in-30-days-78b02e503d23&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Complete Guide to Full Stack Ethereum and EVM Development. &lt;a href="https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13"&gt;https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tips And Tricks In Solidity. &lt;a href="https://techblog.geekyants.com/tips-and-tricks-in-solidity" rel="noopener noreferrer"&gt;https://techblog.geekyants.com/tips-and-tricks-in-solidity&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learn Solidity, Blockchain, and Smart Contracts in a Free 16-Hour Course. &lt;a href="https://www.freecodecamp.org/news/learn-solidity-blockchain-and-smart-contracts-in-a-free/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/learn-solidity-blockchain-and-smart-contracts-in-a-free/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;Calvin Ebun A., (2021). What Is Solidity and How Is It Used to Develop Smart Contracts?. &lt;a href="https://www.makeuseof.com/what-is-solidity/" rel="noopener noreferrer"&gt;https://www.makeuseof.com/what-is-solidity/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Matt Hursey, (2019). What is Solidity Programming Language?. &lt;a href="https://decrypt.co/resources/solidity" rel="noopener noreferrer"&gt;https://decrypt.co/resources/solidity&lt;/a&gt;. &lt;a href="https://www.makeuseof.com/what-is-solidity/" rel="noopener noreferrer"&gt;https://www.makeuseof.com/what-is-solidity/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Solidity - Useful Resources. &lt;a href="https://www.tutorialspoint.com/solidity/solidity_useful_resources.htm" rel="noopener noreferrer"&gt;https://www.tutorialspoint.com/solidity/solidity_useful_resources.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vedant Chainani, &lt;a class="mentioned-user" href="https://dev.to/envoy_"&gt;@envoy_&lt;/a&gt;. (2022). History and Origin of Solidity. &lt;a href="https://dev.to/envoy_/history-and-origin-of-solidity-2mhl"&gt;https://dev.to/envoy_/history-and-origin-of-solidity-2mhl&lt;/a&gt; &lt;/p&gt;




&lt;h3&gt;
  
  
  Follow on &lt;a href="https://twitter.com/mrpaulishaili" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more.
&lt;/h3&gt;

</description>
      <category>solidity</category>
      <category>webdev</category>
      <category>blockchain</category>
      <category>ethereum</category>
    </item>
    <item>
      <title>Continuous deployment for front-end projects with surge.sh</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Thu, 17 Nov 2022 02:10:21 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/continous-deployment-for-front-end-projects-with-surgesh-4580</link>
      <guid>https://dev.to/mrpaulishaili/continous-deployment-for-front-end-projects-with-surgesh-4580</guid>
      <description>&lt;p&gt;Surge.sh has indeed boosted my efficiency for deploying front-end projects. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to get started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Globally install surge.sh&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; surge
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the surge command&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;surge
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setup an email and password&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assign a domain for your project&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gYVJ6qDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fukpvrb0del8bpvjkmt6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gYVJ6qDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fukpvrb0del8bpvjkmt6.gif" alt="Surge.sh description" width="880" height="407"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add this command to your package.json scripts&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;...
&lt;span class="s2"&gt;"deploy"&lt;/span&gt;: &lt;span class="s2"&gt;"surge --domain your-assigned-domain.surge.sh"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command when next your build is ready.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Voila 🚀!&lt;/p&gt;




&lt;p&gt;Was this helpful? Let me know in the comment section, especially compared to deploying on other platforms.&lt;/p&gt;




&lt;p&gt;I am &lt;a href="https://dev.to/mrpaulishaili"&gt;Paul Ishaili C.&lt;/a&gt;, a software engineer and tech writer. I share interesting thoughts and processes on solving problems and truly understanding programming. &lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/mrpaulishaili"&gt;Twitter&lt;/a&gt; and &lt;a href="https://linkedin.com/in/mrpaulishaili"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cover image: &lt;a href="https://www.istockphoto.com/portfolio/Mimadeo?mediatype=photography"&gt;Mimadeo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>vue</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Create react app and node.js server in one line</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Thu, 27 Oct 2022 06:31:58 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/create-client-and-server-in-one-line-48nh</link>
      <guid>https://dev.to/mrpaulishaili/create-client-and-server-in-one-line-48nh</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;client server &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;client &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npx create-react-app &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm i react-router-dom &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ../server &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm init &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm i express 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Transitioning from NoSQL to also implementing SQL</title>
      <dc:creator>Paul C. Ishaili </dc:creator>
      <pubDate>Tue, 25 Oct 2022 10:11:55 +0000</pubDate>
      <link>https://dev.to/mrpaulishaili/transitioning-from-nosql-to-also-implementing-sql-dn2</link>
      <guid>https://dev.to/mrpaulishaili/transitioning-from-nosql-to-also-implementing-sql-dn2</guid>
      <description>&lt;p&gt;Transitioning from NoSQL to also implementing SQL has been a great leap in my career as a developer.&lt;/p&gt;

&lt;p&gt;Here are a few important tips that I have learned and are helping me in implementing SQL properly in projects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The MySQL workbench&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The MySQL Workbench is an alternative to the MySQL command line. It enables the creation of schemas and tables using the GUI and also generates query codes that can be run on the command line. It is a great tool when working with structured data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Communicating from NodeJS to MYSQL Database&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I experienced difficulties here due to the fatal authentication error I received after installing the MySQL node package. The solution that I had for this was to rather install mysql2 in place of the MySQL, import as MySQL, and use it in my server.js.&lt;/p&gt;

&lt;p&gt;Thanks to this &lt;a href="https://lnkd.in/dWY_cakG"&gt;resource on stackoverflow&lt;/a&gt; for helping with this solution.&lt;/p&gt;

&lt;p&gt;I'm Paul Ishaili C., and I share interesting thoughts and processes for solving problems and truly understanding programming.&lt;/p&gt;

&lt;h1&gt;
  
  
  developer #programming #nodejs #mysql #database #sql #projects #career #nosql
&lt;/h1&gt;

&lt;p&gt;Join my Telegram Channel 👉 &lt;a href="https://t.me/devpacademy"&gt;https://t.me/devpacademy&lt;/a&gt; for more.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
