<?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: Mezbah Alam</title>
    <description>The latest articles on DEV Community by Mezbah Alam (@mezbahalam).</description>
    <link>https://dev.to/mezbahalam</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%2F52622%2F8f258e04-f5d6-43d3-a56c-20caf1d640ec.jpeg</url>
      <title>DEV Community: Mezbah Alam</title>
      <link>https://dev.to/mezbahalam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mezbahalam"/>
    <language>en</language>
    <item>
      <title>Why Rails Still Feels Like a Startup’s Best Friend in the AI Era</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Sun, 29 Mar 2026 09:59:19 +0000</pubDate>
      <link>https://dev.to/mezbahalam/why-rails-still-feels-like-a-startups-best-friend-in-the-ai-era-45hn</link>
      <guid>https://dev.to/mezbahalam/why-rails-still-feels-like-a-startups-best-friend-in-the-ai-era-45hn</guid>
      <description>&lt;p&gt;On Sunday night, a founder tells themselves they are building the product.&lt;/p&gt;

&lt;p&gt;They are not.&lt;/p&gt;

&lt;p&gt;They are choosing libraries. Comparing starter kits. Reading arguments about architecture. Wiring auth. Debating folder structure. Trying to decide what a "serious" startup stack is supposed to look like.&lt;/p&gt;

&lt;p&gt;By the end of the week, they have a clean setup, a growing to-do list, and almost nothing a user can actually touch.&lt;/p&gt;

&lt;p&gt;Startups do not usually lose because they picked the "wrong" framework. They lose because they move too slowly, drown in decisions, and spend their early energy on complexity that did not need to exist yet.&lt;/p&gt;

&lt;p&gt;Rails still matters because it removes a lot of the fake hard parts.&lt;/p&gt;

&lt;p&gt;It removes the kind of hard that looks impressive in engineering conversations but quietly steals time from the things a startup actually needs: shipping, learning, talking to users, fixing obvious problems, and staying alive long enough to matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  A startup does not need more freedom. It needs less chaos.
&lt;/h2&gt;

&lt;p&gt;Too much freedom, too early, is often a trap.&lt;/p&gt;

&lt;p&gt;When a startup is small, every extra choice has a cost. Every extra tool adds weight. Every custom pattern becomes something the team has to remember, defend, and maintain later.&lt;/p&gt;

&lt;p&gt;A young company already has enough uncertainty.&lt;/p&gt;

&lt;p&gt;The product is uncertain. The market is uncertain. The pricing is uncertain. The users are uncertain. The timing is uncertain.&lt;/p&gt;

&lt;p&gt;Your framework does not need to add more uncertainty just to make the team feel clever.&lt;/p&gt;

&lt;p&gt;Rails understood this early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rails was always built for momentum
&lt;/h2&gt;

&lt;p&gt;Rails helps small teams get moving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real startup killer is not slowness. It is drift.
&lt;/h2&gt;

&lt;p&gt;The real question is simpler: what helps a small team keep moving without getting lost?&lt;/p&gt;

&lt;p&gt;Because that is what happens in early-stage companies. Not one big failure. Drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now add AI to the picture
&lt;/h2&gt;

&lt;p&gt;The stronger point is this: &lt;strong&gt;Rails gives AI less room to get lost.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI is powerful, but it is also messy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why founders should care
&lt;/h2&gt;

&lt;p&gt;If you are a founder, the framework question is not really about framework ideology. It is about business throughput.&lt;/p&gt;

&lt;p&gt;Most early startups do not fail because they lacked theoretical flexibility. They fail because they ran out of focus.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quiet strength of Rails
&lt;/h2&gt;

&lt;p&gt;A startup already has enough uncertainty in front of it.&lt;/p&gt;

&lt;p&gt;You do not need your framework adding more confusion just to prove you are modern.&lt;/p&gt;

&lt;p&gt;That is the quiet strength of Rails: when you are trying to survive long enough to build something people want, less chaos is a feature.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>startup</category>
      <category>ai</category>
    </item>
    <item>
      <title>A ChatGPT Prompt Manager for Developers: Save Prompts, Bookmark Replies, Search Threads (Chrome Extension)</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Mon, 29 Dec 2025 11:33:51 +0000</pubDate>
      <link>https://dev.to/mezbahalam/a-chatgpt-prompt-manager-for-developers-save-prompts-bookmark-replies-search-threads-chrome-4nac</link>
      <guid>https://dev.to/mezbahalam/a-chatgpt-prompt-manager-for-developers-save-prompts-bookmark-replies-search-threads-chrome-4nac</guid>
      <description>&lt;p&gt;If you use ChatGPT for real work, you’ve felt this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You wrote a great prompt once… then lost it.&lt;/li&gt;
&lt;li&gt;You remember “that one answer” from a long thread… then waste 10 minutes scrolling.&lt;/li&gt;
&lt;li&gt;Your best snippets end up scattered across notes, screenshots, and half-saved chats.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s not a motivation problem. It’s a &lt;strong&gt;retrieval problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Chat Navigator&lt;/strong&gt; — a Chrome extension that adds a sidebar inside ChatGPT for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Search&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Message bookmarks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt management (a prompt library you can reuse)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install (Chrome Web Store): &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/aapchhfjoohmohpdcadghjacklcdfdml?utm_source=dev" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/aapchhfjoohmohpdcadghjacklcdfdml?utm_source=dev&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Product page: &lt;strong&gt;&lt;a href="https://infolily.com/" rel="noopener noreferrer"&gt;https://infolily.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2aknj41kd577vvv4axt8.jpg" alt="chatnavigator" width="800" height="1347"&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9e5slkh8p4qgqlwxvgfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9e5slkh8p4qgqlwxvgfj.png" alt="bookmarks" width="768" height="1518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1) Search long threads without scrolling
&lt;/h3&gt;

&lt;p&gt;Chat Navigator gives you a sidebar outline + search so you can jump to the message you need instead of dragging a scrollbar through a 200-message conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  2) Bookmark &lt;em&gt;messages&lt;/em&gt;, not just chats
&lt;/h3&gt;

&lt;p&gt;Most of the value is in a single reply: a code block, a checklist, a debugging plan, a rewrite.&lt;/p&gt;

&lt;p&gt;Chat Navigator lets you bookmark the exact message so you can retrieve it later.&lt;/p&gt;

&lt;h3&gt;
  
  
  3) Prompt management: build a real prompt library
&lt;/h3&gt;

&lt;p&gt;If you keep rewriting the same prompts (“review my code”, “summarize this”, “draft a reply”, “generate test cases”), you’re wasting time.&lt;/p&gt;

&lt;p&gt;Save your best prompts and insert them when you need them.&lt;/p&gt;

&lt;h3&gt;
  
  
  4) Code extraction
&lt;/h3&gt;

&lt;p&gt;If you’re a dev, you know the pain: great snippet buried in a thread.&lt;br&gt;
Chat Navigator pulls code blocks out so you can copy cleanly.&lt;/p&gt;




&lt;h2&gt;
  
  
  The workflow (this is the part that actually changes your day)
&lt;/h2&gt;

&lt;p&gt;Here’s the simple system I use:&lt;/p&gt;

&lt;p&gt;1) When a reply is worth reusing (snippet, checklist, explanation), &lt;strong&gt;bookmark the message&lt;/strong&gt;.&lt;br&gt;
2) Give it a label you’ll actually search later&lt;br&gt;&lt;br&gt;
   Examples: &lt;code&gt;rails caching p95&lt;/code&gt;, &lt;code&gt;sidekiq retries&lt;/code&gt;, &lt;code&gt;sql index triage&lt;/code&gt;, &lt;code&gt;postmortem template&lt;/code&gt;&lt;br&gt;
3) Save the prompt template that produced it in the &lt;strong&gt;prompt library&lt;/strong&gt;.&lt;br&gt;
4) Next time: search once → jump directly → reuse the prompt.&lt;/p&gt;

&lt;p&gt;That’s the difference between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“I remember ChatGPT said something…”
and&lt;/li&gt;
&lt;li&gt;“I can retrieve it in 5 seconds.”&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Keyboard shortcuts (for people who hate mouse gymnastics)
&lt;/h2&gt;

&lt;p&gt;These are the shortcuts I personally care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;j / k&lt;/code&gt; or &lt;code&gt;↑ / ↓&lt;/code&gt; to move between messages&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;b&lt;/code&gt; to bookmark a message&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Shift + b&lt;/code&gt; to bookmark the whole conversation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Enter&lt;/code&gt; to open message details&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Privacy stance (because this matters)
&lt;/h2&gt;

&lt;p&gt;I built this to be &lt;strong&gt;private by design&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The goal is to sync &lt;strong&gt;only what you explicitly save&lt;/strong&gt; (bookmarks + prompts).&lt;/li&gt;
&lt;li&gt;Not your entire conversation history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re evaluating extensions, read permissions and data handling like a paranoid adult.&lt;/p&gt;




&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Works in Chromium-based browsers that support Chrome extensions: &lt;strong&gt;Chrome, Brave, Edge, Arc&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If your ChatGPT usage produces real value, you need a way to keep that value.&lt;/p&gt;

&lt;p&gt;Install (Chrome Web Store): &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/aapchhfjoohmohpdcadghjacklcdfdml?utm_source=dev" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/aapchhfjoohmohpdcadghjacklcdfdml?utm_source=dev&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Product page: &lt;strong&gt;&lt;a href="https://infolily.com/" rel="noopener noreferrer"&gt;https://infolily.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>chrome</category>
    </item>
    <item>
      <title>How to Fix the "dyld: lazy symbol binding failed" Error When Using PostgreSQL and Ruby on macOS</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Sun, 12 Feb 2023 11:39:37 +0000</pubDate>
      <link>https://dev.to/mezbahalam/how-to-fix-the-dyld-lazy-symbol-binding-failed-error-when-using-postgresql-and-ruby-on-macos-389f</link>
      <guid>https://dev.to/mezbahalam/how-to-fix-the-dyld-lazy-symbol-binding-failed-error-when-using-postgresql-and-ruby-on-macos-389f</guid>
      <description>&lt;p&gt;If you're working with Ruby and PostgreSQL on macOS, you may run into issues installing the PG gem. This is due to the fact that the gem relies on the PostgreSQL library, which can be difficult to link with on macOS.&lt;/p&gt;

&lt;p&gt;One common issue that you may encounter is a "lazy symbol binding failed" error message. This indicates that the gem is unable to locate the libpq library, which is required for the gem to function properly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="ss"&gt;dyld: &lt;/span&gt;&lt;span class="n"&gt;lazy&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="nb"&gt;binding&lt;/span&gt; &lt;span class="ss"&gt;failed: &lt;/span&gt;&lt;span class="no"&gt;Symbol&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="ss"&gt;found: &lt;/span&gt;&lt;span class="n"&gt;_PQresultMemorySize&lt;/span&gt;
  &lt;span class="no"&gt;Referenced&lt;/span&gt; &lt;span class="ss"&gt;from: &lt;/span&gt;&lt;span class="sr"&gt;/path/&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pg&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;x&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pg_ext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bundle&lt;/span&gt;
  &lt;span class="no"&gt;Expected&lt;/span&gt; &lt;span class="ss"&gt;in: &lt;/span&gt;&lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;libpq&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dylib&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;To fix this issue, you can run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gem pristine pg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will rebuild the PG gem and link it with the libpq library on your system. Once this is done, you should be able to use the PG gem without any issues.&lt;/p&gt;

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

&lt;p&gt;Working with PostgreSQL on macOS can be tricky, but with the right tools and knowledge, you can overcome any issues that you may encounter. By following the steps outlined in this guide, you should be able to resolve any PG gem installation issues that you may encounter.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>postgres</category>
      <category>macos</category>
      <category>devops</category>
    </item>
    <item>
      <title>Mac Tips: How to Use KeyChain to Manage Your GitHub Credentials</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Tue, 10 Jan 2023 16:12:52 +0000</pubDate>
      <link>https://dev.to/mezbahalam/mac-tips-how-to-use-keychain-to-manage-your-github-credentials-51oc</link>
      <guid>https://dev.to/mezbahalam/mac-tips-how-to-use-keychain-to-manage-your-github-credentials-51oc</guid>
      <description>&lt;p&gt;Are you tired of constantly being prompted for your GitHub password every time you want to push or pull a repo? Look no further than Mac's KeyChain feature.&lt;/p&gt;

&lt;p&gt;When you clone a repository over HTTPS, Git may prompt you for your password each time you want to push or pull. But with Mac's KeyChain, you can easily store your GitHub credentials and never have to remember your password again.&lt;/p&gt;

&lt;p&gt;First, make sure that you have the git credential-osxkeychain command installed. If not, simply install Git using the Homebrew package manager by running the command "brew install git" in your terminal.&lt;/p&gt;

&lt;p&gt;Once you have that installed, tell Git to use KeyChain for storing your credentials by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global credential.helper osxkeychain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running this command, the next time you clone a repo via HTTPS, you'll be prompted to grant access to KeyChain. Once you do that (&lt;strong&gt;always allow&lt;/strong&gt;), any future authentication will be done transparently by Git reading the KeyChain record. No more remembering passwords, or repeatedly typing them in – it's that easy!&lt;/p&gt;

&lt;p&gt;So, next time you are cloning a repo and prompted for a password, follow these simple steps and keychain will help you to store the credentials and you can easily pull or push the repos with out the need of providing password.&lt;/p&gt;

</description>
      <category>github</category>
      <category>mac</category>
      <category>keychain</category>
    </item>
    <item>
      <title>Installing and Configuring latest PostgreSQL on Ubuntu 22.04</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Thu, 29 Dec 2022 08:40:57 +0000</pubDate>
      <link>https://dev.to/mezbahalam/installing-and-configuring-latest-postgresql-on-ubuntu-2204-34n1</link>
      <guid>https://dev.to/mezbahalam/installing-and-configuring-latest-postgresql-on-ubuntu-2204-34n1</guid>
      <description>&lt;p&gt;To install PostgreSQL on Ubuntu 22.04, follow these steps:&lt;br&gt;
Update the package manager's package list by running the following command:&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;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the PostgreSQL package by running the following command:&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;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the installation is complete, start the PostgreSQL service by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To make sure that the PostgreSQL service starts automatically when the system boots, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl enable postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check the version of PostgreSQL installed on your system, run the following command:&lt;br&gt;
For Server version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pg_config --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Client version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To log in to the PostgreSQL database as the default "postgres" user, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo -u postgres psql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will open the PostgreSQL interactive terminal. From here, you can create databases, users, and perform other tasks. For example, to create a new database called "mydb_name", run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres=# create database mydb_name;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To create a new user called "myuser" with the password "mypass", run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres=# create user myuser with encrypted password 'mypass';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To grant all privileges on the "mydb_name" database to the "myuser" user, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres=# grant all privileges on database mydb_name to myuser;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to log in as a different user, you can use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql -U username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace "username" with the name of the user you want to log in as.&lt;br&gt;
That's it! You have successfully installed and configured PostgreSQL on Ubuntu 22.04. You can now use the interactive terminal or connect to the database from your application to perform various tasks.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>From Brendan Eich's Heroic Decision to the Modern Web: The Evolution of JavaScript</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Fri, 23 Dec 2022 14:50:45 +0000</pubDate>
      <link>https://dev.to/mezbahalam/from-brendan-eichs-heroic-decision-to-the-modern-web-the-evolution-of-javascript-4pig</link>
      <guid>https://dev.to/mezbahalam/from-brendan-eichs-heroic-decision-to-the-modern-web-the-evolution-of-javascript-4pig</guid>
      <description>&lt;p&gt;JavaScript is a programming language that is widely used to create interactive web applications. It was first developed by Netscape Communications Corporation in the mid-1990s as a way to add interactivity to web pages. The creator of JavaScript is Brendan Eich, who was a programmer at Netscape in the mid-1990s. Eich developed JavaScript in just 10 days in 1995, and it was released with the launch of Netscape Navigator 2.0 later that year.&lt;/p&gt;

&lt;p&gt;At the time, the web was primarily a static medium, with pages that consisted of text and images. Netscape recognized the potential for the web to be a more interactive and dynamic medium, and began developing a programming language that could be used to add interactivity to web pages. Eich's development of JavaScript was a heroic decision, as it helped to revolutionize the way the web was used and opened up a whole new world of possibilities for developers and users alike.&lt;/p&gt;

&lt;p&gt;The first version of JavaScript was released in 1995, and it quickly gained popularity among web developers. It allowed developers to add interactivity to web pages by adding small pieces of code, known as scripts, that could be run in the user's web browser. This made it possible to create web pages that were more interactive and dynamic, with features such as form validation, image rollovers, and pop-up windows.&lt;/p&gt;

&lt;p&gt;In 1996, Netscape submitted JavaScript to the European Computer Manufacturers Association (ECMA) for standardization, and it was formally standardized as ECMAScript in 1997. This standardization process ensured that JavaScript was consistent across different web browsers and platforms, and it helped to further cement its position as a key tool for web development.&lt;/p&gt;

&lt;p&gt;Since its inception, JavaScript has become an essential part of the web development ecosystem. It is supported by all modern web browsers and is used by millions of developers around the world to create a wide variety of web applications, from simple websites to complex web-based systems.&lt;/p&gt;

&lt;p&gt;Over the years, JavaScript has evolved and undergone several significant updates. In recent years, the language has seen a resurgence in popularity with the rise of front-end frameworks such as React and Angular, which make it easier to build complex web applications. Today, JavaScript is a key tool for web developers and is an essential part of the modern web development landscape.&lt;/p&gt;

&lt;p&gt;If you are considering a career as a JavaScript developer, you may be wondering how much you can expect to earn. According to salary data from Glassdoor, the average annual salary for a JavaScript developer in the United States is $72,500. This figure can vary depending on factors such as your level of experience, the type of company you work for, and the region where you live. With the right skills and experience, it is possible to earn even more as a JavaScript developer.&lt;/p&gt;

&lt;p&gt;Overall, the history of JavaScript is a testament to the rapid evolution of the web and the important role that programming languages play in shaping the way we interact with the digital world. The development of JavaScript by Brendan Eich was a heroic decision that has had a profound impact on the way we use the web and has helped to shape the modern web as we know it today. If you are a programmer, we hope this history of JavaScript will inspire you to continue learning and growing in your career, and to be a part of the exciting world of web development.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>history</category>
    </item>
    <item>
      <title>Top websites for website vulnerability checks online</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Wed, 21 Dec 2022 16:26:41 +0000</pubDate>
      <link>https://dev.to/mezbahalam/top-websites-for-website-vulnerability-checks-online-1c6k</link>
      <guid>https://dev.to/mezbahalam/top-websites-for-website-vulnerability-checks-online-1c6k</guid>
      <description>&lt;p&gt;Website vulnerabilities can compromise the security and integrity of your online presence, potentially leading to data breaches, malware infections, and other serious consequences. To ensure that your website is as secure as possible, it's important to regularly check for vulnerabilities and take steps to address any issues that are found. Here are the top ten websites that you can use to check for vulnerabilities in your website:&lt;/p&gt;

&lt;h5&gt;
  
  
  Acunetix:
&lt;/h5&gt;

&lt;p&gt;This tool offers comprehensive website scanning and vulnerability testing, including for SQL injection, XSS, and more.&lt;/p&gt;

&lt;h5&gt;
  
  
  Qualys SSL Labs:
&lt;/h5&gt;

&lt;p&gt;This tool allows you to check the SSL/TLS configuration of your website and identify any vulnerabilities or weaknesses.&lt;/p&gt;

&lt;h5&gt;
  
  
  Sucuri SiteCheck:
&lt;/h5&gt;

&lt;p&gt;This tool scans your website for malware, vulnerabilities, and other security issues.&lt;/p&gt;

&lt;h5&gt;
  
  
  Nessus:
&lt;/h5&gt;

&lt;p&gt;This tool offers a range of security testing capabilities, including vulnerability assessment and web application scanning.&lt;/p&gt;

&lt;h5&gt;
  
  
  WebInspect:
&lt;/h5&gt;

&lt;p&gt;This tool offers comprehensive website security testing, including for vulnerabilities such as SQL injection and cross-site scripting.&lt;/p&gt;

&lt;h5&gt;
  
  
  ImmuniWeb:
&lt;/h5&gt;

&lt;p&gt;This tool offers a range of website security testing services, including vulnerability assessment and web application scanning.&lt;/p&gt;

&lt;h5&gt;
  
  
  Burp Suite:
&lt;/h5&gt;

&lt;p&gt;This tool is a comprehensive web application testing platform that includes a range of features for identifying vulnerabilities.&lt;/p&gt;

&lt;h5&gt;
  
  
  HCL AppScan:
&lt;/h5&gt;

&lt;p&gt;This tool offers a range of security testing capabilities, including web application scanning and vulnerability assessment.&lt;/p&gt;

&lt;h5&gt;
  
  
  Nikto:
&lt;/h5&gt;

&lt;p&gt;This open-source web server scanner can be used to identify a range of vulnerabilities, including those related to outdated software versions.&lt;/p&gt;

&lt;p&gt;It's important to note that no single tool can identify all vulnerabilities, and it's recommended to use a combination of tools and approaches to ensure that your website is as secure as possible. To access these websites, you can use the following links:&lt;/p&gt;

&lt;p&gt;Acunetix: &lt;a href="https://www.acunetix.com/"&gt;https://www.acunetix.com/&lt;/a&gt;&lt;br&gt;
Qualys SSL Labs: &lt;a href="https://www.ssllabs.com/"&gt;https://www.ssllabs.com/&lt;/a&gt;&lt;br&gt;
Sucuri SiteCheck: &lt;a href="https://sitecheck.sucuri.net/"&gt;https://sitecheck.sucuri.net/&lt;/a&gt;&lt;br&gt;
Nessus: &lt;a href="https://www.tenable.com/products/nessus-vulnerability-scanner"&gt;https://www.tenable.com/products/nessus-vulnerability-scanner&lt;/a&gt;&lt;br&gt;
WebInspect: &lt;a href="https://www.microfocus.com/en-us/cyberres/application-security/webinspect"&gt;https://www.microfocus.com/en-us/cyberres/application-security/webinspect&lt;/a&gt;&lt;br&gt;
ImmuniWeb: &lt;a href="https://www.immuniweb.com/"&gt;https://www.immuniweb.com/&lt;/a&gt;&lt;br&gt;
Burp Suite: &lt;a href="https://portswigger.net/burp"&gt;https://portswigger.net/burp&lt;/a&gt;&lt;br&gt;
AppScan: &lt;a href="https://www.hcltechsw.com/products/appscan"&gt;https://www.hcltechsw.com/products/appscan&lt;/a&gt;&lt;br&gt;
Nikto: &lt;a href="https://cirt.net/Nikto2"&gt;https://cirt.net/Nikto2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>website</category>
      <category>vulnerability</category>
      <category>checks</category>
      <category>websecurity</category>
    </item>
    <item>
      <title>Finding the LCM of an array of numbers in Ruby</title>
      <dc:creator>Mezbah Alam</dc:creator>
      <pubDate>Wed, 21 Dec 2022 10:18:03 +0000</pubDate>
      <link>https://dev.to/mezbahalam/finding-the-lcm-of-an-array-of-numbers-in-ruby-1bfn</link>
      <guid>https://dev.to/mezbahalam/finding-the-lcm-of-an-array-of-numbers-in-ruby-1bfn</guid>
      <description>&lt;p&gt;This code demonstrates some common techniques in Ruby, such as defining methods, using recursion, and using the &lt;code&gt;reduce&lt;/code&gt; method to iterate over an array and perform a computation on its elements. Many Ruby developers appreciate concise and efficient code like this, especially when it solves a common problem like finding the LCM of an array of numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# A method that returns the greatest common divisor (GCD) of two numbers using the Euclidean algorithm&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;gcd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="n"&gt;gcd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;# A method that returns the least common multiple (LCM) of two numbers using the GCD method above&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lcm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;gcd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;# A method that uses the LCM method above to find the LCM of an array of numbers&lt;/span&gt;
&lt;span class="c1"&gt;# and adds a heartfelt message to the output&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lcm_of_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;lcm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;lcm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;lcm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lcm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"The least common multiple of the numbers &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;lcm&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;. May it bring you joy and happiness."&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;lcm&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;# Example usage&lt;/span&gt;
&lt;span class="n"&gt;lcm_of_array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;# Output: "The least common multiple of the numbers [2, 3, 4, 5] is 60. May it bring you joy and happiness."&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;This version of the code includes a heartfelt message in the output, wishing the user joy and happiness when they use the &lt;code&gt;lcm_of_array&lt;/code&gt; method.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>lcm</category>
      <category>array</category>
    </item>
  </channel>
</rss>
