First commit

This commit is contained in:
Philipp 2024-07-13 23:47:30 +02:00
commit fbfbccd099
Signed by: Philipp
GPG key ID: 9EBD8439AFBAB750
21 changed files with 565 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
public/
resources/_gen/
.hugo_build.lock
themes/

4
.gitmodules vendored Normal file
View file

@ -0,0 +1,4 @@
[submodule "themes/blowfish"]
path = themes/blowfish
url = https://github.com/nunocoracao/blowfish.git
branch = main

5
archetypes/default.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

1
assets/icons/matrix.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 520 520"><path d="M13.7,11.9v496.2h35.7V520H0V0h49.4v11.9H13.7z" fill="currentColor" /><path d="M166.3,169.2v25.1h0.7c6.7-9.6,14.8-17,24.2-22.2c9.4-5.3,20.3-7.9,32.5-7.9c11.7,0,22.4,2.3,32.1,6.8 c9.7,4.5,17,12.6,22.1,24c5.5-8.1,13-15.3,22.4-21.5c9.4-6.2,20.6-9.3,33.5-9.3c9.8,0,18.9,1.2,27.3,3.6c8.4,2.4,15.5,6.2,21.5,11.5 c6,5.3,10.6,12.1,14,20.6c3.3,8.5,5,18.7,5,30.7v124.1h-50.9V249.6c0-6.2-0.2-12.1-0.7-17.6c-0.5-5.5-1.8-10.3-3.9-14.3 c-2.2-4.1-5.3-7.3-9.5-9.7c-4.2-2.4-9.9-3.6-17-3.6c-7.2,0-13,1.4-17.4,4.1c-4.4,2.8-7.9,6.3-10.4,10.8c-2.5,4.4-4.2,9.4-5,15.1 c-0.8,5.6-1.3,11.3-1.3,17v103.3h-50.9v-104c0-5.5-0.1-10.9-0.4-16.3c-0.2-5.4-1.3-10.3-3.1-14.9c-1.8-4.5-4.8-8.2-9-10.9 c-4.2-2.7-10.3-4.1-18.5-4.1c-2.4,0-5.6,0.5-9.5,1.6c-3.9,1.1-7.8,3.1-11.5,6.1c-3.7,3-6.9,7.3-9.5,12.9c-2.6,5.6-3.9,13-3.9,22.1 v107.6h-50.9V169.2H166.3z" fill="currentColor" /><path d="M506.3,508.1V11.9h-35.7V0H520v520h-49.4v-11.9H506.3z" fill="currentColor" /></svg>

After

Width:  |  Height:  |  Size: 1,007 B

BIN
assets/img/avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

61
config/_default/hugo.toml Normal file
View file

@ -0,0 +1,61 @@
# -- Site Configuration --
# Refer to the theme docs for more details about each of these parameters.
# https://blowfish.page/docs/getting-started/
theme = "blowfish"
baseURL = "https://boehm.sh"
defaultContentLanguage = "en"
disableLanguages = [] #to allow translation work requiring shipping to production
enableRobotsTXT = true
paginate = 100
summaryLength = 30
hasCJKLanguage = true
buildDrafts = false
buildFuture = false
enableEmoji = true
[imaging]
anchor = 'Center'
[taxonomies]
tag = "tags"
category = "categories"
author = "authors"
[sitemap]
changefreq = 'always'
filename = 'sitemap.xml'
priority = 0.5
[outputs]
home = ["HTML", "RSS", "JSON"]
[related]
threshold = 0
toLower = false
[[related.indices]]
name = "tags"
weight = 100
[[related.indices]]
name = "categories"
weight = 100
[[related.indices]]
name = "authors"
weight = 20
[[related.indices]]
name = "date"
weight = 10
[[related.indices]]
applyFilter = false
name = 'fragmentrefs'
type = 'fragments'
weight = 10

View file

@ -0,0 +1,25 @@
languageCode = "en"
languageName = "English"
weight = 1
title = "BOEHM.SH"
[params]
colorScheme = "ocean"
displayName = "English"
isoCode = "en"
rtl = false
dateFormat = "2 January 2006"
description = "The blog of Philipp"
[author]
name = "Philipp Böhm"
image = "img/avatar.png"
headline = "Network Engineer"
bio = "Linux enthusiast & Network Engineer"
links = [
{ matrix = "//matrix.to/#/@spaenny:boehm.sh" },
{ mastodon = "//social.fro.ge/@Spaenny" },
{ github = "//github.com/spaenny" },
{ email = "mailto:hello@boehm.sh" },
{ rss = "//boehm.sh/index.xml" },
]

View file

@ -0,0 +1,13 @@
# -- Markup --
# These settings are required for the theme to function.
[goldmark]
[goldmark.renderer]
unsafe = true
[highlight]
noClasses = false
[tableOfContents]
startLevel = 2
endLevel = 4

View file

@ -0,0 +1,29 @@
# -- Main Menu --
# The main menu is displayed in the header at the top of the page.
# Acceptable parameters are name, pageRef, page, url, title, weight.
#
# The simplest menu configuration is to provide:
# name = The name to be displayed for this menu link
# pageRef = The identifier of the page or section to link to
#
# By default the menu is ordered alphabetically. This can be
# overridden by providing a weight value. The menu will then be
# ordered by weight from lowest to highest.
[[main]]
name = "Blog"
url = "posts"
weight = 1
[[main]]
identifier = "mastodon"
pre = "mastodon"
weight = 10
url = "https://social.fro.ge/@Spaenny"
[[main]]
identifier = "github"
pre = "github"
url = "https://git.snrd.eu/spaenny"
weight = 20

121
config/_default/params.toml Normal file
View file

@ -0,0 +1,121 @@
# -- Theme Options --
# These options control how the theme functions and allow you to
# customise the display of your website.
#
# Refer to the theme docs for more details about each of these parameters.
# https://blowfish.page/docs/configuration/#theme-parameters
colorScheme = "blowfish"
defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = true
enableSearch = true
enableCodeCopy = true
mainSections = ["posts"]
# robots = ""
disableImageOptimization = false
disableTextInHeader = false
defaultBackgroundImage = "/img/background.svg"
defaultFeaturedImage = "/img/featured.svg"
highlightCurrentMenuArea = true
smartTOC = true
smartTOCHideUnfocusedChildren = false
[header]
layout = "fixed" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
[footer]
showMenu = true
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = true
showScrollToTop = true
[homepage]
layout = "profile" # valid options: page, profile, hero, card, background, custom
showRecent = true
showRecentItems = 6
showMoreLink = true
showMoreLinkDest = "posts"
cardView = false
cardViewScreenWidth = false
layoutBackgroundBlur = true # only used when layout equals background
[article]
showDate = true
showViews = false
showLikes = false
showDateOnlyInArticle = false
showDateUpdated = true
showAuthor = true
showAuthorBottom = true
showHero = true
heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
layoutBackgroundBlur = true # only used when heroStyle equals background
showBreadcrumbs = true
showDraftLabel = true
showEdit = true
editURL = ""
editAppendPath = false
seriesOpened = false
showHeadingAnchors = true
showPagination = true
invertPagination = false
showReadingTime = true
showTableOfContents = true
showRelatedContent = true
relatedContentLimit = 6
showTaxonomies = true
showAuthorsBadges = true
showWordCount = true
sharingLinks = [ "linkedin", "matrix", "bluesky", "reddit", "whatsapp", "email"]
showZenMode = true
[list]
showHero = true
heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
layoutBackgroundBlur = true # only used when heroStyle equals background
layoutBackgroundHeaderSpace = false
showBreadcrumbs = false
showSummary = false
showViews = false
showLikes = false
showTableOfContents = true
showCards = true
orderByWeight = true
groupByYear = false
cardView = false
cardViewScreenWidth = false
constrainItemsWidth = false
[sitemap]
excludedKinds = []
[taxonomy]
showTermCount = true
showHero = true
heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
showBreadcrumbs = false
showViews = false
showLikes = false
showTableOfContents = true
cardView = false
[term]
showHero = true
heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
showBreadcrumbs = false
showViews = false
showLikes = false
showTableOfContents = true
groupByYear = true
cardView = false
cardViewScreenWidth = false
[umamiAnalytics]
websiteid = "a68c035b-1495-411d-ab95-8b1ea6fe4496"
domain = "t.v0v.de"

View file

@ -0,0 +1,119 @@
+++
title = "Managing Dotfiles with GNU Stow and Git"
description = "In this guide, we explore how to efficiently manage dotfiles using GNU Stow and Git. Dotfiles, which are configuration files for various programs, can be organized, version-controlled, and easily synchronized across multiple machines with this powerful combination. We guide you through setting up a dotfiles repository, using Stow to create symlinks, and deploying your configuration on new systems. By the end of this post, you'll have a streamlined method for maintaining a consistent development environment."
date = 2024-07-06T08:30:07+01:00
draft = false
categories = [ "Development Environment", "Version Control", "Linux"]
tags = ["Dotfiles", "GNU Stow", "Git", "Configuration Management", "Symlink Management"]
+++
Dotfiles are configuration files for various programs and tools on your system. They usually reside in your home directory and are prefixed with a dot (.), hence the name "dotfiles". Managing these files efficiently is crucial for setting up a consistent development environment across different systems. One powerful method to manage dotfiles is by using GNU Stow along with Git.
GNU Stow is a symlink manager that simplifies the management of configuration files by creating symbolic links from a central directory to their respective locations in your home directory. When combined with Git, it allows you to version control your dotfiles and easily synchronize them across multiple machines.
## Setting Up Your Dotfiles Repository
1. Create a Git Repository:
First, create a Git repository to store your dotfiles. You can do this on GitHub, GitLab, or any other Git hosting service. Initialize the repository on your local machine:
```
mkdir ~/dotfiles
cd ~/dotfiles
git init
```
2. Organize Your Dotfiles:
Organize your dotfiles into subdirectories within your ~/dotfiles directory. Each subdirectory should correspond to a different application or configuration set. For example:
```
~/dotfiles
├── bash
│ └── .bashrc
├── vim
│ └── .vimrc
└── git
└── .gitconfig
```
3. Symlink Dotfiles with Stow:
Use GNU Stow to create symbolic links in your home directory pointing to the actual files in your ~/dotfiles directory. Install GNU Stow if you haven't already:
```
sudo apt-get install stow # On Debian-based systems
sudo pacman -S stow # On Arch-based systems
brew install stow # On macOS with Homebrew
```
Navigate to your ~/dotfiles directory and use Stow to create the symlinks:
```
cd ~/dotfiles
stow bash
stow vim
stow git
```
This will create symlinks in your home directory like ~/.bashrc pointing to ~/dotfiles/bash/.bashrc.
## Committing and Pushing Your Dotfiles
1. Add and Commit Changes:
After organizing and symlinking your dotfiles, add and commit the changes to your Git repository:
```
git add .
git commit -m "Initial commit of dotfiles"
```
2. Push to Remote Repository:
Push the changes to your remote Git repository:
```
git remote add origin <remote-repo-URL>
git branch -M main
git push -u origin main
```
## Cloning and Deploying Dotfiles on a New Machine
When setting up a new machine, you can easily clone your dotfiles repository and use Stow to deploy your configuration:
1. Clone the Repository:
```
git clone <remote-repo-URL> ~/dotfiles
cd ~/dotfiles
```
2. Deploy Dotfiles with Stow:
```
stow bash
stow vim
stow git
```
## Managing Updates
To update your dotfiles, simply make changes to the files in your ~/dotfiles directory, commit the changes, and push to your remote repository:
```
git add .
git commit -m "Update vim configuration"
git push
```
On other machines, pull the changes and re-stow the updated directories:
```
cd ~/dotfiles
git pull
stow vim
```
## Conclusion
Using GNU Stow in combination with Git provides a robust and flexible method for managing your dotfiles. It ensures that your configurations are version-controlled, easily deployable, and consistent across multiple systems. By following the steps outlined in this guide, you can streamline your dotfile management and focus on what truly matters—your development work.

View file

@ -0,0 +1,45 @@
+++
title = "Netflix's Strategy to Phase Out Ad-Free, Affordable Tiers: A Concern for Consumers"
description = "Discover why Netflix's decision to phase out affordable, ad-free tiers is raising consumer concerns about privacy, choice, and viewing experience quality in the evolving streaming industry."
date = 2024-07-06T07:37:07+01:00
draft = false
categories = [ "Streaming Services", "Consumer Rights", "Digital Privacy"]
tags = ["Netflix", "Ad-Free Streaming", "Subscription Models", "Consumer Advocacy", "Privacy Concerns"]
+++
Netflix, a household name in streaming services, has been at the forefront of revolutionizing how we consume entertainment. With its vast library of movies, series, and original content, Netflix has attracted millions of subscribers worldwide. However, recent decisions to phase out ad-free, affordable tiers have sparked controversy, raising concerns about consumer rights and the future of streaming services.
#### Understanding Netflix's Business Evolution
Since its inception, Netflix has offered various subscription plans tailored to different consumer preferences. Initially, the platform focused on a single ad-free tier, emphasizing uninterrupted viewing experiences at a reasonable price. Over time, as competition in the streaming market intensified, Netflix introduced tiered pricing to accommodate diverse consumer demands and enhance revenue streams.
#### The Shift Towards Ad-Supported Models
In response to changing market dynamics and the need for sustainable growth, Netflix has begun exploring ad-supported subscription models. This strategic shift aims to diversify revenue sources and potentially lower entry barriers for new subscribers by offering cheaper plans supported by advertisements.
#### Consumer Backlash and Anti-Consumer Sentiment
Despite Netflix's business rationale, the decision to phase out ad-free, affordable tiers has generated significant backlash among consumers and industry observers alike. Here are key concerns raised:
1. **Loss of Choice and Value**: Subscribers who value ad-free experiences view the removal of affordable, ad-free tiers as a loss of choice and value. For many, the appeal of Netflix lies in its uninterrupted viewing experience, and any deviation from this model is seen as a step backward.
2. **Privacy Concerns**: Ad-supported models often involve tracking consumer behavior to deliver targeted advertisements. This raises privacy concerns among subscribers who prioritize data security and prefer not to have their viewing habits monetized by third parties.
3. **Quality of Experience**: Ad-supported tiers may potentially compromise the quality of user experience. Intrusive or poorly targeted advertisements could disrupt viewing, diminish satisfaction, and undermine Netflix's reputation for premium content delivery.
4. **Perception of Consumer Exploitation**: Critics argue that phasing out ad-free options in favor of ad-supported models prioritizes revenue over consumer preferences. This perception of consumer exploitation could erode trust and loyalty, impacting Netflix's long-term sustainability.
#### Impact on Netflix's Competitive Position
While Netflix's strategic pivot aims to bolster revenue and market competitiveness, it also underscores the evolving dynamics of the streaming industry. Competitors offering ad-supported tiers, such as Hulu and Paramount+, have carved out niches appealing to budget-conscious consumers, intensifying pressure on Netflix to adapt its pricing and service offerings.
#### Consumer Advocacy and Transparency
In response to consumer concerns, transparency and proactive communication are crucial. Netflix must engage openly with subscribers, addressing privacy safeguards, user experience enhancements, and the rationale behind strategic shifts. By prioritizing consumer advocacy and dialogue, Netflix can mitigate negative sentiment and foster trust in its evolving business strategies.
#### Conclusion: Balancing Innovation and Consumer Trust
Netflix's decision to phase out ad-free, affordable tiers reflects its evolving strategy to navigate competitive pressures and sustain growth. However, the move has ignited debate over consumer rights, privacy, and the future of ad-supported streaming models. As Netflix continues to innovate and adapt, striking a balance between profitability and consumer-centricity will be pivotal in shaping its reputation and market position.
Ultimately, consumers play a vital role in shaping the streaming landscape. By advocating for transparency, choice, and consumer rights, subscribers can influence industry practices and ensure that streaming services like Netflix prioritize their needs and preferences. As the streaming industry evolves, maintaining a consumer-centric approach remains essential for fostering trust, loyalty, and long-term success.

View file

@ -0,0 +1,89 @@
+++
title = 'Setting Up a Loopback Audio Device with Pipewire'
description = 'Learn how to set up a loopback audio device using Pipewire. Follow our step-by-step guide for seamless audio routing and recording.'
date = 2024-07-13T07:07:07+01:00
draft = false
categories = [ "Audio Configuration", "Linux", "Pipewire"]
tags = ["Loopback Audio", "Pipewire Setup", "Focusrite Scarlett 2i2", "Linux Sound System", "Audio Routing", "Recording Audio", "Audio Interface Configuration"]
+++
Creating a loopback audio device in Pipewire can be useful for routing audio between different applications or capturing audio from one application to another. This guide will walk you through the steps to set up a loopback device for your Focusrite Scarlett 2i2 audio interface.
## Prerequisites
Ensure you have Pipewire installed and running on your system. This guide assumes you are familiar with basic terminal commands and have access to edit configuration files.
## Step-by-Step Instructions
1. **Identify the Target Output Device**
First, you need to identify the name of the target output device for your audio interface. Run the following command to list all audio nodes:
```
pw-dump | grep "node.name"
```
Look for the output node of your audio interface. For the Focusrite Scarlett 2i2, it might look something like \
`alsa_output.usb-Focusrite_Scarlett_2i2_USB-00.pro-output-0`.
2. **Create the Configuration File**
Next, create a new configuration file for the loopback module. This file should be placed in `~/.config/pipewire/pipewire.conf.d/`. You might need to create the directory if it does not exist:
```
mkdir -p ~/.config/pipewire/pipewire.conf.d/
```
Then, create and open the configuration file:
```
vim ~/.config/pipewire/pipewire.conf.d/90-loopback.conf
```
3. **Add the Loopback Configuration**
Copy and paste the following configuration into the file. Adjust the parameters as needed to match your setup:
```
context.modules = [
{
name = libpipewire-module-loopback
args = {
node.description = "Scarlett 2i2 Loopback"
capture.props = {
node.name = "Scarlett_2i2_Loopback"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.Scarlett_2i2_Loopback"
audio.position = [ AUX0 AUX1 ]
target.object = "alsa_output.usb-Focusrite_Scarlett_2i2_USB-00.pro-output-0"
stream.dont-remix = true
node.dont-reconnect = false
node.passive = true
}
}
}
]
```
- **node.description**: A descriptive name for your loopback device.
- **node.name**: An identifier for the node. Ensure it starts with `playback.` for playback properties. This should match the `node.name` of `capture.props`.
- **target.object**: The output node you identified earlier.
4. **Restart Pipewire**
After saving the configuration file, restart Pipewire to apply the changes:
```sh
systemctl --user restart pipewire
```
## Additional Notes
- **node.description**: You can change this to a name that best describes its purpose, such as "Scarlett 2i2 Loopback for Recording".
- **node.name**: This should be a unique identifier without spaces. For playback nodes, it should start with `playback.`. This should match the `node.name` of `capture.props`.
- **target.object**: Ensure you are using the correct output node for your audio interface. If your device has both input and output nodes, make sure to select the output node.
By following these steps, you should have a loopback audio device set up with Pipewire, allowing you to route audio from your Scarlett 2i2 audio interface for various purposes like recording or live streaming.

View file

@ -0,0 +1,48 @@
+++
title = 'How to fix ZSH cursor displacement on Linux'
description = 'Simple step by step guide to fixing your ZSH displacing when connecting to a remote server via SSH'
date = 2024-07-06T07:07:07+01:00
draft = false
categories = [ "Open-Source", "ZSH", "Linux"]
tags = ["tutorial", "locale", "shell", "zshell", "terminal", "SSH", "issue"]
+++
Recently, I encountered an issue with my ZSH configuration where the cursor was displaced, making it difficult to use the terminal effectively. After some troubleshooting, I found a simple solution that involved setting the language locale on my Linux system. Here's a step-by-step guide to help you fix this issue if you run into it.
## Step-by-Step Guide to Fix ZSH Cursor Displacement
### Step 1: Set the Locale
First, you need to set the language locale to en_US.UTF8. This can be done using the set-locale command:
```
set-locale LANG=en_US.UTF8
```
This command sets the system's language to English (United States) with UTF-8 encoding, which is essential for proper character display and cursor positioning in the terminal.
### Step 2: Enable the Locale in /etc/locale.gen
Before setting the locale, you need to ensure that it is enabled in the /etc/locale.gen file. Open this file in your preferred text editor (you'll need superuser permissions to edit it):
```
sudo nano /etc/locale.gen
```
Look for the line that contains en_US.UTF8 and make sure it is uncommented (remove the # at the beginning of the line). It should look like this: `en_US.UTF-8 UTF-8`
### Step 3: Generate the Locale
After enabling the locale in /etc/locale.gen, you need to generate it. This can be done by running the locale-gen command with superuser permissions:
```
sudo locale-gen
```
This command generates the locale data, making it available for use on your system.
### Final Thoughts
After completing these steps, your ZSH cursor displacement issue should be resolved. These changes ensure that your terminal can correctly handle and display characters, which is crucial for the proper functioning of ZSH.
By setting the language locale and ensuring it's enabled and generated, you can avoid issues with cursor displacement and improve your overall terminal experience. If you have any questions or run into any problems, feel free to contact me. Happy coding!
---
I hope this guide helps you fix any ZSH cursor displacement issues you encounter. If you found this post useful, consider sharing it with others who might benefit from it.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1
static/site.webmanifest Normal file
View file

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}