{"@attributes":{"version":"2.0"},"channel":{"title":"@e1himself on \/dev ","link":"https:\/\/voskoboinyk.com","description":"@e1himself on \/dev RSS Feed","language":"en","generator":"HydePHP 1.7.3","lastBuildDate":"Fri, 13 Mar 2026 15:53:41 +0000","item":[{"title":"I \u2764\ufe0f Linear","description":"What's your most favorite software?","link":"https:\/\/voskoboinyk.com\/posts\/2026-03-11-linear","guid":"https:\/\/voskoboinyk.com\/posts\/2026-03-11-linear","pubDate":"Wed, 11 Mar 2026 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/linear\/cover.png","type":"image\/png","length":"26526"}}},{"title":"The Dunning-Kruger effect of AI","description":"Don't trust AI to be your tax advisor.","link":"https:\/\/voskoboinyk.com\/posts\/2026-03-03-dunning-kruger-effect-of-ai","guid":"https:\/\/voskoboinyk.com\/posts\/2026-03-03-dunning-kruger-effect-of-ai","pubDate":"Tue, 03 Mar 2026 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/dunning-kruger-effect-of-ai\/cover.png","type":"image\/png","length":"28139"}}},{"title":"AI can write the code, but who does the learning?","description":"I have a confession: I dislike reviewing AI-generated pull requests pushed by non-tech people.","link":"https:\/\/voskoboinyk.com\/posts\/2026-02-19-ai-generated-pull-requests","guid":"https:\/\/voskoboinyk.com\/posts\/2026-02-19-ai-generated-pull-requests","pubDate":"Thu, 19 Feb 2026 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/ai-generated-pull-requests\/cover.png","type":"image\/png","length":"7294"}}},{"title":"The Footgun: How to break TLS certificates renewal in Dokploy","description":"How one simple change in Dokploy app settings can break TLS certificates renewals.","link":"https:\/\/voskoboinyk.com\/posts\/2025-11-19-dokploy-port-mapping-problem","guid":"https:\/\/voskoboinyk.com\/posts\/2025-11-19-dokploy-port-mapping-problem","pubDate":"Wed, 19 Nov 2025 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/dokploy-port-mapping-problem\/cover.png","type":"image\/png","length":"35011"}}},{"title":"Dokploy is amazing!","description":"How the modern tooling simplifies self-hosting apps to just a couple of clicks.","link":"https:\/\/voskoboinyk.com\/posts\/2025-09-09-dockploy-is-amazing","guid":"https:\/\/voskoboinyk.com\/posts\/2025-09-09-dockploy-is-amazing","pubDate":"Tue, 09 Sep 2025 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/dokploy-is-amazing\/cover.png","type":"image\/png","length":"30950"}}},{"title":"Encapsulation in UI components on the Web","description":"The rule of thumb that helps me decide which styling a component is responsible for.","link":"https:\/\/voskoboinyk.com\/posts\/2025-06-09-ui-components-encapsulation","guid":"https:\/\/voskoboinyk.com\/posts\/2025-06-09-ui-components-encapsulation","pubDate":"Sun, 08 Jun 2025 00:00:00 +0000","category":"web","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/ui-components-encapsulation\/cover.png","type":"image\/png","length":"31281"}}},{"title":"GIF memes to enhance remote communication","description":"The one easiest trick to effortlessly improve your communication in a remote team.","link":"https:\/\/voskoboinyk.com\/posts\/2025-04-23-gif-memes-to-enhance-remote-communication","guid":"https:\/\/voskoboinyk.com\/posts\/2025-04-23-gif-memes-to-enhance-remote-communication","pubDate":"Wed, 23 Apr 2025 00:00:00 +0000","category":"soft-skills","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/gif-memes-to-enhance-remote-communication\/cover.png","type":"image\/png","length":"35270"}}},{"title":"Email Markup Development in\u00a0React \u2014 2025","description":"The current state of responsive email layout markup development in general, and in React particularly.","link":"https:\/\/voskoboinyk.com\/posts\/2025-01-29-state-of-email-markup","guid":"https:\/\/voskoboinyk.com\/posts\/2025-01-29-state-of-email-markup","pubDate":"Wed, 29 Jan 2025 00:00:00 +0000","category":"email","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/state-of-email-development\/cover.png","type":"image\/png","length":"34589"}}},{"title":"Fixing React Promise Modals \u2014\u00a0The\u00a0Nice and The\u00a0Proper","description":"What was wrong with the initial version of @prezly\/react-promise-modal and how we've addressed\u00a0them.\n","link":"https:\/\/voskoboinyk.com\/posts\/2024-12-31-fixing-react-promise-modals","guid":"https:\/\/voskoboinyk.com\/posts\/2024-12-31-fixing-react-promise-modals","pubDate":"Tue, 31 Dec 2024 00:00:00 +0000","category":"react","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/fixing-react-promise-modals\/cover.png","type":"image\/png","length":"37628"}}},{"title":"Inventing React Promise Modals \u2014\u00a0The\u00a0Ugly and\u00a0The\u00a0Nice","description":"Looking back on how we've fixed our biggest pain with React modals \nand then made it an open-source package.\n","link":"https:\/\/voskoboinyk.com\/posts\/2024-12-27-inventing-react-promise-modals-part-1","guid":"https:\/\/voskoboinyk.com\/posts\/2024-12-27-inventing-react-promise-modals-part-1","pubDate":"Fri, 27 Dec 2024 00:00:00 +0000","category":"react","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/inventing-react-promise-modals-part-1\/cover.png","type":"image\/png","length":"37696"}}},{"title":"Self-Hosting Nostr Identification","description":"The easiest way to self-host your Nostr profile NIP-05 identification","link":"https:\/\/voskoboinyk.com\/posts\/2024-12-23-self-hosting-nostr-identification","guid":"https:\/\/voskoboinyk.com\/posts\/2024-12-23-self-hosting-nostr-identification","pubDate":"Mon, 23 Dec 2024 00:00:00 +0000","category":"nostr","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/self-hosting-nostr-identification\/cover.png","type":"image\/png","length":"27225"}}},{"title":"Uploadcare + Contentful CMS","description":"Using Uploadcare file uploads with the headless Contentful CMS","link":"https:\/\/voskoboinyk.com\/posts\/2020-02-13-using-uploadcare-with-contentful-cms","guid":"https:\/\/voskoboinyk.com\/posts\/2020-02-13-using-uploadcare-with-contentful-cms","pubDate":"Thu, 13 Feb 2020 00:00:00 +0000","category":"cms","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/using-uploadcare-with-contentful-cms\/cover.png","type":"image\/png","length":"293764"}}},{"title":"Definitely Typed PHP \u2014\u00a0Four\u00a0Years\u00a0later","description":"2019 revisiting the idea of type definitions files for PHP similar to Typescript\u2019s .d.ts","link":"https:\/\/voskoboinyk.com\/posts\/2019-10-06-definitely-typed-php-four-years-later","guid":"https:\/\/voskoboinyk.com\/posts\/2019-10-06-definitely-typed-php-four-years-later","pubDate":"Sun, 06 Oct 2019 00:00:00 +0000","category":"php","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/definitely-typed-php-four-years-later\/cover.png","type":"image\/png","length":"29061"}}},{"title":"Definitely Typed PHP","description":"An exploration of the idea of introducing .d.ts-like definition files for PHP.","link":"https:\/\/voskoboinyk.com\/posts\/2015-03-01-definitely-typed-php","guid":"https:\/\/voskoboinyk.com\/posts\/2015-03-01-definitely-typed-php","pubDate":"Sun, 01 Mar 2015 00:00:00 +0000","category":"php","enclosure":{"@attributes":{"url":"https:\/\/voskoboinyk.com\/media\/posts\/definitely-typed-php\/cover.png","type":"image\/png","length":"26586"}}}]}}