<?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: Khokon M.</title>
    <description>The latest articles on DEV Community by Khokon M. (@khokon).</description>
    <link>https://dev.to/khokon</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%2F776389%2F14d5c16b-d98f-47f4-9d35-0c459cb061e8.png</url>
      <title>DEV Community: Khokon M.</title>
      <link>https://dev.to/khokon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khokon"/>
    <language>en</language>
    <item>
      <title>Run LLMs Locally: Build Your Own AI Chat Assistant</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Thu, 27 Mar 2025 19:01:25 +0000</pubDate>
      <link>https://dev.to/khokon/run-llms-locally-build-your-own-ai-chat-assistant-ipc</link>
      <guid>https://dev.to/khokon/run-llms-locally-build-your-own-ai-chat-assistant-ipc</guid>
      <description>&lt;p&gt;This week, I explored how to &lt;strong&gt;run an AI chatbot locally&lt;/strong&gt; using open-source models like &lt;strong&gt;CodeLlama&lt;/strong&gt; with &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;. The goal was to create an AI assistant that works &lt;strong&gt;entirely offline&lt;/strong&gt;, just like ChatGPT, but without relying on any cloud-based services.&lt;/p&gt;

&lt;p&gt;If you’ve never worked with LLMs before, don’t worry—this guide will take you from &lt;strong&gt;zero to a working local AI chat assistant&lt;/strong&gt; step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 1: Install Ollama&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ollama makes it incredibly easy to run &lt;strong&gt;open-source AI models&lt;/strong&gt; on your own machine. If you haven’t installed it yet, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install Ollama and its dependencies.&lt;/p&gt;

&lt;p&gt;Once installed, you can &lt;strong&gt;pull any model&lt;/strong&gt; you want. For example, to download &lt;strong&gt;CodeLlama&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull codellama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have an &lt;strong&gt;AI model running locally!&lt;/strong&gt; 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2: Run Your First AI Query&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To test it, simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run codellama &lt;span class="s2"&gt;"What is the capital of France?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your local AI will respond just like an online chatbot!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3: Expose Ollama's API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ollama provides an &lt;strong&gt;HTTP API&lt;/strong&gt; at &lt;code&gt;localhost:11434&lt;/code&gt; to interact with models. You can send requests 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;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:11434/api/generate &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ "model": "codellama", "prompt": "What is 2 + 2?", "stream": false }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns a JSON response with the AI’s answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 4: Build a Chat UI&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Instead of using the command line, I built a &lt;strong&gt;React-based chat interface&lt;/strong&gt; that connects to Ollama’s API and streams responses in real time. You can find the code here:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/khokonm/ollama-gui" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How It Works&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Sends messages&lt;/strong&gt; to Ollama’s local API (&lt;code&gt;localhost:11434&lt;/code&gt;).&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Streams responses&lt;/strong&gt; in real time, so text appears word by word.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Keeps chat history&lt;/strong&gt; so the AI remembers context.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Step 5: Adding Context History&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;By default, each request is independent, meaning the AI &lt;strong&gt;forgets previous messages&lt;/strong&gt;. To fix this, we send the full conversation history as the prompt.&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Store messages&lt;/strong&gt; in an array&lt;br&gt;&lt;br&gt;
2️⃣ &lt;strong&gt;Send the entire chat history&lt;/strong&gt; as the prompt&lt;br&gt;&lt;br&gt;
3️⃣ &lt;strong&gt;Limit message history&lt;/strong&gt; to avoid long input sizes&lt;/p&gt;

&lt;p&gt;Here’s an example of a JSON request that includes previous messages:&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="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codellama&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;prompt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: Hello!&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;nAI: Hi there!&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;nUser: How are you?&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;nAI:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stream&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI now &lt;strong&gt;remembers context&lt;/strong&gt; and responds accordingly.&lt;/p&gt;

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

&lt;p&gt;Running &lt;strong&gt;LLMs locally&lt;/strong&gt; is easier than ever. You now have a &lt;strong&gt;fully offline AI assistant&lt;/strong&gt; that can chat like ChatGPT, but without sending data to external servers. 🚀&lt;/p&gt;

&lt;p&gt;Next step? &lt;strong&gt;Adding persistent memory&lt;/strong&gt; by storing chat history in a database!&lt;/p&gt;

&lt;p&gt;Let me know if you try this! Would love to hear how it works for you. 🙌&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building an APK from Expo: Everything You Need to Know!</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Sat, 22 Feb 2025 11:48:16 +0000</pubDate>
      <link>https://dev.to/khokon/building-an-apk-from-expo-everything-you-need-to-know-c7i</link>
      <guid>https://dev.to/khokon/building-an-apk-from-expo-everything-you-need-to-know-c7i</guid>
      <description>&lt;p&gt;I spent hours trying to export an APK from a React Native Expo project—without ejecting it. &lt;br&gt;
It took me nearly half a day to figure out, so I’m writing this guide to save you the trouble.&lt;/p&gt;

&lt;p&gt;Let’s dive straight into the commands you need&lt;/p&gt;
&lt;h2&gt;
  
  
  Steps to Build an APK from Expo
&lt;/h2&gt;

&lt;p&gt;Alright, let's get straight to it. Follow these steps to build your APK without ejecting your Expo project.  &lt;/p&gt;
&lt;h3&gt;
  
  
  1. Install Dependencies
&lt;/h3&gt;

&lt;p&gt;First things first, make sure you have all the necessary packages installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install 
&lt;/span&gt;npx expo &lt;span class="nb"&gt;install &lt;/span&gt;expo-dev-client 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Check for Issues (Optional)
&lt;/h3&gt;

&lt;p&gt;If you want to make sure your project is in good shape before building, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx expo-doctor  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will scan your project and let you know if there are any issues that might cause trouble during the build.  &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fix Package Compatibility Issues (If Needed)
&lt;/h3&gt;

&lt;p&gt;If you run into any package version mismatches, you can fix them easily by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx expo &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--fix&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Build the Project
&lt;/h3&gt;

&lt;p&gt;Now, if everything looks good, it's time to build the project. Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eas build &lt;span class="nt"&gt;--profile&lt;/span&gt; development &lt;span class="nt"&gt;--platform&lt;/span&gt; android  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure you're logged into your Expo account before running this command. If you don’t have one, create it from the official &lt;a href="https://expo.dev/" rel="noopener noreferrer"&gt;expo website&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;By default, this will generate an &lt;code&gt;.aab&lt;/code&gt; file instead of an &lt;code&gt;.apk&lt;/code&gt; file. If you need an APK, there’s one more step.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Modifying &lt;code&gt;eas.json&lt;/code&gt; to Get an APK
&lt;/h2&gt;

&lt;p&gt;To get an APK instead of an AAB, you’ll need to modify your &lt;code&gt;eas.json&lt;/code&gt; file. Here’s what it should look like:&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;"build"&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;"production"&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;"autoIncrement"&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;"android"&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;"buildType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"apk"&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;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;p&gt;Once you've updated the &lt;code&gt;eas.json&lt;/code&gt; file, run this command to generate the APK:  &lt;/p&gt;

&lt;p&gt;eas build --profile production --platform android  &lt;/p&gt;

&lt;p&gt;And that's it! Now you’ll have your APK file ready to install or share.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;And that's it! You now have a working APK from your Expo project—without having to eject. Whether you're testing your app or distributing it outside the Play Store, this method keeps your workflow smooth and hassle-free.  &lt;/p&gt;

&lt;p&gt;If you found this guide helpful, share it with fellow developers who might be struggling with the same issue. Happy coding! &lt;/p&gt;

</description>
      <category>reactnative</category>
    </item>
    <item>
      <title>Please suggest a tech stack to build a brand new blog site!</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Thu, 10 Nov 2022 20:02:56 +0000</pubDate>
      <link>https://dev.to/khokon/please-suggest-what-stack-to-use-to-build-a-brand-new-blog-site-j3k</link>
      <guid>https://dev.to/khokon/please-suggest-what-stack-to-use-to-build-a-brand-new-blog-site-j3k</guid>
      <description>&lt;p&gt;Hi there dev commiunity,&lt;br&gt;
I am planning to start a personal blog shortly. i'm a little confused about which stack to pick for my blog. Please suggest which tech stack should I use with a one-liner reason.&lt;br&gt;
Thanks in Advance&lt;br&gt;
Khokon M.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Home office vs work office. What do you prefer and why?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Fri, 17 Jun 2022 14:20:40 +0000</pubDate>
      <link>https://dev.to/khokon/home-office-vs-work-office-what-do-you-prefer-and-why-467h</link>
      <guid>https://dev.to/khokon/home-office-vs-work-office-what-do-you-prefer-and-why-467h</guid>
      <description>&lt;p&gt;We had a chance to experience the work-from-home situation due to the pandemic. And currently, some of us are back in the office again, and some are still working from home.&lt;/p&gt;

&lt;p&gt;Based on your experience, what do you prefer the most now? And why?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>What are some advice for starting the first OSS?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Fri, 10 Jun 2022 04:17:04 +0000</pubDate>
      <link>https://dev.to/khokon/what-are-some-advice-for-starting-the-first-oss-1ffj</link>
      <guid>https://dev.to/khokon/what-are-some-advice-for-starting-the-first-oss-1ffj</guid>
      <description>&lt;p&gt;What advice would you like to give to someone planning to start his first open-source project?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Should I start an Open-Source on my profile or my organization profile?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Thu, 02 Jun 2022 07:17:55 +0000</pubDate>
      <link>https://dev.to/khokon/should-i-start-an-open-source-on-my-profile-or-my-organization-profile-33ok</link>
      <guid>https://dev.to/khokon/should-i-start-an-open-source-on-my-profile-or-my-organization-profile-33ok</guid>
      <description>&lt;p&gt;Hi,&lt;br&gt;
I'm planning to start my first open source project. I am just a little bit confused about where should I host it. Please advice me on this.&lt;br&gt;
My personal Profile: &lt;a href="https://github.com/khokonm" rel="noopener noreferrer"&gt;KhokonM&lt;/a&gt;&lt;br&gt;
And my organization profile: &lt;a href="https://github.com/Blog-Desire" rel="noopener noreferrer"&gt;Blog Desire&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>discuss</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How do you define an ideal portfolio?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Tue, 31 May 2022 17:59:39 +0000</pubDate>
      <link>https://dev.to/blogdesire/how-do-you-define-an-ideal-portfolio-bbb</link>
      <guid>https://dev.to/blogdesire/how-do-you-define-an-ideal-portfolio-bbb</guid>
      <description>&lt;p&gt;Let's discuss portfolios today. I will engage the discussion with some questions. Here I go,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What do you think about some must-have sections for a good portfolio? &lt;/li&gt;
&lt;li&gt;As a developer, what color combination would you love to use in your portfolio?&lt;/li&gt;
&lt;li&gt;Do you prefer a simple portfolio, or do you like complex fancy works to show off skills? &lt;/li&gt;
&lt;li&gt;Do you prefer to upload your detailed resume to your portfolio? If not, is it a privacy concern or something else?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
      <category>career</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Rate my landing page design and help me improve please!</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Mon, 23 May 2022 14:18:27 +0000</pubDate>
      <link>https://dev.to/khokon/rate-my-landing-page-design-and-help-me-improve-please-125h</link>
      <guid>https://dev.to/khokon/rate-my-landing-page-design-and-help-me-improve-please-125h</guid>
      <description>&lt;p&gt;Hi there, Dev community. I mostly do backend stuff. But sometimes, for my own personal projects, I also need to design some front-end stuff. &lt;br&gt;
But I think I'm pretty much bad at designing stuff. That's why today, I'm asking your opinion about my ability to organize things.&lt;br&gt;
If you think the design is good, please let me know. Otherwise, please advise how I can improve.&lt;br&gt;
Thanks in advance, guys!&lt;br&gt;
&lt;a href="https://apps.blogdesire.com/web-lock/" rel="noopener noreferrer"&gt;Landing Page URL&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why quitting job articles are so popular?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Mon, 16 May 2022 18:48:34 +0000</pubDate>
      <link>https://dev.to/khokon/why-quitting-job-articles-are-so-popular-1c44</link>
      <guid>https://dev.to/khokon/why-quitting-job-articles-are-so-popular-1c44</guid>
      <description>&lt;p&gt;We often see people posting about quitting their job; I mean including all blogs and not just dev.to. And somehow, they manage to attract a lot of attention. What are your thoughts on this topic?&lt;br&gt;
Is it like most people hate their job but don't have the courage to leave it so they seek inspiration in such blogs or something else? &lt;br&gt;
Let us know know your thoughts on this. Let's have a meaningful discussion on this topic.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>5 Chrome extensions you might have considered if you knew they exist</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Tue, 26 Apr 2022 16:05:51 +0000</pubDate>
      <link>https://dev.to/khokon/5-chrome-extensions-you-might-have-considered-if-you-knew-they-exist-c58</link>
      <guid>https://dev.to/khokon/5-chrome-extensions-you-might-have-considered-if-you-knew-they-exist-c58</guid>
      <description>&lt;p&gt;There are thousands of Chrome Extensions available on the Webstore. And do we know all of them? Indeed, it's impossible to know about every single extension available on the Webstore. So, there's a chance that you haven't discovered every extension you need yet! So, today I'm going to introduce you to such 5 extensions that you haven't found yet, but I think you would have considered them if you knew about their existence. So, without further talking, let's get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  30 Seconds of knowledge
&lt;/h2&gt;

&lt;p&gt;Learning new things as a developer often comes with lots of barriers when it comes to learning new things.  But this extension made things easier. Every time you create a new tab, this extension will fill the new tab with some piece of information that you can quickly look at. The tips are pretty short, so you don't have to spend much time learning them. Currently, it provides tips about some popular languages like c++, python, javascript, etc. What a great way to learn, isn't it? &lt;a href="https://chrome.google.com/webstore/detail/30-seconds-of-knowledge/mmgplondnjekobonklacmemikcnhklla/related" rel="noopener noreferrer"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Library Detector
&lt;/h2&gt;

&lt;p&gt;How many times did you wonder like, "Wow! This site looks gorgeous; which libraries did they use to build this?" Well, this extension will make your life easier. Just get the extension, and every time you visit a website, it will tell you which libraries they used to build the website you're visiting. Pretty good, right? &lt;a href="https://chrome.google.com/webstore/detail/library-detector/cgaocdmhkmfnkdkbnckgmpopcbpaaejo" rel="noopener noreferrer"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Lock
&lt;/h2&gt;

&lt;p&gt;Okay, Let's be honest. I developed this extension. So, it's a kind of promotion here 😁. &lt;br&gt;
But I think this is an excellent fit for many of us. We all use app locks on our phones, right? Then what about the websites on our browser? This extension comes to play the role of app lock on your browser. So you can protect websites that hold your sensitive information like Gmail, Google Drive, Photos, etc. It's also an excellent fit for parents to prevent kids from accessing specific sites. I would love to hear back your feedback on this 🥰&lt;a href="https://chrome.google.com/webstore/detail/web-lock-app-lock-for-web/dnnadodijkgincdakbjjhhcmlbfpahjj" rel="noopener noreferrer"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Figma To Code
&lt;/h2&gt;

&lt;p&gt;This extension is perfect for converting your Figma design into code. It enables you to prepare your design into React, Vue, or just regular HTML without much effort. Although it uses Anima to convert your design, Anima has an official &lt;a href="https://www.figma.com/community/plugin/857346721138427857/Anima" rel="noopener noreferrer"&gt;plugin&lt;/a&gt; on Figma that you can install and use. Yet I think it's an excellent extension to consider. &lt;a href="https://chrome.google.com/webstore/detail/figma-to-code-reacthtmlvu/deogccghoodabgngjnmlobkbkfnflhac" rel="noopener noreferrer"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scripty
&lt;/h2&gt;

&lt;p&gt;I've spent hours coding my Scriptify Chrome extension so that I can inject javascript to any website easily. And then I discovered there is already a similar extension available with much better features. The later I would have found this extension, the more time I would have spent on my extension. So if you're like me and want to customize or automate some task on a particular website or all, I suggest you grab the extension and make the best use of it. You won't regret it! &lt;a href="https://chrome.google.com/webstore/detail/scripty-javascript-inject/milkbiaeapddfnpenedfgbfdacpbcbam" rel="noopener noreferrer"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know there are a lot of popular extensions available that deserve to be installed, but I tried to keep the list among unpopular extensions. Let me know if you have found any of them helpful. Cause that's my inspiration. &lt;/p&gt;

&lt;p&gt;Do you know such an extension that deserves more attention? Let me know in the comment section, and I would love to check them out and will add them to the list. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>You need a universal logger right now!</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Mon, 18 Apr 2022 15:25:23 +0000</pubDate>
      <link>https://dev.to/khokon/you-need-a-universal-logger-right-now-4jim</link>
      <guid>https://dev.to/khokon/you-need-a-universal-logger-right-now-4jim</guid>
      <description>&lt;p&gt;How many loggers have you set up so far to keep track of events in your different projects? If you took more than a couple of seconds to answer this question, this article is for you. And if you were unable to answer the question, well, this article is definitely for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;For me, it was a kind of repetitive task that I had to set up loggers for every project. Sure enough, there are a good number of npm packages for logging available. But that still didn't satisfy me. Because I still need to visit each project to check its log. And suddenly, this started feeling like a burden to me. So I had to come up with a solution for this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;So, what's the solution? The idea was straightforward. I just had to create a centralized logger and use it for all the projects. And let the centralized system handle everything else. Like, separating logs for each project. So I can peacefully focus on building projects only and not on loggers. That was quite fun, so here I am to share the journey as my #devjournal&lt;/p&gt;

&lt;h2&gt;
  
  
  How My Universal Logger Works?
&lt;/h2&gt;

&lt;p&gt;First, I created a &lt;a href="https://logs.khokon.dev/api" rel="noopener noreferrer"&gt;backend&lt;/a&gt; that will accept any logs, as long as the request contains an API Key and a log message. The idea is to send logs from all projects to this particular endpoint. And then, I created &lt;a href="https://logs.khokon.dev/" rel="noopener noreferrer"&gt;this&lt;/a&gt; interface to manage and handle all the submitted records from different projects. Now, as I'm putting all my logs from the various projects into one place, I had to make sure I could identify which log was coming from which project.&lt;/p&gt;

&lt;p&gt;To do that, I created the API key system. So for each project, I will simply create an API key from my interface with just one click. And to supply logs from a project, I will use the particular API key I made for the project. &lt;/p&gt;

&lt;h2&gt;
  
  
  How I use the logger in different projects
&lt;/h2&gt;

&lt;p&gt;As the primary goal of the whole project was just to simplify managing logs, I had to find the easiest way to use the logger on all projects. For that particular reason, I created an NPM package called &lt;a href="https://www.npmjs.com/package/@khokonm/klogs" rel="noopener noreferrer"&gt;kLogs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, for each project, I install the package from NPM&lt;br&gt;
&lt;code&gt;npm install @khokonm/klogs&lt;/code&gt;&lt;br&gt;
And wherever I need to take log, I write a few lines of code. &lt;br&gt;
First, I require the npm package&lt;br&gt;
&lt;code&gt;const kLogs = require("@khokonm/klogs")&lt;/code&gt;&lt;br&gt;
and after that, just a few lines of code for any logs. 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;const Logs = new kLogs('MY_API_KEY_FOR_THIS_PROJECT');
const log = {
  "message": "This is a log message",
  "additional_info": {
    aJavascriptObject
  }
};
Logs.prepare(log);
Logs.send();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The message is the only required parameter, but I can pass all the optional parameters like source (string), medium (string), additional info(object) as well. &lt;/p&gt;

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

&lt;p&gt;If you're like me and hate repetitive tasks too, I hope this idea will help you to better organize your logs in your next project. Any suggestions or improvement ideas are highly appreciated.&lt;/p&gt;

&lt;p&gt;If you want to help me improve my logger or use my logger for your project. You're most welcome. You can make a pull request to &lt;a href="https://github.com/khokonm/kLogs" rel="noopener noreferrer"&gt;this repo&lt;/a&gt;, and I will be more than happy to merge it with my original work. &lt;/p&gt;

&lt;p&gt;And if you want to use the interface to manage your logs, please visit &lt;a href="https://logs.khokon.dev" rel="noopener noreferrer"&gt;logs.khokon.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>discuss</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>How to password protect any website?</title>
      <dc:creator>Khokon M.</dc:creator>
      <pubDate>Mon, 28 Mar 2022 13:37:06 +0000</pubDate>
      <link>https://dev.to/khokon/how-to-password-protect-any-website-2ej7</link>
      <guid>https://dev.to/khokon/how-to-password-protect-any-website-2ej7</guid>
      <description>&lt;p&gt;Your browser is the new treasury of your personal data. Especially sites like google photos, email, etc. And there is no wonder that we share our devices with people close to us. Even if we have to share the device with someone, it’s not necessary to share the personal data it holds. When it comes to social media sites, you simply can just log out of the site and make sure no one can sneak around your social media while using your device. But what about services you don’t want to log out of but rather have another safety layer? In such a case, we can password protect websites in our browser. So no unwanted people can have access to the websites we don’t want them to. Luckily, we have a solution for this particular problem. Let’s jump into the content yey!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2Fpexels-photo-3868576.jpeg%3Fw%3D1880%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2Fpexels-photo-3868576.jpeg%3Fw%3D1880%26ssl%3D1" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Lock
&lt;/h2&gt;

&lt;p&gt;We lock is password protection for websites, just like the app lock we use on mobile devices. Except, this is a browser extension. You can get the extension from the chrome web store, which supports all chromium-based browsers like &lt;a href="https://www.microsoft.com/en-us/edge" rel="noopener noreferrer"&gt;Microsoft Edge&lt;/a&gt;, &lt;a href="https://brave.com/" rel="noopener noreferrer"&gt;Brave&lt;/a&gt;, &lt;a href="https://vivaldi.com/" rel="noopener noreferrer"&gt;Vivaldi&lt;/a&gt;, etc. So if you’re using one of them, you can simply install the extension from &lt;a href="https://chrome.google.com/webstore/detail/web-lock-app-lock-for-web/dnnadodijkgincdakbjjhhcmlbfpahjj" rel="noopener noreferrer"&gt;here&lt;/a&gt;. The extension will soon be available for other browsers like Firefox as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup Password
&lt;/h2&gt;

&lt;p&gt;After you’ve installed the extension successfully, click on the extension icon from your browser and it will open a password setup page. Like the screenshot below.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-9.png%3Fw%3D1202%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-9.png%3Fw%3D1202%26ssl%3D1" alt="Web lock password setup screen&amp;lt;br&amp;gt;
" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
On the first box, type your email address, this email will be used to reset your password if you ever forget it. But hopefully, you won’t 😀&lt;/p&gt;

&lt;p&gt;The next two boxes are for passwords, you have to type the same password on both boxes. Once you’ve set up the password, you’ll be asked to log in using your password.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protect Websites
&lt;/h2&gt;

&lt;p&gt;Once you’ve logged in to the extension dashboard, you’ll see a screen like this.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-10.png%3Fresize%3D2048%252C1139%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-10.png%3Fresize%3D2048%252C1139%26ssl%3D1" alt="Web Lock Dashboard" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
All you need to do now is enter your desired website’s URL in the box and press enter. For example, I can put &lt;a href="https://www.blogdesire.com" rel="noopener noreferrer"&gt;https://www.blogdesire.com&lt;/a&gt; in the box to protect my site from unwanted visitors, as I have admin access to the site 😀&lt;/p&gt;

&lt;p&gt;So, next time someone tries to visit blogdesire.com from my browser, they will be asked to enter a password before they can access the site. Just like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-11.png%3Fw%3D1392%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.blogdesire.com%2Fwp-content%2Fuploads%2F2022%2F03%2FScreenshot-11.png%3Fw%3D1392%26ssl%3D1" alt="Password Protect Websites" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it. I hope you found the article helpful. If you’re having any issues with the extension or with the article, you can just let me know in the comment section. Thanks&lt;/p&gt;

</description>
      <category>security</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
