Another heatwave
This week we have the pleasure of another heatwave in the United Kingdom. Its not quite as extreme as the one in July (37 degrees Celsius), but it will in the 30 degree range again for several days.
The week started with a cycle ride to collect some new shoes. In training for a ride up a mountain during a French trip I did two more ~100km rides back to back
- The masochists route ride to Yalding (ascending some new hills along the way and extra hills on the way back)
- 112 Km ride to Box Hill was surprisingly good, I was more awake than the previous days ride.
- Level 4 ride with Bigfoot CC was a good recovery ride, only 3 hours long and although hilly (all routes in Kent are) it felt a moderate 738 meters of climbing.
I use the Lake brand of shoes as they have a wide fit size. Although going through there very detailed sizing chart it was clear that not all shoes were wide enough for my feet (without being far too long).
Cult SciFi moviesλ︎
There were some very interesting under-rated sci-fi movies from the 90's reviewed in a YouTube video from YesterVerse
- Dark City - 1998
- ✅ The Thirteenth Floor 1995
- Strange Days - 1995
- ✅ Screamers - 1995
- ✅ GATACA - 1997
- ✅ Nirvana - 1997
- Ghost in the Machine 1993
- The City of Lost Children - 1995
- Retroactive 1997
- No Escape 1994
Open Source Creative toolsλ︎
Practicalli uses the following creative tools:
Inkscape to create logos, banners and any vector graphics (SVG - Scala Vector Graphics). Inkscape can export Portable Network Graphics (PNG) files and many other image formats.
Blender is currently used for video editing screen-cast content and long-distance cycling videos. I have dabbled with 2D and 3D animation in Blender, but have quite limited experience so far.
OBS Studio is used to capture camera, screen and graphic overlay to create video content for screen-casts.
Creative tools to evaluate:
-
Friction can be used to create animated graphics with vector (SVG) and raster graphic formats. The page on animation techniques looks a valuable place to start exploring.
-
Kdenlive is a non-linear video editing tool (Linux, macOS, BSD & Windows).
-
Glaxnimate is a vector animation & motion design app. It seems useful for generating animate images in SVG, WebP and GIF formats.
Hyprlandλ︎
More adventures in Hyprland this week with the Garuda Linux distribution that claims to make using Arch Linux more reliable.
After a sudo garuda-update
this week the Hyprland desktop failed to load, showing only a blank screen after entering my username and password at the ssdm prompt.
This was an opportunity to understand how Garuda Linux uses the Btfs file system to create snapshots, making it simpler to role back to a good state.
It would be far easier to use Gnome or KDE desktop than Hyprland, but I do feel productive when using a tilling window manager.
Recovering Garuda Linuxλ︎
Garuda Linux creates a snapshot each time there is a system update, e.g. sudo garuda-update
or installing a package sudo pacman -Sy package-name
It seems this is very useful when using a rolling distribution like Arch Linux, especially when using Hyprland which is prone to breaking changes as it and the projects are using are evolving quickly.
When the operating system or desktop is not running correctly, a snapshot can be chosen from the Grub boot menu.
This is the approach required to fix the issue I was experiencing, where the screen went blank after login via SSDM greeter screen.
I went through several snapshots before finding one that would load the desktop. Garuda Linux prompted me to restore the snapshot, so I accepted.
It took about a minute to restore and then prompted to reboot the system. Everything was back to normal after the reboot.
I was impressed with the simplicity of selecting snapshots and using them to recover to a previous state. The hardest part was figuring out which snapshot to restore. To minimise impact of restoring, start from the latest snapshot and then go backwards through the snapshot history, until a working snapshot is found.
The snapper
desktop tool shows the snapshot history and also allows a specific snapshot to be restored or deleted if no longer needed.
TODO: gain an understating of how much space each snapshot is taking up.
Playing videosλ︎
I use vlc to play music and videos across all my computers and mobile devices (tablets & smartphones).
I prefer using the following digital formats:
- Opus open source audio codec - 128bit for very high quality, 96bit for music and 48bit for spoken word (audio books, podcasts, etc). Audio within YouTube videos and YouTube Music use Opus, within the WebM multimedia container.
- H.254 video encoding
- Matroska multimedia container can contain video, audio, picture, or subtitle tracks within a single file
NOTE: I have been testing WebM but that seems slower to encode when using Blender. Further testing needed. NOTE: Previously I used Vorbis codec but files were replace using the Opus codec which is much more efficient. The Opus codec creates audio files of far higher quality whist keeping file sizes very small.
Arch Linux has a vlc package and a vlc-git package.
The vlc-git package is build with Wayland compositor support by default. The vlc package uses Xwayland (Wayland support is currently broken).
The vlc package has a minimal set of codecs, so vlc-git package should be used to support a wide range of video and audio formats.
Screenshotsλ︎
There doesnt seem to be a good tool to create desktop screenshots.
The hyprland community seems to use grim or grimblast. I assume there is some relation there, but still investigating.
Copy a screenshot from a region
Create a copy of a region as a screenshot that can be pasted into another application, e.g. GIMP or Inkscape.
Save a screenshot from a region to a file
Save a region as a screenshot to a file.
NOTE: Did I need to install grimblast package or had it already been included in another dependency ?
I use flameshot but that doesnt work with wayland.
Gnome desktop has an okay tool, but not as good as flameshot. I dont know what that tool is called, so I will have to search to find the package name for Arch Linux. It is possible that it has a bunch of dependencies and pulls in lots of Gnome things I dont need.
I havent use KDE for a while, so not sure what kind of screenshot tool it provides.
Fish environment variablesλ︎
Unlike Bash and Zsh, the Fish shell uses the set
command to set a variable.
Use the -x flag to export an environment variable so other tools can use that variable. set -x
is the equivalent of export
in Bash and Zsh.
Waybarλ︎
waybar is a highly customizable Wayland bar for Sway and Wlroots based compositors, .e.g Hyprland.
Garuda Linux Hyprland edition provides a really rich waybar customisation
From right to left:
- power (sleep, reboot, shutdown, etc.)
- date & time
- something I can enable / disable ??
- connectivity (network, bluetooth)
- network status (IP address, up/down usage)
- sound device and volume control (scroll with mouse)
- battery (percentage charge)
- disk / file system used
- CPU usage in percentage (includes virtual cores) - click opens 'htop' command in the foot terminal, close with q
- Temperature of hardware - degrees Celsius
- Key binding cheat sheet popup when clicked
- monitor brightness as percentage - mouse wheel changes brightness
- Packages updates - number of packages - enter password to run the update or Ctrl+c to cancel
- network traffic (possibly superfluous as the network status also shows this information on hover)
Foot terminal - breaking change
When clicking on the package update, the foot terminal showed a depreciated message
The waybar for the laptop display is too big and doesnt fit the screen size. A specific monitor configuration for each display seems prudent.
Monitor configurationλ︎
hyprctl
can be used to generate information about the system
Lenovo T14S with Dell 5k2 monitor configuration
❯ hyprctl monitors
Monitor eDP-1 (ID 0):
1920x1080@60.02000 at 0x0
description: Lenovo Group Limited 0x40A9
make: Lenovo Group Limited
model: 0x40A9
serial:
active workspace: 1 (1)
special workspace: 0 ()
reserved: 0 40 0 0
scale: 1.50
transform: 0
focused: no
dpmsStatus: 1
vrr: false
solitary: 0
activelyTearing: false
directScanoutTo: 0
disabled: false
currentFormat: XRGB8888
mirrorOf: none
availableModes: 1920x1080@60.02Hz 1920x1080@48.00Hz 1680x1050@60.02Hz 1280x1024@60.02Hz 1440x900@60.02Hz 1280x800@60.02Hz 1280x720@60.02Hz 1024x768@60.02Hz 800x600@60.02Hz 640x480@60.02Hz
Monitor DP-2 (ID 1):
5120x2160@60.00000 at 1280x0
description: Dell Inc. DELL U4025QW 6CDMD34
make: Dell Inc.
model: DELL U4025QW
serial: 6CDMD34
active workspace: 3 (3)
special workspace: 0 ()
reserved: 0 40 0 0
scale: 1.00
transform: 0
focused: yes
dpmsStatus: 1
vrr: false
solitary: 0
activelyTearing: false
directScanoutTo: 0
disabled: false
currentFormat: XRGB8888
mirrorOf: none
availableModes: 5120x2160@60.00Hz 2560x1080@60.00Hz 5120x2160@120.00Hz 5120x2160@120.00Hz 5120x2160@119.88Hz 5120x2160@60.00Hz 5120x2160@59.94Hz 5120x2160@30.00Hz 5120x2160@29.97Hz 5120x2160@30.00Hz 4096x2160@60.00Hz 4096x2160@59.94Hz 3840x2160@60.00Hz 3840x2160@59.94Hz 3840x2160@60.00Hz 3840x2160@50.00Hz 3840x2160@30.00Hz 3840x2160@29.97Hz 3840x2160@25.00Hz 3840x2160@24.00Hz 3840x2160@23.98Hz 2560x1440@59.95Hz 2048x1152@60.00Hz 1920x1200@59.88Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1600x1200@60.00Hz 1680x1050@59.95Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@60.00Hz 1280x800@59.81Hz 1152x864@75.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@60.00Hz 800x600@75.00Hz 800x600@60.32Hz 720x576@50.00Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@60.00Hz 720x480@59.94Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@60.00Hz 640x480@59.94Hz 640x480@59.94Hz 720x400@70.08Hz
Neovimλ︎
I use a few different rules for markdownlint tool which enhances the readability of the content I write for the Practicalli books and articles.
- longer lines for paragraphs
- allow 2 blank lines between content
- allow several html tags to support embedding YouTube videos
Markdownlint local configλ︎
Lint and format tools are installed by Mason and use a default configuration.
None-ls plugin can be configured to use a custom configuration for one or more of the lint and format tools.
If PRACTICALLI_NONELS_CONFIG
is not set to true (or not set at all) then the configuration is skipped, returning an empty table, {}
, which is merged into the whole config.
Conditionally load config based on environment variable
Use local config file for MarkdownLint
---@type LazySpec
return {
-- use mason-lspconfig to configure LSP installations
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
{
"jay-babu/mason-null-ls.nvim",
-- overrides `require("mason-null-ls").setup(...)`
opts = function(_, opts)
-- add more things to the ensure_installed table protecting against community packs modifying it
opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, {
"markdownlint",
-- add more arguments for adding more null-ls sources
})
opts.handlers = {
markdownlint = function(source_name, methods)
local null_ls = require "null-ls"
null_ls.register(null_ls.builtins.diagnostics.markdownlint.with {
-- extra_args = { "--config", "~/.config/markdownlint.yaml" },
extra_args = { "--config", "~/.config/markdown-lint.jsonc" },
})
end,
}
end,
},
}
Package updateλ︎
Another package update using SPC p a
.
AstroNvim package update
Updated (9)
● astrocommunity 0.06ms start
383f86e feat(bars-and-lines): add wakastat.nvim (#1540) (2 days ago)
31346b6 fix(obsidian-nvim): remove `util.table_length` (#1603) (3 days ago)
53a6313 feat(pack): add prettier pack (#1502) (4 days ago)
8e359d7 feat(copilotchat-nvim): update to v4 and add mcphub.nvim integration (#1599) (6 days ago)
5a27649 fix(purescript): update nvimmer-ps url (#1600) (6 days ago)
b22f8a5 feat(pack): add nushell language pack (#1601) (6 days ago)
● AstroNvim 0.27ms start
b6f6b7c chore(main): release 5.3.8 (4 days ago)
ff58f54 revert: move back to previous logic for automatic hlsearch management (4 days ago)
bf58ff7 chore(main): release 5.3.7 (4 days ago)
1fa5227 chore(snapshot): update `lazy_snapshot` (4 days ago)
09d3128 fix(autocmds): improve detection of automatic hlsearch management (4 days ago)
○ astrotheme
0a3fb36 chore(main): release 4.9.1 (#167) (4 days ago)
9df3469 chore(build): auto-generate vimdoc (4 days ago)
f852f7a fix(lualine): revert to old color schema for lualine theme (4 days ago)
d3203ce chore(main): release 4.9.0 (#166) (5 days ago)
e35a72d chore(build): auto-generate vimdoc (5 days ago)
09192a2 feat(lualine): add support for lualine automatic theme detection (#165) (5 days ago)
3d2e2c0 chore(build): auto-generate vimdoc (9 weeks ago)
87c7a20 chore: configure lua language server to disable formatting (9 weeks ago)
● catppuccin 1.79ms colorscheme catppuccin-mocha astrocore
76a8d05 feat(blink): link signature help window border to `FloatBorder` (#904) (7 days ago)
8fd0915 fix: misc tree-sitter and unset semantic tokens (#902) (8 days ago)
○ conjure racket hy scheme guile julia lisp rust sql clojure lua python janet fennel
0649a68 Add test for the desired multi value return behaviour (3 days ago)
1068e97 More parsing tests and make the stray output testable (3 days ago)
6093f2c Add a simple happy path test for parse-guile-result (3 days ago)
1a1b782 Correct JavaScript mapping doc, cs -> ts for toggle stray output (3 days ago)
1fe3fb1 Merge branch 'main' of github.com:Stansom/conjure into Stansom-main (3 days ago)
a6af4bd Merge branch 'prevalidate-scheme-eval' of github.com:seamusriordan/conjure into seamusriordan-prevalidate-scheme-eval (3 days ago)
11b6f94 Bump minimum version to 0.10 because we are using vim.uv, a user could shim vim.uv by setting vim.uv = vim.loop if they can't upgrade from 0.9 for some reason. (4 days ago)
f3159dc Replace vim.loop with vim.uv (4 days ago)
4c4e568 Recompile school.fnl (4 days ago)
e67dceb Merge branch 'jessie-ross-close-hud-when-scolling-to-latest' (4 days ago)
8f2add4 Compile conjure.log (4 days ago)
010aeac Fix iw text object as iW to select school.lesson-6-message (4 days ago)
aa33996 Merge pull request #694 from gbroques/fix-school-word-motion (4 days ago)
bcb52a1 JS Fix stray out key-binding (4 days ago)
fd2debc JS Add an option to toggle stray output for a better experience when working with asynchronous code (4 days ago)
fef6c69 JS Bug fix for interleaved comments evaluation (9 days ago)
c114584 Fix iw text object as iW to select school.lesson-6-message (10 days ago)
○ grug-far.nvim GrugFar GrugFarWithin
385d194 Update README.md (6 days ago)
Updates (4)
● none-ls.nvim 21.5ms User AstroFile
○ nvim-dap mason-nvim-dap.nvim
● nvim-treesitter-textobjects 4.63ms nvim-treesitter
● plenary.nvim 0.33ms plenary.job neo-tree.nvim
Updated (5)
● none-ls.nvim 21.5ms User AstroFile
5fcb739 chore: Auto generate docs (6 days ago)
071da2e builtins/meson_format: initialize support for native meson format (6 days ago)
fd7999b style: upgrade selene std file, fix standard library version (6 days ago)
46f2713 chore: Auto generate docs (9 days ago)
e3cce92 fix(diagnostics): fix markdownlint-cli2 failing (#295) (9 days ago)
○ nvim-dap mason-nvim-dap.nvim
a479e25 Update test to handle nvim nightly diagnostic output change (10 days ago)
a96e922 Add return type annotation for utils.pick_process (10 days ago)
● nvim-treesitter-textobjects 4.63ms nvim-treesitter
71385f1 feat(java): add @return.inner & @return.outer text objects (#788) (13 days ago)
● plenary.nvim 0.33ms plenary.job neo-tree.nvim
b9fd522 neovim 0.11 introduced winborder: neovim/neovim#31074 (#649) (2 weeks ago)
AI Thoughtsλ︎
The ever expanding range of AI services often feels like the "gold rush" that occurred in 1848 in California.
NOTE: The 'Streaming Wars' South Park episodes are a similar analogy.
Whilst I believe some form of AI services will become a helpful part of our working lives, there are many years of maturity for these tools ahead.
As with any gold rush, there will be those that make large amounts of money and those that loose a lot of money. AI is a high risk environment until it has chance to mature.
At some point over the next few years the AI bubble will burst (and perhaps this is already happening). There continues to be a rapid growth of AI tools and services and I assume this rapid growth will continue for many years more (for as long as people can get investment).
Rapid growth always causes a 'bubble' and eventually there will be a conflation of products and companies in this space. As there is such a wide scope for AI services, then its likely to see multiple bubbles at various levels of rapid growth and stagnation.
The negative part of the potential of AI are the people trying to cash in on other peoples lack of understanding. Thoughts of AI being seen as a silver bullet by some falling for the hype are concerning.
A larger concern is where people start to believe AI is omniscient and making serious decisions without critical thinking on the information the AI produces.
Thank you.