Sign in

Ulad Ramanovich

@uramanovich.bsky.social
118 followers 52 following 195 posts

Senior Fullstack Engineer passionate about TypeScript/JavaScript ecosystems. Sharing pragmatic tech tips & exploring AI-powered development workflows. Let's build better software together! 🚀

PostsRepliesMedia
Ulad Ramanovich @uramanovich.bsky.social · 09/06/2025
Do you know the newsletter with weekly sharing what happened in the AI or Web development? I’m trying to find newsletter with analysis what happened for the last week, instead of raw links #frontend #ai #wevdevelopment #react #nodejs
000
Ulad Ramanovich @uramanovich.bsky.social · 26/04/2025
The `nyc` npm package lets you merge coverage reports from different test jobs into one comprehensive report. Here's how it works:
000
Ulad Ramanovich @uramanovich.bsky.social · 26/04/2025
Tired of slow Jest tests? I cut my test suite time by 67% with these two simple tricks: 1. Add `maxWorkers=50%` to utilize available CPU 2. Implement `shard` to split and run tests in parallel across multiple jobs The big challenge? Collecting coverage data from separate jobs. Solution below
100
Ulad Ramanovich @uramanovich.bsky.social · 25/04/2025
Senior devs spend 20% of time on code reviews. If you don't, either you're not senior or your team culture needs rework. Good code reviews: - Catch bugs before they cause outages - Share knowledge across the team - Build better architecture through diverse perspectives
000
Ulad Ramanovich @uramanovich.bsky.social · 31/03/2025
Create a template and do this without thinking :) For me, it was to have content prepared in advanced
120
Ulad Ramanovich @uramanovich.bsky.social · 19/02/2025
What is your next action when you have an incident and the last PR in the list this one?
000
Ulad Ramanovich @uramanovich.bsky.social · 17/02/2025
Probably author refer to React Server Components where you can render html on server and send it to client. Nothing wrong with it, because render on server is faster
120
Ulad Ramanovich @uramanovich.bsky.social · 14/02/2025
Confusing by word 'token' when working with AI? Me too 🤔 I spent time understanding how it's calculated, here's simple math: - Token ≠ word - 1 word ≈ 1.3token - 1 tweet ≈ 35 tokens - Emojis cost extra tokens shorter words = fewer tokens = lower costs
000
Ulad Ramanovich @uramanovich.bsky.social · 12/02/2025
Skipping tests to save time? Think twice. While writing tests feels chore, the real cost hits during refactoring. Use AI for basic tests, but guide it - create mocks & define key scenarios. Keep logic simple, and review all the code produced by AI. Future you will thank you
010
Ulad Ramanovich @uramanovich.bsky.social · 11/02/2025
You're missing one primary concept when coding with AI. AI doesn't own the code, the person who approved this code is the owner of the code. AI is a tool - your expertise in reviewing, validating & owning the implementation is what matters
000
Ulad Ramanovich @uramanovich.bsky.social · 10/02/2025
5/5 Remember: abstract your database logic, centralize configurations, and keep your testing patterns consistent.
000
Ulad Ramanovich @uramanovich.bsky.social · 10/02/2025
4/5 Testing becomes trivial: - Unit tests: mock DataService - E2E: use TestDatabaseService with Fishery - No need to mock individual repositories - Clean, reusable test data
100
Ulad Ramanovich @uramanovich.bsky.social · 10/02/2025
3/5 Core components: 1. Base Repository - shared database operations 2. Entities - database structure 3. DataService - single entry point 4. Factories - test data generation
100
Ulad Ramanovich @uramanovich.bsky.social · 10/02/2025
2/5 The key is centralizing all database logic in one place. Create a data-access module that: • Acts as a single source of truth • Handles all database operations • Provides clean testing interfaces • Manages multiple databases
100
Ulad Ramanovich @uramanovich.bsky.social · 10/02/2025
1/5 How to manage database access in monorepo with NestJS? I faced this problem a few times: • Duplicated database logic • Multiple connection configurations • Inconsistent testing patterns • No clear structure Let me explain how I fixed this with the Data-Access Pattern 🧵 #NestJS #nodejs #webdevb
110
Ulad Ramanovich @uramanovich.bsky.social · 09/02/2025
🐳 Next.js Docker build tips: 1. Split into build/run stages - speeds up builds & enables layer caching 2. Use non-root user for runtime - prevents root access if app is compromised #Docker #Nextjs #Webdev
020
Ulad Ramanovich @uramanovich.bsky.social · 31/01/2025
4 ways to adapt AI for business needs: 1. Pre-training: Needs massive data, expensive 2. Prompting: Cost-effective, learn it first! 3. Fine-tuning: 1000+ examples for good results 4. RAG: Use your docs as context Start simple, scale as needed #AI #LLM
000
Ulad Ramanovich @uramanovich.bsky.social · 29/01/2025
This is env management I bring for each project. Don't rely on process.env directly - use Zod validation instead. Type-safe + clear errors = no more missing configs #TypeScript #WebDev #nodejs
030
Ulad Ramanovich @uramanovich.bsky.social · 27/01/2025
Will AI replace your job? 🤔 AI isn't replacing jobs directly - it's automating tasks. Think of it as a tool that helps process work faster, not a robot employee. Humans still handle complex cases, AI handles repetitive ones. 🤖
000
Ulad Ramanovich @uramanovich.bsky.social · 24/01/2025
The 70/30 rule of AI coding: While AI can scaffold 70% of your code, the crucial 30% requires deep engineering expertise. Best practice: Use AI as a drafting tool, maintain atomic conversations, and own your code through meaningful review. #AI #SoftwareDevelopment
70/30 AI Engineering Rule
000
Ulad Ramanovich @uramanovich.bsky.social · 24/01/2025
But what you use for as AI assistance? (Outside of code editor)
100
Ulad Ramanovich @uramanovich.bsky.social · 22/01/2025
🎨 Building new website? Here's a harsh truth: Most projects fail not because of dev speed, but waiting for "perfect design" Quick win: - Ship minimal design in 2 weeks - Test with real users - Iterate based on feedback Stop guessing what users want. #buildinpublic
020
Ulad Ramanovich @uramanovich.bsky.social · 21/01/2025
Post-interview clarity hit me hard today 💡 Spent 2 weeks learning algorithms, only to get asked about building an actual product feature. Classic over-preparation for the wrong battle. Lesson: Always check type of interview you're participating. The interview format tells you what you need to know
000
Ulad Ramanovich @uramanovich.bsky.social · 21/01/2025
For me 2nd looks better. Idk exact reasons but it feels like priority of blocks in the second option is better
020
Ulad Ramanovich @uramanovich.bsky.social · 20/01/2025
Here's the library I used 👇 broadcast-channel buff.ly/2UEqfB8
github.com
GitHub - pubkey/broadcast-channel: :satellite: BroadcastChannel to send data between different browser-tabs or nodejs-processes + LeaderElection over the channels https://pubkey.github.io/broadcast-channel/
:satellite: BroadcastChannel to send data between different browser-tabs or nodejs-processes :satellite: + LeaderElection over the channels https://pubkey.github.io/broadcast-channel/ - GitHub - p...
000
Ulad Ramanovich @uramanovich.bsky.social · 20/01/2025
Multiple tabs sending same requests? Been there 🔧 Solution: Leader Election pattern! - Tabs form a team - Pick ONE leader tab - Only leader makes API calls - If leader closes, new one steps up Used broadcast-channel lib. Now instead of 5 requests → just 1 #frontend #javascript
100
Ulad Ramanovich @uramanovich.bsky.social · 20/01/2025
Multiple tabs sending same requests? Been there 🔧 Solution: Leader Election pattern! - Tabs form a team - Pick ONE leader tab - Only leader makes API calls - If leader closes, new one steps up Used broadcast-channel lib. Now instead of 5 requests → just 1 #frontend #javascript
000
Ulad Ramanovich @uramanovich.bsky.social · 18/01/2025
React's Virtual DOM Explained: Instead of updating the webpage directly, React uses a lightweight copy (Virtual DOM). Changes? React: 1. Updates copy 2. Compares versions 3. Updates only what's needed That's why React is fast ⚡️ #ReactJS #frontend
010
Ulad Ramanovich @uramanovich.bsky.social · 07/01/2025
Discovered today Docker Compose profiles and was surprised. Instead of juggling multiple docker-compose files for prod/dev/test, just add "profiles: [dev]" to your services and run: docker compose --profile dev up Perfect for managing different environments in a single file! #docker
000
Ulad Ramanovich @uramanovich.bsky.social · 07/01/2025
Good tip! Doing it for a while, sometimes even use it as a task list 🙂
010
Ulad Ramanovich @uramanovich.bsky.social · 07/01/2025
Good question, i shown the example where I want to change array type signature after filtering. Type narrowing helps TypeScript understand the types AFTER filtering The difference is not in runtime behavior, but in how TypeScript understands your code
010
Ulad Ramanovich @uramanovich.bsky.social · 07/01/2025
Tired of TypeScript being "stupid" with filter()? When you filter out undefined, does TS still think they might be there? 🪄 Magic solution: Add "is" type check! #typescript #webdev
140
Ulad Ramanovich @uramanovich.bsky.social · 01/01/2025
I prefer Claude over ChatGPT for both its superior code assistance and projects feature (Claude Pro). With projects, you can create custom prompts with specific output requirements - perfect for recurring tasks like architecture planning or article title generation
000
Ulad Ramanovich @uramanovich.bsky.social · 30/12/2024
Why didn't I know about this must-read React document for so long? 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. react.dev/reference/ru...
react.dev
Rules of React – React
The library for web and native user interfaces
100
Ulad Ramanovich @uramanovich.bsky.social · 20/12/2024
I tried “@web” and result when you need some information about specific lib is amazing, and debug bugs with specific libs too
120
Ulad Ramanovich @uramanovich.bsky.social · 19/12/2024
I found this article is good explanation why: addyo.substack.com/p/the-70-pro...
addyo.substack.com
The 70% problem: Hard truths about AI-assisted coding
A field guide and why we need to rethink our expectations
000
Ulad Ramanovich @uramanovich.bsky.social · 19/12/2024
🤖 AI & Engineering Growth AI speed up Senior Engineers but can hurt Juniors. And when non-engineers use AI for coding? Recipe for disaster. Pro tip: Before hitting Senior level, use AI to learn, not just copy/paste. Understanding > shortcuts.
110
Ulad Ramanovich @uramanovich.bsky.social · 19/12/2024
🔄 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 & MongoDB, centralizes connections, and makes testing easy. Writing an article to share my complete setup! 📝
000
Ulad Ramanovich @uramanovich.bsky.social · 19/12/2024
Hi Ashok 👋 I’m a Fullstack developer and try to share my journey
110
Ulad Ramanovich @uramanovich.bsky.social · 18/12/2024
“Now, write tests for all code you created” my typical prompt 😂
000
Ulad Ramanovich @uramanovich.bsky.social · 17/12/2024
Using AI for coding? Great tool if you know what you're doing! But here's the catch: always write tests. AI can miss edge cases you won't spot when code gets complex. E2E testing is ideal, but even unit tests will save you from countless bugs. Test everything you generate 🤖✅
100
Reposted by Ulad Ramanovich
Matt Pocock @mattpocock.com · 17/12/2024
TSConfigs aren't that hard. They're basically just 2 if/else statements in a trenchcoat. More info: www.totaltypescript.com/tsconfig-che...
1215514
Ulad Ramanovich @uramanovich.bsky.social · 16/12/2024
I see :) You’re right here, no reason to overcomplicate app without a good reason 👍
010
Ulad Ramanovich @uramanovich.bsky.social · 16/12/2024
It’s better to use zustand or redux for state management
000
Ulad Ramanovich @uramanovich.bsky.social · 16/12/2024
Please, don’t use Context for state management, it’s suppose mainly be only for sharing the state (solving prop drilling problem), but not manage. The biggest issue with context is poor performance and nested Context hell
200
Ulad Ramanovich @uramanovich.bsky.social · 15/12/2024
I introduced this approach at my previous team where product conducted UAT in production under feature flags. Over the past 4 years, I've noticed this practice becoming common in many small to medium-sized companies
020
Ulad Ramanovich @uramanovich.bsky.social · 14/12/2024
I thought it’s already golden standard in industry 😬
100
Ulad Ramanovich @uramanovich.bsky.social · 14/12/2024
I remember when I was 5 years in dev, and took a position of Tech lead in the team when most of people had 9+ years of exp. This is not about years, but about the person and how passionate about his/her craft
010
Ulad Ramanovich @uramanovich.bsky.social · 10/12/2024
I think more about reusable github actions, that I can use in many github repos, just by “import” this action
110
Ulad Ramanovich @uramanovich.bsky.social · 10/12/2024
Balancing my full time and side project with time blocking technic for a while and pomdoro timer if I don’t have enough motovation. Blocking time could show you how valuable is your time and assign priorities properly. How about you?
110