Hiking

A few years ago, I had an opportunity to go hiking. For three days and nights, a group of people was moving from point A to point B, through mountains, plains and streams, sleeping in our bags and tents. It was amazing to experience this.

Even though it was a semi-starters trip, this was a test of durability for me. When I received my backpack, I couldn’t believe that I could walk at least a couple kilometers with it. Heat, weight, constant sunlight, mosquitoes, difficult uphill routes and sores were all tiring us. Each evening I thought: “That’s it. I am not gonna be able to stand, let alone walk tomorrow, even if I want to”. But next day I woke up with enough energy to continue. The struggle was way more than worth it.

Mountains and vast landscapes are astonishing and unforgettable. Stars couldn’t be brighter at night. Water was never before so tasty, especially cold.

I wasn’t using my phone for three days, and it was refreshing too. I can’t help myself and let go of it in normal circumstances, not that I am addicted to it, but still, I use it more than I should. This natural unplug was really nice.



And again, this was my first time, and I never thought that I would like such journey. I would certainly repeat this.

Signals

Somehow, many frontend libs and frameworks decided to adopt this new thing, called Signals.
Vue had something that feels like signals since Composition API came out.
Preact, SolidJS, and Angular all have singals now.
I think it is a good thing that these frameworks have such similarities.
Most of RxJS code that I saw was overly complex and unasked for, to be honest.
Yes, RxJS is a powerful tool, but it seems to me that it was used like a golden hammer.
What frustrates me is that React team decided NOT to adopt this.

Stop using buttons for navigation

An idempotent action should always be a link.

Starting a site in 2023

  • Just go with Vercel! Trust me

Otherwise...

  1. Buy a domain name somewhere
  2. Set your name servers to point to your VPS provider
  3. Enter your domain name in Cloudflare SSL
  4. Replace your name servers with the ones Cloudflare will give you
  5. Profit!

You now have a domain name with HTTPS!

State of frontend 2023

As I mentioned before, view libraries start to adopt Signals to improve performance and DX.
However, not all of them do that. My personal opinion is that React is no good in 2023 because of this, it is moving in the wrong direction, and bringing NextJS down with it (which has it’s problems too, to be fair).

So, what would I choose for SPA?

  • Preact (maybe), Vue, SolidJS, Svelte

Preact is in a maybe territory due to the fact that it seems like it is not moving at the same speed like other libraries.
I would try it out for small apps and see how well it works. And there isn’t really an SSR route to follow, if the app gets bigger.

What would I choose for SSR?

  • Nuxt, SvelteKit, SolidStart

I would really like to use NextJS with Signals (or basically with Preact), but that would be a rough journey.
And NextJS is making something weird with pages->apps breaking change, and I am not sure about that.

Exact versions

Many package managers by default add dependencies with possibility to upgrade to a patch version, during an install. The lockfile will be updated, but the package file won’t. I think this behavior is really nasty for two reasons.

First, if you have large enough, say 10, number of libraries, you’ll lose track of what is used right now. Lockfiles are big. And even a dependency tree won’t help much, because you’ll have to compare two sources manually, with your naked eyes. You won’t have to hunt down these changes during upgrade if the package file doesn’t lie to you (versions are the same)

Second, it makes installs, builds and deploys unpredictable. Sure, patches shouldn’t break anything. But I don’t want to take chances. And I really want to ship stuff exactly like it was built, and tested. If an upgrade breaks something, you can catch it right away or hunt it down by looking at what packages were updated recently, instead of guessing what specific package or a combination of packages broke down. This also minimizes a chance that a newcomer dev will have to deal with broken stuff or a different behavior.

Some official, let alone community guides tell users to add a version which only pins library to a major version. I saw this in some Google’s SDKs. This is somewhat common in Android and iOS development, and I had numerous cases where a newer patch version was no good. The articles and guides should specify exact versions, otherwise how do I know which version to use, in case of a problem?

I want my software to be accurate, not
hit-or-miss. You want to know your exact salary, not a guess.

The English-English dictionary

One concept that beginner language learners miss is that at certain point you should just start using it, the sooner, the better.
And not just using it – you should start learning your target language in that language. Yeah, English classes in schools and universities nowadays have workbooks and lessons in English. But some students and self learners still struggle to apply this method outside of classroom.

One of the most powerful things that opened my eyes to this concept was switching my apps and Google Search language to English. With apps, you familiarize yourself with translations of the things you already know.
And the use case for switching search language is this – you can search a word in your native language and Google will present information in your target language. Specifically, it shows you the definition of a word you are looking for in your target language. It feels like this unlocks a lot of vocabulary and context. At certain point you won’t have to translate anything back to your native tongue. This is the moment where you can proudly say that you understand English.

State of PCVR 2023

Recently I purchased a Pico 4 VR headset, and the main reason for that was that I wanted to do some physical activity during work breaks. You know, when the CI/CD pipeline runs, when test suite runs, et cetera, and just in general to be able to easily stand up and do some excercise. Sure, that seems like overly complex solution to a simple problem – do some push ups, sit ups and so on.
But the problem is that it is very easy to forget about it altogether, at least for me. Games, on the other hand, are designed to be addictive.

So I’ve tried Beat Saber. And it turned out to be the best VR game ever. It is just great.
And the best thing is, you can’t really stress yourself too much (unless you’re playing 100 sit ups in 3 minutes, but that’s another story). I wish though that there were more wider maps, wider and longer movements. There are custom maps for that, too.
But I wish it would be more common. Basically, I’ve bought VR for Beat Saber, and it turned out to be totally worth it.
Unfortunately, the alternatives to Beat Saber are not even close. I would really much just prefer that Beat Saber integrated some of the features of other similar games, because it is just better overall, and I myself don’t see any point playing something else.

As for the rest of VR games... It is sketchy at best.
Driving games work OK for me – the only problem that I have is that I would really really really prefer driving in Forza Horizon, instead of other games. Flight simulators like War Thunder work great too. Looking around the interior of the vehicle adds to the immersiveness.

The shooters are... playable. I’ve tried Pavlov VR, but it requires you to hold your weapon with both hands to be accurate.
And I find that very annoying. Yes, maybe for a super simulation realism mode it would be cool, but in general it is just not practical. Reloading and all that stuff is done with your hands, and I really don’t have a problem with that, it works okay.
But I think Vail VR is just better in general. Still, not as fun to play.
Doom VFR surprised me in a good way, despite negative reviews. I felt that it is a pretty good VR shooter, really.
Even though I had to turn my head around to look around, because I was lazy to bind right stick to look around (and maybe that’s not even possible? I am not sure).

Half-Life: Alyx is... neither good or bad.
It looks good (for VR), but the problem lies with its gameplay. It’s a Half-Life game, so there are lots of breaks between shooting the enemies. I’ve got so frustrated in the beginning so that I loaded some chapter after that.
I don’t want to sit in VR and solve puzzles. As a matter of a fact, I disliked it in the original Half-Life series.
I love Portal 1 & 2, but for some reason I can’t stand solving puzzles in Half-Life.
And since it was one of the first AAA titles for VR, the movement is strange.
They’ve designed the levels so that you have to “jump” often, but why I can’t jump just to a press of a button?
Why do I have to teleport?
Btw, there are some cool features in this game – like climbing the ladders with your own hands. But that’s a one trick pony – you can climb them by a press of a button and that’s just so much easier, so why bother.

I wish there was some sword fighting FPS slashing game, something like Shadow Warrior. Also, I’d like to play with lightsaber, you know?
I haven’t tried Blade and Sorcery, but it looks like it is not for me, really.

I’ve tried several virtual drumming “games”, and that’s a cool concept, however... The problem is that each game of this genre has something really good, but is not fun overall. Paradiddle, Ragnarok, Drums Rock...
I am certain that is possible to create a good VR drums experience, but it is not there yet.

There are also mods for regular games that add the ability to look around in VR. I haven’t tried those, but I really think that developers should add at least that to their games.

Overall, I have a feeling in most of the VR games when I play them: Why VR?

VR really shines when you benefit from immersiveness (driving, flying), or utilise your hand movement (Beat Saber, drums).
But apart from that – I am not sure. I like how “3D” effect works, and all that. It really is cool. But still, I’d play a PC game over VR.

I hope that there’ll be more and/or better games like Beat Saber, or that it’ll receive updates to make it more versatile (more modes, more different types of movement), that regular games would add VR modes (such as Forza Horizon, Cyberpunk and such).
Playing 3rd person games in VR is just pointless, by the way.

Vue 3, revisited

Previously, I’ve had mixed thoughts about Vue 3. But now I’ve stumbled upon it again, and since I’ve seen decent code written with it, I think I was wrong.

It seems that Vue 3 just got even better, if you think about it.
The ability to write hooks is great on its own, but Vue 3 gives you complete freedom.
If you add “setup” attribute to the script tag, you won’t have to return a result from your script and make a dummy setup function.

Honestly, writing Vue 3 code feels refreshing again, like it was with AngularJS and VueJS.
Vue always was a tool which helps to iterate fast. Now it’s even more smooth.

How I built my resume in HTML, CSS & JS

Previously, in local market a resume wasn’t a requirement. When you have some experience and network, something like LinkedIn is just enough.
But when I entered global market, resume became relevant. Aaand most of automatic resume services (including LinkedIn) don’t fit on one page or have some other inconveniences. So I needed something more serious.

Before I tell you my final solution, here is what I considered:

* resume.io – customization isn’t enough for me
* Figma – but I am not a designer, this is not for me. Especially such important thing as resume.
* Microsoft Office, Google Docs and basically and other office software make me clench my teeth in pain
* Notion seemed adequate, but I missed customization (precise font size, for starters)
* LinkedIn and similar services are not customizable
* LaTeX – seems like a hardcore solution: I don’t want to learn one more markup language and I am not sure where can I edit it online (again, how customizable would it be?)

But I am a web developer. Surely I can make a HTML page I thought! I tried it, and liked it!
To me it seems like a perfect solution.

Resume, source code, if you want to laugh at my implementation. You may be shocked, surprised and confused.
Yes, it is overkill in terms of libs. But I am Frontend Developer, after all! Why not? :) I do what I want, it’s my resume after all.

Pros and cons

+ Complete freedom, independence and customizability
+ Convenience in comparison with other solutions (LaTeX/Figma/Office/...), IMO
+ Accessible on the web, always up to date
+ I can add additional features: say if I want to tweak a resume for a certain company
+ Edit & export anywhere, literally anywhere
! Someone might say that there’s something wrong with the style, but I can fix that
! It probably has issues with ATS – but who wants to be judged by an ATS? :) I don’t

How could I live without this thing before?

As technology progresses, I hear more arguments that people say “How could I live without this thing before?”. And even I could’ve said something like that in the recent past. Everyone’s needs are different, and you do you, but this was said in the context of smart home and smart speakers. So I should start a rant! I don’t need any of that, so I fundamentally can’t understand what’s the problem with standing up and changing the song or turning the lights on. But seriously, hear me out. Laziness The whole argument of “it is so cool to turn the lights off and on while I’m laying down in bed, or even doing so automatically” promotes laziness. I think it is safe to say that the majority of people on the Earth have sitting jobs. And probably what happens after that is: you get tired, so you sit down and watch Netflix or something like that. So I would say that having to stand up from your ass is actually a great thing. The body needs to be moved regularly. And these manual actions are so easy that it doesn’t take even the least amount of mental energy to do. Do you really need a device to control the lights? Really? I understand that someone with special needs would absolutely need that. That’s out of the question, but if you’re a healthy individual, come on. There’s also the case if you’re using some kind of system to control the lights during the shoot, I can understand that as well. There are the production requirements. But apart from that it is just laziness. Why don’t you just put a VR headset over your head and be happy? Smart devices are stupid Yeah. The less control you have over anything, the more stupid it is. If your use case is not accounted for, good luck. Smart devices is a perfect category for brands and manufacturers to cut down all of the corners and costs possible. Which leads me to... Security The less inputs a tool has, the more secure it is. It is that simple. It’s called an attack vector. If you add more inputs, layers, device, the possibility of vulnerabilities grows. Since I don’t have the need for all of that, that’s just one more nail in the coffin of smart devices. Cost And above all, you pay extra so that... -You’ll stand up from your ass less which is unhealthy -Your security may be compromised -At some point you’ll have to do it yourself It isn’t rational in the slightest. What can you do what I can’t? P.S. I don’t see anything wrong with, say, building and coding an automatic flower waterer. That’s just fun.

Playback on smartphones

How often do you find yourself listening to music while simultaneously watching a video or listening to podcast whilst playing a video game? I do it every day on my desktop and laptop. Also, Mac has a slight disadvantage: you can’t control volume of individual apps. I honestly can’t live without it, it is so overlooked.

Every now and then I want to do the same on my smartphone, be it an iPhone or Android.
Unfortunately it is impossible on iPhone, and it is far from being straightforward on Android too.

Apparently there are solution for this:
Samsung has SoundAssistant (some other OEMs have their own software for this)

This app allows can:

  • Set individual application volume
  • EQ settings
  • Multi app sound so all apps can be played simultaneously

Now, unfortunately I didn’t test it, but I would love to. And unfortunately it seems that there isn’t one solution which would work on any device. But at least there is such option.

I understand but do not accept the premise that since we use our phones on the go that we should for some reason such important functionality that we had for decades, especially that smartphones are more capable than ever and are increasingly more popular, versatile and pervasive.

Rant about wiki’s (and Jira)

Confluence, Notion, Wiki, Jira... what’s common about them?
They’re slow. And often times, clumsy – in the sense that often times they don’t do what you indended to.
In this post, I want to focus on writing. Stories, Epics, Specifications, Documentation.
These tools don’t adhere to a common standard. They all have some kind of WISYWIG editors.
But in my opinion, most of this feature bloat isn’t needed, and even unasked for.
Instead of writing a coherent text with the most basic formatting possible, people overuse tables’, dropdowns’ and formatting.
Often times it breaks. I dread editing a table in Jira or Confluence. One awkward movement and everything is broken.
What’s worse is that these tools can “eat” the thing that you’re editing and sent it to the void, and unless you copied it or saved it somewhere else, it can be forever lost. It happened to me at least a dozen of times. Ctrl+Z doesn’t work in these cases.
I wish version control in these tools would show raw diffs, instead of trying to show something in between.

Information gets lost not only due to unaccaptable software mishaps, it also gets lost due to possibility of unlimited nesting, broken links. Even more than that: I personally lack the motivation to use this software, because of the aforementioned reasons.
I wish that Markdown ruled the world of non-programmers too.
I believe we can have the best of both worlds:
People can even have formatting buttons, and they can even see the preview without dealing with raw formatting.
But I would much rather write in raw .md, without crazy heavy WISYWIG solutions.
Btw, is there anything like Notion but .md ?

https://martin-ueding.de/posts/rant-about-confluence/

Copyright Incringement

Recently I posted a story on Instagram and selected a song for it. All is well, but then I see Instagram threatening me in red letters that my story isn’t available in 83 countries, and I should take it down because I don’t have the rights to use this song.
What happens if I don’t? Nothing. So it isn’t a rule.

First of all, is that my problem? Certainly not. The service allowed me to select this song, without any warnings.
Second, does it fucking matter? It’s a fucking five second STORY. Ok, ok go ahead and block it, the less people know about this shitty record label, the better. Is that the tactic here? Because I don’t understand.

This happens every day, every minute. I have one more example: there was comedy sketch on YouTube where the whole plot is that the song which starts playing is cool. Aaand the video goes down due to copyright.

Is it so hard to add a god damn “if” statement to check the duration, at the very least? What makes this even more hilarious is that this song is still available in full on YouTube.

This does not make a one bit of sense, especially when it comes to the main thing – money.

My Favorite Movies, TV Shows, Books, Podcasts, Music, Video games

This is a list of my favorite movies, TV shows, books, podcasts, music, and video games

Movies

Letterboxd

Tenet, Arrival, Limitless, Kinetta, Attenberg, Heaven Knows What, The Pleasure of Being Robbed, Uncut Gems, Upstream Color, Green Room, Blue Ruin, Sound of Metal, The Place Beyond the Pines, The Drop (2014), Victoria (2015), Donnie Darko, eXistenZ, Who Am I, Sunshine, Buzzard, Raw, Pi, After the dark, Dead Man’s Letters, Drive, Knight of Cups, Song To Song, Boy Eating The Bird’s Food, 127 Hours, La La Land, Whiplash, Fallen Angels (1995), Alps, Song To Song, Knight of Cups, To The Wonder, I’m Still Here, No Country For Old Men, Nobody, Unclenching the fists

TV Shows

Halt and Catch Fire, Sharp Objects, Fleabag, Mr. Robot, The Boys, House MD, Unorthodox, Jessica Jones, Game of Thrones, Breaking Bad, Sex Education

Anime

Evangelion

Books

Fiction

English

Caves Of Steel, The Naked Sun (Isaac Asimov), Canal Dreams (Iain Banks), A Clockwork Orange (Anthony Burgess), The Collector (John Fowles), HPMOR (Eliezer Yudkowsky), Goldfinch (Donna Tartt), An American Tragedy (Theodore Dreiser), East of Eden (John Steinbeck)

Russian

Ada (Vladimir Nabokov)

Autobiographies / Memoirs

Self-help

Project management

Comics

Igor Grom, Scott Pilgrim

Podcasts

English They’re Just Movies, The WAN Show

Russian Blitz And Chips, Будет весело, инфа 100%, 12 или 19?, Фронтенд Юность, Садовая, 36

Music

A few of my most favorite songs ever:

Genres Metalcore, Post-hardcore, Deathcore, 8 bit, Breakcore, Hardstyle, Gabber, Hardcore Techno, Classic, Contemporary Classic, Drum and Bass, Free Jazz, Shoegaze, Screamo, IDM, Phonk, Riddim

I also listen to rap and hip hop, but I don’t have favorites in this genre, but here is a playlist for you. I also like hip-hop instrumentals like this and this

Artists Dead Man’s Bones, Fucking Werewolf Asso, Boards of Canada, Portishead, Amon Tobin, Four Stroke Baron, Shokran, My Dad Is Dead, Fazil Say, Kola Kid, Kidcrash, VRUMZSSSR, Whirr, Slowdive, Raubtier, Ishome, Zach Mccoy, Crywank, Bring Me The Horizon (Count Your Blessings album), Bonobo, Crystal Castles, DJ Shadow, Attila

Video games

Dishonored 1, 2, Death of The Outsider, all DLCs, Life is Strange, Disco Elysium, Tales from Borderlands, Wolf Among Us, Mirror’s Edge, Cyberpunk 2077, Apex Legends, Dota 2, League of Legends (played previously), Disco Elysium

Appendix

Inspired by Alexey Guzey’s post


My Last.fm, Spotify

import com.my.awesome.*

Speaking about packages, I find that seeing the name of what was imported from where is important.
Consider this very simplistic and made-up example code:


package com.my.awesome.project;

import java.io.*;
import org.apache.commons.fileupload.*;

public class Main {
    public static void main() {
            File file = new File("/usr/local/bin/foo/bar");
            FileItemFactory factory = new DiskFileItemFactory();  
    }
}
        

Can a newbie guess which import comes from?
What if there were 10 imports from 10 different libs and more code?

I hear you saying: but we have IDE’s. Sure, but didn’t you ever had this problem where a couple of imports were not working? Reference was not resolved due to some kind of refactoring. I find that this is an unnecessary problem out of thin air. Explicit or package named import would work just fine.

“Just buy this thing, duh”

This is an argument I often hear from tech people. Just upgrade! Just buy a new device! I think this is a wrong mindset. Yeah, in some cases it might be the best or the only solution, but more often than not it isn’t. First of all, not everyone has the budget to buy a new thing. And even if they do, the main question is – is that rational? Is that necessary? Tech people don’t take that into account at all. Just get rich, duh. Just get more money. Yeah, that’s a good idea to strive to improve your finances, but it won’t get you anywhere if you’re gonna spend it all without thinking. And shopaholism is no good. It is addictive. The mindset should be: how can you do what I want to do without buying new stuff? Can I repair an old devices? Can I borrow it? Do I even need it? Which budget do I have and what’s the least budget I can get away with? Can I sell an old device and buy second hand? Again, you don’t have to follow it. But don’t tell people to buy this and that, left and right, and don’t tell them that what they have is no good. That’s just bullshit.

Deep linking is a broken technology

When you’re browsing the web, or open a link someone sent you, it might be considered a deep link. A deep link looks just like regular link, but its function is to lead you to a native app. This isn’t bad, is it? Yeah. But they are broken like half of the time.
Clicked on open Spotify link? A webview or browser opens, even though you have this app installed. Clicked on a link in Facebook? Good luck, Facebook breaks some links intentionally or unintentionally, so the deep link won’t work anymore.
Clicked on a link and you don’t have an app? You will be moved to the app store, but you just wanted to see some content.
Sometimes this happens even if you have the app installed. Deep links are complicated in their behavior and implementation. I worked with it during mobile app development. On the surface, it’s super trivial. User has an app? Open the app. Otherwise, open the page or the app store. But in reality, more variables come into play. Deep links don’t work if you copy and paste it directly into the browser’s address bar. It doesn’t work if you open it from the Notes app. I really can’t explain this behavior. If your app uses third-party provider which helps with deep links, if they have a downtime, your users won’t be able to open these links. Because they encode and decode most of the parameters baked into the link, on their side.


Are we better off without it? Can it be fixed? Can it be simpler?

Please, do not export default

Finding usages and reference sometimes can be hard enough even if we use named exports due to renames, index files, re-imports, re-exports. I know that most modern editors can do that, but still, your code editor won’t show you all usages of an entity if it was re-imported or re-exported, even worse if it happened a couple of times. By that time you’re likely already forgot what you were looking for. I think this is bad too, but export default is worse.
Things get harder if you’re trying to find something that has no name. Yeah, your editor can (probably) still show you references of this object, but good look trying to find it in an organization (across multiple repositories, projects, libraries).
You can’t really rely on a filename or path either.
Even if this would be possible, it would take too much time to bother doing so. To make things worse and just for fun, name your file something super generic like `list.js` and import/export it a couple of times for good measure, so that the person looking for its usages will definitely abandon all hope.

One time, I was refactoring a component which was default exported and when I searched where it was used, one result wasn’t shown in the search. Because it had a typo. I knew this only because I also searched for its filename, because I wanted to be extra sure.

Why Keep Toxic People?

There are people that think that if you keep your circle sterile, it’ll be for the better, “Negative people only bring negativity”, and that motto actually scales to their whole lives. I don’t 100% agree that it is a great strategy, it is stupid to lose such contacts, if the person in question is valuable. I would say that every lost contact is a loss. Everything else doesn’t matter. Well, yeah if he or she is a huge pain in the ass, that might be a problem. But otherwise, they’re worth keeping in touch. Abrasiveness never killed anyone, even better, such people are straight shooters. They’re not gonna lie in your face. And let’s face it, you’re gonna be offended only if you want to be offended.

Brand ecosystem is dumb

...if it is closed off, as it happens most of the time. I’m speaking about tech, all kinds of devices and software, specifically.

I got sick and tired of seeing companies launching an ecosystem or adding yet another product to the lineup.
My problem with that is, I think that a product should work regardless of the ecosystem. Otherwise, it most likely will be a landfill in a month. Let’s take my favorite product: speakers. “Smart” speakers, for that matter. Why are they “smart”? Because ecosystem!
Can I use HomePod with BlueTooth? I can’t. Can I use some generic stupid ass shit bluetooth speakers from any device? Hell yes!
That’s where I call out ecosystems bullshit as it is. Other “non-ecosystem”, “limited functionality”, “no magic” devices just work with anything.
But there I’ll have to buy a whole lot of standalone products, which are useless on its own. I can’t pair Apple Watch to an Android. I can’t transfer files between an iPhone and other non-apple device. Is that what you call an ecosystem? I call it limitation and a failure.

Sure, most users, and more specifically Apple users won’t care about it, and will happily buy another Apple product. But people on a tight budget or tech enthusiasts do care about this.
I can’t justify buying a device which is useless, unless I buy 10 other devices to complement it.
With this approach comes greediness: let’s make this device do that, but not the other, so that people will have motivation to buy all of our stuff.

Fuck that.

More often than not ecosystem puts on more limitations than I would have if all devices would be regular standalone products.
Some features that require an “ecosystem” just work like crap, so you would be even better off without it. Apple’s Handoff, for example.
Apple’s ecosystem promises, or at least implies synchronization between devices, but fails to do so in practice. I would even go as far as to say that it is not practically possible today.

I can’t imagine any serious (or even a personal) project relying on software that runs only on one OS.
I can’t allow to be cut off. Hell, some of Apple’s own apps and a ton of third party apps are not crossplatform because of some bizarre and stupid reasons. Where is the ecosystem if I can’t continue working on another device?
What if my iPhone dies and I can’t access notes or projects in an Apple ecosystem exclusive app? What if I decide to add non-Apple devices into the mix? The “magic” disappears.