Posts

Checkmate on Your Terms: A Personal Journey with Correspondence Chess

Image
Chess, the game of kings , has captivated minds for centuries. But for those of us with attention deficit disorder (ADD) or major depressive syndrome (MDD), the fast-paced, pressure-cooker environment of over-the-board chess can be a major turnoff. The constant need for focus can leave us feeling drained and frustrated, blaming ourselves for mistakes or for our minds wandering.  I know this feeling all too well 😔 As someone who has struggled with ADD and MDD, I used to believe that chess was simply out of reach for me. The over-the-board experience was often a source of anxiety and personal disappointment. I'd find my mind drifting off, and the pressure of the clock would only exacerbate my frustrations.   Discovering correspondence chess was a game-changer for me. The ability to think about my moves at my own pace was incredibly liberating. For the first time, I could truly enjoy the strategic depth of chess without the added stress. It's been a journey of self-discovery, as...

My awesome Scid setup! 🨀

Image
Scid Rocks 🚀 Behold! Two screenshot of Scid from my ThinkPad running openSUSE Tumbleweed: On a FHD vertical monitor. There are 5 databases open with tree and best tree games windows. There are also 5 engines running simultaneously.     On a 4k monitor with 4 databases open and tree and best tree games windows for each.

GNU Make - Unconditionally run a target before any other targets

When writing a (GNU) Makefile, there are times when you need a particular target(s) to be run before anything else.  That can be for example to check the environment, ensure variables are set or prepare a particular directory layout.  TLDR; Define a non-phony target for a non-existing file and then include the target as if you were including a real makefile. For example: always-run-before-all : ... include always-run-before-all Usecase Ever since I've started using bmakelib to enhance my makefiles, I've always found myself writing a target ensure-variables , which I then would declare as the prerequisite of almost all other targets. include bmakelib/bmakelib.mk ####################################### .PHONY : ensure-variables ensure-variables : bmakelib.error-if-blank( REQUIRED_VAR1 REQUIRED_VAR2 ) ensure-variables : bmakelib.default-if-blank( OPTIONAL_VAR,some-value ) ######################################## my-target : ensure-va...

Variables in GNU Make: Simple and Recursive

There are two major flavours of variables in GNU Make:  "simple" and "recursive".  While simple variables are quite simple and easy to understand, they can be limiting at times.  On the other hand, recursive variables are powerful yet tricky. Basics Let's review the definition of the two flavours. Simple variable The value of a simple variable is computed exactly once no matter how many times it is expanded.  More importantly, the value is computed when the variable is defined and not when it is used.   For example in the snippet below, the value of a-simple-var is computed only on line #1 and is simply reused on lines #4 and #5.  a-simple-var := ... target1 : echo $(a-simple-var) echo $(a-simple-var) Recursive variable The value of a recursive variable is computed every time it is expanded .  Unlike a simple variable, the value is not computed when the variable is defined. ...

Firefox profiles: Quickly replicate your settings to any machine

Image
Have you ever been in a situation where you'd needed to work on different/new machines on a daily basis and wished there was a way to have all your essential Firefox configurations/addons/bookmarks on those machines without connecting your precious Firefix Sync account with all those stored passwords and credit cards? Well, I was there a few years ago and I found Firefox profiles to be an easy and clean way of achieving what I needed. The gist of the idea is that, you create and configure a "perfect" profile and make a copy of it on a flash drive (or Google Drive?).  Then copy that profile settings to new machines and, well, benefit! Here's the more detailed procedure with a few screenshots (using Windows 10 in VirtualBox running on openSUSE Tumbleweed.) Create the Perfect profile 1) Launch Firefox with Profile Manager using the command firefox -P either in your Linux terminal or in Windows Run dialog.   2) Then create a new profile (I named it "Perfect"...