Darker days
The days are starting to get shorter. Time to start getting up earlier :)
This year continues to been filled with many dark days across our society of human beings. Selfishness seems abound, driven by fear created by the few to manipulate the many. The ever increasing propaganda seems to know no end.
When you are put into a position of constant fear of the other, you are loosing a party of your humanity and missing out in the multitude of joys in our world.
It is easy to forget that these hostile views are from a vocal minority who really do not understand the damage they are doing to our society and themselves. Unfortunately they also impact the lives of everyone else.
One regular tonne from those in fear is that they are loosing their identity because of others. How can this be the case when each person's identity is shaped by so many active and passive experiences. Fear shuts down the intricacies of each persons identity. Prolonged fear reduces a person to a mindless savage, capable of unbelievable hate towards others (and themselves).
The movement of people has been the bedrock of human survival and evolution over the last 10,000 years. To think this would ever stop is to deny a significant part of our society. Went people are welcomed into a society, they contribute and become part of a richer society. When we fail to all welcome people into our society then people do not feel they can become a part of our world. When a vocal minority throws hate or even bricks, then not only those on the receiving end feel hurt, our whole society is greatly damaged.
A cold and foggy start to a nice 112 km ride on Monday which brightened up just over half way. I had lots of layers on, including 3 pairs of socks and 3 pairs of gloves. Surprisingly I managed quite a few personal best times along the route. I thought we were going quite steady.
I was quite exhausted on Tuesday though, I seem to have some covid or flu symptoms affecting me and draining my energy. I will start doing deliberate breathing to help keep my lungs clear.
Wednesday was a big organisation and tidy up of the house, as a plumber is coming to service the boiler on Thursday. I gave away the last of the IKEA 365+ food containers I bought a long time ago. The containers always felt a bit top-heavy (they are tapered with a small base). I posted them on Freegle at the weekend and after one person didnt turn up, another came on Wednesday.
Thursday the boiler was serviced and I also arranged a service for my neighbour (who looks after my cats). One of the people I cycle with is a plumber, so its nice to have someone I can trust looking at the boiler. My boiler is in very good condition, which is nice.
Saturday I was helping my neighbour identify the cause of a vibration with their central heating system. After around 45 minutes of heating the radiators, the boiler was creating a very loud vibration. This vibration occurred every 5 minutes or so, for about 30 seconds. I bled the radiators, a couple of which did have a lot of air in. The issue remained. After a bit of a hunt the water pressure
Cyclingλ︎
Creating data overlays for Cycling videos make it more engaging to watch, as you can see the speed, heart rate, cadence in 'real-time' along with the video.
GoPro Dashsboard Overlayλ︎
time4tea/gopro-dashboard-overlay project generates a video overlay from GPX and FIT files to add real-time information to videos.
Create a new directory.
Set up Python Virtual environment
Install gopro-dashboard-overlay.
Unfortunately this project uses Pillow library which is not compatible with Python 3.12.
Updating the reauirements.txt
and Setup.py
files to use Pillow 11.3.0
allowed the install of gopro-overlay to be successful (once changes were pushed to the fork I created of this projext).
Install fork of gopro-dashboard
Output of install command
❯ venv/bin/pip3 install --upgrade git+https://github.com/practicalli-johnny/gopro-dashboard-overlay
Collecting git+https://github.com/practicalli-johnny/gopro-dashboard-overlay
Cloning https://github.com/practicalli-johnny/gopro-dashboard-overlay to /tmp/pip-req-build-q6tf08_9
Running command git clone --filter=blob:none --quiet https://github.com/practicalli-johnny/gopro-dashboard-overlay /tmp/pip-req-build-q6tf08_9
Resolved https://github.com/practicalli-johnny/gopro-dashboard-overlay to commit 02aba9990c3ee4bf59a87fda5cc9caab2adfc5e0
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting pillow==11.3.0 (from gopro-overlay==0.129.0)
Using cached pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.0 kB)
Collecting pint==0.22 (from gopro-overlay==0.129.0)
Downloading Pint-0.22-py3-none-any.whl.metadata (7.7 kB)
Collecting geotiler==0.15 (from gopro-overlay==0.129.0)
Downloading geotiler-0.15.0.tar.gz (371 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting gpxpy==1.6.1 (from gopro-overlay==0.129.0)
Downloading gpxpy-1.6.1-py3-none-any.whl.metadata (5.9 kB)
Collecting fitdecode==0.10.0 (from gopro-overlay==0.129.0)
Downloading fitdecode-0.10.0-py3-none-any.whl.metadata (9.5 kB)
Collecting geographiclib==1.52 (from gopro-overlay==0.129.0)
Downloading geographiclib-1.52-py3-none-any.whl.metadata (1.0 kB)
Collecting progressbar2==4.2.0 (from gopro-overlay==0.129.0)
Downloading progressbar2-4.2.0-py2.py3-none-any.whl.metadata (12 kB)
Collecting requests==2.31.0 (from gopro-overlay==0.129.0)
Downloading requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting sqlitedict==2.1.0 (from gopro-overlay==0.129.0)
Downloading sqlitedict-2.1.0.tar.gz (21 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting cytoolz>=0.8.2 (from geotiler==0.15->gopro-overlay==0.129.0)
Downloading cytoolz-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.6 kB)
Collecting aiohttp>=2.3.5 (from geotiler==0.15->gopro-overlay==0.129.0)
Downloading aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)
Collecting setuptools (from geotiler==0.15->gopro-overlay==0.129.0)
Using cached setuptools-80.9.0-py3-none-any.whl.metadata (6.6 kB)
Collecting typing-extensions (from pint==0.22->gopro-overlay==0.129.0)
Using cached typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Collecting python-utils>=3.0.0 (from progressbar2==4.2.0->gopro-overlay==0.129.0)
Downloading python_utils-3.9.1-py2.py3-none-any.whl.metadata (9.8 kB)
Collecting charset-normalizer<4,>=2 (from requests==2.31.0->gopro-overlay==0.129.0)
Using cached charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (36 kB)
Collecting idna<4,>=2.5 (from requests==2.31.0->gopro-overlay==0.129.0)
Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests==2.31.0->gopro-overlay==0.129.0)
Using cached urllib3-2.5.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests==2.31.0->gopro-overlay==0.129.0)
Using cached certifi-2025.8.3-py3-none-any.whl.metadata (2.4 kB)
Collecting aiohappyeyeballs>=2.5.0 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl.metadata (5.9 kB)
Collecting aiosignal>=1.4.0 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading aiosignal-1.4.0-py3-none-any.whl.metadata (3.7 kB)
Collecting attrs>=17.3.0 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading attrs-25.3.0-py3-none-any.whl.metadata (10 kB)
Collecting frozenlist>=1.1.1 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading multidict-6.6.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (5.3 kB)
Collecting propcache>=0.2.0 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)
Collecting yarl<2.0,>=1.17.0 (from aiohttp>=2.3.5->geotiler==0.15->gopro-overlay==0.129.0)
Downloading yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (73 kB)
Collecting toolz>=0.8.0 (from cytoolz>=0.8.2->geotiler==0.15->gopro-overlay==0.129.0)
Downloading toolz-1.0.0-py3-none-any.whl.metadata (5.1 kB)
Downloading fitdecode-0.10.0-py3-none-any.whl (90 kB)
Downloading geographiclib-1.52-py3-none-any.whl (38 kB)
Downloading gpxpy-1.6.1-py3-none-any.whl (42 kB)
Using cached pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.6 MB)
Downloading Pint-0.22-py3-none-any.whl (294 kB)
Downloading progressbar2-4.2.0-py2.py3-none-any.whl (27 kB)
Downloading requests-2.31.0-py3-none-any.whl (62 kB)
Using cached charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (151 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached urllib3-2.5.0-py3-none-any.whl (129 kB)
Downloading aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 14.6 MB/s 0:00:00
Downloading multidict-6.6.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (254 kB)
Downloading yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (352 kB)
Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl (15 kB)
Downloading aiosignal-1.4.0-py3-none-any.whl (7.5 kB)
Downloading attrs-25.3.0-py3-none-any.whl (63 kB)
Using cached certifi-2025.8.3-py3-none-any.whl (161 kB)
Downloading cytoolz-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 14.4 MB/s 0:00:00
Downloading frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (232 kB)
Downloading propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (206 kB)
Downloading python_utils-3.9.1-py2.py3-none-any.whl (32 kB)
Downloading toolz-1.0.0-py3-none-any.whl (56 kB)
Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Using cached setuptools-80.9.0-py3-none-any.whl (1.2 MB)
Building wheels for collected packages: gopro-overlay, geotiler, sqlitedict
Building wheel for gopro-overlay (pyproject.toml) ... done
Created wheel for gopro-overlay: filename=gopro_overlay-0.129.0-py3-none-any.whl size=468097 sha256=ec94dda87fcaf74614227de5986415f7ac24869dd17e6ff4caf7f123180e9907
Stored in directory: /tmp/pip-ephem-wheel-cache-nkj3s7c1/wheels/a3/b3/d5/d924dfb9fa64d299a961f90982efeebdd86a323f6e8dbb464c
Building wheel for geotiler (pyproject.toml) ... done
Created wheel for geotiler: filename=geotiler-0.15.0-py3-none-any.whl size=54330 sha256=2a0b922c9b860bd368e832a137e06ef88aaa6d322342820af131d764fdbe2788
Stored in directory: /home/practicalli/.cache/pip/wheels/ba/01/77/7ae526c2133126053b8a47e7480798f16b53e95c4e77b7d6b9
Building wheel for sqlitedict (pyproject.toml) ... done
Created wheel for sqlitedict: filename=sqlitedict-2.1.0-py3-none-any.whl size=16957 sha256=ffb8b304dc8eec2461608f26c2d5d6fa81fcfce6b70f8e2353dcab6b18187c39
Stored in directory: /home/practicalli/.cache/pip/wheels/56/1e/68/fc282426da812281e81368e59ed19f3edc6d9eef4518dbc41c
Successfully built gopro-overlay geotiler sqlitedict
Installing collected packages: sqlitedict, geographiclib, urllib3, typing-extensions, toolz, setuptools, propcache, pillow, multidict, idna, gpxpy, frozenlist, fitdecode, charset-normalizer, certifi, attrs, aiohappyeyeballs, yarl, requests, python-utils, pint, cytoolz, aiosignal, progressbar2, aiohttp, geotiler, gopro-overlay
Successfully installed aiohappyeyeballs-2.6.1 aiohttp-3.12.15 aiosignal-1.4.0 attrs-25.3.0 certifi-2025.8.3 charset-normalizer-3.4.3 cytoolz-1.0.1 fitdecode-0.10.0 frozenlist-1.7.0 geographiclib-1.52 geotiler-0.15.0 gopro-overlay-0.129.0 gpxpy-1.6.1 idna-3.10 multidict-6.6.4 pillow-11.3.0 pint-0.22 progressbar2-4.2.0 propcache-0.3.2 python-utils-3.9.1 requests-2.31.0 setuptools-80.9.0 sqlitedict-2.1.0 toolz-1.0.0 typing-extensions-4.15.0 urllib3-2.5.0 yarl-1.20.1
NOTE: python libraries give the impression that design thinking is lacking.
Thank you.