<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>Senior Fullstack Engineer passionate about TypeScript/JavaScript ecosystems. &#xA;Sharing pragmatic tech tips &amp; exploring AI-powered development workflows.&#xA;Let&#39;s build better software together! 🚀</description><link>https://bsky.app/profile/uramanovich.bsky.social</link><title>@uramanovich.bsky.social - Ulad Ramanovich</title><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lr5wt7vnek2t</link><description>Do you know the newsletter with weekly sharing what happened in the AI or Web development?&#xA;&#xA;I’m trying to find newsletter with analysis what happened for the last week, instead of raw links&#xA;&#xA;#frontend #ai #wevdevelopment #react #nodejs</description><pubDate>09 Jun 2025 08:16 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lr5wt7vnek2t</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lnphzs25rs22</link><description>Tired of slow Jest tests? I cut my test suite time by 67% with these two simple tricks:&#xA;&#xA;1. Add `maxWorkers=50%` to utilize available CPU&#xA;2. Implement `shard` to split and run tests in parallel across multiple jobs&#xA;&#xA;The big challenge? Collecting coverage data from separate jobs. Solution below</description><pubDate>26 Apr 2025 09:58 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lnphzs25rs22</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lnmvha7w322k</link><description>Senior devs spend 20% of time on code reviews. If you don&#39;t, either you&#39;re not senior or your team culture needs rework.&#xA;&#xA;Good code reviews:&#xA;-  Catch bugs before they cause outages&#xA;- Share knowledge across the team&#xA;- Build better architecture through diverse perspectives</description><pubDate>25 Apr 2025 09:21 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lnmvha7w322k</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lij5mhcdrk23</link><description>What is your next action when you have an incident and the last PR in the list this one?</description><pubDate>19 Feb 2025 06:30 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lij5mhcdrk23</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3li5gnb7h4x2t</link><description>Confusing by word &#39;token&#39; when working with AI? Me too 🤔&#xA;&#xA;I spent time understanding how it&#39;s calculated, here&#39;s simple math:&#xA;&#xA;- Token ≠ word&#xA;- 1 word ≈ 1.3token&#xA;- 1 tweet ≈ 35 tokens&#xA;- Emojis cost extra tokens&#xA;&#xA;shorter words = fewer tokens = lower costs</description><pubDate>14 Feb 2025 14:40 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3li5gnb7h4x2t</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lhylsa3vpo2g</link><description>Skipping tests to save time? Think twice.&#xA;While writing tests feels chore, the real cost hits during refactoring. &#xA;&#xA;Use AI for basic tests, but guide it - create mocks &amp; define key scenarios. Keep logic simple, and review all the code produced by AI.&#xA;&#xA;Future you will thank you</description><pubDate>12 Feb 2025 16:29 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lhylsa3vpo2g</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lhv4n3c5lk2v</link><description>You&#39;re missing one primary concept when coding with AI.&#xA;&#xA;AI doesn&#39;t own the code, the person who approved this code is the owner of the code.&#xA;&#xA;AI is a tool - your expertise in reviewing, validating &amp; owning the implementation is what matters</description><pubDate>11 Feb 2025 07:19 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lhv4n3c5lk2v</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lhtgtodzlf2x</link><description>1/5 How to manage database access in monorepo with NestJS?&#xA;&#xA;I faced this problem a few times:&#xA;• Duplicated database logic&#xA;• Multiple connection configurations&#xA;• Inconsistent testing patterns&#xA;• No clear structure&#xA;&#xA;Let me explain how I fixed this with the Data-Access Pattern 🧵&#xA;#NestJS #nodejs #webdevb</description><pubDate>10 Feb 2025 15:17 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lhtgtodzlf2x</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lhqru4oe5k2p</link><description>🐳 Next.js Docker build tips:&#xA;&#xA;1. Split into build/run stages - speeds up builds &amp; enables layer caching&#xA;2. Use non-root user for runtime - prevents root access if app is compromised&#xA;&#xA;#Docker #Nextjs #Webdev</description><pubDate>09 Feb 2025 13:56 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lhqru4oe5k2p</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lh2gelja6b24</link><description>4 ways to adapt AI for business needs:&#xA;&#xA;1. Pre-training: Needs massive data, expensive&#xA;2. Prompting: Cost-effective, learn it first!&#xA;3. Fine-tuning: 1000+ examples for good results&#xA;4. RAG: Use your docs as context&#xA;&#xA;Start simple, scale as needed&#xA;&#xA;#AI #LLM</description><pubDate>31 Jan 2025 16:32 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lh2gelja6b24</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lgvf3z7bzx2g</link><description>This is env management I bring for each project. Don&#39;t rely on process.env directly - use Zod validation instead.&#xA;&#xA;Type-safe + clear errors = no more missing configs&#xA;&#xA;#TypeScript #WebDev #nodejs</description><pubDate>29 Jan 2025 16:26 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lgvf3z7bzx2g</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lgqh6owehg22</link><description>Will AI replace your job? 🤔&#xA;&#xA;AI isn&#39;t replacing jobs directly - it&#39;s automating tasks. Think of it as a tool that helps process work faster, not a robot employee.&#xA;&#xA;Humans still handle complex cases, AI handles repetitive ones. 🤖</description><pubDate>27 Jan 2025 17:20 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lgqh6owehg22</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lgiwj75md42p</link><description>The 70/30 rule of AI coding: While AI can scaffold 70% of your code, the crucial 30% requires deep engineering expertise. &#xA;Best practice: Use AI as a drafting tool, maintain atomic conversations, and own your code through meaningful review. &#xA;&#xA;#AI #SoftwareDevelopment</description><pubDate>24 Jan 2025 17:33 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lgiwj75md42p</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lgdo7by4yt22</link><description>🎨 Building new website? Here&#39;s a harsh truth:&#xA;&#xA;Most projects fail not because of dev speed, but waiting for &#34;perfect design&#34;&#xA;&#xA;Quick win:&#xA;- Ship minimal design in 2 weeks&#xA;- Test with real users&#xA;- Iterate based on feedback&#xA;&#xA;Stop guessing what users want.&#xA;&#xA;#buildinpublic</description><pubDate>22 Jan 2025 15:21 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lgdo7by4yt22</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lgbjy5ud5k2y</link><description>Post-interview clarity hit me hard today 💡&#xA;&#xA;Spent 2 weeks learning algorithms, only to get asked about building an actual product feature. Classic over-preparation for the wrong battle.&#xA;&#xA;Lesson: Always check type of interview you&#39;re participating. The interview format tells you what you need to know</description><pubDate>21 Jan 2025 19:00 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lgbjy5ud5k2y</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lg74cvhp7k2l</link><description>Multiple tabs sending same requests? Been there 🔧&#xA;&#xA;Solution: Leader Election pattern!&#xA;- Tabs form a team&#xA;- Pick ONE leader tab&#xA;- Only leader makes API calls&#xA;- If leader closes, new one steps up&#xA;&#xA;Used broadcast-channel lib. Now instead of 5 requests → just 1&#xA;&#xA;#frontend #javascript </description><pubDate>20 Jan 2025 19:50 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lg74cvhp7k2l</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lg6pig5cw32p</link><description>Multiple tabs sending same requests? Been there 🔧&#xA;&#xA;Solution: Leader Election pattern!&#xA;- Tabs form a team&#xA;- Pick ONE leader tab&#xA;- Only leader makes API calls&#xA;- If leader closes, new one steps up&#xA;&#xA;Used broadcast-channel lib. Now instead of 5 requests → just 1&#xA;&#xA;#frontend #javascript </description><pubDate>20 Jan 2025 16:00 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lg6pig5cw32p</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lfzwhpa6t22e</link><description>React&#39;s Virtual DOM Explained:&#xA;&#xA;Instead of updating the webpage directly, React uses a lightweight copy (Virtual DOM).  &#xA;&#xA;Changes? React: &#xA;1. Updates copy &#xA;2. Compares versions &#xA;3. Updates only what&#39;s needed&#xA;&#xA;That&#39;s why React is fast ⚡️  &#xA;&#xA;#ReactJS #frontend</description><pubDate>18 Jan 2025 18:22 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lfzwhpa6t22e</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lf6azvd2hc2t</link><description>Discovered today Docker Compose profiles and was surprised.&#xA;&#xA;Instead of juggling multiple docker-compose files for prod/dev/test, just add &#34;profiles: [dev]&#34; to your services and run:&#xA;docker compose --profile dev up&#xA;&#xA;Perfect for managing different environments in a single file!&#xA;#docker</description><pubDate>07 Jan 2025 18:16 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lf6azvd2hc2t</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lf55tygoes2u</link><description>Tired of TypeScript being &#34;stupid&#34; with filter()?&#xA;When you filter out undefined, does TS still think they might be there?&#xA;&#xA;🪄 Magic solution: Add &#34;is&#34; type check!&#xA;&#xA;#typescript #webdev</description><pubDate>07 Jan 2025 07:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lf55tygoes2u</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3leosbbbmis2s</link><description>I prefer Claude over ChatGPT for both its superior code assistance and projects feature (Claude Pro). &#xA;&#xA;With projects, you can create custom prompts with specific output requirements - perfect for recurring tasks like architecture planning or article title generation</description><pubDate>01 Jan 2025 14:42 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3leosbbbmis2s</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lejoiiyqss2c</link><description>Why didn&#39;t I know about this must-read React document for so long?&#xA;&#xA;Just found the Rules of React. You should follow them to simplify updates for the newest version of React and support the React compiler in future releases.&#xA;&#xA;https://react.dev/reference/rules</description><pubDate>30 Dec 2024 13:51 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lejoiiyqss2c</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3ldniawjuus2s</link><description>🤖 AI &amp; Engineering Growth &#xA;&#xA;AI speed up Senior Engineers but can hurt Juniors. And when non-engineers use AI for coding? Recipe for disaster.&#xA;&#xA;Pro tip: Before hitting Senior level, use AI to learn, not just copy/paste. Understanding &gt; shortcuts.</description><pubDate>19 Dec 2024 08:45 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3ldniawjuus2s</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3ldnfghb72s2y</link><description>🔄 Solved my NestJS DB headaches by creating a Data Access module - a dedicated layer that handles all database operations, migrations, and models. It manages both Postgres &amp; MongoDB, centralizes connections, and makes testing easy.&#xA;&#xA;Writing an article to share my complete setup! 📝</description><pubDate>19 Dec 2024 07:54 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3ldnfghb72s2y</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3ldjobdei2s2u</link><description>Using AI for coding? Great tool if you know what you&#39;re doing! But here&#39;s the catch: always write tests. AI can miss edge cases you won&#39;t spot when code gets complex. &#xA;E2E testing is ideal, but even unit tests will save you from countless bugs. Test everything you generate 🤖✅</description><pubDate>17 Dec 2024 20:22 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3ldjobdei2s2u</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lcuaqg5kgs2v</link><description>🔍 NextJS SEO Pro Tip: Use next-sitemap to generate sitemaps automatically!&#xA;&#xA;Sitemaps help crawler bots navigate your site efficiently, especially crucial for dynamic content. They show content update timestamps, helping faster reindexing.&#xA;&#xA;Perfect for sites with multiple pages&#xA;#buildinpublic #webdev</description><pubDate>09 Dec 2024 07:54 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lcuaqg5kgs2v</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lcs3ghajqs2x</link><description>Which tools do you use for video editing for a platforms like BlueSky?&#xA;I want to create short video with presenting my code. I use only QuickTime Player now&#xA;&#xA;#buildinpublic</description><pubDate>08 Dec 2024 11:14 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lcs3ghajqs2x</guid></item><item><link>https://bsky.app/profile/uramanovich.bsky.social/post/3lcs2w4tigs2x</link><description>Building mobile app? Pro tip: Add a hidden dev mode for App Store reviews and testing&#xA;&#xA;Implement a secret tap combo in a corner, show a dev mode indicator, and add debug controls. Makes testing simple for reviewers, plus helps verify features work 🔍&#xA;&#xA;Here is how I did this 🧵&#xA;&#xA;#buildinpublic #swiftui</description><pubDate>08 Dec 2024 11:05 +0000</pubDate><guid isPermaLink="false">at://did:plc:thfgm2cka3ad42dmgkv3k5id/app.bsky.feed.post/3lcs2w4tigs2x</guid></item></channel></rss>