<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>prudkohliad/blog</title>
        <link>https://www.prudkohliad.com/articles</link>
        <description>Software Engineering how-to guides on JavaScript, React, Next.js, Ruby, Golang, PostgreSQL and anything else useful or interesting</description>
        <lastBuildDate>Sat, 11 Apr 2026 00:57:56 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>prudkohliad/blog</title>
            <url>https://www.prudkohliad.com/open-graph/root.webp</url>
            <link>https://www.prudkohliad.com/articles</link>
        </image>
        <copyright>Anton Prudkohliad 2026</copyright>
        <category>Software Engineering</category>
        <item>
            <title><![CDATA[OTP email verification and password reset]]></title>
            <link>https://www.prudkohliad.com/articles/otp-email-verification-password-reset-2025-11-30</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/otp-email-verification-password-reset-2025-11-30</guid>
            <pubDate>Sun, 30 Nov 2025 20:53:00 GMT</pubDate>
            <description><![CDATA[Secure OTP-based email verification and password reset flow with anti-enumeration, cooldowns, and safe cryptographic practices]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/otp-email-verification-password-reset-2025-11-30.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Getting Wi-Fi SSID on Mac via bash using Shortcuts]]></title>
            <link>https://www.prudkohliad.com/articles/getting-wifi-ssid-on-mac-via-bash-2025-11-10</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/getting-wifi-ssid-on-mac-via-bash-2025-11-10</guid>
            <pubDate>Mon, 10 Nov 2025 07:59:00 GMT</pubDate>
            <description><![CDATA[Learn how to determine the current Wi-Fi SSID in bash for scripting on Mac using the Shortcuts app]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/getting-wifi-ssid-on-mac-via-bash-2025-11-10.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to check SSL/TLS cipher suites on your website with nmap]]></title>
            <link>https://www.prudkohliad.com/articles/check-tls-cipher-suites-with-nmap-2025-07-22</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/check-tls-cipher-suites-with-nmap-2025-07-22</guid>
            <pubDate>Tue, 22 Jul 2025 08:40:00 GMT</pubDate>
            <description><![CDATA[Use nmap to quickly check the TLS cipher suites available on your website to gain valuable security posture insight]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/check-tls-cipher-suites-with-nmap-2025-07-22.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to implement a Multi-Select Dropdown component with React and Tailwind 4]]></title>
            <link>https://www.prudkohliad.com/articles/multi-select-dropdown-with-react-and-tailwind-4-2025-02-04</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/multi-select-dropdown-with-react-and-tailwind-4-2025-02-04</guid>
            <pubDate>Tue, 04 Feb 2025 09:23:00 GMT</pubDate>
            <description><![CDATA[A guide on implementing an uncontrolled Multi-Select Dropdown component with React and Tailwind 4. The component is going to remain functional even when JavaScript is disabled on the client.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/multi-select-dropdown-with-react-and-tailwind-4-2025-02-04.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Updating website content on schedule via GitHub Actions]]></title>
            <link>https://www.prudkohliad.com/articles/updating-website-content-on-schedule-via-github-actions-2024-08-16</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/updating-website-content-on-schedule-via-github-actions-2024-08-16</guid>
            <pubDate>Fri, 16 Aug 2024 18:39:00 GMT</pubDate>
            <description><![CDATA[I would like to share my journey on building a self-sustainable content management system that does not require a content database in a traditional sense.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/updating-website-content-on-schedule-via-github-actions-2024-08-16.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to deploy a Next.js app to a Hetzner VPS using SST and Docker]]></title>
            <link>https://www.prudkohliad.com/articles/deploy-next-js-to-vps-using-sst-2024-08-11</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/deploy-next-js-to-vps-using-sst-2024-08-11</guid>
            <pubDate>Sun, 11 Aug 2024 07:00:00 GMT</pubDate>
            <description><![CDATA[Learn how to self-host your Next.js application on a Hetzner VPS using SST and Docker for robust and fast deployment.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/deploy-next-js-to-vps-using-sst-2024-08-11.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to deploy a Next.js app to a VPS on Hetzner using Docker and GitHub Actions]]></title>
            <link>https://www.prudkohliad.com/articles/deploy-next-js-to-a-vps-2024-07-26</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/deploy-next-js-to-a-vps-2024-07-26</guid>
            <pubDate>Fri, 26 Jul 2024 15:36:00 GMT</pubDate>
            <description><![CDATA[A step-by-step tutorial on deploying a Next.js app to a VPS on Hetzner. Includes writing a Dockerfile, a GitHub Action for deployment automation, configuring the DNS and certificates at Cloudflare.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/deploy-next-js-to-a-vps-2024-07-26.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to set up a new project using Yarn in 2024]]></title>
            <link>https://www.prudkohliad.com/articles/setup-project-yarn-2024-05-11</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/setup-project-yarn-2024-05-11</guid>
            <pubDate>Sat, 11 May 2024 09:09:00 GMT</pubDate>
            <description><![CDATA[A tutorial on setting up nodenv, Node.jst LTS, Yarn via Corepack and initialization of a new JavaScript project with a smoke-test.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/setup-project-yarn-2024-05-11.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to implement a Multi-Select Dropdown component with React and Tailwind CSS]]></title>
            <link>https://www.prudkohliad.com/articles/multi-select-dropdown-with-react-and-tailwind-css-2023-10-17</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/multi-select-dropdown-with-react-and-tailwind-css-2023-10-17</guid>
            <pubDate>Tue, 17 Oct 2023 06:21:00 GMT</pubDate>
            <description><![CDATA[A guide on implementing an uncontrolled Multi-Select Dropdown component with React and Tailwind CSS. The component is going to remain functional even when JavaScript is disabled on the client.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/multi-select-dropdown-with-react-and-tailwind-css-2023-10-17.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How I optimized SVG icons on my website]]></title>
            <link>https://www.prudkohliad.com/articles/reuse-svg-icons-2023-08-14</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/reuse-svg-icons-2023-08-14</guid>
            <pubDate>Mon, 14 Aug 2023 15:51:00 GMT</pubDate>
            <description><![CDATA[My take on optimizing (reusing) SVG icons on my website using <symbol> and <use> tags.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/reuse-svg-icons-2023-08-14.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to set up a new project using Yarn]]></title>
            <link>https://www.prudkohliad.com/articles/setup-project-yarn-2023-06-16</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/setup-project-yarn-2023-06-16</guid>
            <pubDate>Sat, 17 Jun 2023 09:09:00 GMT</pubDate>
            <description><![CDATA[A tutorial on setting up nodenv, Node.jst LTS, Yarn via Corepack and initialization of a new JavaScript project with a smoke-test.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/setup-project-yarn-2023-06-16.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to resize images for Open Graph and Twitter using sharp]]></title>
            <link>https://www.prudkohliad.com/articles/resize-images-open-graph-twitter-sharp-js-2023-06-07</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/resize-images-open-graph-twitter-sharp-js-2023-06-07</guid>
            <pubDate>Tue, 06 Jun 2023 20:03:00 GMT</pubDate>
            <description><![CDATA[How to programmatically resize images for Open Graph and Twitter adding a blurred background in javascript using sharp]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/resize-images-open-graph-twitter-sharp-js-2023-06-07.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[How to implement a slider element using React, Tailwind CSS and Intersection Observer API]]></title>
            <link>https://www.prudkohliad.com/articles/slider-react-tailwind-intersection-observer-2023-05-26</link>
            <guid isPermaLink="false">https://www.prudkohliad.com/articles/slider-react-tailwind-intersection-observer-2023-05-26</guid>
            <pubDate>Fri, 26 May 2023 17:02:00 GMT</pubDate>
            <description><![CDATA[How to implement a slider (carousel/slideshow) element using Next.js, React, Tailwind.css and Intersection Observer API.]]></description>
            <author>Anton Prudkohliad</author>
            <enclosure url="https://www.prudkohliad.com/open-graph/slider-react-tailwind-intersection-observer-2023-05-26.webp" length="0" type="image/webp"/>
        </item>
    </channel>
</rss>