Compare commits
10 Commits
69b0380446
...
ef63dc6c1c
| Author | SHA1 | Date | |
|---|---|---|---|
| ef63dc6c1c | |||
| 81d5ab53c7 | |||
| 314132be2c | |||
| 5613091c9f | |||
| 6dc41fe4e9 | |||
| 17d009b8bf | |||
| ef8d79a130 | |||
| ab6d4cba5f | |||
| fc2b73d4e1 | |||
| 66840e84a2 |
@ -1,8 +0,0 @@
|
||||
+++
|
||||
title = "Encryption Flashcards"
|
||||
date = 2023-07-19
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I think I added an extra 80 or so cards today just for encryption algorithms’ key lengths, block sizes, etc… I don’t expect they will be used in a lot of CISSP questions, but I’ll ace whatever questions involve them.
|
||||
@ -1,8 +0,0 @@
|
||||
+++
|
||||
title = "\"Prompt Engineering\""
|
||||
date = 2023-07-28
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
A small realization just came to me: there’s a certain irony to “prompt engineering” being something that people try to teach as if it’s a programming discipline. Wasn’t the goal of the natural language models to make it so that people can speak normally and get the output they want? Shouldn’t that mean that “prompt engineering” should be the same as a communications or writing class?
|
||||
@ -1,8 +0,0 @@
|
||||
+++
|
||||
title = "Security Models"
|
||||
date = 2023-07-14
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I’m reviewing security models in preparation for taking the CISSP exam. It’s something I haven’t had a lot of reason to think about since I took a class on it in college. Bell-LaPadula, Biba, Clark-Wilson, etc…. I’m glad I know what Anki is now.
|
||||
@ -1,9 +0,0 @@
|
||||
+++
|
||||
title = "YouTube Music"
|
||||
date = 2023-07-24
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
A funny thing I’ve noticed about YouTube Music: it doesn’t seem to take your recently-listened-to music into account when showing quick recommendations if you have YouTube history turned off. I can listen to as much blues or j-rock as I want, but it doesn’t start showing those as quick recommends until I hit the like button on a track. Unfortunately, this also means that things I liked a while ago don’t appear anymore.
|
||||
|
||||
@ -1,10 +0,0 @@
|
||||
+++
|
||||
title = "Using Vi[m]"
|
||||
date = 2023-09-19
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I'm finally giving Vi[m] a try. It's hard to get used to it after using `nano` for so long. Surprisingly, it's not the `:wq` or insert mode stuff that is catching me, but the fact taht I can't go to the previous/next ling by pressing left/right at the line ends.
|
||||
|
||||
(Yes, I realize I can modify this in the .vimrc file but I'm attempting to keep it as close to default as possible since I work on so many different systems.)
|
||||
@ -1,16 +0,0 @@
|
||||
+++
|
||||
title = "python `or [default]`"
|
||||
date = 2023-10-02
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
Did you know that you can use the “or” keyword in python to set a “default” for a variable?
|
||||
|
||||
```py
|
||||
variable_name = value_or_none() or "default value!"
|
||||
```
|
||||
|
||||
Over five years since I started using Python, and I’m only learning this now. I wish I knew about it sooner.
|
||||
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
+++
|
||||
title = "Backups and YAML"
|
||||
date = 2023-10-29
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
Finally doing something that I should have done a long time ago – adding a second (and in some places, first) backup to my systems. BorgBase won over rsync.net for price, and over Backblaze B2 for ease of use with Borg. Bonus points for also making my GUI of choice – Vorta.
|
||||
|
||||
Additionally, I’m automating as much as possible with Ansible. I still loathe YAML for configuring anything, but Ansible nearly makes that worth it. ;p
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
+++
|
||||
title = "Bash history search"
|
||||
date = 2023-10-05
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
Another useful tip for Linux users and admins: you can search your command history in bash with `Ctrl+r`. Typing something and hitting it again will search backward through commands that match that pattern. It saves a lot of time compared to pressing up repeatedly.
|
||||
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
+++
|
||||
title = "A surreal blog"
|
||||
date = 2023-10-31
|
||||
updated = 2023-11-13
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I found a blog by someone who works at a polar research station. [Their post on nights](https://brr.fyi/posts/polar-night) there is surreal. It reminds me of Signalis.
|
||||
|
||||
EDIT: I realized while porting this post to Zola that I posted this on Halloween. It wasn't my intention to match that with a horror game reference, but it fits! :D
|
||||
@ -1,12 +0,0 @@
|
||||
+++
|
||||
title = "Wordpress Gripes"
|
||||
date = 2023-10-30
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
Late night thought before work maintenance: I don’t particularly enjoy WordPress’ writing interface. It doesn’t feel suitable for quick or technical writing. Customizing the site feels like fighting against the tool.
|
||||
|
||||
Pelican (the static site generator) felt a lot nicer. Writing in markdown feels much nicer than using Gutenberg or the Classic Editor (plus I can do version control with Git!) and .html.j2 files for customization is easier than WordPress’ syntax. I’m hardly a Python dev – I don’t wanna be a web dev too.
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,18 +0,0 @@
|
||||
+++
|
||||
title = "Google finally feels worse"
|
||||
date = 2023-11-06
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I didn’t really agree with statements about Google’s search getting worse until today.
|
||||
|
||||
Using search would usually give me what I wanted within the first few results. All I’d need to do was skip past the inevitable Amazon link that would show up.
|
||||
|
||||
But for the past few days, I feel like I’ve had more and more “junk” in it.
|
||||
|
||||
- Links that look like they are for a specific post on a forum, but take me to the main page instead.
|
||||
- Links for blogs that look like they were written by an AI.
|
||||
- Links that go to entirely different websites than those they appear to be for.
|
||||
|
||||
It’s admittedly tiring and makes me want to restart my habit of bookmarking more sites.
|
||||
@ -1,8 +0,0 @@
|
||||
+++
|
||||
title = "Mobile Posting Test"
|
||||
date = 2023-11-26
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
This post is a test of how easy it is to post from a mobile device using the Jenkins auto-deploy system I set up the other week. I'm currently sitting in a restaurant waiting for a friend to finish their food. GitNex's editor isn't the most impressive, but it isn't bad either.
|
||||
@ -1,15 +0,0 @@
|
||||
+++
|
||||
title = "I have conqured Podman's YAML"
|
||||
date = 2023-11-18
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I decided that I was done with Gitea's weird port mapping, so I tried to fix it.
|
||||
Several hours of head-bashing later, I was left with a corrupted database and no Gitea instance.
|
||||
|
||||
I'm now writing this several hours *after that*.
|
||||
I've learned a surprising amount about Podman (compared to Docker), Kubernetes, pods, and several other things that I'll probably end up using at work some day.
|
||||
|
||||
Expect a post some time this week about deploying a Zola static site with Jenkins.
|
||||
And maybe some notes on why I switched from Wordpress to Zola.
|
||||
@ -1,13 +0,0 @@
|
||||
+++
|
||||
title = "Some things I've recently learned about Podman (and Docker)"
|
||||
date = 2023-11-27
|
||||
[taxonomies]
|
||||
tags= ["shortnotes","podman"]
|
||||
+++
|
||||
|
||||
- Podman does not require a user to have unique permissions to use it.
|
||||
- Any user on a docker-enabled system that also is in the docker group can become root with one command
|
||||
- The "ADD" directive in a Containerfile or Dockerfile is considered more insecure than "COPY" because it can pull remote directories.
|
||||
- Podman was made with Docker command compatability in mind because the devs knew they'd never get market share otherwise.
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
title = "Why I moved from Wordpress to Zola"
|
||||
date = 2023-11-21
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
tags= ["meta","zola","wordpress"]
|
||||
+++
|
||||
|
||||
I've used a few different site generators and blogging platforms over the years, including but not limited to:
|
||||
|
||||
Binary file not shown.
@ -1,13 +0,0 @@
|
||||
+++
|
||||
title = "20240129"
|
||||
# description = ""
|
||||
date = 2024-01-29
|
||||
# updated = 2024-01-29
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
Do you ever work on something at work and wish you had a use for it in your homelab?
|
||||
I'm feeling like that right now with Ceph.
|
||||
Data storage is such a fun topic, but I can't justify buying all of the network and storage hardware needed to make a decent cluster instead of just buying more storage for my Synology NAS.
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
+++
|
||||
title = "Happy New Year"
|
||||
date = 2024-01-02
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
Happy New Year to those who celebrate using a solar calendar! Only another 24 until we hit a nice, [round-number milestone](https://xkcd.com/1000/).
|
||||
@ -1,13 +0,0 @@
|
||||
+++
|
||||
title = "Trying Out FSRS"
|
||||
# description = ""
|
||||
date = 2024-01-15
|
||||
# updated = 2024-01-15
|
||||
draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
I'm trying out the new FSRS scheduling algorithm for Anki.
|
||||
I was hesitant to use it when it was first announced because it seemed to be undergoing a lot of fast changes and required a fair amount of manual setup.
|
||||
But now it's in the main Anki code (though not in AnkiDroid, yet) and it seems like a poor idea to *not* use it.
|
||||
9
content/posts/2024/02/_index.md
Normal file
9
content/posts/2024/02/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
+++
|
||||
title = "Example posts"
|
||||
sort_by = "date"
|
||||
template = "posts.html"
|
||||
page_template = "post.html"
|
||||
transparent = true
|
||||
+++
|
||||
|
||||
Posts
|
||||
37
content/posts/2024/02/email-migration-inquiry/index.md
Normal file
37
content/posts/2024/02/email-migration-inquiry/index.md
Normal file
@ -0,0 +1,37 @@
|
||||
+++
|
||||
title = "Email Migration Inquiry"
|
||||
# description = ""
|
||||
date = 2024-02-01
|
||||
# updated = 2024-02-01
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["email"]
|
||||
+++
|
||||
|
||||
Google's made progress with their handoff of domain-related things to Squarespace. As I write this, my domain is being transferred to Cloudflare.
|
||||
|
||||
However, no longer being with Google means no more Google Workspace for the email associated with this domain. So where should I go? My primary concern is avoiding the issue I had previously where emails were simply forwarded to another email but would sometimes be lost due to email destination authentication failing for the sender (or at least that's what Google Support said).
|
||||
|
||||
I really only need basic sending/recieving functionality, the ability to use a custom domain, and the industry standard IMAP/SMTP access.
|
||||
Spam filtering would be strongly preferred, but I haven't had an issue with that since the days that Verizon still managed Verizon.net emails.
|
||||
Calendars, rules, etc are all something that I manage via Thunderbird.
|
||||
|
||||
I'd like to avoid Outlook, Google/Gmail, and AOL.
|
||||
I don't mind paying for email service, but I've had bad experiences with two of those three and feel a little bitter about the third for making me have to do this to begin with.
|
||||
|
||||
The top contender looks like ProtonMail.
|
||||
I've already reached out to their support team to see if they know if this would be an issue or not.
|
||||
So far the only point against them is that you have to buy the bundle that includes extra drive space and a VPN - two things that I'm sure increase the overall price.
|
||||
|
||||
---
|
||||
|
||||
A small note on my search so far: where's [Hey](https://www.hey.com/), that email service everyone was raving about for a while, in all of the "top 12 best email providers" lists that keep appearing in Google?
|
||||
Did they piss off the wrong listicle writer?
|
||||
Are they just not interesting anymore?
|
||||
|
||||
I don't think I'll go with them for three reasons:
|
||||
1. Most of their benefits appear to be part of the interface they offer.
|
||||
2. It would cost me 120$/year because the domains plan costs 10$ for a single user per month and they do not offer a yearly pricing option for the plan with custom domains.
|
||||
3. *[They don't support IMAP or POP.](https://www.hey.com/faqs/#can-i-check-my-hey-email-with-my-existing-email-app)*
|
||||
|
||||
How was this popular with all of the developers I was following?
|
||||
9
content/posts/2024/03/_index.md
Normal file
9
content/posts/2024/03/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
+++
|
||||
title = "Example posts"
|
||||
sort_by = "date"
|
||||
template = "posts.html"
|
||||
page_template = "post.html"
|
||||
transparent = true
|
||||
+++
|
||||
|
||||
Posts
|
||||
@ -0,0 +1,56 @@
|
||||
+++
|
||||
title = "Home Lab and Selfhosting Redesign Thoughts"
|
||||
description = "Planning out my homelab setup"
|
||||
date = 2024-03-09
|
||||
# updated = 2024-03-09
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["selfhosting", "homelab"]
|
||||
+++
|
||||
|
||||
I've been hosting some of my own services since 2019.
|
||||
It started as just a Wordpress blog, but now I have things like Nextcloud and Shaarli that give me tangible benefits.
|
||||
However, these services are currently spread across about 5 different servers and nearly none of them are worth the price for what they do individually.
|
||||
The goal of this post is to share my thoughts and possibly collect some feedback about how to go about changing things.
|
||||
|
||||
(Side note: Google says that I've spent nearly $1500 in their cloud since April 2019. That sounds like a lot, but the amount I've gained from learning to use it has been a lot more.)
|
||||
|
||||
## The Current Setup
|
||||
|
||||
Currently, I have a server in Google Cloud that I pay ~$30 a month for.
|
||||
It hosts Nextcloud, Mediawiki, [my blog](https://lvacula.com), and some other smaller services.
|
||||
The VPS is running Rocky Linux, and the services are all in Docker.
|
||||
My primary reason for using it is not a particularly great one - it's what I've been using since I started selfhosting.
|
||||
That's... not a great reason.
|
||||
$30 for 2 vCPUs and 4GB of RAM is enough to buy the equivelent Raspberry Pi model every 2 months.
|
||||
However, it also gives me a different IP (so nobody is who tries to DDOS me will kill my home network connectivity) and it's resilient to the semi-regular power outages I have at home.
|
||||
|
||||
In addition to that server, I also have a used SuperMicro server that I use for a mix of home lab and selfhosting.
|
||||
I've got several VMs running under KVM - including an OpnSense router to put them all in a private subnet.
|
||||
It also serves as a jumpbox to my network if I'm out somewhere and need to access my home network (though I won't give details for security reasons).
|
||||
It's a really cool setup and has been fun for learning Ansible + networking, but the power usage really high for what's essentially just running Gitea, Jenkins, and Vaultwarden.
|
||||
The trade-off is that I get way more bang for my buck than the VPS, but I waste a lot of electricity on unused potential.
|
||||
|
||||
Two other servers of note:
|
||||
- An OVH VPS that is a simple Wireguard tunnel + nginx stream proxy to the SuperMicro for I-don't-want-to-share-my-home-IP reasons.
|
||||
- A Dell mini PC for testing things when I don't want to provision a new VM in KVM, and for hosting some friends' stuff that doesn't need 90+% uptime.
|
||||
|
||||
## The Proposed Setup
|
||||
|
||||
In my theoretical new setup:
|
||||
- The Google VPS would be removed.
|
||||
- The blog is migrated to Cloudflare Pages or Github Pages.
|
||||
- All services are moved to a different domain (`vacula.xyz` instead of `lvacula.com`).
|
||||
- All services are moved to a Dell micro PC with a UPS for power.
|
||||
- All services are moved to rootless Podman.
|
||||
- All services are separated into per-service pods and mapped to different ports from 8080 to 8090, then reverse-proxied out to the OVH VPS.
|
||||
- The SuperMicro server is powered down unless I'm actively using it for home lab or game server hosting.
|
||||
|
||||
The key part of this for me is the move from bare-metal services and Docker to rootless Podman.
|
||||
The security benefits of it are almost too incredible to *not* use it.
|
||||
Additionally, I want to be able to help document it and `podman kube play ...` + kube YAML system because `podman compose` is *not* a perfect replacement for `docker compose`.
|
||||
|
||||
Do you have thoughts on this?
|
||||
Do you use Podman for your self-hosting setup?
|
||||
Then please, dear reader, email me with your advice and knowledge.
|
||||
My email is "lukas" at this domain.
|
||||
@ -3,7 +3,6 @@ title = "20240131"
|
||||
# description = ""
|
||||
date = 2024-01-31
|
||||
# updated = 2024-01-31
|
||||
draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
@ -1,17 +0,0 @@
|
||||
+++
|
||||
title = "20240131"
|
||||
# description = ""
|
||||
date = 2024-01-31
|
||||
# updated = 2024-01-31
|
||||
draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
Signal boosting this in case someone *hasn't* seen it:
|
||||
there's a new flat in glibc (one of, if not *the*, most common library on Linux) that allows local privilege escalation.
|
||||
The latest versions of Fedora, Debian, and Ubuntu are all affected so update if you can.
|
||||
|
||||
Relevant links:
|
||||
- [https://www.bleepingcomputer.com/news/security/new-linux-glibc-flaw-lets-attackers-get-root-on-major-distros/](https://www.bleepingcomputer.com/news/security/new-linux-glibc-flaw-lets-attackers-get-root-on-major-distros/)
|
||||
- [https://www.qualys.com/2024/01/30/cve-2023-6246/syslog.txt](https://www.qualys.com/2024/01/30/cve-2023-6246/syslog.txt)
|
||||
10
content/shortnotes/20240131/index.md
Normal file
10
content/shortnotes/20240131/index.md
Normal file
@ -0,0 +1,10 @@
|
||||
+++
|
||||
title = "Shortnotes Change"
|
||||
# description = ""
|
||||
date = 2024-01-31
|
||||
# updated = 2024-01-31
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
In the interest of keeping things easier to read, I've migrated all of my "shortnotes" posts to a separate page.
|
||||
10
content/shortnotes/20240222/index.md
Normal file
10
content/shortnotes/20240222/index.md
Normal file
@ -0,0 +1,10 @@
|
||||
+++
|
||||
title = "20240222"
|
||||
# description = ""
|
||||
date = 2024-02-22
|
||||
# updated = 2024-02-22
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
Quality-of-life suggestion for the day: turn off the annoying bell in Windows terminal by going to a profile -> Advanced -> Bell notification style and turning off "audible"
|
||||
14
content/shortnotes/discord-as-a-ui-library/index.md
Normal file
14
content/shortnotes/discord-as-a-ui-library/index.md
Normal file
@ -0,0 +1,14 @@
|
||||
+++
|
||||
title = "Discord as a UI Library"
|
||||
# description = ""
|
||||
date = 2024-02-05
|
||||
# updated = 2024-02-05
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
One annoying problem I have with learning something new programming-wise:
|
||||
I'm so familiar with the Discord.py API library that any *real* UI library feels like it has too much friction to be worth it for any of my projects.
|
||||
It's even cross-platform!
|
||||
|
||||
I'm torn between freshening up my PyQt, learning Kotlin + Android dev, or looking into something else for Linux/Windows dev...
|
||||
13
content/shortnotes/slower-and-more-meaningful/index.md
Normal file
13
content/shortnotes/slower-and-more-meaningful/index.md
Normal file
@ -0,0 +1,13 @@
|
||||
+++
|
||||
title = "Slower and More Meaningful"
|
||||
# description = ""
|
||||
date = 2024-02-19
|
||||
# updated = 2024-02-19
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
Lately, I've felt like I need to be more conscious about my "free" time. There are many reasons for it (work schedule, the rise of generative AI, ...) but I'm *mildly* happy with the results thus far?
|
||||
|
||||
I'd like to make a dedicated post of it, but I'm having trouble putting my feelings into words.
|
||||
13
content/shortnotes/subdomailing-campaign/index.md
Normal file
13
content/shortnotes/subdomailing-campaign/index.md
Normal file
@ -0,0 +1,13 @@
|
||||
+++
|
||||
title = "SubdoMailing Campaign"
|
||||
# description = ""
|
||||
date = 2024-02-27
|
||||
# updated = 2024-02-27
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
I came across this while reading my RSS feeds this morning: there's a new ad fraud campaign that is using insecure domains from big names like VMware and Marvel. But the interesting thing for me isn't the names attached, but that it seems so simple of an attack: look for outdated and unregistered domains, and use their existing presence in other companies mail records to bypass spam filters.
|
||||
|
||||
[Relevant link to Bleeping Computer article](https://www.bleepingcomputer.com/news/security/hijacked-subdomains-of-major-brands-used-in-massive-spam-campaign/)
|
||||
@ -3,7 +3,6 @@ title = "Trying Out FSRS"
|
||||
# description = ""
|
||||
date = 2024-01-15
|
||||
# updated = 2024-01-15
|
||||
draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
18
content/shortnotes/thoughts-on-fsrs/index.md
Normal file
18
content/shortnotes/thoughts-on-fsrs/index.md
Normal file
@ -0,0 +1,18 @@
|
||||
+++
|
||||
title = "Thoughts on FSRS"
|
||||
# description = ""
|
||||
date = 2024-02-15
|
||||
# updated = 2024-02-15
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = ["shortnotes"]
|
||||
+++
|
||||
|
||||
I've been trying FSRS for about a month now. Here's my thoughts on it so far:
|
||||
- I feel like I have a more manageable workload. However, part of me wonders if this is because I'm not putting all of my effort into studying a cert or a language.
|
||||
- I don't think about how my choices are affecting the ease factor anymore.
|
||||
- The 3-component model is a lot easier to understand than SM-2's ease.
|
||||
- I wish I had been studying more during the Fall. My stats page isn't reliable because my Anki usage was very sparse for most of 2023.
|
||||
- Some of the intervals for relatively new cards feel very long. I'm not sure what to make of this. I'll probably need to reflect on this again in a few months
|
||||
- Even with the helper add-on to auto-reschedule cards on sync on desktop, I still feel disincentivized to use Ankidroid due to lack of native support.
|
||||
- It has been a very positive experience overall.
|
||||
@ -1,50 +0,0 @@
|
||||
+++
|
||||
title = "Why I moved from Wordpress to Zola"
|
||||
date = 2023-11-21
|
||||
[taxonomies]
|
||||
tags= ["shortnotes"]
|
||||
+++
|
||||
|
||||
I've used a few different site generators and blogging platforms over the years, including but not limited to:
|
||||
- Wordpress
|
||||
- Google Blogger
|
||||
- Tumblr
|
||||
- Pelican
|
||||
- MediaWiki (yes, it counts)
|
||||
- DokuWiki (it counts too!)
|
||||
- Zola
|
||||
|
||||
It should go without saying that every system has its benefits and trade-offs.
|
||||
This post about the *specific* trade-offs that made me switch from Wordpress to Zola.
|
||||
|
||||
My primary issue with Wordpress is the writing.
|
||||
Gutenberg seems like it would be a very useful editor for a more traditional writer or someone who doesn't have an emphasis on technical content.
|
||||
I couldn't figure out how to easily move from extended code blocks back to normal writing without using my mouse to add a new paragraph block.
|
||||
(The classic editor doesn't fix this issue.)
|
||||
With static site generator that rely on Markdown syntax for formatting (like Zola), it's as simple as adding a few backticks at the start and end.
|
||||
I write enough code or `general monospace text` that this was a dealbreaker for me.
|
||||
|
||||
The second major issue was the difficulties I had in customizing the site.
|
||||
This isn't an issue of Wordpress lacking customization - Wordpress themes are popular enough for entire businesses to be built upon the back of them.
|
||||
Unfortunately, the graphical editor wasn't behaving for me (primarily not reliably changing link colors to those in my color scheme) and the code side is its own monster.
|
||||
I don't want to become a web developer to get my theming working.
|
||||
Zola's Tera templates only require a bit more than basic HTML and CSS.
|
||||
|
||||
Of course, there's downsides to moving to Zola.
|
||||
The largest trade-off - and the reason that I waited so long to do so - is that there are extra steps to deploying the website.
|
||||
Wordpress is as simple as "write the content and hit publish".
|
||||
Zola requires you to have the Zola binary, compile the website, and push the content to the web server host.
|
||||
You can simplify this by writing your content on the same host as the web server, but then you lose the ability to write and publish from anywhere.
|
||||
In my case, it also means losing the ability to use graphical editors.
|
||||
|
||||
The solution to that trade-off was learning to install and use Jenkins.
|
||||
For the unfamiliar: Jenkins is a CI/CD tool.
|
||||
I can write my content on any host, push the "source code" to a git repo, and Jenkins will take care of the rest.
|
||||
In theory, Jenkins will detect and push a new version of this site within 3 minutes of a new commit being pushed to the git repo.
|
||||
So far this has worked fairly well.
|
||||
|
||||
The final question I can imagine someone may ask is "Lukas, Pelican is a static site generator as well. Why did you move to a different one?"
|
||||
The answer is Rust.
|
||||
Zola is written in it.
|
||||
I'm learning it and want to use it more.
|
||||
If I encounter a bug, I want to be able to fix it.
|
||||
63
newpost.sh
63
newpost.sh
@ -3,6 +3,7 @@
|
||||
# Get location of script, posts root
|
||||
parent_path=$(cd "$(dirname "$BASH_SOURCE[0]}")" ; pwd -P)
|
||||
posts_root="$parent_path/content/posts"
|
||||
shortnotes_root="$parent_path/content/shortnotes"
|
||||
|
||||
# Get time
|
||||
year=$(date +%Y)
|
||||
@ -10,7 +11,10 @@ month=$(date +%m)
|
||||
day=$(date +%d)
|
||||
|
||||
post_name="$year$month$day"
|
||||
OPTSTRING=":n:"
|
||||
OPTSTRING=":n:s"
|
||||
|
||||
shortnotestag=""
|
||||
shortnote=false
|
||||
|
||||
# Get options
|
||||
while getopts ${OPTSTRING} opt; do
|
||||
@ -18,12 +22,19 @@ while getopts ${OPTSTRING} opt; do
|
||||
n)
|
||||
post_name=${OPTARG}
|
||||
;;
|
||||
s)
|
||||
shortnote=true
|
||||
shortnotestag="\"shortnotes\""
|
||||
posts_root=$shortnotes_root
|
||||
;;
|
||||
|
||||
:)
|
||||
echo "Option -${OPTARG} requires an argument"
|
||||
exit 1
|
||||
;;
|
||||
?)
|
||||
echo "-n <name> :: post name"
|
||||
echo "-s :: create post as shortnote"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -33,22 +44,32 @@ done
|
||||
# Fix post name for filesystem
|
||||
post_file_name=$(echo $post_name | sed "s/[ _]/-/g" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Verify year path
|
||||
if ! [ -d $posts_root/$year ]; then
|
||||
# Create new year
|
||||
mkdir $posts_root/$year
|
||||
cp $posts_root/2023/_index.md $posts_root/$year/_index.md
|
||||
post_path="$posts_root/$post_file_name"
|
||||
|
||||
if [[ $shortnote == false ]] ; then
|
||||
# Verify year path
|
||||
if ! [ -d $posts_root/$year ]; then
|
||||
# Create new year
|
||||
mkdir $posts_root/$year
|
||||
cp $posts_root/2023/_index.md $posts_root/$year/_index.md
|
||||
fi
|
||||
|
||||
# Verify month path
|
||||
if ! [ -d $posts_root/$year/$month ]; then
|
||||
# Create new year
|
||||
mkdir $posts_root/$year/$month
|
||||
cp $posts_root/2023/_index.md $posts_root/$year/$month/_index.md
|
||||
fi
|
||||
|
||||
post_path="$posts_root/$year/$month/$post_file_name"
|
||||
fi
|
||||
|
||||
# Verify month path
|
||||
if ! [ -d $posts_root/$year/$month ]; then
|
||||
# Create new year
|
||||
mkdir $posts_root/$year/$month
|
||||
cp $posts_root/2023/_index.md $posts_root/$year/$month/_index.md
|
||||
fi
|
||||
echo $post_file_name
|
||||
echo $post_path
|
||||
|
||||
# Create folder for post (in case of images)
|
||||
mkdir -p "$posts_root/$year/$month/$post_file_name"
|
||||
mkdir -p "$post_path"
|
||||
|
||||
|
||||
# Create template file
|
||||
read -r -d '' TEMPLATE << EOF
|
||||
@ -57,26 +78,26 @@ title = "$post_name"
|
||||
# description = ""
|
||||
date = $year-$month-$day
|
||||
# updated = $year-$month-$day
|
||||
draft = true
|
||||
#draft = true
|
||||
[taxonomies]
|
||||
tags = []
|
||||
tags = [$shortnotestag]
|
||||
+++
|
||||
|
||||
EOF
|
||||
|
||||
# Skip overwrite if exists
|
||||
if ! [ -f $posts_root/$year/$month/$post_file_name/index.md ]; then
|
||||
if ! [ -f $post_path/index.md ]; then
|
||||
echo "Creating a new post..."
|
||||
echo "$TEMPLATE" >> $posts_root/$year/$month/$post_file_name/index.md
|
||||
echo "$TEMPLATE" >> $post_path/index.md
|
||||
fi
|
||||
|
||||
echo "Post file is at $posts_root/$year/$month/$post_file_name/index.md"
|
||||
echo "Post file is at $post_path/index.md"
|
||||
|
||||
# Open vim/vi/nano
|
||||
if command -v vim &> /dev/null; then
|
||||
vim $posts_root/$year/$month/$post_file_name/index.md
|
||||
vim $post_path/index.md
|
||||
elif command -v vi &> /dev/null; then
|
||||
vi $posts_root/$year/$month/$post_file_name/index.md
|
||||
vi $post_path/index.md
|
||||
else
|
||||
nano $posts_root/$year/$month/$post_file_name/index.md
|
||||
nano $post_path/index.md
|
||||
fi
|
||||
|
||||
0
quick_config.sh
Normal file → Executable file
0
quick_config.sh
Normal file → Executable file
@ -21,7 +21,7 @@
|
||||
{% if post.draft %}<span class="draft">(Draft)</span>{% endif %}
|
||||
</div>
|
||||
<div class="shortnotes-content">
|
||||
{{ post.content }}
|
||||
{{ post.content | safe }}
|
||||
</div>
|
||||
{{ hooks::posts_below_title(page=post) }}
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user