Diablo 2 Builds

This article is a small tribute to all the folks at theamazonbasin.com . It is the place where I lurked back in the day and literally learned to be a better person while vehemently consuming all the creative write-ups people contributed out of their sheer passion for the game and the community. I played Diablo 2 for as long as it existed. I became interested in Ladder seasons recently for one concrete reason: there is a periodic reset of all your progress and you get to experience the game from the very beginning. ...

September 5, 2026

Stream a Game of Wingspan

This post is about a setup I use to play a physical version of a board game with my remote friend. We played Wingspan down at the BGA, then learned there were more birds added in expansions, but they were not available on the site. We were not ready to pay for tabletopia, and Steam version seemed to have unfriendly UI. On top of that, there was a desire to try a real version of the game given that I never had a board game in my life. ...

December 2, 2024

Using VSCode

Here are some actions and their shortcuts that will make you effective with VSCode. action shortcut notes search symbols ctrl + shift + o shows a searchable document structure, super handy for yaml or other long files navigation go to one of previous files ctrl + tab hold ctrl to observe a list of those find file by name ctrl + p makes it easy to navigate between files search any action ctrl + shift + p use this if you want to do something, but to not know a shortcut yet, or do not care to learn one open settings ctrl + , add a new line after current one ctrl + enter reformat document ctrl + shift + i there is nothing more daunting than formatting files by hand, this is not needed at all when you have “standard” formatting conventions. This shortcut will make you happy and productive. esbenp.prettier-vscode helped me to structure this table without going insane open preview for a markdown file ctrl + shift + v it helps a lot to see a rendered file “close” file ctrl + w this one feels natural for a browser user, but can be very unpleasant if you also like to use this key combo to delete a word, like you can do in bash delete current line ctrl + shift + k this is fastest way to delete a line, do not underestimate it enable word wrapping alt + z very useful when you have lengthy lines, it removes the need to scroll horizontally to read them . This can also be enabled globally, search for “Word Wrap” show keybindings ctrl + k, ctrl + s allows to change some shortcuts if you like IDEA ones for example (like go back and forward) open extensions ctrl + shift + x a quick way to install more productivity helpers show project files ctrl + shift + e it also helps to enable “Auto Reveal” setting if you feel more comfortable knowing where you are in the workspace now toggle left bar ctrl + b delete word ctrl + backspace it is better than holding backspace open terminal ctrl + ` this one really sucks on Mac add cursor alt + click allows you to edit text in multiple places at once, do not forget to use this rectangular selection alt + shift + click useful to know that something like this exists comment current line ctrl + / IDEA also moves to the next line after commenting, which I find to be a superior implementation show suggestions ctrl + space this is one of the best features of any text editor or IDE open new window ctrl + shift + n may be needed when you are working with multiple unrelated directories move line up alt + up show quick fixes ctrl + . go to next error f8 this one is better in IDEA (f2), but I can live with that rename symbol or file f2 find in file ctrl + f replace in file ctrl + h you can also use selections to limit replacement scope I like very much the shortcuts in IDEA on a Mac, mainly because it is way easier to press cmd button than ctrl + shift (IDEA’s Linux and Windows keymap blows, and I am wondering if I should also use alt on Linux instead of ctrl. I did this for Android Studio and could not have been happier). On the other hand, I do not like customizing things too much because it will make me dependent on a certain environment, and will surely render me unproductive outside of it. It was not easy to shift from Android Studio to VSCode for me, but I am happy that I did not try to overwrite all of the shortcuts and instead learned the standard ones in VSCode. There are a few that are ridiculously better in IDEA on a Mac though, here are the important ones that I use all the time: ...

June 24, 2024

IP Camera Mail Relay

I ran an Odroid C2 off site for periodic temperature measurements, relay control via GPIO and a mail relay for IP cameras. It served me well for about 7 years with no maintenance needed. There was a moment when Google deprecated SSL on their mail servers, and that made it impossible for Hikvision IP cams to send me pictures. Thankfully, it was possible to quickly hack together a relay on Odroid using Postfix which saved the day and worked ever since. ...

March 9, 2024

Homelab

Preface I have been a loyal customer of Contabo for 5 years straight since 2018. They are a provider of the cheapest VPS in the world, mine was 4 CPU / 12 GB RAM / 300 GB SSD for about €9. There was even an update to the plan at some point where I could get 6 CPU / 16 GB RAM / 400 GB SSD for the same price, I just needed to pay them €25 to perform the “migration”. ...

March 8, 2024

Heroes 3 tricks to extract more joy from the game

I love to play random maps in Heroes 3 (original complete edition with the amazing HD Launcher) against 7 original AI on Impossible difficulty, random choice of town. On top of that, my preferred mode of playing with a friend is Hot Seat. The following text is what keeps me enjoying this game after 20 years of playing and doing the same things over and over again. I remember coming across someone else’s saved games on our hostel’s LAN during my university days. One of the save files had a level 20 hero at the start of month 3, with primary skills nearing 20’s. I was slightly bothered that the way me and my friend play the game becomes repetitive and boring, and after seeing that we are actually doing what a random fellow student is doing I became even more concerned. ...

December 12, 2022

Clone Disk to a Smaller One With Clonezilla

Clonezilla allows to skip target disk size, and also has an option to create partitions on a new disk proportionally to the old ones. In my case there was an HDD with 6 partitions and Windows 10, total size - 500 GB. The last three were C:, D: and the recovery image. New SSD was only 240 GB, but as it turned out the partition backup made by Clonezilla took less than 200 GB. ...

December 4, 2022

Jetpack Compose Navigation Handling of Hilt View Model

Suppose you want to re-use a ViewModel across two full-screen composables, and for some reason you rely on hiltViewModel() from androidx.hilt:hilt-navigation-compose:1.0.0: @Composable fun Comp1(viewModel: SharedViewModel = hiltViewModel()) { ... } @Composable fun Comp2(viewModel: SharedViewModel = hiltViewModel()) { ... } Let’s imagine Comp1 navigates to Comp2. If you do not pass an explicit handle to existing instance of SharedViewModel to these composables, they will go ahead and create a new one for themselves. ...

November 4, 2022

Knee Deep in Trouble Merle Travis

(well I'm) kneeeeeeeeeeee deeeeeep in trouble (got the) saaaaaaame thing on my miiiiind (there's nothing) thrilling (and it's a) killing meeee -- just keep a kiiilling tiiiiime (it's agi)tating, wading -- it's aggravating (and I'm) left nothing come (to) looooung (I'll be) kneeeeeeeeee eeeeeee deeeeep in trouble -- till my baby comes home (tururu) pa tu bu bruuuu bu pa pu (I've had the) mumps, the bumps, (and) all kinda trumps (I've had the) groove and the hoop (in) call (I've had the) aches, the shakes, -- and everythang it takes --(to) really bump the good man off (but have my) troubles double --looodi, what a muddle --everythang's getting to beeeeeeeee -- aaaaammm standing knee deep in trouble --since my honey let me beeeee (well amm) kneeeeeee eeeeeee deeeep in trouble (got the) same thing on my maaaaaind (there's nothing) thrilling (and it's a) killing me --(to) just keep the killing taaaaaaaaim (it's agi)tating, wading, -- it's aggravating (and I'm) left nothing come(to) loooooong (I'll be) kneeeeeeee eeeeeeee deeeep in trouble -- till my baby comes hoououo-ome -- till my baby comes home comon home, baby -- till my baby comes hooooouume taaaaa aaaa puruppuumm (mm)datt'tee du weeeeee

November 3, 2022

Using Android Xml Layouts With Jetpack Compose

The documentation suggests to use AndroidViewBinding API for the task. I intended to learn Compose in my project, but also wanted a LineChart from MPAndroidChart library. Here is what I did. In the fragment: override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val lineChart = FragmentChartBinding.inflate(inflater) return ComposeView(requireContext()).apply { setContent { SetContent(viewModel, findNavController(), lineChart) } } } And in the composable: ...

November 3, 2022