Pavel Romanov
pavl-ro.bsky.social
Pavel Romanov
@pavl-ro.bsky.social
I like how nicely Claude Code integrated with Webstorm. When you use the normal mode, Claude will first ask you if changes should be applied

Instead of having to deal with those diffs in the terminal, we can do that directly in the IDE with all the powerful tooling it has
September 29, 2025 at 4:45 PM
I've seen people dunking on the latest updates with the Claude Code syntax highlight, but I don't get it

The product is not only about the raw power and speed. UX/DX is important
September 23, 2025 at 4:45 PM
Wow, the Terminal view mode in WebStorm/IntelliJ is a banger

I was always feeling like there was just not enough space, and I wanted to have a terminal and editor in separate windows/workspaces

Just found out that you can easily do that with Window view mode 🔥
September 15, 2025 at 4:45 PM
Just came back from a Singapore trip

The city is amazing. Clean, well-organized, safe

I haven't seen a single homeless or a stray dog/cat during my stay there

The best subway that I've been to so far

Highly recommend
September 10, 2025 at 4:45 PM
You can see it on this diagram.

From start to finish, there could be up to 4 copies of the same data, which obviously affects the speed of request processing
September 5, 2025 at 4:45 PM
Got a standing desk about a week ago

The huge benefit that I've noticed so far is the state of alertness

When you work from the comfort of your chair, it's easy to feel lazy at times, but I haven't felt anything like that while standing
September 1, 2025 at 4:45 PM
You purchase the JetBrains AI assistant for a year

JetBrains: "You only have 365 days left, it would be cool if you renew it"
August 28, 2025 at 4:45 PM
I've just passed 100 subscribers on Substack

I'm grateful to everyone who reads my posts there

If you want to learn more about Node.js' intricate parts, then subscribe and stay tuned ↓
July 30, 2025 at 4:45 PM
Unix Domain sockets work completely differently

Instead of network addresses like `localhost 3000`, you use file paths like `/tmp/chat.sock`

They're special files on your filesystem that act as a communication channel
July 25, 2025 at 4:45 PM
TCP loopback (127.0.0.1 or localhost) is when your app uses regular network sockets, but keeps it local

Your data still goes through:

- Full TCP handshake
- Network headers & checksums
- IP routing (simplified for loopback)
- Kernel network buffers

Basically the whole stack
July 25, 2025 at 4:45 PM
Do you know why your Node.js app connects to `localhost 3000` for local communication?

That's called a TCP loopback, and there's a completely different way to start a server that doesn't use ports at all.

Let me explain both 🧵
July 25, 2025 at 4:45 PM
For the testing, I created a simple chat app that made calls between multiple clients and a server
July 23, 2025 at 4:45 PM
~50% latency difference.

It is the exact number I got after doing testing with 2 types of sockets for Node.js server: TCP socket and Unix domain socket.

The TCP setup was done via TCP loopback, and the Unix socket was a simple socket file. The results are quite common ↓
July 23, 2025 at 4:45 PM
You see, Node.js itself doesn't implement any layers of the TCP/IP stack. Instead, it provides handles to those underlying abstractions
July 16, 2025 at 4:45 PM
One of the most important parts is the `net.Scoket` which is the part of the `net.Server`. This is the abstraction in JavaScript land that is responsible for interfacing with the underlying TCP socket
July 16, 2025 at 4:45 PM
Each `net.Server` is not yet active, and we have to connect it to a TCP socket to make the connection work and receive requests

For that, we usually call `listen` method of the `net.Server`

After that, we can get all kinds of information about the running server
July 16, 2025 at 4:45 PM
When you use Fastify, Express, or native Node.js HTTP/HTTPS modules, they are all calling the Net module `createServer` function in the end

This function returns an instance of the `net.Server`, which is basically a representation of a TCP server (with exceptions) ...
July 16, 2025 at 4:45 PM
Working with AWS CLI could be daunting since it has so many options.

That's how I felt.

But I found a cool CLI autocomplete called Autoprompt.

The best thing is that it comes with AWS CLI, no 3rd party tools.
April 29, 2025 at 4:45 PM
One of the cool features of copy(yank) in Neovim is the system-wide copy buffer.

If you copy things with yank in Neovim, you can paste them elsewhere in the system.

None of the other Vim plugins from other editors can do that.
April 28, 2025 at 4:45 PM
Error handling with the `pipe` method is UGLY.

Readable streams in Node.js have the `pipe` method, which is meant for stream combinations.

Proper error handling when working with this method is disgusting.

A better alternative would be the `piepeline` function.
March 14, 2025 at 4:45 PM
As a result of a bad error handling experience, the `pipe` doesn't clean hanging resources if the stream fails.

Meaning, we are introducing memory leaks if not cleaning resources on every possible error in the chain.

Again, `pipeline` handles everything for us.
February 18, 2025 at 4:48 PM
`pipe` doesn't provide robust error handling.

When we want to handle all possible errors properly, we have to chain an error handler for each stream in the pipe. Not gonna lie, it looks bad.

`pipeline` handles all errors for us, so we can just catch one top-level error.
February 18, 2025 at 4:48 PM
The `pipe` doesn't provide promise-based API.

As a result, you have to deal with events-based workflow.

On the opposite side, `pipeline` provides promise-based API, making writing async code with it way easier.
February 18, 2025 at 4:48 PM
The overhead is a combination of the following:

- Operations of writing to the buffer
- Operations of flushing the buffer
- Operations of reading the file content

The result is a slower workflow.
January 30, 2025 at 4:45 PM
By providing an object to the function, you can configure the size of the interval buffer.

Think twice before doing so because the default values are placed there for a reason.

If you try to change it to a smaller value, then… ↓
January 30, 2025 at 4:45 PM