Skip to content
This repository was archived by the owner on Mar 27, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Blog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## 2025

- [Setting up Nextcloud on Raspberry Pi 5 using Docker](Setting%20up%20Nextcloud%20on%20Raspberry%20Pi%205%20using%20Docker.md)
- [The authenticity of leadership](The%20authenticity%20of%20leadership.md)
- [AI is taking away our independence](AI%20is%20taking%20away%20our%20independence.md)
- [What well-known life laws I confirmed when I did a kitchen renovation](What%20well-known%20life%20laws%20I%20confirmed%20when%20I%20did%20a%20kitchen%20renovation.md)
Expand Down
4 changes: 1 addition & 3 deletions Blog/2025/AI is taking away our independence.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
date: 2025-12-09
title: AI is taking away our independence
---
*Published: 12/09/2025*

I have been working with Cursor AI for 8 months intensively in my corporate job. Recently, I conducted an experiment that is quite unusual these days. I wanted to solve the task without using any help from AI. I have used web searches, Stack Overflow, and, more importantly, I have started writing code with my hands.

Guess what? I have felt mental pain because I needed to write this code. After a few hours, I was exhausted. Is this me? Am I the same person who some time ago could write code for hours in hyperfocus?
Expand Down Expand Up @@ -63,4 +61,4 @@ _If you’re unsure where to start, I recommend installing NeoVim. I did this, a
Artificial intelligence is supposed to improve our quality of life and work, but the hidden cost is that we become dependent and subservient to machines and the corporations that produce them. We’ve outsourced so much thinking that we risk becoming consumers, rather than creators of knowledge. When we use AI, we need to consider whether we are using AI or if AI is actually using us.

---
#AIImpact #FutureOfWork #AISkills #programming #CursorAI #digitalwellbeing
*Published: 12/09/2025* #blog #AIImpact #FutureOfWork #AISkills #programming #CursorAI #digitalwellbeing
5 changes: 2 additions & 3 deletions Blog/2025/Caesar Cipher Implementation in C Sharp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
date: 2025-03-26
title: Caesar Cipher Implementation in C Sharp
---
*Published at: 26/03/2025*

In this tutorial I'll show you how to implement a Caesar cipher in C# using traditional TDD approach.
You can learn two things. How:

Expand Down Expand Up @@ -365,4 +363,5 @@ By following this TDD approach, we've created a Caesar Cipher implementation tha
- [Tests](https://github.com/Frodigo/garage/blob/main/sandbox/cybersecurity/cryptography/HistoricalCiphersDemo/Tests/CaesarCipherTests.cs)
- [Other historical ciphers implementations](https://github.com/Frodigo/garage/tree/main/sandbox/cybersecurity/cryptography/HistoricalCiphersDemo)

#ProgrammingFundamentals #Cybersecurity #CSharp #CSharp #xUnit #DotNet #Tutorial #ConceptExplanation #Intermediate #AutomatedTesting
---
*Published at: 26/03/2025* #blog #ProgrammingFundamentals #Cybersecurity #CSharp #CSharp #xUnit #DotNet #Tutorial #ConceptExplanation #Intermediate #AutomatedTesting
6 changes: 2 additions & 4 deletions Blog/2025/Historical cryptography algorithms.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
date: 2025-03-28
title: Historical cryptography algorithms
---

*Last updated: 22/03/2025*

My first task on the [Cybersecurity learning roadmap](Cybersecurity%20learning%20roadmap.md) course at studies was about experimenting with historical cryptography algorithms.

I was sitting in the computer room, it was quite stuffy, and around me were 30 other students. It was the third class of the day. The lecturer came in, who looked like a rather strict gentleman. He explained to us briefly what the course would look like and what the rules were for passing.
Expand Down Expand Up @@ -401,4 +398,5 @@ During my studying I visited many places in the internet and also used Claude an

Thanks for reading!

#Cybersecurity #ProgrammingFundamentals #CSharp #Shell/Bash #Git #Cryptool #Tutorial #DeepDive #ProjectSetup #Intermediate #HistoricalCryptography
---
*Last updated: 22/03/2025* #Cybersecurity #ProgrammingFundamentals #CSharp #Shell/Bash #Git #Cryptool #Tutorial #DeepDive #ProjectSetup #Intermediate #HistoricalCryptography
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
date: 2025-04-05
title: I migrated website from Astro.build to Obsidian publish
---

## TL;DR

Programmers who want to be writers should focus on writing, not on endlessly rebuilding their blog platforms.

If I could turn back time, I’d stop chasing the perfect blog setup and just write. Reinventing the wheel was a great excuse to avoid the hard part: writing.

Read more in my Medium story: [https://medium.com/@frodigo/how-i-failed-at-writing-a-blog-many-times-d1e5040763a7](https://medium.com/@frodigo/how-i-failed-at-writing-a-blog-many-times-d1e5040763a7)

---
*Published 05/04/2025* #blog #obsidian #astro
108 changes: 108 additions & 0 deletions Blog/2025/Setting up Nextcloud on Raspberry Pi 5 using Docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
date: 2025-09-24
title: Setting up Nextcloud on Raspberry Pi 5 using Docker
---
My goal was simple – to move photos from Google Photos and Apple Photos "to my own server." I decided to try NextCloud and installed it using NextCloudPI, a custom-built distribution for Raspberry Pi.

I purchased a brand new Raspberry Pi 5, a cooler, and an external USB drive. I also needed to run an Ethernet cable to my ~~office~~ garage, which I should have done a long time ago anyway.
## NextCloudPi. It should work, but it shouldn't work for me

My initial attempts to launch NextCloud were unsuccessful. I couldn't even get past the first launch. Here are the errors I encountered:

```bash
[FAILED] failed to start avahi-deamon.service - Avahi mDNS/DNS-SD stack
run `systemctl status avahi-daemon.service` for details

[FAILED] failed to start systemd-logind.service - User login management

[failed] failed to start bluetooth.service -

[failed] failed to start udisk2.service - disk manager

[failed] failed to start dbus.service - D-Bus System message bus
```

I tried to fix them, but I couldn't even log in because the system never finished the first boot. It was frustrating. At least as frustrating as Dembele winning the Ballon d'Or (okay, a little less so).

Imagine that even a restart didn't help. Nor did turning it off and on. Interestingly, I downloaded an older version of NextCloudPi, but I still had no success. I tried two versions: v1.55.3 and v1.55.2.

It's open-source software, developed by the community. No one said it would work, and I don't blame anyone for it not working. Perhaps there was something wrong with my configuration. I didn't pursue the issue further; I just tried a different approach.
## NextCloud on Docker. It must work

I did a small research and I have found this guide: [https://help.nextcloud.com/t/guide-setting-up-nextcloud-on-raspberry-pi-ssl-advanced-app-support-high-performance-postgresql-and-cloudflare-zero-trust-integration/185757](https://help.nextcloud.com/t/guide-setting-up-nextcloud-on-raspberry-pi-ssl-advanced-app-support-high-performance-postgresql-and-cloudflare-zero-trust-integration/185757]). It was good as a starting point.

But it couldn't just work, right?
### "Data Directory Invalid" Error

I initially ran NextCloud on an SD card, but ultimately wanted to store the data on an external SSD. I achieved this by setting the `datadirectory` as a Docker volume, mounted on an external drive.

```bash
/media/frodigo/nextcloud-data:/var/www/html/data:z
```

After restarting NextCloud I saw this error:

```bash
Data directory is invalid.
Make sure there is a file called ".ncdata" in the root of the data directory.
The data directory is not writable.
```

I did a research and I have realized that Nextcloud requires a specific marker file `.ncdata` in the data directory root to validate the directory structure.

I checked if the file exist, and It didn't exist so I created a new one:

```bash
# Check if the file exists
ls -la /media/frodigo/nextcloud-data/.ncdata

# Create if missing
echo "# Nextcloud data directory" > /media/frodigo/nextcloud-data/.ncdata

```

However, that didn't completely resolve the issue. I moved forward a bit, but then saw another error saying that the data directory is not writable.
### User ID Mismatches

Initially, I set permissions on the data directory so that the `www-data` user could access it. To my surprise, it turned out that the `www-data` user ID on the host was different from the `www-data` user ID in the container, which is why I was experiencing problems.

- Host system `www-data` user: UID 33
- Container `www-data` user: UID 82

The solution for this problem was to align file ownership with the container's expectations:

```bash
# Check what UID www-data has inside the container
docker exec -it nextcloud id www-data

# Set ownership to match container UID
sudo chown -R 82:82 /path/to/nextcloud-data/
sudo chmod -R 755 /path/to/nextcloud-data/

```

#### Troubleshooting workflow

When facing data directory issues:

1. **Verify the external drive is mounted**: `df -h`
2. **Check Docker volume mappings**: Review your `docker-compose.yml`
3. **Inspect file permissions**: `ls -la /path/to/data/`
4. **Check container user IDs**: `docker exec -it container_name id www-data`
5. **Verify .ncdata file exists and is readable**
6. **Restart containers after making changes**: `docker-compose down && docker-compose up -d`
7. **Debug container user context**: `docker-compose exec -u www-data nextcloud touch /var/www/html/data/test.txt`

Note: Docker introduces multiple abstraction layers that can mask the root cause of issues. The key to successful troubleshooting is understanding these layers and testing each one systematically. Always verify your assumptions at each level:

- network connectivity
- volume mounting
- file permissions,
- application configuration

## It works. Somehow

After overcoming these setbacks, my NextCloud on Pi started working, but it seems this is more the beginning of an adventure than the end. The rest of my adventures might come in the near future, if I don't give up. We'll see.

---
*Published: 24/09/2025* #blog #nectcloud #raspberrypi #diy #cloud #docker
3 changes: 3 additions & 0 deletions Blog/2025/The authenticity of leadership.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@ I tried a lot to recover, but finally, after three years, I decided that I neede
I spent too long trying to be a tech lead, instead of simply being myself. The most valuable lesson I learned wasn't about management techniques or project planning.

Actually, it was about the power of authenticity. A team leader doesn't have to be the same as all other managers. The goal is to build a team around your strengths and be honest about your weaknesses.

---
*Published: 12/09/2025* #blog #leadership
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ Some time ago I decided to renovate my kitchen instead of hiring professionals,
The best from this story is I survived.

Read full story on [Medium](https://medium.com/@frodigo/913f7569e0c8).

---
*Published 13/04/2025* #blog #diy
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
date: 2025-04-17
title: Why I build my own RSS feed for Obsidian Publish website
---

Obsidian and Obsidian Publish are great tools and they allow you to write and publish content like a nitro. I couldn't imagine what can go wrong when using Obsidian publish. Then after a few weeks I realized what is the weak point that i haven't seen before: **RSS feed**.

Autogenerated RSS feed on Obsidian publish is really simple. I realized it when I talked with my colleague and he asked me about RSS feed. I shared a link with him. He added it to his RSS reader. I saw it. It looked like something hastily written. Just titles, nothing. I felt a bit ashamed.
Expand Down Expand Up @@ -205,6 +204,4 @@ I am wondering how to do this changes in a way that someone else can have such a

---

_Written by Marcin Kwiatkowski at 17.04.2025 in Poland._

#RSS #Obsidian #ObsidianPublish #WebDevelopment #ContentSyndication #JavaScript #StaticSite #BloggingTools #WebAutomation #Markdown #GitHubActions #CloudflareSites #KnowledgeManagement #DigitalGarden #RSSFeeds #ContentCreation #WebsiteCustomization #AIAssistants #ProgrammingChallenge #PersonalProject #FrontendDevelopment #NodeJS #Git #CI/CDtools #Cloudflare #Tutorial #CaseStudy #ProjectSetup #Intermediate #APISecurity #AutomatedTesting
*Published 17/04/2025* #blog #Obsidian #ObsidianPublish #WebDevelopment #ContentSyndication #JavaScript #StaticSite #BloggingTools #WebAutomation #Markdown #GitHubActions #CloudflareSites #KnowledgeManagement #DigitalGarden #RSSFeeds #ContentCreation #WebsiteCustomization #AIAssistants #ProgrammingChallenge #PersonalProject #FrontendDevelopment #NodeJS #Git #CI/CDtools #Cloudflare #Tutorial #CaseStudy #ProjectSetup #Intermediate #APISecurity #AutomatedTesting
6 changes: 2 additions & 4 deletions Blog/2025/Why teaching kids how to program is not easy.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
---
date: 2025-04-07
---

#ProgrammingFundamentals #Python #BestPractices #ConceptExplanation #CaseStudy #Beginner

## TL;DR

Teaching kids programming isn’t as simple as sharing your passion.
Expand All @@ -19,4 +16,5 @@ And most importantly — patience to match their learning pace.

Read more on Medium: <https://medium.com/@frodigo/why-teaching-kids-how-to-program-isnt-easy-50817bcd5af4>

Learning roadmap: [Programming for Kids](Programming%20for%20Kids.md)
---
*Published 07/04/2025* #blog #ProgrammingFundamentals #Python #BestPractices #ConceptExplanation #CaseStudy #Beginner
7 changes: 7 additions & 0 deletions x/templates/Blog template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
date: 2025-02-09
title: Blog
---

---
#blog
Loading