Dima Tsykunov

Expect posts on technology, personal life, and my takes on both.

Telegram Channel

I haven’t been very active here lately. However, I’ve been quite active on my Telegram channel. I’ve been posting once a day since the beginning of November. The content is mostly shitposting, or “food for thought” kind of stuff. Most posts are in Russian, but if you have a Telegram account, automatic translation is available. I believe it uses Google Translate, and surprisingly, the translations are good. Take a look if you’re interested.

December 23, 2025

Emit signal instead of manipulating variable

It is generally advised in the Godot community to use signals as much as possible. I agree, it’s a great way to reduce coupling between components, which allows for a more pleasant experience when testing and implementing new features. However, from my experience, I’ve found that it is not always clear when it’s appropriate to use signals. But I also found a few situations when it’s 100% appropriate to use them. Here’s one of them: ...

January 21, 2026

Steam game leaderboard updates in Discord

My steam game has a leaderboard. No one is playing yet but I hope they will. As a way to promote community for the game I thought it would be cool to get leaderboard updates in official discord community for the game. Here’s how I did it. For this method to work you need to have access to Steamworks Admin page for the game. TLDR Create a Discord Webhook offical doc Get a Publisher key with General key permissions for Steam Web API official doc, scroll to the very end make sure to create a Publisher Key, not a User key if you are unsure if your key works, you can test it with this Get your AppID for your Steam game the best place is steamworks admin page for your game Use ISteamLeaderboards interface of the Steam Web API with the Publisher key official docs specifically, you need methods: GetLeaderboardsForGame to get the Steam internal leaderboardid of your leaderboard GetLeaderboardEntries to the leaderboard entries you can test requests by using Steam Web API reference by xPaw. For hosting, I chose GitLab CI scheduled pipeline, because of its generous free tier. ...

January 20, 2026

Subtle mistake when awaiting in GDScript

I’ve been doing Steam integration with GodotSteam and made a tricky mistake. It’s not an issue with GodotSteam in particular, but a pattern that is fairly common in GDScript. So, I thought I’d share. Mistake GodotSteam API looks sort of like this (pseudocode): class_name Steam signal leaderboard_find_result(handle: int, found: int) func findLeaderboard(lb_name: String) -> void: ... You call findLeaderboard, which is a long I/O bound operation, so you need to connect to leaderboard_find_result to get the result. ...

January 18, 2026

Setting up Monitor+ on Android with Sony ZV-E10

I’ve been trying to connect my Sony ZV-E10 to my phone over USB so I could use the phone as an external monitor. Everyone on YouTube suggests using the Monitor+ app, so I decided to follow that advice. However, every time I tried, I got the following error message: Unable to connect to your device, either PC Remote is not turned on or the device is not supported. After I finally solved the problem, I discovered that the solution was actually in the app’s help menu (the ? button on the main screen). I had looked at it while troubleshooting, but I wasn’t convinced the solution applied to my situation. It turns out it did. ...

December 24, 2025

CapsLock to Ctrl and Esc

One essential part of my workflow is remapping the Caps Lock key to act as Ctrl when held and Esc when tapped. It’s always one of the very first things I set up whenever I get a new computer. I’m so used to it that whenever I help someone with tech issues and have to use their computer, I start stumbling over basic tasks—and I can almost tell they begin to doubt if I’m actually good with computers. ...

August 11, 2025

Tag Your Tailscale Machines

Just today I installed Tailscale on a VPS and was wondering why it could discover all machines on my tailnet. Even though I specifically didn’t give it any grants or ACL rules. Turns out, new machines have permissions of the authorizing user when first authorized. These devices were added by me so they assume my identity. — Alex from Tailscale In other words, tailscale on a machine without tags can do everything user can do. Limited only by the capabilities of the Tailscale client software. Luckily, it doesn’t include being able to edit the ACL. ...

July 29, 2025

Debugging DNS Leak

I was surprised today to find out that Firefox was using my ISP’s DNS server — even though I had a local Pi-hole set up to use Cloudflare’s 1.1.1.1. It was my mistake. When I set up Pi-hole in my router’s DHCP settings, I forgot about DHCPv6. Once I added the local IPv6 address of my Pi-hole as the DNS server for DHCPv6, my ISP’s DNS server stopped showing up in the test. ...

July 25, 2025

[Wi-Fi name] has no internet access

Let’s say you have a Samsung phone. You connect to a Wi-Fi network and get a notification saying: [Wi-Fi name] has no internet access This could happen because your phone isn’t getting DNS responses for certain domains, such as: www.google.com google.com connectivitycheck.gstatic.com play.googleapis.com www.goooooooooooooooooooooooooooooooooooooooooooooooooooooooooogle.com (not a joke) …and a few others. You can find the full list by capturing the DNS queries your phone makes when connecting to Wi-Fi. I ran into this issue when trying to connect to my home Wi-Fi, and my Pi-hole was actively blocking DNS requests. ...

July 23, 2025