barefootstache

While writing up a reflection of completing the #DailyBloggingChallenge for a year, I realized that my #Hugo based website is missing #SEO data in its head.

The [hugo clarity theme](github.com/chipzoller/hugo-cla) comes with SEO though it is not activated by default and one would only realize it when going through the `layouts/partials/opengraph.html` code. There is the mention of the site param `blogDir` that is not implemented anywhere else within the code.

Thus to activate the SEO over #SchemaOrg and #JsonLd one needs to add the param `blogDir` and point it to the designated section. Using the exampleSite as a reference it would be `blogDir = "post"` in the `config/_default/params.toml` file.

GitHub - chipzoller/hugo-clarity: A theme for Hugo based on VMware Clarity

A theme for Hugo based on VMware Clarity. Contribute…

github.com
barefootstache

#DailyBloggingChallenge (365/365)

The only caveat of the #Whisper project is that it only works on 16-bit #WAV files.

There is a #FFMPEG script on how to do it via the #terminal

`ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav`

barefootstache

#DailyBloggingChallenge (364/365)

The 'Quick Start' section in the Readme sufficed for setting up.

The only thing that I had to change in the `./models/download-ggml-model.sh` script (1) is remove the option `--show-progress` on line 105. Seems like GNU Wget2 2.1.0 doesn't have that option.

Alternatively one can replace the option with

`--progress=bar --force-progress`

- 1: github.com/ggerganov/whisper.c

#wget #bash

whisper.cpp/models/download-ggml-model.sh at master · ggerganov/whisper.cpp

Port of OpenAI's Whisper model in C/C++. Contribute…

github.com
barefootstache

#DailyBloggingChallenge (363/365)

Instead opted in to using #Whisper which also works with #KdenLive.

Although Whisper is originally written in #Python there is a #CPP project that makes transcribing very fast. It took less than 2min to transcribe the 26 min audio clip.

github.com/ggerganov/whisper.c

GitHub - ggerganov/whisper.cpp: Port of OpenAI's Whisper model in C/C++

Port of OpenAI's Whisper model in C/C++. Contribute…

GitHub
barefootstache

#DailyBloggingChallenge (362/365)

Originally wanted to use #VOSK to transcribe the #SpeechToText. Initially tried it out over #KdenLive and its 'Speech Recognition' tool.

This took quite awhile to setup, since it is not concrete what kind file format, if any, the VOSK model should have. Additionally, the recommendation of setting up a virtual #Python environment didn't work as expect and went with the global approach.

And finally scratched the whole approach, once realizing that transcribing 26 min audio clip is taking longer than 10min.

barefootstache

#DailyBloggingChallenge (360/365)

Alternatively one could also use #FFMPEG to combine the files together via the #Terminal like

`ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4`

Source: superuser.com/a/277667

How to merge audio and video file in ffmpeg

I want to merge an audio file (.wav or .au format)…

superuser.com
barefootstache

#DailyBloggingChallenge (359/365)

Most of the time, I try to watch videos on #Invidious with lower resolution to speed up loading time, especially since I watch by default at twice the playback rate.

Today I realized that some instances permit the downloading of content. And even if one has to download audio and video separate, one can easily merge them together temporarily in one's favorite #VideoEditor without the need to render the end product.

barefootstache

#DailyBloggingChallenge (358/365)

For a long time #BraveBrowser was the trick to mitigate #YouTube ads.

Seems like YouTube has finally caught on and now going back to #Invidious.

barefootstache

#DailyBloggingChallenge (356/365)

Now one shall add the missing checks and default cases. Further one shall add the CSS classes mentioned in 353.

The result is seen in the image.

- 353: qoto.org/@barefootstache/11291

barefootstache

#DailyBloggingChallenge (355/365)

Now that the partial is complete, look back at its parent. Combining the code from 345 and 348 one gets this image.

The problem of this code so far is that it doesn't check if the `$itemsOutput` exists. Further there are no checks that the array `.Params.paypalItems` has any items and there is no default case.

- 345: qoto.org/@barefootstache/11278
- 348: qoto.org/@barefootstache/11291

barefootstache

#DailyBloggingChallenge (354/365)

The whole code of the partial looks like in the image.

A lot of this code can be squashed to save space for the cost of readability.

barefootstache

#DailyBloggingChallenge (353/365)

Looking at the #JavaScript code in the image that will be parsed over #GoLang using the `printf` function.

First one creates a `change` event listener function that is bound to the id of `item-select-$uniqueID`. The `<select>`-tag shall be added the `id` attribute in line 13 (351).

Additionally a custom attribute `data-image` shall be created and placed on the `<option>`-tag in line 15 (351). This holds the path to the image value within the `paypalItems` element.

Outside of the partial the #CSS classes `selected-value` and `selected-image` need to be defined. They present the respective values from `paypalItems` element.

In the initial case, lines 10-11 will be called that take the value from the first element in the `paypalItems` array. Defined from `{{ $selectedValue := index .items 0 }}` which shall be prepended before the JavaScript code.

- 351: qoto.org/@barefootstache/11291

barefootstache

#DailyBloggingChallenge (352/365)

This code will generate dynamically based off of the length of the `paypalItem` or `.items` variable and use the first element of it as the default value (line 9).

Next one will extend the code with more CSS classes to ease the referencing of the JavaScript actions.

barefootstache

#DailyBloggingChallenge (351/365)

Now that the #PseudoCode exists, it shall be converted into #Hugo syntax as described in 349. As in the image, some #GoLang functions are used like `printf` and other Hugo functions to loop over the variables that are saved as an array type.

- 349: qoto.org/@barefootstache/11291

barefootstache

#DailyBloggingChallenge (350/365)

Now wrap the #HTML code (338) with a `<div>` and a #CSS class that extends the `uniqueID` (345) in its name. The pseudo code looks like the image.

- 338: qoto.org/@barefootstache/11278
- 345: qoto.org/@barefootstache/11278

barefootstache

#DailyBloggingChallenge (349/365)

Further within the partial, since `safeHTML` will be used one can parse string using #HTML and #JavaScript syntax within #GoLang. As an example

`{{ $output := "" }}`

`{{ $output = print $output "<span>Example</span>" }}`

`{{ return $output }}`

This creates a `<span>`-tag with the text `Example` after `safeHTML` pipe is applied.

barefootstache

#DailyBloggingChallenge (348/365)

In 342 the first mention of using a callback function is used without any concrete description of how it shall be built. From the last image one needs to change the partial reference to be saved as a variable which is then piped with `safeHTML`, so

`{{ $itemsOutput := partial "paypal-button" (dict "paypal" .Params.paypal "items" .Params.paypalItems "headName" .Params.paypalHeadName "headValue" .Params.paypalHeadValue "uniqueID" $uniqueID) }}`

and the rendering is done via

`{{ $itemsOutput | safeHTML }}`

- 342: qoto.org/@barefootstache/11278

barefootstache

#DailyBloggingChallenge (347/365)

Hypothesis: This current epidemic of social media use in childhood and adolescents and its impact of their developing brain has probably been seen before.

About 150a ago the alcohol laws on minimum drinking age has been established to minimize the effects on the developing brain. Back then medical advances in the scientific method just started advancing, thus it took so long to establish such an age. Additionally the age of adulthood has been pushed back by many years, where lots of regions had the ruling that one can drink with marriage, which could start as early as the beginning of teenage years.

Fast forward to today where we already know the adverse effects of social media on the molding minds and are taking little action to prohibit and/or minimize its use. Corporations have tried to install a minimum age requirement and this can be very easily lied on.

I doubt that ID checks will be established on such platforms any time soon, because of the current ecosystem of data value and angst of where such data will land.

It seems like the only place where ID checks were successfully applied are on services where can earn money. And these were first implemented once governments started stepping in to learn where the user is gaining the influx of money.

tl;dr As long as government doesn't intervene, we won't see any positive change towards child brain development.