studio status report: 2024-10
month 10 of 2024 was about switching the Studio over to HTTPS 🔒✨ and getting day-job lessons about calculating diffs 🐇🕳️
It is factually incorrect for me to say that Google ‘forced’ me to switch one of my Studio publications, kintespace.com, over to HTTPS. Simultaneously, I am not going to defend a need to stay on HTTP. But the bottom line is this: developing Songhay.Player.YouTube
[GitHub] is pointless without “compliance” with Google policies. I think I spent over half of the month dealing with Google—the selected Obsidian notes below should show this. But before we got on with that, here is the Obsidian graph view of the month:
The two biggest dots on the graph above are:
- Songhay Publications — KinteSpace
- Azure
Selected Obsidian notes should reflect this:
the EFF offers [[Certbot]] for automatic [[Let’s Encrypt]] renewal
This looks like technical activism at its best:
Unlike the video found by [[2023-08-14#hardware okay, the old guy gets it 👴 SSL (TLS) is free|my previous research]], this video features the command line—a not-so-“scary” command line:
The whole [[Certbot]] experience starts [📹 watch ] with the following command:
$ snap install --classic certbot
The catch is whether this news from 2019 from [[A2 Hosting]] relates to [[Songhay Publications - KinteSpace|kintespace.com]]:
The Certbot documentation at https://certbot.eff.org recommends using snapd for Certbot installation. However, snapd is incompatible with our VPS infrastructure, so you should use your Linux distribution's package manager to install Certbot directly. Alternatively, you can use one of the many other client applications available for managing Let's Encrypt certificates. For more information, please visit https://letsencrypt.org/docs/client-options.
—“How to secure an unmanaged server with a Let's Encrypt SSL certificate”
When this is still the case, there is an [[Apache]]-Linux (pip
) pathway for installation [📖 docs ]
[[Songhay Publications - KinteSpace|kintespace.com]] the richest North American ADOS is David Steward, chairman of World Wide Technology
David Lloyd Steward (born July 2, 1951) is an American billionaire businessman. He is chairman and founder of World Wide Technology, one of the largest African-American-owned businesses in America.
According to Forbes, in 2024 Steward was one of 13 black billionaires worldwide. He was ranked 178th on the Bloomberg Billionaires Index list of American billionaires in 2024 with a $12.8 Billion.
[[Songhay Publications - KinteSpace|kintespace.com]]: the 2019 docs are accurate—snapd
does not work on [[A2 Hosting]] 😐
Continuing from [[2024-10-04#the EFF offers Certbot for automatic Let’s Encrypt renewal|yesterday]], I installed snapd
according to the instructions and got these warnings:
snapd.failure.service is a disabled or a static unit, not starting it.
snapd.mounts-pre.target is a disabled or a static unit, not starting it.
snapd.mounts.target is a disabled or a static unit, not starting it.
snapd.snap-repair.service is a disabled or a static unit, not starting it.
Then, following the instructions, I tested snap
and got the unpleasant news:
$ sudo snap install hello-world
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
/tmp/syscheck-mountpoint-1430420498: mount failed: Operation not permitted.
[[Songhay System Studio]]: “Camilo Aguilar on the Rsync Algorithm” #to-do
[[Songhay Publications - KinteSpace|kintespace.com]]: the *_misc_*
scripts for the HTTPS drama
Okay, for the sake of quick and dirty, I think I need two scripts:
rsync_kinte_misc_to_desktop.sh
rsync_kinte_misc_to_PROD.sh
These scripts form a dirty cycle like this:
flowchart TD
PROD[kintespace.com] -- rsync_kinte_misc_to_desktop.sh --> STAG[staging.kintespace.com] -- rsync_kinte_misc_to_PROD.sh --> PROD
The reason why I fixed these scripts with *_misc_*
is due to the rsync
commands changing based on the current need. Today’s need is about targeting files that need http://
changed to https://
.
[[Songhay System Studio]]: my introduction to LASER by “Facebook Research”
Lydia Nishimwe:
LASER is a library to calculate and use multilingual sentence embeddings.
[[Songhay Publications - KinteSpace|kintespace.com]]: Uncaught (in promise) TypeError: Decoding failed
The [[Songhay Player - YouTube (F♯)]] is failing on staging:
The [[Songhay Player - Progressive Audio (F♯)|b-roll progressive audio player]] is throwing the same errors 😐
This is likely due to GZIP compression:
GZIP compression can be a great way to improve a website’s performance. However, if something goes wrong during the compression process, it may trigger an ERR_CONTENT_DECODING_FAILED error.
—“How To Fix the ERR_CONTENT_DECODING_FAILED Error (6 Methods)”
[[Entity Framework]]: a study of the Queryable.Join
method for more than two entities is needed 🔍🧠 #to-do
I am surprised to find that it is difficult to find a published study on Queryable.Join
[📖 docs ] for multiple entities in fluent syntax. The closest thing I can find this SQL-like syntax:
I think a fluent translation (not equivalent) of the above is out there but I need to make sure that I am not confusing Enumerable.Join
[📖 docs ] (LINQ- to-objects) with Queryable.Join
.
A so-called “complete” tutorial out there in the wild does not have an example like the one above 😐 ==I strongly suspect== that the LINQ story of replicating JOIN
in SQL fluently is not a feel-good success. My first hint is about the docs clearly specifying that .Join
is about two sequences not an $n$-number of sequences. This means an anonymous object has to be passed from one .Join
call to the next:
var query = dbContext.Collection1
.Join(dbContext.Collection2,
cItem1 => cItem1.Key1,
cItem2 => cItem2.Key2,
(cItem1, cItem2) =>
new
{
cItem1.Key1,
cItem2.Key2,
})
.Join(dbContext.Collection3,
anon => anon.Key2,
cItem3 => cItem3.Key3,
(anon, cItem3) =>
new
{
anon.Key1,
anon.Key2,
cItem3.Key3,
})
This .Join
chaining cannot possibly be the “right” thing to do! (I would need to see how, say, LINQ-to-SQL would translate something like above.) In a world where joining actually is the “right” thing to do, I would rather write SQL and run it with [[Songhay Data Access (C♯)|ADO.NET]] or [[Dapper]].
[[Songhay Publications - KinteSpace]]: i really would like to use htmx
but…
This Studio was introduced to htmx
a [[2024-08-29#Songhay Publications Publications Hypermedia Systems|couple of months ago]] without any plans for its usage. Then came the realization that something must done about the automatic updating/rebuilding of the [[Songhay Publications - KinteSpace|kintespace.com]] ‘Index Hero Splash’ page. I was actually thinking that the page could be refreshed passively with a cron job—but I was not paying respect to this Studio’s investment in [[Web Components]], specifically [[Songhay Web Components]]—and what is behind this effort is [[Lit]]. Now [[Lit]] came from Polymer and, according to my [[Joplin]] notes from 2020:
The Polymer people were behind Web Components and standards for years (perhaps since the announcement of the standard in 2011). They have a tiny wrapper around the standards called LitElement.
Even though htmx
supports [[Web Components]] [📖 docs ], today I flippantly and ignorantly assume that [[Lit]] (and the entirely of JavaScript) has more to offer—and it would probably take me months to rebuild [[Songhay Web Components]] with htmx
😐
[[dotnet|.NET]]: SystemTextJson.JsonDiffPatch
replaces [[Compare-Net-Objects]]❓
More #day-job progress shows that SystemTextJson.JsonDiffPatch
[🔗 GitHub ] [📦 NuGet ] not only replaces [[Compare-Net-Objects]] but also introduces me to the world of standardized JSON ‘patching’ (e.g. RFC 6902).
Some weird, [[JSON Diff Patch]] history:
SystemTextJson.JsonDiffPatch
is the non-Newtonsoft-JSON ‘port’ ofJsonDiffPatch.Net
[🔗 Github ]JsonDiffPatch.Net
can be thought of as the server-side “compatible” compliment ofjsondiffpatch
[🔗 GitHub ] which is a [[Typescript]] library with a great demo page
[!question] Does
SystemTextJson.JsonDiffPatch
replace [[Compare-Net-Objects]]?
The short answer is no. Unlike [[ObjDiff]], SystemTextJson.JsonDiffPatch
requires serializing [[dotnet|.NET]] objects into JSON which can be a performance-hogging deal breaker.
[[Compare-Net-Objects]] is dead to me 💀
Kellerman Software has been purchased by 4Penny.net
[[Songhay Publications|Publications]]: microdiff
, a dependency-free JavaScript library…
…claims to be the fastest diff lib:
🚀 More than double the speed of other object diff libraries
[[Songhay Publications - Day Path|Songhay Day Path Blog]] is now running on HTTPS
My thought [[2023-03-22#Songhay Publications - Day Path Songhay Day Path Blog switching to HTTPS|early last year]] appears to be right:
I think ticking HTTPS Only on is all that is needed…
The only bit missing was to find http://songhayblog
and change it to https://songhayblog
🧹✅
open pull requests on GitHub 🐙🐈
- https://github.com/BryanWilhite/Songhay.HelloWorlds.Activities/pull/14
- https://github.com/BryanWilhite/dotnet-core/pull/67
sketching out development projects
The current, unfinished public projects on GitHub:
-
replacing the Angular app in
http://kintespace.com/player.html
with a Bolero app 🚜🔥 depends on:- completing issue #54: move
Songhay.Publications.DataAccess
out of the kinté space repo 🚜 - generating Publication indices from SQLite for
Songhay.Publications.KinteSpace
- generating a new repo with proposed name,
Songhay.Modules.Bolero.Index
✨🚧 and add a GitHub Project
- completing issue #54: move
The proposed project items:
- switch Studio from Material Design to Bulma 💄 ➡️ 💄✨