<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[OlegWock blog]]></title><description><![CDATA[OlegWock blog]]></description><link>https://sinja.io</link><generator>RSS for Node</generator><lastBuildDate>Sun, 17 May 2026 21:28:53 GMT</lastBuildDate><atom:link href="https://sinja.io/rss" rel="self" type="application/rss+xml"/><item><title><![CDATA[Practicing design and website rehaul]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/website-redesign-february-2026.svg" />
                <p>Did you know there is inverse correlation between how often author publishes new posts and how often they tinker with their website?</p>
            ]]></description><link>https://sinja.io/blog/website-redesign-february-2026</link><guid isPermaLink="false">website-redesign-february-2026</guid><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I built a notebook inside Obsidian]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/emera-overview.png" />
                <p>One personal project to add callout component to Obsidian that quickly spiraled out of control. No regrets though.</p>
            ]]></description><link>https://sinja.io/blog/how-i-built-notebook-in-obisidian-emera</link><guid isPermaLink="false">how-i-built-notebook-in-obisidian-emera</guid><pubDate>Fri, 07 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[A short history of web bots and bot detection techniques]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/bot-or-not.png" />
                <p>Did you know your favorite website can detect when you're browsing it in public transport or when you scroll it in your bed? Moreover, this info sometimes helps them to fight bots.</p>
            ]]></description><link>https://sinja.io/blog/bot-or-not</link><guid isPermaLink="false">bot-or-not</guid><pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[6 advanced TypeScript tricks]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/typescript-tricks.png" />
                <p>TypeScript's type system can play DOOM. Surely we can make it do something useful for our projects too, right?</p>
            ]]></description><link>https://sinja.io/blog/advanced-typescript</link><guid isPermaLink="false">advanced-typescript</guid><pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Features of your font you had no idea about]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/get-maximum-out-of-your-font.png" />
                <p>Different weights are cool, but the real question is whether your font can swash.</p>
            ]]></description><link>https://sinja.io/blog/get-maximum-out-of-your-font</link><guid isPermaLink="false">get-maximum-out-of-your-font</guid><pubDate>Tue, 10 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Quick guide to web typography for developers]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/web-typography-quick-guide.png" />
                <p>80/20 guide on how to make your blog posts look pretty, for free.</p>
            ]]></description><link>https://sinja.io/blog/web-typography-quick-guide</link><guid isPermaLink="false">web-typography-quick-guide</guid><pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building Swipe Actions component with React and Framer Motion]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/swipe-actions-react-framer-motion.png" />
                <p>Making the useSnap hook was fun, now let's use it and build a neat Swipe Actions component, the Radix way.</p>
            ]]></description><link>https://sinja.io/blog/swipe-actions-react-framer-motion</link><guid isPermaLink="false">swipe-actions-react-framer-motion</guid><pubDate>Mon, 19 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to make draggable Framer Motion elements snap to breakpoints]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/framer-motion-drag-snap-points.png" />
                <p>Drag is cool, but what to do if ya need a bit of snap? In this recipe, we build a reusable hook that makes adding snap points a breeze.</p>
            ]]></description><link>https://sinja.io/blog/framer-motion-drag-snap-points</link><guid isPermaLink="false">framer-motion-drag-snap-points</guid><pubDate>Mon, 24 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Animating Radix Primitives with Framer Motion]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/radix-x-framer-motion.png" />
                <p>I always forgot how to properly pair Radix Primitives and Framer Motion, so I wrote this guide!</p>
            ]]></description><link>https://sinja.io/blog/animating-radix-primitives-with-framer-motion</link><guid isPermaLink="false">animating-radix-primitives-with-framer-motion</guid><pubDate>Thu, 09 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building a «hold to confirm» button with Framer Motion]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/hold-to-confirm.png" />
                <p>If typing the project name to confirm its deletion is too boring, how about we make a confirmation button that shakes, vibrates and almost tries to run away from the user?</p>
            ]]></description><link>https://sinja.io/blog/hold-to-confirm-button-react-framer-motion</link><guid isPermaLink="false">hold-to-confirm-button-react-framer-motion</guid><pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Did you know you can write your own typesafe React router in 500 lines?]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/router.jpg" />
                <p>There are a lot of things you can do for yourself. One of them is simple type-safe React routing library. Sounds good, doesn't it?</p>
            ]]></description><link>https://sinja.io/blog/build-typesafe-react-router-from-scratch</link><guid isPermaLink="false">build-typesafe-react-router-from-scratch</guid><pubDate>Wed, 06 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Direction-aware animations in Framer Motion]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/direction-aware-animations.png" />
                <p>Carousels, multistep forms and navigation between screens – they all profit from nice direction-aware animation. In this recipe, you'll learn how you can implement some.</p>
            ]]></description><link>https://sinja.io/blog/direction-aware-animations-in-framer-motion</link><guid isPermaLink="false">direction-aware-animations-in-framer-motion</guid><pubDate>Sun, 04 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Concurrency in React 18 for busy bees]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/concurrent-react.jpg" />
                <p>Guide to concurrency, CPU- and IO-bound components, and other interesting stuff. Finally, learn wtf deferred value is.</p>
            ]]></description><link>https://sinja.io/blog/guide-to-concurrency-in-react-18</link><guid isPermaLink="false">guide-to-concurrency-in-react-18</guid><pubDate>Fri, 10 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Guide to React Suspense and use hook for busy bees]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/suspense-react.jpg" />
                <p>Suspense was introduced 5 years ago yet for a long time its sole purpose was just code splitting. Now Suspense helps you to reduce boilerplate and optimize SSR. In this guide, we'll discover how Suspense works, how to use it, and what the profits are.</p>
            ]]></description><link>https://sinja.io/blog/guide-to-react-suspense</link><guid isPermaLink="false">guide-to-react-suspense</guid><pubDate>Sun, 29 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making animated tooltip with React and Framer Motion]]></title><description><![CDATA[
                <img src="https://sinja.io/thumbnails/tooltip.png" />
                <p>Learn how to avoid common pitfals when building floating component and how to easily animate them.</p>
            ]]></description><link>https://sinja.io/blog/animated-tooltip-with-react-framer-motion</link><guid isPermaLink="false">animated-tooltip-with-react-framer-motion</guid><pubDate>Mon, 24 Apr 2023 00:00:00 GMT</pubDate></item></channel></rss>