diff --git a/README.md b/README.md index 734f27d56..6b0f24ac1 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ It contains pages about my products, services, public speaking and training, as The styling is done using [Tailwind CSS]. +## BrowserSync + +I have [BrowserSync][] installed and use it to watch for changes to files and [automatically refresh my browser][0] instead of using Sculpin's built-in development server. + ## Hosting The website is hosted on a 1GB DigitalOcean droplet alongside other static websites. @@ -16,6 +20,8 @@ I'm using Apache as my web server so I can easily manage redirects using the `.h As it's a static website, no PHP or database are needed. +[0]: https://www.oliverdavies.uk/blog/sculpin-browsersync +[browsersync]: https://browsersync.io [sculpin]: https://sculpin.io [tailwind css]: https://tailwindcss.com [website]: https://www.oliverdavies.uk diff --git a/app/config/sculpin_kernel.yml b/app/config/sculpin_kernel.yml index 498517c11..13a1b1ee0 100644 --- a/app/config/sculpin_kernel.yml +++ b/app/config/sculpin_kernel.yml @@ -1,7 +1,5 @@ --- sculpin_content_types: - daily_emails: - permalink: /daily/:year/:month/:day/:basename/ pages: permalink: /:basename/ podcast_episodes: @@ -10,6 +8,8 @@ sculpin_content_types: permalink: /blog/:basename/ presentations: permalink: /presentations/:basename/ + zets: + permalink: /zet/:basename-:title/ services: App\Experience\TwigExtension\ExperienceTwigExtension: diff --git a/app/config/sculpin_site.yml b/app/config/sculpin_site.yml index 12a6d0a9d..a10f3ccab 100644 --- a/app/config/sculpin_site.yml +++ b/app/config/sculpin_site.yml @@ -35,7 +35,7 @@ drupalorg: username: opdavies features: - new_css: true + new_css: false github: url: https://github.com/%github.username% @@ -48,20 +48,16 @@ mastodon: menu_links: - title: Home url: / - - title: Press Info - url: /press - - title: Services - url: /pricing - title: Presentations url: /presentations + - title: Blog + url: /blog - title: Podcast url: /podcast attributes: title: The Beyond Blocks Podcast - - title: Daily list - url: /daily - attributes: - title: The Daily Drupaler Email List + - title: Books + url: /books - title: Sponsor me url: /sponsor - title: Contact @@ -74,6 +70,13 @@ meta: Oliver is an Acquia-certified Triple Drupal expert, core contributor, Developer, Consultant and multiple-time DrupalCon speaker. testimonials: + - text: | + Oliver devised a creative and original approach to Drupal theme switching based on Tailwind and provided us with the building blocks and basic theming. + + He gave several helpful mentoring sessions with our front end developer to support us to build this approach into our site. + name: Technical Director, European knowledge platform + image: ~ + tags: [front] - text: | This course is really great and I've recommended it to my coworkers here at Palantir.net. name: Daniel Davis-Boxleitner diff --git a/build b/build new file mode 100755 index 000000000..2163f52ee --- /dev/null +++ b/build @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -uexo pipefail + +vendor/bin/sculpin generate --watch --server "$@" diff --git a/flake-modules/dev-shell.nix b/flake-modules/dev-shell.nix new file mode 100644 index 000000000..19b1cb76e --- /dev/null +++ b/flake-modules/dev-shell.nix @@ -0,0 +1,29 @@ +{ inputs, ... }: + +{ + imports = [ inputs.devshell.flakeModule ]; + + perSystem = + { pkgs, self', ... }: + { + devshells.default = { + packages = with pkgs; [ + nodePackages.browser-sync + + (php83.buildEnv { + extraConfig = '' + error_reporting = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED + ''; + }) + + php83Packages.composer + + self'.packages.drafts + self'.packages.new-draft + self'.packages.publish + + tailwindcss + ]; + }; + }; +} diff --git a/flake-modules/drafts.nix b/flake-modules/drafts.nix new file mode 100644 index 000000000..f1ac84955 --- /dev/null +++ b/flake-modules/drafts.nix @@ -0,0 +1,16 @@ +{ + perSystem = + { pkgs, ... }: + { + packages.drafts = pkgs.writeShellApplication { + name = "drafts"; + + runtimeInputs = with pkgs; [ gnugrep ]; + + text = '' + echo "oob" + grep -r 'draft: true' "''${1:-source}" + ''; + }; + }; +} diff --git a/flake-modules/new-draft.nix b/flake-modules/new-draft.nix new file mode 100644 index 000000000..31ee75800 --- /dev/null +++ b/flake-modules/new-draft.nix @@ -0,0 +1,33 @@ +{ + perSystem = + { pkgs, ... }: + { + packages.new-draft = pkgs.writeShellApplication { + name = "new-draft"; + + runtimeInputs = with pkgs; [ + coreutils + git + ]; + + text = '' + title="$1" + + exclude_words="for|at|and" + + filtered_title=$(echo "$title" | sed -E "s/\b($exclude_words)\b//g") + + slug=$(echo "$filtered_title" | tr '[:upper:]' '[:lower:]' | sed -e 's/[^a-z0-9]/-/g' -e 's/-\+/-/g' -e 's/^-//g' -e 's/-$//g') + + file="source/_posts/$slug.md" + + echo -e "---\ntitle: $title\ndate: ~\ndraft: true\n---" > "$file" + + echo "File created: $file" + + git add "$file" + git commit -s -m "Add draft: $title" + ''; + }; + }; +} diff --git a/flake-modules/publish.nix b/flake-modules/publish.nix new file mode 100644 index 000000000..d15ee49aa --- /dev/null +++ b/flake-modules/publish.nix @@ -0,0 +1,21 @@ +{ + perSystem = + { pkgs, ... }: + { + packages.publish = pkgs.writeShellApplication { + name = "publish"; + + runtimeInputs = with pkgs; [ + rsync + php + ]; + + text = '' + vendor/bin/sculpin generate --env prod + + rsync -uvrP static/ output_prod "$@" + rsync -uvrP output_prod/ nixedo.oliverdavies.uk:/var/www/vhosts/website-sculpin "$@" + ''; + }; + }; +} diff --git a/flake-modules/systems.nix b/flake-modules/systems.nix new file mode 100644 index 000000000..ce708c68b --- /dev/null +++ b/flake-modules/systems.nix @@ -0,0 +1,3 @@ +{ + systems = [ "x86_64-linux" ]; +} diff --git a/flake.lock b/flake.lock index d29d65a69..b94f97353 100644 --- a/flake.lock +++ b/flake.lock @@ -1,23 +1,94 @@ { "nodes": { - "nixpkgs": { + "devshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, "locked": { - "lastModified": 1742422364, - "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", + "lastModified": 1741473158, + "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "owner": "numtide", + "repo": "devshell", + "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", "type": "github" }, "original": { - "owner": "nixos", + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1752730890, + "narHash": "sha256-GES8fapSLGz36MMPRVNkSUWXUTtqvGQNXHjRmRLfJUY=", + "owner": "vic", + "repo": "import-tree", + "rev": "6ebb8cb87987b20264c09296166543fd3761d274", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "type": "github" + }, + "original": { + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1753579242, + "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "root": { "inputs": { + "devshell": "devshell", + "flake-parts": "flake-parts", + "import-tree": "import-tree", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 5408e8958..bd0de9bc3 100644 --- a/flake.nix +++ b/flake.nix @@ -1,21 +1,20 @@ { - inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + inputs = { + devshell.inputs.nixpkgs.follows = "nixpkgs"; + devshell.url = "github:numtide/devshell"; + + flake-parts.url = "github:hercules-ci/flake-parts"; + + import-tree.url = "github:vic/import-tree"; + + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; outputs = - { nixpkgs, ... }: - let - system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; }; - in - { - devShells.${system}.default = pkgs.mkShell { - buildInputs = with pkgs; [ - php83 - php83Packages.composer - tailwindcss - ]; - }; - - formatter.${system} = pkgs.nixfmt-rfc-style; + inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + (inputs.import-tree ./flake-modules) + ]; }; } diff --git a/resources/daily-email-stub.md b/resources/daily-email-stub.md deleted file mode 100644 index 2cc5a6d50..000000000 --- a/resources/daily-email-stub.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: {{ title }} -date: {{ date }} -permalink: {{ permalink }} -tags: - - software-development - # - drupal - # - drupal-planet - # - php - # - podcast -cta: ~ -snippet: | - TODO ---- diff --git a/run.local b/run.local index 08dff63a9..4a3e6c796 100755 --- a/run.local +++ b/run.local @@ -102,7 +102,7 @@ function publish { APP_ENV=prod generate rsync --archive --verbose --compress --update --delete \ - output_prod/ ssh.oliverdavies.uk:/var/www/vhosts/www.oliverdavies.uk + output_prod/ ssh.oliverdavies.uk:/var/www/vhosts/website-sculpin git stash pop } diff --git a/source/_layouts/daily_email.html.twig b/source/_layouts/daily_email.html.twig deleted file mode 100644 index a437f3b9b..000000000 --- a/source/_layouts/daily_email.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends 'page' %} - -{% block meta_description %}{{ page.snippet|trim }}{% endblock %} - -{% block content_wrapper %} - - - {{ parent() }} - -
- Oliver
-{% endblock %} - -{% block content_bottom %} - {% include 'daily-email-form.html.twig' with { - intro: 'Sign up here and get more like this delivered straight to your inbox every day.', - title: 'Was this interesting?', - } %} - - {% include 'about-me.html.twig' %} -{% endblock %} diff --git a/source/_layouts/post.html.twig b/source/_layouts/post.html.twig index 37149837d..3f2b65ddd 100644 --- a/source/_layouts/post.html.twig +++ b/source/_layouts/post.html.twig @@ -7,10 +7,5 @@ {% endblock %} {% block content_bottom %} - {% include 'daily-email-form.html.twig' with { - intro: 'Sign up here and get more like this delivered straight to your inbox every day.', - title: 'Was this interesting?', - } %} - {% include 'about-me.html.twig' %} {% endblock %} diff --git a/source/_layouts/zet.html.twig b/source/_layouts/zet.html.twig new file mode 100644 index 000000000..54af394b0 --- /dev/null +++ b/source/_layouts/zet.html.twig @@ -0,0 +1 @@ +{% extends "page" %} diff --git a/source/_pages/archive.html b/source/_pages/archive.html deleted file mode 100644 index eaf2a324b..000000000 --- a/source/_pages/archive.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: The Daily Drupaler -meta: - title: The Daily Drupaler - Daily Software Development Thoughts and Tips | %site.name% - description: |- - Daily Software Development Thoughts and Tips by %site.name%. -generator: pagination -pagination: - max_per_page: 30 - provider: data.daily_emails -use: - - daily_emails ---- - -{% block content %} - {% set daily_emails = data.daily_emails|filter((email) => email.date <= 'now'|date) %} - -This is an archive of the {{ daily_emails|length|number_format }} email messages I have sent to my daily mailing list since the 12th of August, 2022. Enjoy!
- -These are the emails I sent this week:
- -{{ plan.tagline }}
- -{{ presentation.description }}
+ {% if presentation.blocks.description %} + {{ presentation.blocks.description|raw }} + {% else %} +{{ presentation.description }}
+ {% endif %} {% endfor %} diff --git a/source/_pages/sitemap.xml.twig b/source/_pages/sitemap.xml.twig index a7ce5e8d0..7d493cd54 100644 --- a/source/_pages/sitemap.xml.twig +++ b/source/_pages/sitemap.xml.twig @@ -1,7 +1,6 @@ --- permalink: /sitemap.xml use: - - daily_emails - pages - podcast_episodes - posts diff --git a/source/_podcast_episodes/28-using-ai-tools-web-coding.md b/source/_podcast_episodes/28-using-ai-tools-web-coding.md new file mode 100644 index 000000000..467e64b60 --- /dev/null +++ b/source/_podcast_episodes/28-using-ai-tools-web-coding.md @@ -0,0 +1,27 @@ +--- +date: 2025-05-23 +topic: Using AI tools for web coding +guests: + - Luke McCormick +transistor: + id: ~ +links: + - - Luke on Drupal.org + - https://www.drupal.org/u/cellear + - - Web Coding for Non-Coders -- using AI, of course + - https://webcamp.stanford.edu/session/web-coding-for-non-coders-using-ai-of-course + - - Cursor - the AI text editor + - https://www.cursor.com + - - The Cache-Size-Block module + - https://github.com/cellear/Cache-Size-Block + - - Simplify Drupal + - https://simplifydrupal.com +quotes: [] +chapters: [] +episode_filename: 28-using-ai-web-coding.mp3 +file_size: 28682900 +duration: 00:56:04 +use: [podcast_episodes] +--- + +In this episode, Oliver is joined again by Luke McCormick, this time to discuss using AI for web coding and how to simplify Drupal websites. diff --git a/source/_podcast_episodes/29-drupal-cms-recipes.md b/source/_podcast_episodes/29-drupal-cms-recipes.md new file mode 100644 index 000000000..04219dca2 --- /dev/null +++ b/source/_podcast_episodes/29-drupal-cms-recipes.md @@ -0,0 +1,25 @@ +--- +date: 2025-05-30 +topic: Drupal CMS Recipes +guests: + - Gareth Alexander +transistor: + id: ~ +links: + - - The Drupal recipes cookbook + - https://www.drupal.org/docs/extending-drupal/contributed-modules/contributed-module-documentation/distributions-and-recipes-initiative/recipes-cookbook + - - The Recipes Initiative project on Drupal.org + - https://www.drupal.org/project/distributions_recipes + - - The Bad Judgement module + - https://www.drupal.org/project/bad_judgement + - - Gareth on Drupal.org + - https://www.drupal.org/u/the_g_bomb + - - Gareth's presentation at DrupalCamp England + - https://www.youtube.com/watch?v=b7MDA-kKCCk +episode_filename: 29-drupal-cms-recipes.mp3 +file_size: 30861164 +duration: 00:59:29 +use: [podcast_episodes] +--- + +In this episode, Oliver is joined by Gareth Alexander - Drupal CMS Accessibility Tools Track Lead and recent speaker at DrupalCamp England - to discuss Drupal CMS recipes. diff --git a/source/_podcast_episodes/30-growing-engineering-culture.md b/source/_podcast_episodes/30-growing-engineering-culture.md new file mode 100644 index 000000000..4a0d7aee3 --- /dev/null +++ b/source/_podcast_episodes/30-growing-engineering-culture.md @@ -0,0 +1,23 @@ +--- +date: 2025-06-11 +topic: Growing Engineering Culture +guests: + - Ev Maslovskiy +links: + - - Ev on Drupal.org + - https://www.drupal.org/u/spleshka + - - SystemSeed + - https://systemseed.com + - - SystemSeed on Drupal.org + - https://www.drupal.org/systemseed + - - DrupalCamp England + - https://www.drupalcampengland.org + - - Video recording of Ev's talk + - https://www.youtube.com/watch?v=Q_9fWVCAUtU +episode_filename: 30-engineering-culture.mp3 +file_size: 30861164 +duration: 00:59:29 +use: [podcast_episodes] +--- + +In this episode, Oliver is joined by Ev Maslovskiy - CTO at SystemSeed - to discuss engineering culture after his recent talk at DrupalCamp England. diff --git a/source/_podcast_episodes/31-modeler-api.md b/source/_podcast_episodes/31-modeler-api.md new file mode 100644 index 000000000..289dc2f51 --- /dev/null +++ b/source/_podcast_episodes/31-modeler-api.md @@ -0,0 +1,37 @@ +--- +date: 2025-06-27 +topic: Modeler API +guests: + - Jürgen Haas +links: +- - Jürgen on Drupal.org + - https://www.drupal.org/u/jurgenhaas +- - The ECA module + - https://www.drupal.org/project/eca +- - The BPMN.iO module + - https://www.drupal.org/project/bpmn_io +- - Drupal Events, Conditions and Actions with Jürgen Haas + - /podcast/23-jurgen-haas-eca +- - Drupal Remote Dashboard + - https://www.drupal.org/project/drd +- - Drupal Recipes + - https://www.drupal.org/docs/extending-drupal/drupal-recipes +- - Discussing Drupal CMS Recipes with Gareth Alexander + - /daily/2025/06/03/discussing-drupal-cms-recipes-gareth-alexander +- - Drupal CMS + - https://www.drupal.org/project/cms +- - Discussing Drupalisms with Emma Horrell and Luke McCormick + - /podcast/27-discussing-drupalisms +- - Model Context Protocol + - https://modelcontextprotocol.io +- - The Model Context Protocol module + - https://www.drupal.org/project/mcp +- - Using AI tools for web coding with Luke McCormick + - /podcast/28-using-ai-tools-web-coding +episode_filename: 31-modeler-api.mp3 +file_size: 21761540 +duration: 00:46:05 +use: [podcast_episodes] +--- + +In this episode, Oliver is re-joined by Jürgen Haas to discuss the new Modeler API module and progress made with the ECA module. diff --git a/source/_podcast_episodes/32-accessibility.md b/source/_podcast_episodes/32-accessibility.md new file mode 100644 index 000000000..d3409c06d --- /dev/null +++ b/source/_podcast_episodes/32-accessibility.md @@ -0,0 +1,39 @@ +--- +date: 2025-07-11 +topic: Web Accessibility +guests: + - Mike Gifford +links: +- - Mike's website + - https://ox.ca +- - Mike on Drupal.org + - https://www.drupal.org/u/mgifford +- - My Web, My Way + - https://www.bbc.co.uk/programmes/p005khmk +- - simplA11yPDFCrawler + - https://github.com/accessibility-luxembourg/simplA11yPDFCrawler +- - Drupal.org's Accessibility page + - https://www.drupal.org/about/features/accessibility +- - WCAG 2 Overview + - https://www.w3.org/WAI/standards-guidelines/wcag +- - Drupal's core gates + - https://www.drupal.org/about/core/policies/core-change-policies/core-gates +- - Accessibility Roles and Responsibilities Mapping (ARRM) Community Group + - https://www.w3.org/community/arrm +- - Sustainable Web Interest Group + - https://www.w3.org/groups/ig/sustainableweb +- - Writing Accessibility tests in Nightwatch + - https://www.drupal.org/docs/develop/automated-testing/javascript-testing-using-nightwatch +- - The Sa11y module + - https://www.drupal.org/project/sa11y +- - Drupal's Accessibility Coding Standards + - https://www.drupal.org/docs/develop/standards/accessibility-coding-standards +- - Shift-left testing + - https://en.wikipedia.org/wiki/Shift-left_testing +episode_filename: 32-web-accessibility.mp3 +file_size: 38235236 +duration: 01:23:01 +use: [podcast_episodes] +--- + +In this episode, Oliver is joined by Mike Gifford - Senior Strategist at CivicActions, W3C Invited Expert and Drupal Core Accessibility Maintainer - to discuss web accessibility. diff --git a/source/_daily_emails/2022-08-12.md b/source/_posts/2022-08-12.md similarity index 100% rename from source/_daily_emails/2022-08-12.md rename to source/_posts/2022-08-12.md diff --git a/source/_daily_emails/2022-08-13.md b/source/_posts/2022-08-13.md similarity index 100% rename from source/_daily_emails/2022-08-13.md rename to source/_posts/2022-08-13.md diff --git a/source/_daily_emails/2022-08-14.md b/source/_posts/2022-08-14.md similarity index 100% rename from source/_daily_emails/2022-08-14.md rename to source/_posts/2022-08-14.md diff --git a/source/_daily_emails/2022-08-15.md b/source/_posts/2022-08-15.md similarity index 100% rename from source/_daily_emails/2022-08-15.md rename to source/_posts/2022-08-15.md diff --git a/source/_daily_emails/2022-08-16.md b/source/_posts/2022-08-16.md similarity index 100% rename from source/_daily_emails/2022-08-16.md rename to source/_posts/2022-08-16.md diff --git a/source/_daily_emails/2022-08-17.md b/source/_posts/2022-08-17.md similarity index 100% rename from source/_daily_emails/2022-08-17.md rename to source/_posts/2022-08-17.md diff --git a/source/_daily_emails/2022-08-18.md b/source/_posts/2022-08-18.md similarity index 100% rename from source/_daily_emails/2022-08-18.md rename to source/_posts/2022-08-18.md diff --git a/source/_daily_emails/2022-08-19.md b/source/_posts/2022-08-19.md similarity index 100% rename from source/_daily_emails/2022-08-19.md rename to source/_posts/2022-08-19.md diff --git a/source/_daily_emails/2022-08-20.md b/source/_posts/2022-08-20.md similarity index 100% rename from source/_daily_emails/2022-08-20.md rename to source/_posts/2022-08-20.md diff --git a/source/_daily_emails/2022-08-21.md b/source/_posts/2022-08-21.md similarity index 100% rename from source/_daily_emails/2022-08-21.md rename to source/_posts/2022-08-21.md diff --git a/source/_daily_emails/2022-08-22.md b/source/_posts/2022-08-22.md similarity index 100% rename from source/_daily_emails/2022-08-22.md rename to source/_posts/2022-08-22.md diff --git a/source/_daily_emails/2022-08-23.md b/source/_posts/2022-08-23.md similarity index 100% rename from source/_daily_emails/2022-08-23.md rename to source/_posts/2022-08-23.md diff --git a/source/_daily_emails/2022-08-24.md b/source/_posts/2022-08-24.md similarity index 100% rename from source/_daily_emails/2022-08-24.md rename to source/_posts/2022-08-24.md diff --git a/source/_daily_emails/2022-08-25.md b/source/_posts/2022-08-25.md similarity index 100% rename from source/_daily_emails/2022-08-25.md rename to source/_posts/2022-08-25.md diff --git a/source/_daily_emails/2022-08-26.md b/source/_posts/2022-08-26.md similarity index 100% rename from source/_daily_emails/2022-08-26.md rename to source/_posts/2022-08-26.md diff --git a/source/_daily_emails/2022-08-27.md b/source/_posts/2022-08-27.md similarity index 100% rename from source/_daily_emails/2022-08-27.md rename to source/_posts/2022-08-27.md diff --git a/source/_daily_emails/2022-08-28.md b/source/_posts/2022-08-28.md similarity index 100% rename from source/_daily_emails/2022-08-28.md rename to source/_posts/2022-08-28.md diff --git a/source/_daily_emails/2022-08-29.md b/source/_posts/2022-08-29.md similarity index 100% rename from source/_daily_emails/2022-08-29.md rename to source/_posts/2022-08-29.md diff --git a/source/_daily_emails/2022-08-30.md b/source/_posts/2022-08-30.md similarity index 100% rename from source/_daily_emails/2022-08-30.md rename to source/_posts/2022-08-30.md diff --git a/source/_daily_emails/2022-08-31.md b/source/_posts/2022-08-31.md similarity index 100% rename from source/_daily_emails/2022-08-31.md rename to source/_posts/2022-08-31.md diff --git a/source/_daily_emails/2022-09-01.md b/source/_posts/2022-09-01.md similarity index 100% rename from source/_daily_emails/2022-09-01.md rename to source/_posts/2022-09-01.md diff --git a/source/_daily_emails/2022-09-02.md b/source/_posts/2022-09-02.md similarity index 100% rename from source/_daily_emails/2022-09-02.md rename to source/_posts/2022-09-02.md diff --git a/source/_daily_emails/2022-09-03.md b/source/_posts/2022-09-03.md similarity index 100% rename from source/_daily_emails/2022-09-03.md rename to source/_posts/2022-09-03.md diff --git a/source/_daily_emails/2022-09-04.md b/source/_posts/2022-09-04.md similarity index 100% rename from source/_daily_emails/2022-09-04.md rename to source/_posts/2022-09-04.md diff --git a/source/_daily_emails/2022-09-05.md b/source/_posts/2022-09-05.md similarity index 100% rename from source/_daily_emails/2022-09-05.md rename to source/_posts/2022-09-05.md diff --git a/source/_daily_emails/2022-09-06.md b/source/_posts/2022-09-06.md similarity index 100% rename from source/_daily_emails/2022-09-06.md rename to source/_posts/2022-09-06.md diff --git a/source/_daily_emails/2022-09-07.md b/source/_posts/2022-09-07.md similarity index 100% rename from source/_daily_emails/2022-09-07.md rename to source/_posts/2022-09-07.md diff --git a/source/_daily_emails/2022-09-08.md b/source/_posts/2022-09-08.md similarity index 100% rename from source/_daily_emails/2022-09-08.md rename to source/_posts/2022-09-08.md diff --git a/source/_daily_emails/2022-09-09.md b/source/_posts/2022-09-09.md similarity index 100% rename from source/_daily_emails/2022-09-09.md rename to source/_posts/2022-09-09.md diff --git a/source/_daily_emails/2022-09-10.md b/source/_posts/2022-09-10.md similarity index 100% rename from source/_daily_emails/2022-09-10.md rename to source/_posts/2022-09-10.md diff --git a/source/_daily_emails/2022-09-11.md b/source/_posts/2022-09-11.md similarity index 100% rename from source/_daily_emails/2022-09-11.md rename to source/_posts/2022-09-11.md diff --git a/source/_daily_emails/2022-09-12.md b/source/_posts/2022-09-12.md similarity index 100% rename from source/_daily_emails/2022-09-12.md rename to source/_posts/2022-09-12.md diff --git a/source/_daily_emails/2022-09-14.md b/source/_posts/2022-09-14.md similarity index 100% rename from source/_daily_emails/2022-09-14.md rename to source/_posts/2022-09-14.md diff --git a/source/_daily_emails/2022-09-16.md b/source/_posts/2022-09-16.md similarity index 100% rename from source/_daily_emails/2022-09-16.md rename to source/_posts/2022-09-16.md diff --git a/source/_daily_emails/2022-09-17.md b/source/_posts/2022-09-17.md similarity index 100% rename from source/_daily_emails/2022-09-17.md rename to source/_posts/2022-09-17.md diff --git a/source/_daily_emails/2022-09-19.md b/source/_posts/2022-09-19.md similarity index 100% rename from source/_daily_emails/2022-09-19.md rename to source/_posts/2022-09-19.md diff --git a/source/_daily_emails/2022-09-20.md b/source/_posts/2022-09-20.md similarity index 100% rename from source/_daily_emails/2022-09-20.md rename to source/_posts/2022-09-20.md diff --git a/source/_daily_emails/2022-09-21.md b/source/_posts/2022-09-21.md similarity index 100% rename from source/_daily_emails/2022-09-21.md rename to source/_posts/2022-09-21.md diff --git a/source/_daily_emails/2022-09-22.md b/source/_posts/2022-09-22.md similarity index 100% rename from source/_daily_emails/2022-09-22.md rename to source/_posts/2022-09-22.md diff --git a/source/_daily_emails/2022-09-23.md b/source/_posts/2022-09-23.md similarity index 100% rename from source/_daily_emails/2022-09-23.md rename to source/_posts/2022-09-23.md diff --git a/source/_daily_emails/2022-09-25.md b/source/_posts/2022-09-25.md similarity index 100% rename from source/_daily_emails/2022-09-25.md rename to source/_posts/2022-09-25.md diff --git a/source/_daily_emails/2022-09-26.md b/source/_posts/2022-09-26.md similarity index 100% rename from source/_daily_emails/2022-09-26.md rename to source/_posts/2022-09-26.md diff --git a/source/_daily_emails/2022-09-27.md b/source/_posts/2022-09-27.md similarity index 100% rename from source/_daily_emails/2022-09-27.md rename to source/_posts/2022-09-27.md diff --git a/source/_daily_emails/2022-09-28.md b/source/_posts/2022-09-28.md similarity index 100% rename from source/_daily_emails/2022-09-28.md rename to source/_posts/2022-09-28.md diff --git a/source/_daily_emails/2022-09-30.md b/source/_posts/2022-09-30.md similarity index 100% rename from source/_daily_emails/2022-09-30.md rename to source/_posts/2022-09-30.md diff --git a/source/_daily_emails/2022-10-01.md b/source/_posts/2022-10-01.md similarity index 100% rename from source/_daily_emails/2022-10-01.md rename to source/_posts/2022-10-01.md diff --git a/source/_daily_emails/2022-10-02.md b/source/_posts/2022-10-02.md similarity index 100% rename from source/_daily_emails/2022-10-02.md rename to source/_posts/2022-10-02.md diff --git a/source/_daily_emails/2022-10-03.md b/source/_posts/2022-10-03.md similarity index 94% rename from source/_daily_emails/2022-10-03.md rename to source/_posts/2022-10-03.md index 79972e7d9..af319d3da 100644 --- a/source/_daily_emails/2022-10-03.md +++ b/source/_posts/2022-10-03.md @@ -66,10 +66,6 @@ return Collection::make($stationNodes) ->map(fn (StationInterface $station): string => $station->getStationCode()) ->values(); ``` -<<<<<<< HEAD:website/source/_daily_emails/2022-10-03.md -======= - ->>>>>>> b9cea6d (chore: replace Sculpin with Astro):website/src/pages/daily-emails/2022-10-03.md I've added an additional `map` to convert the nodes to the value object, but the second map can now use the new typehint - ensuring better type safety and also giving us auto-completion in IDEs and text editors. If an incorrect node type is passed in, then the Exception will be thrown and a much clearer error message will be shown. Finally, I can use the helper method to get the field value, encapsulating the logic within the value object and making it intention clearer and easier to read. diff --git a/source/_daily_emails/2022-10-08.md b/source/_posts/2022-10-08.md similarity index 100% rename from source/_daily_emails/2022-10-08.md rename to source/_posts/2022-10-08.md diff --git a/source/_daily_emails/2022-10-09.md b/source/_posts/2022-10-09.md similarity index 100% rename from source/_daily_emails/2022-10-09.md rename to source/_posts/2022-10-09.md diff --git a/source/_daily_emails/2022-10-10.md b/source/_posts/2022-10-10.md similarity index 100% rename from source/_daily_emails/2022-10-10.md rename to source/_posts/2022-10-10.md diff --git a/source/_daily_emails/2022-10-11.md b/source/_posts/2022-10-11.md similarity index 100% rename from source/_daily_emails/2022-10-11.md rename to source/_posts/2022-10-11.md diff --git a/source/_daily_emails/2022-10-12.md b/source/_posts/2022-10-12.md similarity index 100% rename from source/_daily_emails/2022-10-12.md rename to source/_posts/2022-10-12.md diff --git a/source/_daily_emails/2022-10-17.md b/source/_posts/2022-10-17.md similarity index 100% rename from source/_daily_emails/2022-10-17.md rename to source/_posts/2022-10-17.md diff --git a/source/_daily_emails/2022-10-18.md b/source/_posts/2022-10-18.md similarity index 100% rename from source/_daily_emails/2022-10-18.md rename to source/_posts/2022-10-18.md diff --git a/source/_daily_emails/2022-10-19.md b/source/_posts/2022-10-19.md similarity index 100% rename from source/_daily_emails/2022-10-19.md rename to source/_posts/2022-10-19.md diff --git a/source/_daily_emails/2022-10-20.md b/source/_posts/2022-10-20.md similarity index 100% rename from source/_daily_emails/2022-10-20.md rename to source/_posts/2022-10-20.md diff --git a/source/_daily_emails/2022-10-21.md b/source/_posts/2022-10-21.md similarity index 100% rename from source/_daily_emails/2022-10-21.md rename to source/_posts/2022-10-21.md diff --git a/source/_daily_emails/2022-10-24.md b/source/_posts/2022-10-24.md similarity index 100% rename from source/_daily_emails/2022-10-24.md rename to source/_posts/2022-10-24.md diff --git a/source/_daily_emails/2022-10-25.md b/source/_posts/2022-10-25.md similarity index 100% rename from source/_daily_emails/2022-10-25.md rename to source/_posts/2022-10-25.md diff --git a/source/_daily_emails/2022-10-26.md b/source/_posts/2022-10-26.md similarity index 100% rename from source/_daily_emails/2022-10-26.md rename to source/_posts/2022-10-26.md diff --git a/source/_daily_emails/2022-10-27.md b/source/_posts/2022-10-27.md similarity index 100% rename from source/_daily_emails/2022-10-27.md rename to source/_posts/2022-10-27.md diff --git a/source/_daily_emails/2022-10-28.md b/source/_posts/2022-10-28.md similarity index 100% rename from source/_daily_emails/2022-10-28.md rename to source/_posts/2022-10-28.md diff --git a/source/_daily_emails/2022-10-29.md b/source/_posts/2022-10-29.md similarity index 100% rename from source/_daily_emails/2022-10-29.md rename to source/_posts/2022-10-29.md diff --git a/source/_daily_emails/2022-10-30.md b/source/_posts/2022-10-30.md similarity index 100% rename from source/_daily_emails/2022-10-30.md rename to source/_posts/2022-10-30.md diff --git a/source/_daily_emails/2022-11-08.md b/source/_posts/2022-11-08.md similarity index 100% rename from source/_daily_emails/2022-11-08.md rename to source/_posts/2022-11-08.md diff --git a/source/_daily_emails/2022-11-09.md b/source/_posts/2022-11-09.md similarity index 100% rename from source/_daily_emails/2022-11-09.md rename to source/_posts/2022-11-09.md diff --git a/source/_daily_emails/2022-11-11.md b/source/_posts/2022-11-11.md similarity index 100% rename from source/_daily_emails/2022-11-11.md rename to source/_posts/2022-11-11.md diff --git a/source/_daily_emails/2022-11-12.md b/source/_posts/2022-11-12.md similarity index 100% rename from source/_daily_emails/2022-11-12.md rename to source/_posts/2022-11-12.md diff --git a/source/_daily_emails/2022-11-13.md b/source/_posts/2022-11-13.md similarity index 100% rename from source/_daily_emails/2022-11-13.md rename to source/_posts/2022-11-13.md diff --git a/source/_daily_emails/2022-11-14.md b/source/_posts/2022-11-14.md similarity index 100% rename from source/_daily_emails/2022-11-14.md rename to source/_posts/2022-11-14.md diff --git a/source/_daily_emails/2022-11-15.md b/source/_posts/2022-11-15.md similarity index 100% rename from source/_daily_emails/2022-11-15.md rename to source/_posts/2022-11-15.md diff --git a/source/_daily_emails/2022-11-16.md b/source/_posts/2022-11-16.md similarity index 100% rename from source/_daily_emails/2022-11-16.md rename to source/_posts/2022-11-16.md diff --git a/source/_daily_emails/2022-11-17.md b/source/_posts/2022-11-17.md similarity index 100% rename from source/_daily_emails/2022-11-17.md rename to source/_posts/2022-11-17.md diff --git a/source/_daily_emails/2022-11-18.md b/source/_posts/2022-11-18.md similarity index 100% rename from source/_daily_emails/2022-11-18.md rename to source/_posts/2022-11-18.md diff --git a/source/_daily_emails/2022-11-19.md b/source/_posts/2022-11-19.md similarity index 100% rename from source/_daily_emails/2022-11-19.md rename to source/_posts/2022-11-19.md diff --git a/source/_daily_emails/2022-11-20.md b/source/_posts/2022-11-20.md similarity index 100% rename from source/_daily_emails/2022-11-20.md rename to source/_posts/2022-11-20.md diff --git a/source/_daily_emails/2022-11-21.md b/source/_posts/2022-11-21.md similarity index 100% rename from source/_daily_emails/2022-11-21.md rename to source/_posts/2022-11-21.md diff --git a/source/_daily_emails/2022-11-22.md b/source/_posts/2022-11-22.md similarity index 100% rename from source/_daily_emails/2022-11-22.md rename to source/_posts/2022-11-22.md diff --git a/source/_daily_emails/2022-11-23.md b/source/_posts/2022-11-23.md similarity index 100% rename from source/_daily_emails/2022-11-23.md rename to source/_posts/2022-11-23.md diff --git a/source/_daily_emails/2022-11-24.md b/source/_posts/2022-11-24.md similarity index 100% rename from source/_daily_emails/2022-11-24.md rename to source/_posts/2022-11-24.md diff --git a/source/_daily_emails/2022-11-25.md b/source/_posts/2022-11-25.md similarity index 100% rename from source/_daily_emails/2022-11-25.md rename to source/_posts/2022-11-25.md diff --git a/source/_daily_emails/2022-11-30.md b/source/_posts/2022-11-30.md similarity index 100% rename from source/_daily_emails/2022-11-30.md rename to source/_posts/2022-11-30.md diff --git a/source/_daily_emails/2022-12-01.md b/source/_posts/2022-12-01.md similarity index 100% rename from source/_daily_emails/2022-12-01.md rename to source/_posts/2022-12-01.md diff --git a/source/_daily_emails/2022-12-02.md b/source/_posts/2022-12-02.md similarity index 100% rename from source/_daily_emails/2022-12-02.md rename to source/_posts/2022-12-02.md diff --git a/source/_daily_emails/2022-12-03.md b/source/_posts/2022-12-03.md similarity index 100% rename from source/_daily_emails/2022-12-03.md rename to source/_posts/2022-12-03.md diff --git a/source/_daily_emails/2022-12-04.md b/source/_posts/2022-12-04.md similarity index 100% rename from source/_daily_emails/2022-12-04.md rename to source/_posts/2022-12-04.md diff --git a/source/_daily_emails/2022-12-05.md b/source/_posts/2022-12-05.md similarity index 100% rename from source/_daily_emails/2022-12-05.md rename to source/_posts/2022-12-05.md diff --git a/source/_daily_emails/2022-12-06.md b/source/_posts/2022-12-06.md similarity index 100% rename from source/_daily_emails/2022-12-06.md rename to source/_posts/2022-12-06.md diff --git a/source/_daily_emails/2022-12-07.md b/source/_posts/2022-12-07.md similarity index 100% rename from source/_daily_emails/2022-12-07.md rename to source/_posts/2022-12-07.md diff --git a/source/_daily_emails/2022-12-08.md b/source/_posts/2022-12-08.md similarity index 100% rename from source/_daily_emails/2022-12-08.md rename to source/_posts/2022-12-08.md diff --git a/source/_daily_emails/2022-12-09.md b/source/_posts/2022-12-09.md similarity index 100% rename from source/_daily_emails/2022-12-09.md rename to source/_posts/2022-12-09.md diff --git a/source/_daily_emails/2022-12-10.md b/source/_posts/2022-12-10.md similarity index 100% rename from source/_daily_emails/2022-12-10.md rename to source/_posts/2022-12-10.md diff --git a/source/_daily_emails/2022-12-15.md b/source/_posts/2022-12-15.md similarity index 100% rename from source/_daily_emails/2022-12-15.md rename to source/_posts/2022-12-15.md diff --git a/source/_daily_emails/2022-12-20.md b/source/_posts/2022-12-20.md similarity index 100% rename from source/_daily_emails/2022-12-20.md rename to source/_posts/2022-12-20.md diff --git a/source/_daily_emails/2022-12-21.md b/source/_posts/2022-12-21.md similarity index 100% rename from source/_daily_emails/2022-12-21.md rename to source/_posts/2022-12-21.md diff --git a/source/_daily_emails/2022-12-22.md b/source/_posts/2022-12-22.md similarity index 100% rename from source/_daily_emails/2022-12-22.md rename to source/_posts/2022-12-22.md diff --git a/source/_daily_emails/2022-12-23.md b/source/_posts/2022-12-23.md similarity index 100% rename from source/_daily_emails/2022-12-23.md rename to source/_posts/2022-12-23.md diff --git a/source/_daily_emails/2022-12-28.md b/source/_posts/2022-12-28.md similarity index 100% rename from source/_daily_emails/2022-12-28.md rename to source/_posts/2022-12-28.md diff --git a/source/_daily_emails/2022-12-29.md b/source/_posts/2022-12-29.md similarity index 100% rename from source/_daily_emails/2022-12-29.md rename to source/_posts/2022-12-29.md diff --git a/source/_daily_emails/2022-12-30.md b/source/_posts/2022-12-30.md similarity index 100% rename from source/_daily_emails/2022-12-30.md rename to source/_posts/2022-12-30.md diff --git a/source/_daily_emails/2022-12-31.md b/source/_posts/2022-12-31.md similarity index 100% rename from source/_daily_emails/2022-12-31.md rename to source/_posts/2022-12-31.md diff --git a/source/_daily_emails/2023-01-01.md b/source/_posts/2023-01-01.md similarity index 100% rename from source/_daily_emails/2023-01-01.md rename to source/_posts/2023-01-01.md diff --git a/source/_daily_emails/2023-01-02.md b/source/_posts/2023-01-02.md similarity index 100% rename from source/_daily_emails/2023-01-02.md rename to source/_posts/2023-01-02.md diff --git a/source/_daily_emails/2023-01-03.md b/source/_posts/2023-01-03.md similarity index 100% rename from source/_daily_emails/2023-01-03.md rename to source/_posts/2023-01-03.md diff --git a/source/_daily_emails/2023-01-04.md b/source/_posts/2023-01-04.md similarity index 100% rename from source/_daily_emails/2023-01-04.md rename to source/_posts/2023-01-04.md diff --git a/source/_daily_emails/2023-01-05.md b/source/_posts/2023-01-05.md similarity index 100% rename from source/_daily_emails/2023-01-05.md rename to source/_posts/2023-01-05.md diff --git a/source/_daily_emails/2023-01-06.md b/source/_posts/2023-01-06.md similarity index 100% rename from source/_daily_emails/2023-01-06.md rename to source/_posts/2023-01-06.md diff --git a/source/_daily_emails/2023-01-07.md b/source/_posts/2023-01-07.md similarity index 100% rename from source/_daily_emails/2023-01-07.md rename to source/_posts/2023-01-07.md diff --git a/source/_daily_emails/2023-01-16.md b/source/_posts/2023-01-16.md similarity index 100% rename from source/_daily_emails/2023-01-16.md rename to source/_posts/2023-01-16.md diff --git a/source/_daily_emails/2023-01-17.md b/source/_posts/2023-01-17.md similarity index 100% rename from source/_daily_emails/2023-01-17.md rename to source/_posts/2023-01-17.md diff --git a/source/_daily_emails/2023-01-18.md b/source/_posts/2023-01-18.md similarity index 100% rename from source/_daily_emails/2023-01-18.md rename to source/_posts/2023-01-18.md diff --git a/source/_daily_emails/2023-01-19.md b/source/_posts/2023-01-19.md similarity index 100% rename from source/_daily_emails/2023-01-19.md rename to source/_posts/2023-01-19.md diff --git a/source/_daily_emails/2023-01-20.md b/source/_posts/2023-01-20.md similarity index 100% rename from source/_daily_emails/2023-01-20.md rename to source/_posts/2023-01-20.md diff --git a/source/_daily_emails/2023-01-21.md b/source/_posts/2023-01-21.md similarity index 100% rename from source/_daily_emails/2023-01-21.md rename to source/_posts/2023-01-21.md diff --git a/source/_daily_emails/2023-01-22.md b/source/_posts/2023-01-22.md similarity index 100% rename from source/_daily_emails/2023-01-22.md rename to source/_posts/2023-01-22.md diff --git a/source/_daily_emails/2023-01-23.md b/source/_posts/2023-01-23.md similarity index 100% rename from source/_daily_emails/2023-01-23.md rename to source/_posts/2023-01-23.md diff --git a/source/_daily_emails/2023-01-24.md b/source/_posts/2023-01-24.md similarity index 100% rename from source/_daily_emails/2023-01-24.md rename to source/_posts/2023-01-24.md diff --git a/source/_daily_emails/2023-01-25.md b/source/_posts/2023-01-25.md similarity index 100% rename from source/_daily_emails/2023-01-25.md rename to source/_posts/2023-01-25.md diff --git a/source/_daily_emails/2023-02-07.md b/source/_posts/2023-02-07.md similarity index 100% rename from source/_daily_emails/2023-02-07.md rename to source/_posts/2023-02-07.md diff --git a/source/_daily_emails/2023-02-08.md b/source/_posts/2023-02-08.md similarity index 100% rename from source/_daily_emails/2023-02-08.md rename to source/_posts/2023-02-08.md diff --git a/source/_daily_emails/2023-02-09.md b/source/_posts/2023-02-09.md similarity index 100% rename from source/_daily_emails/2023-02-09.md rename to source/_posts/2023-02-09.md diff --git a/source/_daily_emails/2023-02-16.md b/source/_posts/2023-02-16.md similarity index 100% rename from source/_daily_emails/2023-02-16.md rename to source/_posts/2023-02-16.md diff --git a/source/_daily_emails/2023-02-17.md b/source/_posts/2023-02-17.md similarity index 100% rename from source/_daily_emails/2023-02-17.md rename to source/_posts/2023-02-17.md diff --git a/source/_daily_emails/2023-02-18.md b/source/_posts/2023-02-18.md similarity index 100% rename from source/_daily_emails/2023-02-18.md rename to source/_posts/2023-02-18.md diff --git a/source/_daily_emails/2023-02-19.md b/source/_posts/2023-02-19.md similarity index 100% rename from source/_daily_emails/2023-02-19.md rename to source/_posts/2023-02-19.md diff --git a/source/_daily_emails/2023-02-20.md b/source/_posts/2023-02-20.md similarity index 100% rename from source/_daily_emails/2023-02-20.md rename to source/_posts/2023-02-20.md diff --git a/source/_daily_emails/2023-03-01.md b/source/_posts/2023-03-01.md similarity index 100% rename from source/_daily_emails/2023-03-01.md rename to source/_posts/2023-03-01.md diff --git a/source/_daily_emails/2023-03-02.md b/source/_posts/2023-03-02.md similarity index 100% rename from source/_daily_emails/2023-03-02.md rename to source/_posts/2023-03-02.md diff --git a/source/_daily_emails/2023-03-03.md b/source/_posts/2023-03-03.md similarity index 100% rename from source/_daily_emails/2023-03-03.md rename to source/_posts/2023-03-03.md diff --git a/source/_daily_emails/2023-03-04.md b/source/_posts/2023-03-04.md similarity index 100% rename from source/_daily_emails/2023-03-04.md rename to source/_posts/2023-03-04.md diff --git a/source/_daily_emails/2023-03-05.md b/source/_posts/2023-03-05.md similarity index 100% rename from source/_daily_emails/2023-03-05.md rename to source/_posts/2023-03-05.md diff --git a/source/_daily_emails/2023-03-08.md b/source/_posts/2023-03-08.md similarity index 100% rename from source/_daily_emails/2023-03-08.md rename to source/_posts/2023-03-08.md diff --git a/source/_daily_emails/2023-03-09.md b/source/_posts/2023-03-09.md similarity index 100% rename from source/_daily_emails/2023-03-09.md rename to source/_posts/2023-03-09.md diff --git a/source/_daily_emails/2023-03-13.md b/source/_posts/2023-03-13.md similarity index 100% rename from source/_daily_emails/2023-03-13.md rename to source/_posts/2023-03-13.md diff --git a/source/_daily_emails/2023-03-14.md b/source/_posts/2023-03-14.md similarity index 100% rename from source/_daily_emails/2023-03-14.md rename to source/_posts/2023-03-14.md diff --git a/source/_daily_emails/2023-03-15.md b/source/_posts/2023-03-15.md similarity index 100% rename from source/_daily_emails/2023-03-15.md rename to source/_posts/2023-03-15.md diff --git a/source/_daily_emails/2023-03-21.md b/source/_posts/2023-03-21.md similarity index 100% rename from source/_daily_emails/2023-03-21.md rename to source/_posts/2023-03-21.md diff --git a/source/_daily_emails/2023-03-22.md b/source/_posts/2023-03-22.md similarity index 100% rename from source/_daily_emails/2023-03-22.md rename to source/_posts/2023-03-22.md diff --git a/source/_daily_emails/2023-03-27.md b/source/_posts/2023-03-27.md similarity index 100% rename from source/_daily_emails/2023-03-27.md rename to source/_posts/2023-03-27.md diff --git a/source/_daily_emails/2023-04-07.md b/source/_posts/2023-04-07.md similarity index 100% rename from source/_daily_emails/2023-04-07.md rename to source/_posts/2023-04-07.md diff --git a/source/_daily_emails/2023-04-08.md b/source/_posts/2023-04-08.md similarity index 100% rename from source/_daily_emails/2023-04-08.md rename to source/_posts/2023-04-08.md diff --git a/source/_daily_emails/2023-04-09.md b/source/_posts/2023-04-09.md similarity index 100% rename from source/_daily_emails/2023-04-09.md rename to source/_posts/2023-04-09.md diff --git a/source/_daily_emails/2023-04-10.md b/source/_posts/2023-04-10.md similarity index 100% rename from source/_daily_emails/2023-04-10.md rename to source/_posts/2023-04-10.md diff --git a/source/_daily_emails/2023-04-11.md b/source/_posts/2023-04-11.md similarity index 100% rename from source/_daily_emails/2023-04-11.md rename to source/_posts/2023-04-11.md diff --git a/source/_daily_emails/2023-04-12.md b/source/_posts/2023-04-12.md similarity index 100% rename from source/_daily_emails/2023-04-12.md rename to source/_posts/2023-04-12.md diff --git a/source/_daily_emails/2023-04-13.md b/source/_posts/2023-04-13.md similarity index 100% rename from source/_daily_emails/2023-04-13.md rename to source/_posts/2023-04-13.md diff --git a/source/_daily_emails/2023-04-14.md b/source/_posts/2023-04-14.md similarity index 100% rename from source/_daily_emails/2023-04-14.md rename to source/_posts/2023-04-14.md diff --git a/source/_daily_emails/2023-04-15.md b/source/_posts/2023-04-15.md similarity index 100% rename from source/_daily_emails/2023-04-15.md rename to source/_posts/2023-04-15.md diff --git a/source/_daily_emails/2023-04-16.md b/source/_posts/2023-04-16.md similarity index 100% rename from source/_daily_emails/2023-04-16.md rename to source/_posts/2023-04-16.md diff --git a/source/_daily_emails/2023-04-17.md b/source/_posts/2023-04-17.md similarity index 100% rename from source/_daily_emails/2023-04-17.md rename to source/_posts/2023-04-17.md diff --git a/source/_daily_emails/2023-04-18.md b/source/_posts/2023-04-18.md similarity index 100% rename from source/_daily_emails/2023-04-18.md rename to source/_posts/2023-04-18.md diff --git a/source/_daily_emails/2023-04-19.md b/source/_posts/2023-04-19.md similarity index 100% rename from source/_daily_emails/2023-04-19.md rename to source/_posts/2023-04-19.md diff --git a/source/_daily_emails/2023-04-20.md b/source/_posts/2023-04-20.md similarity index 100% rename from source/_daily_emails/2023-04-20.md rename to source/_posts/2023-04-20.md diff --git a/source/_daily_emails/2023-04-21.md b/source/_posts/2023-04-21.md similarity index 100% rename from source/_daily_emails/2023-04-21.md rename to source/_posts/2023-04-21.md diff --git a/source/_daily_emails/2023-04-22.md b/source/_posts/2023-04-22.md similarity index 100% rename from source/_daily_emails/2023-04-22.md rename to source/_posts/2023-04-22.md diff --git a/source/_daily_emails/2023-04-23.md b/source/_posts/2023-04-23.md similarity index 100% rename from source/_daily_emails/2023-04-23.md rename to source/_posts/2023-04-23.md diff --git a/source/_daily_emails/2023-04-24.md b/source/_posts/2023-04-24.md similarity index 100% rename from source/_daily_emails/2023-04-24.md rename to source/_posts/2023-04-24.md diff --git a/source/_daily_emails/2023-04-25.md b/source/_posts/2023-04-25.md similarity index 100% rename from source/_daily_emails/2023-04-25.md rename to source/_posts/2023-04-25.md diff --git a/source/_daily_emails/2023-04-26.md b/source/_posts/2023-04-26.md similarity index 100% rename from source/_daily_emails/2023-04-26.md rename to source/_posts/2023-04-26.md diff --git a/source/_daily_emails/2023-04-27.md b/source/_posts/2023-04-27.md similarity index 100% rename from source/_daily_emails/2023-04-27.md rename to source/_posts/2023-04-27.md diff --git a/source/_daily_emails/2023-04-30.md b/source/_posts/2023-04-30.md similarity index 100% rename from source/_daily_emails/2023-04-30.md rename to source/_posts/2023-04-30.md diff --git a/source/_daily_emails/2023-05-01.md b/source/_posts/2023-05-01.md similarity index 100% rename from source/_daily_emails/2023-05-01.md rename to source/_posts/2023-05-01.md diff --git a/source/_daily_emails/2023-05-02.md b/source/_posts/2023-05-02.md similarity index 100% rename from source/_daily_emails/2023-05-02.md rename to source/_posts/2023-05-02.md diff --git a/source/_daily_emails/2023-05-03.md b/source/_posts/2023-05-03.md similarity index 100% rename from source/_daily_emails/2023-05-03.md rename to source/_posts/2023-05-03.md diff --git a/source/_daily_emails/2023-05-04.md b/source/_posts/2023-05-04.md similarity index 100% rename from source/_daily_emails/2023-05-04.md rename to source/_posts/2023-05-04.md diff --git a/source/_daily_emails/2023-05-05.md b/source/_posts/2023-05-05.md similarity index 100% rename from source/_daily_emails/2023-05-05.md rename to source/_posts/2023-05-05.md diff --git a/source/_daily_emails/2023-05-06.md b/source/_posts/2023-05-06.md similarity index 100% rename from source/_daily_emails/2023-05-06.md rename to source/_posts/2023-05-06.md diff --git a/source/_daily_emails/2023-05-07.md b/source/_posts/2023-05-07.md similarity index 100% rename from source/_daily_emails/2023-05-07.md rename to source/_posts/2023-05-07.md diff --git a/source/_daily_emails/2023-05-08.md b/source/_posts/2023-05-08.md similarity index 100% rename from source/_daily_emails/2023-05-08.md rename to source/_posts/2023-05-08.md diff --git a/source/_daily_emails/2023-05-09.md b/source/_posts/2023-05-09.md similarity index 100% rename from source/_daily_emails/2023-05-09.md rename to source/_posts/2023-05-09.md diff --git a/source/_daily_emails/2023-05-10.md b/source/_posts/2023-05-10.md similarity index 100% rename from source/_daily_emails/2023-05-10.md rename to source/_posts/2023-05-10.md diff --git a/source/_daily_emails/2023-05-11.md b/source/_posts/2023-05-11.md similarity index 100% rename from source/_daily_emails/2023-05-11.md rename to source/_posts/2023-05-11.md diff --git a/source/_daily_emails/2023-05-12.md b/source/_posts/2023-05-12.md similarity index 100% rename from source/_daily_emails/2023-05-12.md rename to source/_posts/2023-05-12.md diff --git a/source/_daily_emails/2023-05-13.md b/source/_posts/2023-05-13.md similarity index 100% rename from source/_daily_emails/2023-05-13.md rename to source/_posts/2023-05-13.md diff --git a/source/_daily_emails/2023-05-14.md b/source/_posts/2023-05-14.md similarity index 100% rename from source/_daily_emails/2023-05-14.md rename to source/_posts/2023-05-14.md diff --git a/source/_daily_emails/2023-05-15.md b/source/_posts/2023-05-15.md similarity index 100% rename from source/_daily_emails/2023-05-15.md rename to source/_posts/2023-05-15.md diff --git a/source/_daily_emails/2023-05-16.md b/source/_posts/2023-05-16.md similarity index 100% rename from source/_daily_emails/2023-05-16.md rename to source/_posts/2023-05-16.md diff --git a/source/_daily_emails/2023-05-17.md b/source/_posts/2023-05-17.md similarity index 100% rename from source/_daily_emails/2023-05-17.md rename to source/_posts/2023-05-17.md diff --git a/source/_daily_emails/2023-05-18.md b/source/_posts/2023-05-18.md similarity index 100% rename from source/_daily_emails/2023-05-18.md rename to source/_posts/2023-05-18.md diff --git a/source/_daily_emails/2023-05-19.md b/source/_posts/2023-05-19.md similarity index 100% rename from source/_daily_emails/2023-05-19.md rename to source/_posts/2023-05-19.md diff --git a/source/_daily_emails/2023-05-20.md b/source/_posts/2023-05-20.md similarity index 100% rename from source/_daily_emails/2023-05-20.md rename to source/_posts/2023-05-20.md diff --git a/source/_daily_emails/2023-05-21.md b/source/_posts/2023-05-21.md similarity index 100% rename from source/_daily_emails/2023-05-21.md rename to source/_posts/2023-05-21.md diff --git a/source/_daily_emails/2023-06-05.md b/source/_posts/2023-06-05.md similarity index 100% rename from source/_daily_emails/2023-06-05.md rename to source/_posts/2023-06-05.md diff --git a/source/_daily_emails/2023-06-06.md b/source/_posts/2023-06-06.md similarity index 100% rename from source/_daily_emails/2023-06-06.md rename to source/_posts/2023-06-06.md diff --git a/source/_daily_emails/2023-06-07.md b/source/_posts/2023-06-07.md similarity index 100% rename from source/_daily_emails/2023-06-07.md rename to source/_posts/2023-06-07.md diff --git a/source/_daily_emails/2023-06-08.md b/source/_posts/2023-06-08.md similarity index 100% rename from source/_daily_emails/2023-06-08.md rename to source/_posts/2023-06-08.md diff --git a/source/_daily_emails/2023-06-09.md b/source/_posts/2023-06-09.md similarity index 100% rename from source/_daily_emails/2023-06-09.md rename to source/_posts/2023-06-09.md diff --git a/source/_daily_emails/2023-06-10.md b/source/_posts/2023-06-10.md similarity index 100% rename from source/_daily_emails/2023-06-10.md rename to source/_posts/2023-06-10.md diff --git a/source/_daily_emails/2023-06-11.md b/source/_posts/2023-06-11.md similarity index 100% rename from source/_daily_emails/2023-06-11.md rename to source/_posts/2023-06-11.md diff --git a/source/_daily_emails/2023-06-12.md b/source/_posts/2023-06-12.md similarity index 100% rename from source/_daily_emails/2023-06-12.md rename to source/_posts/2023-06-12.md diff --git a/source/_daily_emails/2023-06-13.md b/source/_posts/2023-06-13.md similarity index 100% rename from source/_daily_emails/2023-06-13.md rename to source/_posts/2023-06-13.md diff --git a/source/_daily_emails/2023-06-14.md b/source/_posts/2023-06-14.md similarity index 100% rename from source/_daily_emails/2023-06-14.md rename to source/_posts/2023-06-14.md diff --git a/source/_daily_emails/2023-06-15.md b/source/_posts/2023-06-15.md similarity index 100% rename from source/_daily_emails/2023-06-15.md rename to source/_posts/2023-06-15.md diff --git a/source/_daily_emails/2023-06-16.md b/source/_posts/2023-06-16.md similarity index 100% rename from source/_daily_emails/2023-06-16.md rename to source/_posts/2023-06-16.md diff --git a/source/_daily_emails/2023-06-17.md b/source/_posts/2023-06-17.md similarity index 100% rename from source/_daily_emails/2023-06-17.md rename to source/_posts/2023-06-17.md diff --git a/source/_daily_emails/2023-06-18.md b/source/_posts/2023-06-18.md similarity index 100% rename from source/_daily_emails/2023-06-18.md rename to source/_posts/2023-06-18.md diff --git a/source/_daily_emails/2023-06-19.md b/source/_posts/2023-06-19.md similarity index 100% rename from source/_daily_emails/2023-06-19.md rename to source/_posts/2023-06-19.md diff --git a/source/_daily_emails/2023-06-20.md b/source/_posts/2023-06-20.md similarity index 100% rename from source/_daily_emails/2023-06-20.md rename to source/_posts/2023-06-20.md diff --git a/source/_daily_emails/2023-06-21.md b/source/_posts/2023-06-21.md similarity index 100% rename from source/_daily_emails/2023-06-21.md rename to source/_posts/2023-06-21.md diff --git a/source/_daily_emails/2023-06-22.md b/source/_posts/2023-06-22.md similarity index 100% rename from source/_daily_emails/2023-06-22.md rename to source/_posts/2023-06-22.md diff --git a/source/_daily_emails/2023-06-23.md b/source/_posts/2023-06-23.md similarity index 100% rename from source/_daily_emails/2023-06-23.md rename to source/_posts/2023-06-23.md diff --git a/source/_daily_emails/2023-06-24.md b/source/_posts/2023-06-24.md similarity index 100% rename from source/_daily_emails/2023-06-24.md rename to source/_posts/2023-06-24.md diff --git a/source/_daily_emails/2023-06-25.md b/source/_posts/2023-06-25.md similarity index 100% rename from source/_daily_emails/2023-06-25.md rename to source/_posts/2023-06-25.md diff --git a/source/_daily_emails/2023-06-26.md b/source/_posts/2023-06-26.md similarity index 100% rename from source/_daily_emails/2023-06-26.md rename to source/_posts/2023-06-26.md diff --git a/source/_daily_emails/2023-06-27.md b/source/_posts/2023-06-27.md similarity index 100% rename from source/_daily_emails/2023-06-27.md rename to source/_posts/2023-06-27.md diff --git a/source/_daily_emails/2023-06-28.md b/source/_posts/2023-06-28.md similarity index 100% rename from source/_daily_emails/2023-06-28.md rename to source/_posts/2023-06-28.md diff --git a/source/_daily_emails/2023-06-29.md b/source/_posts/2023-06-29.md similarity index 100% rename from source/_daily_emails/2023-06-29.md rename to source/_posts/2023-06-29.md diff --git a/source/_daily_emails/2023-06-30.md b/source/_posts/2023-06-30.md similarity index 100% rename from source/_daily_emails/2023-06-30.md rename to source/_posts/2023-06-30.md diff --git a/source/_daily_emails/2023-07-01.md b/source/_posts/2023-07-01.md similarity index 100% rename from source/_daily_emails/2023-07-01.md rename to source/_posts/2023-07-01.md diff --git a/source/_daily_emails/2023-07-02.md b/source/_posts/2023-07-02.md similarity index 100% rename from source/_daily_emails/2023-07-02.md rename to source/_posts/2023-07-02.md diff --git a/source/_daily_emails/2023-07-03.md b/source/_posts/2023-07-03.md similarity index 100% rename from source/_daily_emails/2023-07-03.md rename to source/_posts/2023-07-03.md diff --git a/source/_daily_emails/2023-07-04.md b/source/_posts/2023-07-04.md similarity index 100% rename from source/_daily_emails/2023-07-04.md rename to source/_posts/2023-07-04.md diff --git a/source/_daily_emails/2023-07-05.md b/source/_posts/2023-07-05.md similarity index 100% rename from source/_daily_emails/2023-07-05.md rename to source/_posts/2023-07-05.md diff --git a/source/_daily_emails/2023-07-06.md b/source/_posts/2023-07-06.md similarity index 100% rename from source/_daily_emails/2023-07-06.md rename to source/_posts/2023-07-06.md diff --git a/source/_daily_emails/2023-07-15.md b/source/_posts/2023-07-15.md similarity index 100% rename from source/_daily_emails/2023-07-15.md rename to source/_posts/2023-07-15.md diff --git a/source/_daily_emails/2023-07-16.md b/source/_posts/2023-07-16.md similarity index 100% rename from source/_daily_emails/2023-07-16.md rename to source/_posts/2023-07-16.md diff --git a/source/_daily_emails/2023-07-17.md b/source/_posts/2023-07-17.md similarity index 100% rename from source/_daily_emails/2023-07-17.md rename to source/_posts/2023-07-17.md diff --git a/source/_daily_emails/2023-07-18.md b/source/_posts/2023-07-18.md similarity index 100% rename from source/_daily_emails/2023-07-18.md rename to source/_posts/2023-07-18.md diff --git a/source/_daily_emails/2023-07-19.md b/source/_posts/2023-07-19.md similarity index 100% rename from source/_daily_emails/2023-07-19.md rename to source/_posts/2023-07-19.md diff --git a/source/_daily_emails/2023-07-20.md b/source/_posts/2023-07-20.md similarity index 100% rename from source/_daily_emails/2023-07-20.md rename to source/_posts/2023-07-20.md diff --git a/source/_daily_emails/2023-07-21.md b/source/_posts/2023-07-21.md similarity index 100% rename from source/_daily_emails/2023-07-21.md rename to source/_posts/2023-07-21.md diff --git a/source/_daily_emails/2023-07-22.md b/source/_posts/2023-07-22.md similarity index 100% rename from source/_daily_emails/2023-07-22.md rename to source/_posts/2023-07-22.md diff --git a/source/_daily_emails/2023-07-23.md b/source/_posts/2023-07-23.md similarity index 100% rename from source/_daily_emails/2023-07-23.md rename to source/_posts/2023-07-23.md diff --git a/source/_daily_emails/2023-07-24.md b/source/_posts/2023-07-24.md similarity index 100% rename from source/_daily_emails/2023-07-24.md rename to source/_posts/2023-07-24.md diff --git a/source/_daily_emails/2023-07-25.md b/source/_posts/2023-07-25.md similarity index 100% rename from source/_daily_emails/2023-07-25.md rename to source/_posts/2023-07-25.md diff --git a/source/_daily_emails/2023-07-26.md b/source/_posts/2023-07-26.md similarity index 100% rename from source/_daily_emails/2023-07-26.md rename to source/_posts/2023-07-26.md diff --git a/source/_daily_emails/2023-07-27.md b/source/_posts/2023-07-27.md similarity index 100% rename from source/_daily_emails/2023-07-27.md rename to source/_posts/2023-07-27.md diff --git a/source/_daily_emails/2023-07-28.md b/source/_posts/2023-07-28.md similarity index 100% rename from source/_daily_emails/2023-07-28.md rename to source/_posts/2023-07-28.md diff --git a/source/_daily_emails/2023-07-29.md b/source/_posts/2023-07-29.md similarity index 100% rename from source/_daily_emails/2023-07-29.md rename to source/_posts/2023-07-29.md diff --git a/source/_daily_emails/2023-07-30.md b/source/_posts/2023-07-30.md similarity index 100% rename from source/_daily_emails/2023-07-30.md rename to source/_posts/2023-07-30.md diff --git a/source/_daily_emails/2023-07-31.md b/source/_posts/2023-07-31.md similarity index 100% rename from source/_daily_emails/2023-07-31.md rename to source/_posts/2023-07-31.md diff --git a/source/_daily_emails/2023-08-01.md b/source/_posts/2023-08-01.md similarity index 100% rename from source/_daily_emails/2023-08-01.md rename to source/_posts/2023-08-01.md diff --git a/source/_daily_emails/2023-08-02.md b/source/_posts/2023-08-02.md similarity index 100% rename from source/_daily_emails/2023-08-02.md rename to source/_posts/2023-08-02.md diff --git a/source/_daily_emails/2023-08-03.md b/source/_posts/2023-08-03.md similarity index 100% rename from source/_daily_emails/2023-08-03.md rename to source/_posts/2023-08-03.md diff --git a/source/_daily_emails/2023-08-04.md b/source/_posts/2023-08-04.md similarity index 100% rename from source/_daily_emails/2023-08-04.md rename to source/_posts/2023-08-04.md diff --git a/source/_daily_emails/2023-08-05.md b/source/_posts/2023-08-05.md similarity index 100% rename from source/_daily_emails/2023-08-05.md rename to source/_posts/2023-08-05.md diff --git a/source/_daily_emails/2023-08-06.md b/source/_posts/2023-08-06.md similarity index 100% rename from source/_daily_emails/2023-08-06.md rename to source/_posts/2023-08-06.md diff --git a/source/_daily_emails/2023-08-07.md b/source/_posts/2023-08-07.md similarity index 100% rename from source/_daily_emails/2023-08-07.md rename to source/_posts/2023-08-07.md diff --git a/source/_daily_emails/2023-08-08.md b/source/_posts/2023-08-08.md similarity index 100% rename from source/_daily_emails/2023-08-08.md rename to source/_posts/2023-08-08.md diff --git a/source/_daily_emails/2023-08-09.md b/source/_posts/2023-08-09.md similarity index 100% rename from source/_daily_emails/2023-08-09.md rename to source/_posts/2023-08-09.md diff --git a/source/_daily_emails/2023-08-10.md b/source/_posts/2023-08-10.md similarity index 100% rename from source/_daily_emails/2023-08-10.md rename to source/_posts/2023-08-10.md diff --git a/source/_daily_emails/2023-08-11.md b/source/_posts/2023-08-11.md similarity index 100% rename from source/_daily_emails/2023-08-11.md rename to source/_posts/2023-08-11.md diff --git a/source/_daily_emails/2023-08-12.md b/source/_posts/2023-08-12.md similarity index 100% rename from source/_daily_emails/2023-08-12.md rename to source/_posts/2023-08-12.md diff --git a/source/_daily_emails/2023-08-13.md b/source/_posts/2023-08-13.md similarity index 100% rename from source/_daily_emails/2023-08-13.md rename to source/_posts/2023-08-13.md diff --git a/source/_daily_emails/2023-08-14.md b/source/_posts/2023-08-14.md similarity index 100% rename from source/_daily_emails/2023-08-14.md rename to source/_posts/2023-08-14.md diff --git a/source/_daily_emails/2023-08-15.md b/source/_posts/2023-08-15.md similarity index 100% rename from source/_daily_emails/2023-08-15.md rename to source/_posts/2023-08-15.md diff --git a/source/_daily_emails/2023-08-16.md b/source/_posts/2023-08-16.md similarity index 100% rename from source/_daily_emails/2023-08-16.md rename to source/_posts/2023-08-16.md diff --git a/source/_daily_emails/2023-08-17.md b/source/_posts/2023-08-17.md similarity index 100% rename from source/_daily_emails/2023-08-17.md rename to source/_posts/2023-08-17.md diff --git a/source/_daily_emails/2023-08-18.md b/source/_posts/2023-08-18.md similarity index 100% rename from source/_daily_emails/2023-08-18.md rename to source/_posts/2023-08-18.md diff --git a/source/_daily_emails/2023-08-19.md b/source/_posts/2023-08-19.md similarity index 100% rename from source/_daily_emails/2023-08-19.md rename to source/_posts/2023-08-19.md diff --git a/source/_daily_emails/2023-08-20.md b/source/_posts/2023-08-20.md similarity index 100% rename from source/_daily_emails/2023-08-20.md rename to source/_posts/2023-08-20.md diff --git a/source/_daily_emails/2023-08-21.md b/source/_posts/2023-08-21.md similarity index 100% rename from source/_daily_emails/2023-08-21.md rename to source/_posts/2023-08-21.md diff --git a/source/_daily_emails/2023-08-22.md b/source/_posts/2023-08-22.md similarity index 100% rename from source/_daily_emails/2023-08-22.md rename to source/_posts/2023-08-22.md diff --git a/source/_daily_emails/2023-08-23.md b/source/_posts/2023-08-23.md similarity index 100% rename from source/_daily_emails/2023-08-23.md rename to source/_posts/2023-08-23.md diff --git a/source/_daily_emails/2023-08-24.md b/source/_posts/2023-08-24.md similarity index 100% rename from source/_daily_emails/2023-08-24.md rename to source/_posts/2023-08-24.md diff --git a/source/_daily_emails/2023-08-25.md b/source/_posts/2023-08-25.md similarity index 100% rename from source/_daily_emails/2023-08-25.md rename to source/_posts/2023-08-25.md diff --git a/source/_daily_emails/2023-08-26.md b/source/_posts/2023-08-26.md similarity index 100% rename from source/_daily_emails/2023-08-26.md rename to source/_posts/2023-08-26.md diff --git a/source/_daily_emails/2023-08-27.md b/source/_posts/2023-08-27.md similarity index 100% rename from source/_daily_emails/2023-08-27.md rename to source/_posts/2023-08-27.md diff --git a/source/_daily_emails/2023-08-28.md b/source/_posts/2023-08-28.md similarity index 100% rename from source/_daily_emails/2023-08-28.md rename to source/_posts/2023-08-28.md diff --git a/source/_daily_emails/2023-08-29.md b/source/_posts/2023-08-29.md similarity index 100% rename from source/_daily_emails/2023-08-29.md rename to source/_posts/2023-08-29.md diff --git a/source/_daily_emails/2023-08-30.md b/source/_posts/2023-08-30.md similarity index 100% rename from source/_daily_emails/2023-08-30.md rename to source/_posts/2023-08-30.md diff --git a/source/_daily_emails/2023-08-31.md b/source/_posts/2023-08-31.md similarity index 100% rename from source/_daily_emails/2023-08-31.md rename to source/_posts/2023-08-31.md diff --git a/source/_daily_emails/2023-09-01.md b/source/_posts/2023-09-01.md similarity index 100% rename from source/_daily_emails/2023-09-01.md rename to source/_posts/2023-09-01.md diff --git a/source/_daily_emails/2023-09-02.md b/source/_posts/2023-09-02.md similarity index 100% rename from source/_daily_emails/2023-09-02.md rename to source/_posts/2023-09-02.md diff --git a/source/_daily_emails/2023-09-03.md b/source/_posts/2023-09-03.md similarity index 100% rename from source/_daily_emails/2023-09-03.md rename to source/_posts/2023-09-03.md diff --git a/source/_daily_emails/2023-09-04.md b/source/_posts/2023-09-04.md similarity index 100% rename from source/_daily_emails/2023-09-04.md rename to source/_posts/2023-09-04.md diff --git a/source/_daily_emails/2023-09-05.md b/source/_posts/2023-09-05.md similarity index 100% rename from source/_daily_emails/2023-09-05.md rename to source/_posts/2023-09-05.md diff --git a/source/_daily_emails/2023-09-06.md b/source/_posts/2023-09-06.md similarity index 100% rename from source/_daily_emails/2023-09-06.md rename to source/_posts/2023-09-06.md diff --git a/source/_daily_emails/2023-09-07.md b/source/_posts/2023-09-07.md similarity index 100% rename from source/_daily_emails/2023-09-07.md rename to source/_posts/2023-09-07.md diff --git a/source/_daily_emails/2023-09-08.md b/source/_posts/2023-09-08.md similarity index 100% rename from source/_daily_emails/2023-09-08.md rename to source/_posts/2023-09-08.md diff --git a/source/_daily_emails/2023-09-09.md b/source/_posts/2023-09-09.md similarity index 100% rename from source/_daily_emails/2023-09-09.md rename to source/_posts/2023-09-09.md diff --git a/source/_daily_emails/2023-09-10.md b/source/_posts/2023-09-10.md similarity index 100% rename from source/_daily_emails/2023-09-10.md rename to source/_posts/2023-09-10.md diff --git a/source/_daily_emails/2023-09-11.md b/source/_posts/2023-09-11.md similarity index 100% rename from source/_daily_emails/2023-09-11.md rename to source/_posts/2023-09-11.md diff --git a/source/_daily_emails/2023-09-12.md b/source/_posts/2023-09-12.md similarity index 100% rename from source/_daily_emails/2023-09-12.md rename to source/_posts/2023-09-12.md diff --git a/source/_daily_emails/2023-09-13.md b/source/_posts/2023-09-13.md similarity index 100% rename from source/_daily_emails/2023-09-13.md rename to source/_posts/2023-09-13.md diff --git a/source/_daily_emails/2023-09-14.md b/source/_posts/2023-09-14.md similarity index 100% rename from source/_daily_emails/2023-09-14.md rename to source/_posts/2023-09-14.md diff --git a/source/_daily_emails/2023-09-15.md b/source/_posts/2023-09-15.md similarity index 100% rename from source/_daily_emails/2023-09-15.md rename to source/_posts/2023-09-15.md diff --git a/source/_daily_emails/2023-09-16.md b/source/_posts/2023-09-16.md similarity index 100% rename from source/_daily_emails/2023-09-16.md rename to source/_posts/2023-09-16.md diff --git a/source/_daily_emails/2023-09-17.md b/source/_posts/2023-09-17.md similarity index 100% rename from source/_daily_emails/2023-09-17.md rename to source/_posts/2023-09-17.md diff --git a/source/_daily_emails/2023-09-18.md b/source/_posts/2023-09-18.md similarity index 100% rename from source/_daily_emails/2023-09-18.md rename to source/_posts/2023-09-18.md diff --git a/source/_daily_emails/2023-09-19.md b/source/_posts/2023-09-19.md similarity index 100% rename from source/_daily_emails/2023-09-19.md rename to source/_posts/2023-09-19.md diff --git a/source/_daily_emails/2023-09-20.md b/source/_posts/2023-09-20.md similarity index 100% rename from source/_daily_emails/2023-09-20.md rename to source/_posts/2023-09-20.md diff --git a/source/_daily_emails/2023-09-21.md b/source/_posts/2023-09-21.md similarity index 100% rename from source/_daily_emails/2023-09-21.md rename to source/_posts/2023-09-21.md diff --git a/source/_daily_emails/2023-09-22.md b/source/_posts/2023-09-22.md similarity index 100% rename from source/_daily_emails/2023-09-22.md rename to source/_posts/2023-09-22.md diff --git a/source/_daily_emails/2023-09-23.md b/source/_posts/2023-09-23.md similarity index 100% rename from source/_daily_emails/2023-09-23.md rename to source/_posts/2023-09-23.md diff --git a/source/_daily_emails/2023-09-24.md b/source/_posts/2023-09-24.md similarity index 100% rename from source/_daily_emails/2023-09-24.md rename to source/_posts/2023-09-24.md diff --git a/source/_daily_emails/2023-09-25.md b/source/_posts/2023-09-25.md similarity index 100% rename from source/_daily_emails/2023-09-25.md rename to source/_posts/2023-09-25.md diff --git a/source/_daily_emails/2023-09-26.md b/source/_posts/2023-09-26.md similarity index 100% rename from source/_daily_emails/2023-09-26.md rename to source/_posts/2023-09-26.md diff --git a/source/_daily_emails/2023-09-27.md b/source/_posts/2023-09-27.md similarity index 100% rename from source/_daily_emails/2023-09-27.md rename to source/_posts/2023-09-27.md diff --git a/source/_daily_emails/2023-09-28.md b/source/_posts/2023-09-28.md similarity index 100% rename from source/_daily_emails/2023-09-28.md rename to source/_posts/2023-09-28.md diff --git a/source/_daily_emails/2023-09-29.md b/source/_posts/2023-09-29.md similarity index 100% rename from source/_daily_emails/2023-09-29.md rename to source/_posts/2023-09-29.md diff --git a/source/_daily_emails/2023-09-30.md b/source/_posts/2023-09-30.md similarity index 100% rename from source/_daily_emails/2023-09-30.md rename to source/_posts/2023-09-30.md diff --git a/source/_daily_emails/2023-10-01.md b/source/_posts/2023-10-01.md similarity index 100% rename from source/_daily_emails/2023-10-01.md rename to source/_posts/2023-10-01.md diff --git a/source/_daily_emails/2023-10-02.md b/source/_posts/2023-10-02.md similarity index 100% rename from source/_daily_emails/2023-10-02.md rename to source/_posts/2023-10-02.md diff --git a/source/_daily_emails/2023-10-03.md b/source/_posts/2023-10-03.md similarity index 100% rename from source/_daily_emails/2023-10-03.md rename to source/_posts/2023-10-03.md diff --git a/source/_daily_emails/2023-10-04.md b/source/_posts/2023-10-04.md similarity index 100% rename from source/_daily_emails/2023-10-04.md rename to source/_posts/2023-10-04.md diff --git a/source/_daily_emails/2023-10-05.md b/source/_posts/2023-10-05.md similarity index 100% rename from source/_daily_emails/2023-10-05.md rename to source/_posts/2023-10-05.md diff --git a/source/_daily_emails/2023-10-06.md b/source/_posts/2023-10-06.md similarity index 100% rename from source/_daily_emails/2023-10-06.md rename to source/_posts/2023-10-06.md diff --git a/source/_daily_emails/2023-10-07.md b/source/_posts/2023-10-07.md similarity index 100% rename from source/_daily_emails/2023-10-07.md rename to source/_posts/2023-10-07.md diff --git a/source/_daily_emails/2023-10-08.md b/source/_posts/2023-10-08.md similarity index 100% rename from source/_daily_emails/2023-10-08.md rename to source/_posts/2023-10-08.md diff --git a/source/_daily_emails/2023-10-09.md b/source/_posts/2023-10-09.md similarity index 100% rename from source/_daily_emails/2023-10-09.md rename to source/_posts/2023-10-09.md diff --git a/source/_daily_emails/2023-10-10.md b/source/_posts/2023-10-10.md similarity index 100% rename from source/_daily_emails/2023-10-10.md rename to source/_posts/2023-10-10.md diff --git a/source/_daily_emails/2023-10-11.md b/source/_posts/2023-10-11.md similarity index 100% rename from source/_daily_emails/2023-10-11.md rename to source/_posts/2023-10-11.md diff --git a/source/_daily_emails/2023-10-12.md b/source/_posts/2023-10-12.md similarity index 100% rename from source/_daily_emails/2023-10-12.md rename to source/_posts/2023-10-12.md diff --git a/source/_daily_emails/2023-10-13.md b/source/_posts/2023-10-13.md similarity index 100% rename from source/_daily_emails/2023-10-13.md rename to source/_posts/2023-10-13.md diff --git a/source/_daily_emails/2023-10-14.md b/source/_posts/2023-10-14.md similarity index 100% rename from source/_daily_emails/2023-10-14.md rename to source/_posts/2023-10-14.md diff --git a/source/_daily_emails/2023-10-15.md b/source/_posts/2023-10-15.md similarity index 100% rename from source/_daily_emails/2023-10-15.md rename to source/_posts/2023-10-15.md diff --git a/source/_daily_emails/2023-10-23.md b/source/_posts/2023-10-23.md similarity index 100% rename from source/_daily_emails/2023-10-23.md rename to source/_posts/2023-10-23.md diff --git a/source/_daily_emails/2023-10-24.md b/source/_posts/2023-10-24.md similarity index 100% rename from source/_daily_emails/2023-10-24.md rename to source/_posts/2023-10-24.md diff --git a/source/_daily_emails/2023-10-25.md b/source/_posts/2023-10-25.md similarity index 100% rename from source/_daily_emails/2023-10-25.md rename to source/_posts/2023-10-25.md diff --git a/source/_daily_emails/2023-10-26.md b/source/_posts/2023-10-26.md similarity index 100% rename from source/_daily_emails/2023-10-26.md rename to source/_posts/2023-10-26.md diff --git a/source/_daily_emails/2023-10-27.md b/source/_posts/2023-10-27.md similarity index 100% rename from source/_daily_emails/2023-10-27.md rename to source/_posts/2023-10-27.md diff --git a/source/_daily_emails/2023-10-28.md b/source/_posts/2023-10-28.md similarity index 100% rename from source/_daily_emails/2023-10-28.md rename to source/_posts/2023-10-28.md diff --git a/source/_daily_emails/2023-10-29.md b/source/_posts/2023-10-29.md similarity index 100% rename from source/_daily_emails/2023-10-29.md rename to source/_posts/2023-10-29.md diff --git a/source/_daily_emails/2023-10-30.md b/source/_posts/2023-10-30.md similarity index 100% rename from source/_daily_emails/2023-10-30.md rename to source/_posts/2023-10-30.md diff --git a/source/_daily_emails/2023-10-31.md b/source/_posts/2023-10-31.md similarity index 100% rename from source/_daily_emails/2023-10-31.md rename to source/_posts/2023-10-31.md diff --git a/source/_daily_emails/2023-11-01.md b/source/_posts/2023-11-01.md similarity index 100% rename from source/_daily_emails/2023-11-01.md rename to source/_posts/2023-11-01.md diff --git a/source/_daily_emails/2023-11-02.md b/source/_posts/2023-11-02.md similarity index 100% rename from source/_daily_emails/2023-11-02.md rename to source/_posts/2023-11-02.md diff --git a/source/_daily_emails/2023-11-03.md b/source/_posts/2023-11-03.md similarity index 100% rename from source/_daily_emails/2023-11-03.md rename to source/_posts/2023-11-03.md diff --git a/source/_daily_emails/2023-11-04.md b/source/_posts/2023-11-04.md similarity index 100% rename from source/_daily_emails/2023-11-04.md rename to source/_posts/2023-11-04.md diff --git a/source/_daily_emails/2023-11-05.md b/source/_posts/2023-11-05.md similarity index 100% rename from source/_daily_emails/2023-11-05.md rename to source/_posts/2023-11-05.md diff --git a/source/_daily_emails/2023-11-06.md b/source/_posts/2023-11-06.md similarity index 100% rename from source/_daily_emails/2023-11-06.md rename to source/_posts/2023-11-06.md diff --git a/source/_daily_emails/2023-11-07.md b/source/_posts/2023-11-07.md similarity index 100% rename from source/_daily_emails/2023-11-07.md rename to source/_posts/2023-11-07.md diff --git a/source/_daily_emails/2023-11-08.md b/source/_posts/2023-11-08.md similarity index 100% rename from source/_daily_emails/2023-11-08.md rename to source/_posts/2023-11-08.md diff --git a/source/_daily_emails/2023-11-09.md b/source/_posts/2023-11-09.md similarity index 100% rename from source/_daily_emails/2023-11-09.md rename to source/_posts/2023-11-09.md diff --git a/source/_daily_emails/2023-11-10.md b/source/_posts/2023-11-10.md similarity index 100% rename from source/_daily_emails/2023-11-10.md rename to source/_posts/2023-11-10.md diff --git a/source/_daily_emails/2023-11-11.md b/source/_posts/2023-11-11.md similarity index 100% rename from source/_daily_emails/2023-11-11.md rename to source/_posts/2023-11-11.md diff --git a/source/_daily_emails/2023-11-12.md b/source/_posts/2023-11-12.md similarity index 100% rename from source/_daily_emails/2023-11-12.md rename to source/_posts/2023-11-12.md diff --git a/source/_daily_emails/2023-11-13.md b/source/_posts/2023-11-13.md similarity index 100% rename from source/_daily_emails/2023-11-13.md rename to source/_posts/2023-11-13.md diff --git a/source/_daily_emails/2023-11-14.md b/source/_posts/2023-11-14.md similarity index 100% rename from source/_daily_emails/2023-11-14.md rename to source/_posts/2023-11-14.md diff --git a/source/_daily_emails/2023-11-15.md b/source/_posts/2023-11-15.md similarity index 100% rename from source/_daily_emails/2023-11-15.md rename to source/_posts/2023-11-15.md diff --git a/source/_daily_emails/2023-11-16.md b/source/_posts/2023-11-16.md similarity index 100% rename from source/_daily_emails/2023-11-16.md rename to source/_posts/2023-11-16.md diff --git a/source/_daily_emails/2023-11-17.md b/source/_posts/2023-11-17.md similarity index 100% rename from source/_daily_emails/2023-11-17.md rename to source/_posts/2023-11-17.md diff --git a/source/_daily_emails/2023-11-18.md b/source/_posts/2023-11-18.md similarity index 100% rename from source/_daily_emails/2023-11-18.md rename to source/_posts/2023-11-18.md diff --git a/source/_daily_emails/2023-11-19.md b/source/_posts/2023-11-19.md similarity index 100% rename from source/_daily_emails/2023-11-19.md rename to source/_posts/2023-11-19.md diff --git a/source/_daily_emails/2023-11-20.md b/source/_posts/2023-11-20.md similarity index 100% rename from source/_daily_emails/2023-11-20.md rename to source/_posts/2023-11-20.md diff --git a/source/_daily_emails/2023-11-21.md b/source/_posts/2023-11-21.md similarity index 100% rename from source/_daily_emails/2023-11-21.md rename to source/_posts/2023-11-21.md diff --git a/source/_daily_emails/2023-11-22.md b/source/_posts/2023-11-22.md similarity index 100% rename from source/_daily_emails/2023-11-22.md rename to source/_posts/2023-11-22.md diff --git a/source/_daily_emails/2023-11-23.md b/source/_posts/2023-11-23.md similarity index 100% rename from source/_daily_emails/2023-11-23.md rename to source/_posts/2023-11-23.md diff --git a/source/_daily_emails/2023-11-24.md b/source/_posts/2023-11-24.md similarity index 100% rename from source/_daily_emails/2023-11-24.md rename to source/_posts/2023-11-24.md diff --git a/source/_daily_emails/2023-11-25.md b/source/_posts/2023-11-25.md similarity index 100% rename from source/_daily_emails/2023-11-25.md rename to source/_posts/2023-11-25.md diff --git a/source/_daily_emails/2023-11-26.md b/source/_posts/2023-11-26.md similarity index 100% rename from source/_daily_emails/2023-11-26.md rename to source/_posts/2023-11-26.md diff --git a/source/_daily_emails/2023-11-27.md b/source/_posts/2023-11-27.md similarity index 100% rename from source/_daily_emails/2023-11-27.md rename to source/_posts/2023-11-27.md diff --git a/source/_daily_emails/2023-11-28.md b/source/_posts/2023-11-28.md similarity index 100% rename from source/_daily_emails/2023-11-28.md rename to source/_posts/2023-11-28.md diff --git a/source/_daily_emails/2023-11-29.md b/source/_posts/2023-11-29.md similarity index 100% rename from source/_daily_emails/2023-11-29.md rename to source/_posts/2023-11-29.md diff --git a/source/_daily_emails/2023-11-30.md b/source/_posts/2023-11-30.md similarity index 100% rename from source/_daily_emails/2023-11-30.md rename to source/_posts/2023-11-30.md diff --git a/source/_daily_emails/2023-12-01.md b/source/_posts/2023-12-01.md similarity index 100% rename from source/_daily_emails/2023-12-01.md rename to source/_posts/2023-12-01.md diff --git a/source/_daily_emails/2023-12-04.md b/source/_posts/2023-12-04.md similarity index 100% rename from source/_daily_emails/2023-12-04.md rename to source/_posts/2023-12-04.md diff --git a/source/_daily_emails/2023-12-05.md b/source/_posts/2023-12-05.md similarity index 100% rename from source/_daily_emails/2023-12-05.md rename to source/_posts/2023-12-05.md diff --git a/source/_daily_emails/2023-12-06.md b/source/_posts/2023-12-06.md similarity index 100% rename from source/_daily_emails/2023-12-06.md rename to source/_posts/2023-12-06.md diff --git a/source/_daily_emails/2023-12-07.md b/source/_posts/2023-12-07.md similarity index 100% rename from source/_daily_emails/2023-12-07.md rename to source/_posts/2023-12-07.md diff --git a/source/_daily_emails/2023-12-08.md b/source/_posts/2023-12-08.md similarity index 100% rename from source/_daily_emails/2023-12-08.md rename to source/_posts/2023-12-08.md diff --git a/source/_daily_emails/2023-12-09.md b/source/_posts/2023-12-09.md similarity index 100% rename from source/_daily_emails/2023-12-09.md rename to source/_posts/2023-12-09.md diff --git a/source/_daily_emails/2023-12-10.md b/source/_posts/2023-12-10.md similarity index 100% rename from source/_daily_emails/2023-12-10.md rename to source/_posts/2023-12-10.md diff --git a/source/_daily_emails/2023-12-11.md b/source/_posts/2023-12-11.md similarity index 100% rename from source/_daily_emails/2023-12-11.md rename to source/_posts/2023-12-11.md diff --git a/source/_daily_emails/2023-12-12.md b/source/_posts/2023-12-12.md similarity index 100% rename from source/_daily_emails/2023-12-12.md rename to source/_posts/2023-12-12.md diff --git a/source/_daily_emails/2023-12-13.md b/source/_posts/2023-12-13.md similarity index 100% rename from source/_daily_emails/2023-12-13.md rename to source/_posts/2023-12-13.md diff --git a/source/_daily_emails/2023-12-14.md b/source/_posts/2023-12-14.md similarity index 100% rename from source/_daily_emails/2023-12-14.md rename to source/_posts/2023-12-14.md diff --git a/source/_daily_emails/2023-12-15.md b/source/_posts/2023-12-15.md similarity index 100% rename from source/_daily_emails/2023-12-15.md rename to source/_posts/2023-12-15.md diff --git a/source/_daily_emails/2023-12-16.md b/source/_posts/2023-12-16.md similarity index 100% rename from source/_daily_emails/2023-12-16.md rename to source/_posts/2023-12-16.md diff --git a/source/_daily_emails/2023-12-17.md b/source/_posts/2023-12-17.md similarity index 100% rename from source/_daily_emails/2023-12-17.md rename to source/_posts/2023-12-17.md diff --git a/source/_daily_emails/2023-12-18.md b/source/_posts/2023-12-18.md similarity index 100% rename from source/_daily_emails/2023-12-18.md rename to source/_posts/2023-12-18.md diff --git a/source/_daily_emails/2023-12-19.md b/source/_posts/2023-12-19.md similarity index 100% rename from source/_daily_emails/2023-12-19.md rename to source/_posts/2023-12-19.md diff --git a/source/_daily_emails/2023-12-20.md b/source/_posts/2023-12-20.md similarity index 100% rename from source/_daily_emails/2023-12-20.md rename to source/_posts/2023-12-20.md diff --git a/source/_daily_emails/2023-12-21.md b/source/_posts/2023-12-21.md similarity index 100% rename from source/_daily_emails/2023-12-21.md rename to source/_posts/2023-12-21.md diff --git a/source/_daily_emails/2023-12-22.md b/source/_posts/2023-12-22.md similarity index 100% rename from source/_daily_emails/2023-12-22.md rename to source/_posts/2023-12-22.md diff --git a/source/_daily_emails/2023-12-23.md b/source/_posts/2023-12-23.md similarity index 100% rename from source/_daily_emails/2023-12-23.md rename to source/_posts/2023-12-23.md diff --git a/source/_daily_emails/2023-12-24.md b/source/_posts/2023-12-24.md similarity index 100% rename from source/_daily_emails/2023-12-24.md rename to source/_posts/2023-12-24.md diff --git a/source/_daily_emails/2023-12-25.md b/source/_posts/2023-12-25.md similarity index 100% rename from source/_daily_emails/2023-12-25.md rename to source/_posts/2023-12-25.md diff --git a/source/_daily_emails/2023-12-26.md b/source/_posts/2023-12-26.md similarity index 100% rename from source/_daily_emails/2023-12-26.md rename to source/_posts/2023-12-26.md diff --git a/source/_daily_emails/2023-12-27.md b/source/_posts/2023-12-27.md similarity index 100% rename from source/_daily_emails/2023-12-27.md rename to source/_posts/2023-12-27.md diff --git a/source/_daily_emails/2023-12-28.md b/source/_posts/2023-12-28.md similarity index 100% rename from source/_daily_emails/2023-12-28.md rename to source/_posts/2023-12-28.md diff --git a/source/_daily_emails/2023-12-29.md b/source/_posts/2023-12-29.md similarity index 100% rename from source/_daily_emails/2023-12-29.md rename to source/_posts/2023-12-29.md diff --git a/source/_daily_emails/2023-12-30.md b/source/_posts/2023-12-30.md similarity index 100% rename from source/_daily_emails/2023-12-30.md rename to source/_posts/2023-12-30.md diff --git a/source/_daily_emails/2023-12-31.md b/source/_posts/2023-12-31.md similarity index 100% rename from source/_daily_emails/2023-12-31.md rename to source/_posts/2023-12-31.md diff --git a/source/_daily_emails/2024-01-01.md b/source/_posts/2024-01-01.md similarity index 100% rename from source/_daily_emails/2024-01-01.md rename to source/_posts/2024-01-01.md diff --git a/source/_daily_emails/2024-01-02.md b/source/_posts/2024-01-02.md similarity index 100% rename from source/_daily_emails/2024-01-02.md rename to source/_posts/2024-01-02.md diff --git a/source/_daily_emails/2024-01-03.md b/source/_posts/2024-01-03.md similarity index 100% rename from source/_daily_emails/2024-01-03.md rename to source/_posts/2024-01-03.md diff --git a/source/_daily_emails/2024-01-04.md b/source/_posts/2024-01-04.md similarity index 100% rename from source/_daily_emails/2024-01-04.md rename to source/_posts/2024-01-04.md diff --git a/source/_daily_emails/2024-01-05.md b/source/_posts/2024-01-05.md similarity index 100% rename from source/_daily_emails/2024-01-05.md rename to source/_posts/2024-01-05.md diff --git a/source/_daily_emails/2024-01-06.md b/source/_posts/2024-01-06.md similarity index 100% rename from source/_daily_emails/2024-01-06.md rename to source/_posts/2024-01-06.md diff --git a/source/_daily_emails/2024-01-07.md b/source/_posts/2024-01-07.md similarity index 100% rename from source/_daily_emails/2024-01-07.md rename to source/_posts/2024-01-07.md diff --git a/source/_daily_emails/2024-01-08.md b/source/_posts/2024-01-08.md similarity index 100% rename from source/_daily_emails/2024-01-08.md rename to source/_posts/2024-01-08.md diff --git a/source/_daily_emails/2024-01-09.md b/source/_posts/2024-01-09.md similarity index 100% rename from source/_daily_emails/2024-01-09.md rename to source/_posts/2024-01-09.md diff --git a/source/_daily_emails/2024-01-10.md b/source/_posts/2024-01-10.md similarity index 100% rename from source/_daily_emails/2024-01-10.md rename to source/_posts/2024-01-10.md diff --git a/source/_daily_emails/2024-01-11.md b/source/_posts/2024-01-11.md similarity index 100% rename from source/_daily_emails/2024-01-11.md rename to source/_posts/2024-01-11.md diff --git a/source/_daily_emails/2024-01-12.md b/source/_posts/2024-01-12.md similarity index 100% rename from source/_daily_emails/2024-01-12.md rename to source/_posts/2024-01-12.md diff --git a/source/_daily_emails/2024-01-13.md b/source/_posts/2024-01-13.md similarity index 100% rename from source/_daily_emails/2024-01-13.md rename to source/_posts/2024-01-13.md diff --git a/source/_daily_emails/2024-01-14.md b/source/_posts/2024-01-14.md similarity index 100% rename from source/_daily_emails/2024-01-14.md rename to source/_posts/2024-01-14.md diff --git a/source/_daily_emails/2024-01-15.md b/source/_posts/2024-01-15.md similarity index 100% rename from source/_daily_emails/2024-01-15.md rename to source/_posts/2024-01-15.md diff --git a/source/_daily_emails/2024-01-16.md b/source/_posts/2024-01-16.md similarity index 100% rename from source/_daily_emails/2024-01-16.md rename to source/_posts/2024-01-16.md diff --git a/source/_daily_emails/2024-01-17.md b/source/_posts/2024-01-17.md similarity index 100% rename from source/_daily_emails/2024-01-17.md rename to source/_posts/2024-01-17.md diff --git a/source/_daily_emails/2024-01-18.md b/source/_posts/2024-01-18.md similarity index 100% rename from source/_daily_emails/2024-01-18.md rename to source/_posts/2024-01-18.md diff --git a/source/_daily_emails/2024-01-19.md b/source/_posts/2024-01-19.md similarity index 100% rename from source/_daily_emails/2024-01-19.md rename to source/_posts/2024-01-19.md diff --git a/source/_daily_emails/2024-01-20.md b/source/_posts/2024-01-20.md similarity index 100% rename from source/_daily_emails/2024-01-20.md rename to source/_posts/2024-01-20.md diff --git a/source/_daily_emails/2024-01-21.md b/source/_posts/2024-01-21.md similarity index 100% rename from source/_daily_emails/2024-01-21.md rename to source/_posts/2024-01-21.md diff --git a/source/_daily_emails/2024-01-22.md b/source/_posts/2024-01-22.md similarity index 100% rename from source/_daily_emails/2024-01-22.md rename to source/_posts/2024-01-22.md diff --git a/source/_daily_emails/2024-01-23.md b/source/_posts/2024-01-23.md similarity index 100% rename from source/_daily_emails/2024-01-23.md rename to source/_posts/2024-01-23.md diff --git a/source/_daily_emails/2024-01-24.md b/source/_posts/2024-01-24.md similarity index 100% rename from source/_daily_emails/2024-01-24.md rename to source/_posts/2024-01-24.md diff --git a/source/_daily_emails/2024-01-25.md b/source/_posts/2024-01-25.md similarity index 100% rename from source/_daily_emails/2024-01-25.md rename to source/_posts/2024-01-25.md diff --git a/source/_daily_emails/2024-01-26.md b/source/_posts/2024-01-26.md similarity index 100% rename from source/_daily_emails/2024-01-26.md rename to source/_posts/2024-01-26.md diff --git a/source/_daily_emails/2024-01-27.md b/source/_posts/2024-01-27.md similarity index 100% rename from source/_daily_emails/2024-01-27.md rename to source/_posts/2024-01-27.md diff --git a/source/_daily_emails/2024-01-28.md b/source/_posts/2024-01-28.md similarity index 100% rename from source/_daily_emails/2024-01-28.md rename to source/_posts/2024-01-28.md diff --git a/source/_daily_emails/2024-01-29.md b/source/_posts/2024-01-29.md similarity index 100% rename from source/_daily_emails/2024-01-29.md rename to source/_posts/2024-01-29.md diff --git a/source/_daily_emails/2024-01-30.md b/source/_posts/2024-01-30.md similarity index 100% rename from source/_daily_emails/2024-01-30.md rename to source/_posts/2024-01-30.md diff --git a/source/_daily_emails/2024-01-31.md b/source/_posts/2024-01-31.md similarity index 100% rename from source/_daily_emails/2024-01-31.md rename to source/_posts/2024-01-31.md diff --git a/source/_daily_emails/2024-02-01.md b/source/_posts/2024-02-01.md similarity index 100% rename from source/_daily_emails/2024-02-01.md rename to source/_posts/2024-02-01.md diff --git a/source/_daily_emails/2024-02-02.md b/source/_posts/2024-02-02.md similarity index 100% rename from source/_daily_emails/2024-02-02.md rename to source/_posts/2024-02-02.md diff --git a/source/_daily_emails/2024-02-03.md b/source/_posts/2024-02-03.md similarity index 100% rename from source/_daily_emails/2024-02-03.md rename to source/_posts/2024-02-03.md diff --git a/source/_daily_emails/2024-02-04.md b/source/_posts/2024-02-04.md similarity index 100% rename from source/_daily_emails/2024-02-04.md rename to source/_posts/2024-02-04.md diff --git a/source/_daily_emails/2024-02-05.md b/source/_posts/2024-02-05.md similarity index 100% rename from source/_daily_emails/2024-02-05.md rename to source/_posts/2024-02-05.md diff --git a/source/_daily_emails/2024-02-06.md b/source/_posts/2024-02-06.md similarity index 100% rename from source/_daily_emails/2024-02-06.md rename to source/_posts/2024-02-06.md diff --git a/source/_daily_emails/2024-02-07.md b/source/_posts/2024-02-07.md similarity index 100% rename from source/_daily_emails/2024-02-07.md rename to source/_posts/2024-02-07.md diff --git a/source/_daily_emails/2024-02-08.md b/source/_posts/2024-02-08.md similarity index 100% rename from source/_daily_emails/2024-02-08.md rename to source/_posts/2024-02-08.md diff --git a/source/_daily_emails/2024-02-09.md b/source/_posts/2024-02-09.md similarity index 100% rename from source/_daily_emails/2024-02-09.md rename to source/_posts/2024-02-09.md diff --git a/source/_daily_emails/2024-02-10.md b/source/_posts/2024-02-10.md similarity index 100% rename from source/_daily_emails/2024-02-10.md rename to source/_posts/2024-02-10.md diff --git a/source/_daily_emails/2024-02-11.md b/source/_posts/2024-02-11.md similarity index 100% rename from source/_daily_emails/2024-02-11.md rename to source/_posts/2024-02-11.md diff --git a/source/_daily_emails/2024-02-12.md b/source/_posts/2024-02-12.md similarity index 100% rename from source/_daily_emails/2024-02-12.md rename to source/_posts/2024-02-12.md diff --git a/source/_daily_emails/2024-02-13.md b/source/_posts/2024-02-13.md similarity index 100% rename from source/_daily_emails/2024-02-13.md rename to source/_posts/2024-02-13.md diff --git a/source/_daily_emails/2024-02-14.md b/source/_posts/2024-02-14.md similarity index 100% rename from source/_daily_emails/2024-02-14.md rename to source/_posts/2024-02-14.md diff --git a/source/_daily_emails/2024-02-15.md b/source/_posts/2024-02-15.md similarity index 100% rename from source/_daily_emails/2024-02-15.md rename to source/_posts/2024-02-15.md diff --git a/source/_daily_emails/2024-02-16.md b/source/_posts/2024-02-16.md similarity index 100% rename from source/_daily_emails/2024-02-16.md rename to source/_posts/2024-02-16.md diff --git a/source/_daily_emails/2024-02-17.md b/source/_posts/2024-02-17.md similarity index 100% rename from source/_daily_emails/2024-02-17.md rename to source/_posts/2024-02-17.md diff --git a/source/_daily_emails/2024-02-18.md b/source/_posts/2024-02-18.md similarity index 100% rename from source/_daily_emails/2024-02-18.md rename to source/_posts/2024-02-18.md diff --git a/source/_daily_emails/2024-02-19.md b/source/_posts/2024-02-19.md similarity index 100% rename from source/_daily_emails/2024-02-19.md rename to source/_posts/2024-02-19.md diff --git a/source/_daily_emails/2024-02-20.md b/source/_posts/2024-02-20.md similarity index 100% rename from source/_daily_emails/2024-02-20.md rename to source/_posts/2024-02-20.md diff --git a/source/_daily_emails/2024-02-21.md b/source/_posts/2024-02-21.md similarity index 100% rename from source/_daily_emails/2024-02-21.md rename to source/_posts/2024-02-21.md diff --git a/source/_daily_emails/2024-02-22.md b/source/_posts/2024-02-22.md similarity index 100% rename from source/_daily_emails/2024-02-22.md rename to source/_posts/2024-02-22.md diff --git a/source/_daily_emails/2024-02-23.md b/source/_posts/2024-02-23.md similarity index 100% rename from source/_daily_emails/2024-02-23.md rename to source/_posts/2024-02-23.md diff --git a/source/_daily_emails/2024-02-24.md b/source/_posts/2024-02-24.md similarity index 100% rename from source/_daily_emails/2024-02-24.md rename to source/_posts/2024-02-24.md diff --git a/source/_daily_emails/2024-02-25.md b/source/_posts/2024-02-25.md similarity index 100% rename from source/_daily_emails/2024-02-25.md rename to source/_posts/2024-02-25.md diff --git a/source/_daily_emails/2024-02-26.md b/source/_posts/2024-02-26.md similarity index 100% rename from source/_daily_emails/2024-02-26.md rename to source/_posts/2024-02-26.md diff --git a/source/_daily_emails/2024-02-27.md b/source/_posts/2024-02-27.md similarity index 100% rename from source/_daily_emails/2024-02-27.md rename to source/_posts/2024-02-27.md diff --git a/source/_daily_emails/2024-02-28.md b/source/_posts/2024-02-28.md similarity index 100% rename from source/_daily_emails/2024-02-28.md rename to source/_posts/2024-02-28.md diff --git a/source/_daily_emails/2024-02-29.md b/source/_posts/2024-02-29.md similarity index 100% rename from source/_daily_emails/2024-02-29.md rename to source/_posts/2024-02-29.md diff --git a/source/_daily_emails/2024-03-01.md b/source/_posts/2024-03-01.md similarity index 100% rename from source/_daily_emails/2024-03-01.md rename to source/_posts/2024-03-01.md diff --git a/source/_daily_emails/2024-03-02.md b/source/_posts/2024-03-02.md similarity index 100% rename from source/_daily_emails/2024-03-02.md rename to source/_posts/2024-03-02.md diff --git a/source/_daily_emails/2024-03-03.md b/source/_posts/2024-03-03.md similarity index 100% rename from source/_daily_emails/2024-03-03.md rename to source/_posts/2024-03-03.md diff --git a/source/_daily_emails/2024-03-04.md b/source/_posts/2024-03-04.md similarity index 100% rename from source/_daily_emails/2024-03-04.md rename to source/_posts/2024-03-04.md diff --git a/source/_daily_emails/2024-03-05.md b/source/_posts/2024-03-05.md similarity index 100% rename from source/_daily_emails/2024-03-05.md rename to source/_posts/2024-03-05.md diff --git a/source/_daily_emails/2024-03-06.md b/source/_posts/2024-03-06.md similarity index 100% rename from source/_daily_emails/2024-03-06.md rename to source/_posts/2024-03-06.md diff --git a/source/_daily_emails/2024-03-07.md b/source/_posts/2024-03-07.md similarity index 100% rename from source/_daily_emails/2024-03-07.md rename to source/_posts/2024-03-07.md diff --git a/source/_daily_emails/2024-03-08.md b/source/_posts/2024-03-08.md similarity index 100% rename from source/_daily_emails/2024-03-08.md rename to source/_posts/2024-03-08.md diff --git a/source/_daily_emails/2024-03-09.md b/source/_posts/2024-03-09.md similarity index 100% rename from source/_daily_emails/2024-03-09.md rename to source/_posts/2024-03-09.md diff --git a/source/_daily_emails/2024-03-10.md b/source/_posts/2024-03-10.md similarity index 100% rename from source/_daily_emails/2024-03-10.md rename to source/_posts/2024-03-10.md diff --git a/source/_daily_emails/2024-03-11.md b/source/_posts/2024-03-11.md similarity index 100% rename from source/_daily_emails/2024-03-11.md rename to source/_posts/2024-03-11.md diff --git a/source/_daily_emails/2024-03-12.md b/source/_posts/2024-03-12.md similarity index 100% rename from source/_daily_emails/2024-03-12.md rename to source/_posts/2024-03-12.md diff --git a/source/_daily_emails/2024-03-13.md b/source/_posts/2024-03-13.md similarity index 100% rename from source/_daily_emails/2024-03-13.md rename to source/_posts/2024-03-13.md diff --git a/source/_daily_emails/2024-03-14.md b/source/_posts/2024-03-14.md similarity index 100% rename from source/_daily_emails/2024-03-14.md rename to source/_posts/2024-03-14.md diff --git a/source/_daily_emails/2024-03-15.md b/source/_posts/2024-03-15.md similarity index 100% rename from source/_daily_emails/2024-03-15.md rename to source/_posts/2024-03-15.md diff --git a/source/_daily_emails/2024-03-16.md b/source/_posts/2024-03-16.md similarity index 100% rename from source/_daily_emails/2024-03-16.md rename to source/_posts/2024-03-16.md diff --git a/source/_daily_emails/2024-03-17.md b/source/_posts/2024-03-17.md similarity index 100% rename from source/_daily_emails/2024-03-17.md rename to source/_posts/2024-03-17.md diff --git a/source/_daily_emails/2024-03-18.md b/source/_posts/2024-03-18.md similarity index 100% rename from source/_daily_emails/2024-03-18.md rename to source/_posts/2024-03-18.md diff --git a/source/_daily_emails/2024-03-19.md b/source/_posts/2024-03-19.md similarity index 100% rename from source/_daily_emails/2024-03-19.md rename to source/_posts/2024-03-19.md diff --git a/source/_daily_emails/2024-03-20.md b/source/_posts/2024-03-20.md similarity index 100% rename from source/_daily_emails/2024-03-20.md rename to source/_posts/2024-03-20.md diff --git a/source/_daily_emails/2024-03-21.md b/source/_posts/2024-03-21.md similarity index 100% rename from source/_daily_emails/2024-03-21.md rename to source/_posts/2024-03-21.md diff --git a/source/_daily_emails/2024-03-22.md b/source/_posts/2024-03-22.md similarity index 100% rename from source/_daily_emails/2024-03-22.md rename to source/_posts/2024-03-22.md diff --git a/source/_daily_emails/2024-03-23.md b/source/_posts/2024-03-23.md similarity index 100% rename from source/_daily_emails/2024-03-23.md rename to source/_posts/2024-03-23.md diff --git a/source/_daily_emails/2024-03-24.md b/source/_posts/2024-03-24.md similarity index 100% rename from source/_daily_emails/2024-03-24.md rename to source/_posts/2024-03-24.md diff --git a/source/_daily_emails/2024-03-25.md b/source/_posts/2024-03-25.md similarity index 100% rename from source/_daily_emails/2024-03-25.md rename to source/_posts/2024-03-25.md diff --git a/source/_daily_emails/2024-03-26.md b/source/_posts/2024-03-26.md similarity index 100% rename from source/_daily_emails/2024-03-26.md rename to source/_posts/2024-03-26.md diff --git a/source/_daily_emails/2024-03-27.md b/source/_posts/2024-03-27.md similarity index 100% rename from source/_daily_emails/2024-03-27.md rename to source/_posts/2024-03-27.md diff --git a/source/_daily_emails/2024-03-28.md b/source/_posts/2024-03-28.md similarity index 100% rename from source/_daily_emails/2024-03-28.md rename to source/_posts/2024-03-28.md diff --git a/source/_daily_emails/2024-03-29.md b/source/_posts/2024-03-29.md similarity index 100% rename from source/_daily_emails/2024-03-29.md rename to source/_posts/2024-03-29.md diff --git a/source/_daily_emails/2024-03-30.md b/source/_posts/2024-03-30.md similarity index 100% rename from source/_daily_emails/2024-03-30.md rename to source/_posts/2024-03-30.md diff --git a/source/_daily_emails/2024-03-31.md b/source/_posts/2024-03-31.md similarity index 100% rename from source/_daily_emails/2024-03-31.md rename to source/_posts/2024-03-31.md diff --git a/source/_daily_emails/2024-04-01.md b/source/_posts/2024-04-01.md similarity index 100% rename from source/_daily_emails/2024-04-01.md rename to source/_posts/2024-04-01.md diff --git a/source/_daily_emails/2024-04-02.md b/source/_posts/2024-04-02.md similarity index 100% rename from source/_daily_emails/2024-04-02.md rename to source/_posts/2024-04-02.md diff --git a/source/_daily_emails/2024-04-03.md b/source/_posts/2024-04-03.md similarity index 100% rename from source/_daily_emails/2024-04-03.md rename to source/_posts/2024-04-03.md diff --git a/source/_daily_emails/2024-04-04.md b/source/_posts/2024-04-04.md similarity index 100% rename from source/_daily_emails/2024-04-04.md rename to source/_posts/2024-04-04.md diff --git a/source/_daily_emails/2024-04-05.md b/source/_posts/2024-04-05.md similarity index 100% rename from source/_daily_emails/2024-04-05.md rename to source/_posts/2024-04-05.md diff --git a/source/_daily_emails/2024-04-06.md b/source/_posts/2024-04-06.md similarity index 100% rename from source/_daily_emails/2024-04-06.md rename to source/_posts/2024-04-06.md diff --git a/source/_daily_emails/2024-04-07.md b/source/_posts/2024-04-07.md similarity index 100% rename from source/_daily_emails/2024-04-07.md rename to source/_posts/2024-04-07.md diff --git a/source/_daily_emails/2024-04-08.md b/source/_posts/2024-04-08.md similarity index 100% rename from source/_daily_emails/2024-04-08.md rename to source/_posts/2024-04-08.md diff --git a/source/_daily_emails/2024-04-09.md b/source/_posts/2024-04-09.md similarity index 100% rename from source/_daily_emails/2024-04-09.md rename to source/_posts/2024-04-09.md diff --git a/source/_daily_emails/2024-04-10.md b/source/_posts/2024-04-10.md similarity index 100% rename from source/_daily_emails/2024-04-10.md rename to source/_posts/2024-04-10.md diff --git a/source/_daily_emails/2024-04-11.md b/source/_posts/2024-04-11.md similarity index 100% rename from source/_daily_emails/2024-04-11.md rename to source/_posts/2024-04-11.md diff --git a/source/_daily_emails/2024-04-12.md b/source/_posts/2024-04-12.md similarity index 100% rename from source/_daily_emails/2024-04-12.md rename to source/_posts/2024-04-12.md diff --git a/source/_daily_emails/2024-04-13.md b/source/_posts/2024-04-13.md similarity index 100% rename from source/_daily_emails/2024-04-13.md rename to source/_posts/2024-04-13.md diff --git a/source/_daily_emails/2024-04-14.md b/source/_posts/2024-04-14.md similarity index 100% rename from source/_daily_emails/2024-04-14.md rename to source/_posts/2024-04-14.md diff --git a/source/_daily_emails/2024-04-15.md b/source/_posts/2024-04-15.md similarity index 100% rename from source/_daily_emails/2024-04-15.md rename to source/_posts/2024-04-15.md diff --git a/source/_daily_emails/2024-04-16.md b/source/_posts/2024-04-16.md similarity index 100% rename from source/_daily_emails/2024-04-16.md rename to source/_posts/2024-04-16.md diff --git a/source/_daily_emails/2024-04-17.md b/source/_posts/2024-04-17.md similarity index 100% rename from source/_daily_emails/2024-04-17.md rename to source/_posts/2024-04-17.md diff --git a/source/_daily_emails/2024-04-18.md b/source/_posts/2024-04-18.md similarity index 100% rename from source/_daily_emails/2024-04-18.md rename to source/_posts/2024-04-18.md diff --git a/source/_daily_emails/2024-04-19.md b/source/_posts/2024-04-19.md similarity index 100% rename from source/_daily_emails/2024-04-19.md rename to source/_posts/2024-04-19.md diff --git a/source/_daily_emails/2024-04-20.md b/source/_posts/2024-04-20.md similarity index 100% rename from source/_daily_emails/2024-04-20.md rename to source/_posts/2024-04-20.md diff --git a/source/_daily_emails/2024-04-21.md b/source/_posts/2024-04-21.md similarity index 100% rename from source/_daily_emails/2024-04-21.md rename to source/_posts/2024-04-21.md diff --git a/source/_daily_emails/2024-04-22.md b/source/_posts/2024-04-22.md similarity index 100% rename from source/_daily_emails/2024-04-22.md rename to source/_posts/2024-04-22.md diff --git a/source/_daily_emails/2024-04-23.md b/source/_posts/2024-04-23.md similarity index 100% rename from source/_daily_emails/2024-04-23.md rename to source/_posts/2024-04-23.md diff --git a/source/_daily_emails/2024-04-24.md b/source/_posts/2024-04-24.md similarity index 100% rename from source/_daily_emails/2024-04-24.md rename to source/_posts/2024-04-24.md diff --git a/source/_daily_emails/2024-04-25.md b/source/_posts/2024-04-25.md similarity index 100% rename from source/_daily_emails/2024-04-25.md rename to source/_posts/2024-04-25.md diff --git a/source/_daily_emails/2024-04-26.md b/source/_posts/2024-04-26.md similarity index 100% rename from source/_daily_emails/2024-04-26.md rename to source/_posts/2024-04-26.md diff --git a/source/_daily_emails/2024-04-27.md b/source/_posts/2024-04-27.md similarity index 100% rename from source/_daily_emails/2024-04-27.md rename to source/_posts/2024-04-27.md diff --git a/source/_daily_emails/2024-04-28.md b/source/_posts/2024-04-28.md similarity index 100% rename from source/_daily_emails/2024-04-28.md rename to source/_posts/2024-04-28.md diff --git a/source/_daily_emails/2024-04-29.md b/source/_posts/2024-04-29.md similarity index 100% rename from source/_daily_emails/2024-04-29.md rename to source/_posts/2024-04-29.md diff --git a/source/_daily_emails/2024-04-30.md b/source/_posts/2024-04-30.md similarity index 100% rename from source/_daily_emails/2024-04-30.md rename to source/_posts/2024-04-30.md diff --git a/source/_daily_emails/2024-05-01.md b/source/_posts/2024-05-01.md similarity index 100% rename from source/_daily_emails/2024-05-01.md rename to source/_posts/2024-05-01.md diff --git a/source/_daily_emails/2024-05-02.md b/source/_posts/2024-05-02.md similarity index 100% rename from source/_daily_emails/2024-05-02.md rename to source/_posts/2024-05-02.md diff --git a/source/_daily_emails/2024-05-03.md b/source/_posts/2024-05-03.md similarity index 100% rename from source/_daily_emails/2024-05-03.md rename to source/_posts/2024-05-03.md diff --git a/source/_daily_emails/2024-05-04.md b/source/_posts/2024-05-04.md similarity index 100% rename from source/_daily_emails/2024-05-04.md rename to source/_posts/2024-05-04.md diff --git a/source/_daily_emails/2024-05-05.md b/source/_posts/2024-05-05.md similarity index 100% rename from source/_daily_emails/2024-05-05.md rename to source/_posts/2024-05-05.md diff --git a/source/_daily_emails/2024-05-06.md b/source/_posts/2024-05-06.md similarity index 100% rename from source/_daily_emails/2024-05-06.md rename to source/_posts/2024-05-06.md diff --git a/source/_daily_emails/2024-05-07.md b/source/_posts/2024-05-07.md similarity index 100% rename from source/_daily_emails/2024-05-07.md rename to source/_posts/2024-05-07.md diff --git a/source/_daily_emails/2024-05-08.md b/source/_posts/2024-05-08.md similarity index 100% rename from source/_daily_emails/2024-05-08.md rename to source/_posts/2024-05-08.md diff --git a/source/_daily_emails/2024-05-09.md b/source/_posts/2024-05-09.md similarity index 100% rename from source/_daily_emails/2024-05-09.md rename to source/_posts/2024-05-09.md diff --git a/source/_daily_emails/2024-05-10.md b/source/_posts/2024-05-10.md similarity index 100% rename from source/_daily_emails/2024-05-10.md rename to source/_posts/2024-05-10.md diff --git a/source/_daily_emails/2024-05-11.md b/source/_posts/2024-05-11.md similarity index 100% rename from source/_daily_emails/2024-05-11.md rename to source/_posts/2024-05-11.md diff --git a/source/_daily_emails/2024-05-12.md b/source/_posts/2024-05-12.md similarity index 100% rename from source/_daily_emails/2024-05-12.md rename to source/_posts/2024-05-12.md diff --git a/source/_daily_emails/2024-05-13.md b/source/_posts/2024-05-13.md similarity index 100% rename from source/_daily_emails/2024-05-13.md rename to source/_posts/2024-05-13.md diff --git a/source/_daily_emails/2024-05-14.md b/source/_posts/2024-05-14.md similarity index 100% rename from source/_daily_emails/2024-05-14.md rename to source/_posts/2024-05-14.md diff --git a/source/_daily_emails/2024-05-15.md b/source/_posts/2024-05-15.md similarity index 100% rename from source/_daily_emails/2024-05-15.md rename to source/_posts/2024-05-15.md diff --git a/source/_daily_emails/2024-05-16.md b/source/_posts/2024-05-16.md similarity index 100% rename from source/_daily_emails/2024-05-16.md rename to source/_posts/2024-05-16.md diff --git a/source/_daily_emails/2024-05-17.md b/source/_posts/2024-05-17.md similarity index 100% rename from source/_daily_emails/2024-05-17.md rename to source/_posts/2024-05-17.md diff --git a/source/_daily_emails/2024-05-18.md b/source/_posts/2024-05-18.md similarity index 100% rename from source/_daily_emails/2024-05-18.md rename to source/_posts/2024-05-18.md diff --git a/source/_daily_emails/2024-05-19.md b/source/_posts/2024-05-19.md similarity index 100% rename from source/_daily_emails/2024-05-19.md rename to source/_posts/2024-05-19.md diff --git a/source/_daily_emails/2024-05-20.md b/source/_posts/2024-05-20.md similarity index 100% rename from source/_daily_emails/2024-05-20.md rename to source/_posts/2024-05-20.md diff --git a/source/_daily_emails/2024-05-21.md b/source/_posts/2024-05-21.md similarity index 100% rename from source/_daily_emails/2024-05-21.md rename to source/_posts/2024-05-21.md diff --git a/source/_daily_emails/2024-05-22.md b/source/_posts/2024-05-22.md similarity index 100% rename from source/_daily_emails/2024-05-22.md rename to source/_posts/2024-05-22.md diff --git a/source/_daily_emails/2024-05-23.md b/source/_posts/2024-05-23.md similarity index 100% rename from source/_daily_emails/2024-05-23.md rename to source/_posts/2024-05-23.md diff --git a/source/_daily_emails/2024-05-24.md b/source/_posts/2024-05-24.md similarity index 100% rename from source/_daily_emails/2024-05-24.md rename to source/_posts/2024-05-24.md diff --git a/source/_daily_emails/2024-05-25.md b/source/_posts/2024-05-25.md similarity index 100% rename from source/_daily_emails/2024-05-25.md rename to source/_posts/2024-05-25.md diff --git a/source/_daily_emails/2024-05-26.md b/source/_posts/2024-05-26.md similarity index 100% rename from source/_daily_emails/2024-05-26.md rename to source/_posts/2024-05-26.md diff --git a/source/_daily_emails/2024-05-27.md b/source/_posts/2024-05-27.md similarity index 100% rename from source/_daily_emails/2024-05-27.md rename to source/_posts/2024-05-27.md diff --git a/source/_daily_emails/2024-05-28.md b/source/_posts/2024-05-28.md similarity index 100% rename from source/_daily_emails/2024-05-28.md rename to source/_posts/2024-05-28.md diff --git a/source/_daily_emails/2024-05-29.md b/source/_posts/2024-05-29.md similarity index 100% rename from source/_daily_emails/2024-05-29.md rename to source/_posts/2024-05-29.md diff --git a/source/_daily_emails/2024-05-30.md b/source/_posts/2024-05-30.md similarity index 100% rename from source/_daily_emails/2024-05-30.md rename to source/_posts/2024-05-30.md diff --git a/source/_daily_emails/2024-05-31.md b/source/_posts/2024-05-31.md similarity index 100% rename from source/_daily_emails/2024-05-31.md rename to source/_posts/2024-05-31.md diff --git a/source/_daily_emails/2024-06-01.md b/source/_posts/2024-06-01.md similarity index 100% rename from source/_daily_emails/2024-06-01.md rename to source/_posts/2024-06-01.md diff --git a/source/_daily_emails/2024-06-02.md b/source/_posts/2024-06-02.md similarity index 100% rename from source/_daily_emails/2024-06-02.md rename to source/_posts/2024-06-02.md diff --git a/source/_daily_emails/2024-06-03.md b/source/_posts/2024-06-03.md similarity index 100% rename from source/_daily_emails/2024-06-03.md rename to source/_posts/2024-06-03.md diff --git a/source/_daily_emails/2024-06-04.md b/source/_posts/2024-06-04.md similarity index 100% rename from source/_daily_emails/2024-06-04.md rename to source/_posts/2024-06-04.md diff --git a/source/_daily_emails/2024-06-05.md b/source/_posts/2024-06-05.md similarity index 100% rename from source/_daily_emails/2024-06-05.md rename to source/_posts/2024-06-05.md diff --git a/source/_daily_emails/2024-06-06.md b/source/_posts/2024-06-06.md similarity index 100% rename from source/_daily_emails/2024-06-06.md rename to source/_posts/2024-06-06.md diff --git a/source/_daily_emails/2024-06-07.md b/source/_posts/2024-06-07.md similarity index 100% rename from source/_daily_emails/2024-06-07.md rename to source/_posts/2024-06-07.md diff --git a/source/_daily_emails/2024-06-08.md b/source/_posts/2024-06-08.md similarity index 100% rename from source/_daily_emails/2024-06-08.md rename to source/_posts/2024-06-08.md diff --git a/source/_daily_emails/2024-06-09.md b/source/_posts/2024-06-09.md similarity index 100% rename from source/_daily_emails/2024-06-09.md rename to source/_posts/2024-06-09.md diff --git a/source/_daily_emails/2024-06-10.md b/source/_posts/2024-06-10.md similarity index 100% rename from source/_daily_emails/2024-06-10.md rename to source/_posts/2024-06-10.md diff --git a/source/_daily_emails/2024-06-11.md b/source/_posts/2024-06-11.md similarity index 100% rename from source/_daily_emails/2024-06-11.md rename to source/_posts/2024-06-11.md diff --git a/source/_daily_emails/2024-06-12.md b/source/_posts/2024-06-12.md similarity index 100% rename from source/_daily_emails/2024-06-12.md rename to source/_posts/2024-06-12.md diff --git a/source/_daily_emails/2024-06-13.md b/source/_posts/2024-06-13.md similarity index 100% rename from source/_daily_emails/2024-06-13.md rename to source/_posts/2024-06-13.md diff --git a/source/_daily_emails/2024-06-14.md b/source/_posts/2024-06-14.md similarity index 100% rename from source/_daily_emails/2024-06-14.md rename to source/_posts/2024-06-14.md diff --git a/source/_daily_emails/2024-06-15.md b/source/_posts/2024-06-15.md similarity index 100% rename from source/_daily_emails/2024-06-15.md rename to source/_posts/2024-06-15.md diff --git a/source/_daily_emails/2024-06-16.md b/source/_posts/2024-06-16.md similarity index 100% rename from source/_daily_emails/2024-06-16.md rename to source/_posts/2024-06-16.md diff --git a/source/_daily_emails/2024-06-17.md b/source/_posts/2024-06-17.md similarity index 100% rename from source/_daily_emails/2024-06-17.md rename to source/_posts/2024-06-17.md diff --git a/source/_daily_emails/2024-06-18.md b/source/_posts/2024-06-18.md similarity index 100% rename from source/_daily_emails/2024-06-18.md rename to source/_posts/2024-06-18.md diff --git a/source/_daily_emails/2024-06-19.md b/source/_posts/2024-06-19.md similarity index 100% rename from source/_daily_emails/2024-06-19.md rename to source/_posts/2024-06-19.md diff --git a/source/_daily_emails/2024-06-20.md b/source/_posts/2024-06-20.md similarity index 100% rename from source/_daily_emails/2024-06-20.md rename to source/_posts/2024-06-20.md diff --git a/source/_daily_emails/2024-06-21.md b/source/_posts/2024-06-21.md similarity index 100% rename from source/_daily_emails/2024-06-21.md rename to source/_posts/2024-06-21.md diff --git a/source/_daily_emails/2024-06-22.md b/source/_posts/2024-06-22.md similarity index 100% rename from source/_daily_emails/2024-06-22.md rename to source/_posts/2024-06-22.md diff --git a/source/_daily_emails/2024-06-23.md b/source/_posts/2024-06-23.md similarity index 100% rename from source/_daily_emails/2024-06-23.md rename to source/_posts/2024-06-23.md diff --git a/source/_daily_emails/2024-06-29.md b/source/_posts/2024-06-29.md similarity index 100% rename from source/_daily_emails/2024-06-29.md rename to source/_posts/2024-06-29.md diff --git a/source/_daily_emails/2024-06-30.md b/source/_posts/2024-06-30.md similarity index 100% rename from source/_daily_emails/2024-06-30.md rename to source/_posts/2024-06-30.md diff --git a/source/_daily_emails/2024-07-01.md b/source/_posts/2024-07-01.md similarity index 100% rename from source/_daily_emails/2024-07-01.md rename to source/_posts/2024-07-01.md diff --git a/source/_daily_emails/2024-07-02.md b/source/_posts/2024-07-02.md similarity index 100% rename from source/_daily_emails/2024-07-02.md rename to source/_posts/2024-07-02.md diff --git a/source/_daily_emails/2024-07-03.md b/source/_posts/2024-07-03.md similarity index 100% rename from source/_daily_emails/2024-07-03.md rename to source/_posts/2024-07-03.md diff --git a/source/_daily_emails/2024-07-07.md b/source/_posts/2024-07-07.md similarity index 100% rename from source/_daily_emails/2024-07-07.md rename to source/_posts/2024-07-07.md diff --git a/source/_daily_emails/2024-07-08.md b/source/_posts/2024-07-08.md similarity index 100% rename from source/_daily_emails/2024-07-08.md rename to source/_posts/2024-07-08.md diff --git a/source/_daily_emails/2024-07-09.md b/source/_posts/2024-07-09.md similarity index 100% rename from source/_daily_emails/2024-07-09.md rename to source/_posts/2024-07-09.md diff --git a/source/_daily_emails/2024-07-10.md b/source/_posts/2024-07-10.md similarity index 100% rename from source/_daily_emails/2024-07-10.md rename to source/_posts/2024-07-10.md diff --git a/source/_daily_emails/2024-07-11.md b/source/_posts/2024-07-11.md similarity index 100% rename from source/_daily_emails/2024-07-11.md rename to source/_posts/2024-07-11.md diff --git a/source/_daily_emails/2024-07-15.md b/source/_posts/2024-07-15.md similarity index 100% rename from source/_daily_emails/2024-07-15.md rename to source/_posts/2024-07-15.md diff --git a/source/_daily_emails/2024-07-16.md b/source/_posts/2024-07-16.md similarity index 100% rename from source/_daily_emails/2024-07-16.md rename to source/_posts/2024-07-16.md diff --git a/source/_daily_emails/2024-07-17.md b/source/_posts/2024-07-17.md similarity index 100% rename from source/_daily_emails/2024-07-17.md rename to source/_posts/2024-07-17.md diff --git a/source/_daily_emails/2024-07-18.md b/source/_posts/2024-07-18.md similarity index 100% rename from source/_daily_emails/2024-07-18.md rename to source/_posts/2024-07-18.md diff --git a/source/_daily_emails/2024-07-19.md b/source/_posts/2024-07-19.md similarity index 100% rename from source/_daily_emails/2024-07-19.md rename to source/_posts/2024-07-19.md diff --git a/source/_daily_emails/2024-07-22.md b/source/_posts/2024-07-22.md similarity index 100% rename from source/_daily_emails/2024-07-22.md rename to source/_posts/2024-07-22.md diff --git a/source/_daily_emails/2024-07-24.md b/source/_posts/2024-07-24.md similarity index 100% rename from source/_daily_emails/2024-07-24.md rename to source/_posts/2024-07-24.md diff --git a/source/_daily_emails/2024-07-25.md b/source/_posts/2024-07-25.md similarity index 100% rename from source/_daily_emails/2024-07-25.md rename to source/_posts/2024-07-25.md diff --git a/source/_daily_emails/2024-07-26.md b/source/_posts/2024-07-26.md similarity index 100% rename from source/_daily_emails/2024-07-26.md rename to source/_posts/2024-07-26.md diff --git a/source/_daily_emails/2024-07-29.md b/source/_posts/2024-07-29.md similarity index 100% rename from source/_daily_emails/2024-07-29.md rename to source/_posts/2024-07-29.md diff --git a/source/_daily_emails/2024-07-30.md b/source/_posts/2024-07-30.md similarity index 100% rename from source/_daily_emails/2024-07-30.md rename to source/_posts/2024-07-30.md diff --git a/source/_daily_emails/2024-07-31.md b/source/_posts/2024-07-31.md similarity index 100% rename from source/_daily_emails/2024-07-31.md rename to source/_posts/2024-07-31.md diff --git a/source/_daily_emails/2024-08-01.md b/source/_posts/2024-08-01.md similarity index 100% rename from source/_daily_emails/2024-08-01.md rename to source/_posts/2024-08-01.md diff --git a/source/_daily_emails/2024-08-02.md b/source/_posts/2024-08-02.md similarity index 100% rename from source/_daily_emails/2024-08-02.md rename to source/_posts/2024-08-02.md diff --git a/source/_daily_emails/2024-08-03.md b/source/_posts/2024-08-03.md similarity index 100% rename from source/_daily_emails/2024-08-03.md rename to source/_posts/2024-08-03.md diff --git a/source/_daily_emails/2024-08-04.md b/source/_posts/2024-08-04.md similarity index 100% rename from source/_daily_emails/2024-08-04.md rename to source/_posts/2024-08-04.md diff --git a/source/_daily_emails/2024-08-05.md b/source/_posts/2024-08-05.md similarity index 100% rename from source/_daily_emails/2024-08-05.md rename to source/_posts/2024-08-05.md diff --git a/source/_daily_emails/2024-08-06.md b/source/_posts/2024-08-06.md similarity index 100% rename from source/_daily_emails/2024-08-06.md rename to source/_posts/2024-08-06.md diff --git a/source/_daily_emails/2024-08-07.md b/source/_posts/2024-08-07.md similarity index 100% rename from source/_daily_emails/2024-08-07.md rename to source/_posts/2024-08-07.md diff --git a/source/_daily_emails/2024-08-08.md b/source/_posts/2024-08-08.md similarity index 100% rename from source/_daily_emails/2024-08-08.md rename to source/_posts/2024-08-08.md diff --git a/source/_daily_emails/2024-08-11.md b/source/_posts/2024-08-11.md similarity index 100% rename from source/_daily_emails/2024-08-11.md rename to source/_posts/2024-08-11.md diff --git a/source/_daily_emails/2024-08-12.md b/source/_posts/2024-08-12.md similarity index 100% rename from source/_daily_emails/2024-08-12.md rename to source/_posts/2024-08-12.md diff --git a/source/_daily_emails/2024-08-13.md b/source/_posts/2024-08-13.md similarity index 100% rename from source/_daily_emails/2024-08-13.md rename to source/_posts/2024-08-13.md diff --git a/source/_daily_emails/2024-08-14.md b/source/_posts/2024-08-14.md similarity index 100% rename from source/_daily_emails/2024-08-14.md rename to source/_posts/2024-08-14.md diff --git a/source/_daily_emails/2024-08-15.md b/source/_posts/2024-08-15.md similarity index 100% rename from source/_daily_emails/2024-08-15.md rename to source/_posts/2024-08-15.md diff --git a/source/_daily_emails/2024-08-16.md b/source/_posts/2024-08-16.md similarity index 100% rename from source/_daily_emails/2024-08-16.md rename to source/_posts/2024-08-16.md diff --git a/source/_daily_emails/2024-08-17.md b/source/_posts/2024-08-17.md similarity index 100% rename from source/_daily_emails/2024-08-17.md rename to source/_posts/2024-08-17.md diff --git a/source/_daily_emails/2024-08-18.md b/source/_posts/2024-08-18.md similarity index 100% rename from source/_daily_emails/2024-08-18.md rename to source/_posts/2024-08-18.md diff --git a/source/_daily_emails/2024-08-19.md b/source/_posts/2024-08-19.md similarity index 100% rename from source/_daily_emails/2024-08-19.md rename to source/_posts/2024-08-19.md diff --git a/source/_daily_emails/2024-08-20.md b/source/_posts/2024-08-20.md similarity index 100% rename from source/_daily_emails/2024-08-20.md rename to source/_posts/2024-08-20.md diff --git a/source/_daily_emails/2024-08-21.md b/source/_posts/2024-08-21.md similarity index 100% rename from source/_daily_emails/2024-08-21.md rename to source/_posts/2024-08-21.md diff --git a/source/_daily_emails/2024-08-22.md b/source/_posts/2024-08-22.md similarity index 100% rename from source/_daily_emails/2024-08-22.md rename to source/_posts/2024-08-22.md diff --git a/source/_daily_emails/2024-08-23.md b/source/_posts/2024-08-23.md similarity index 100% rename from source/_daily_emails/2024-08-23.md rename to source/_posts/2024-08-23.md diff --git a/source/_daily_emails/2024-08-24.md b/source/_posts/2024-08-24.md similarity index 100% rename from source/_daily_emails/2024-08-24.md rename to source/_posts/2024-08-24.md diff --git a/source/_daily_emails/2024-08-25.md b/source/_posts/2024-08-25.md similarity index 100% rename from source/_daily_emails/2024-08-25.md rename to source/_posts/2024-08-25.md diff --git a/source/_daily_emails/2024-08-26.md b/source/_posts/2024-08-26.md similarity index 100% rename from source/_daily_emails/2024-08-26.md rename to source/_posts/2024-08-26.md diff --git a/source/_daily_emails/2024-08-27.md b/source/_posts/2024-08-27.md similarity index 100% rename from source/_daily_emails/2024-08-27.md rename to source/_posts/2024-08-27.md diff --git a/source/_daily_emails/2024-08-28.md b/source/_posts/2024-08-28.md similarity index 100% rename from source/_daily_emails/2024-08-28.md rename to source/_posts/2024-08-28.md diff --git a/source/_daily_emails/2024-08-29.md b/source/_posts/2024-08-29.md similarity index 100% rename from source/_daily_emails/2024-08-29.md rename to source/_posts/2024-08-29.md diff --git a/source/_daily_emails/2024-08-30.md b/source/_posts/2024-08-30.md similarity index 100% rename from source/_daily_emails/2024-08-30.md rename to source/_posts/2024-08-30.md diff --git a/source/_daily_emails/2024-08-31.md b/source/_posts/2024-08-31.md similarity index 100% rename from source/_daily_emails/2024-08-31.md rename to source/_posts/2024-08-31.md diff --git a/source/_daily_emails/2024-09-01.md b/source/_posts/2024-09-01.md similarity index 100% rename from source/_daily_emails/2024-09-01.md rename to source/_posts/2024-09-01.md diff --git a/source/_daily_emails/2024-09-02.md b/source/_posts/2024-09-02.md similarity index 100% rename from source/_daily_emails/2024-09-02.md rename to source/_posts/2024-09-02.md diff --git a/source/_daily_emails/2024-09-03.md b/source/_posts/2024-09-03.md similarity index 100% rename from source/_daily_emails/2024-09-03.md rename to source/_posts/2024-09-03.md diff --git a/source/_daily_emails/2024-09-04.md b/source/_posts/2024-09-04.md similarity index 100% rename from source/_daily_emails/2024-09-04.md rename to source/_posts/2024-09-04.md diff --git a/source/_daily_emails/2024-09-05.md b/source/_posts/2024-09-05.md similarity index 100% rename from source/_daily_emails/2024-09-05.md rename to source/_posts/2024-09-05.md diff --git a/source/_daily_emails/2024-09-06.md b/source/_posts/2024-09-06.md similarity index 100% rename from source/_daily_emails/2024-09-06.md rename to source/_posts/2024-09-06.md diff --git a/source/_daily_emails/2024-09-07.md b/source/_posts/2024-09-07.md similarity index 100% rename from source/_daily_emails/2024-09-07.md rename to source/_posts/2024-09-07.md diff --git a/source/_daily_emails/2024-09-08.md b/source/_posts/2024-09-08.md similarity index 100% rename from source/_daily_emails/2024-09-08.md rename to source/_posts/2024-09-08.md diff --git a/source/_daily_emails/2024-09-09.md b/source/_posts/2024-09-09.md similarity index 100% rename from source/_daily_emails/2024-09-09.md rename to source/_posts/2024-09-09.md diff --git a/source/_daily_emails/2024-09-10.md b/source/_posts/2024-09-10.md similarity index 100% rename from source/_daily_emails/2024-09-10.md rename to source/_posts/2024-09-10.md diff --git a/source/_daily_emails/2024-09-11.md b/source/_posts/2024-09-11.md similarity index 100% rename from source/_daily_emails/2024-09-11.md rename to source/_posts/2024-09-11.md diff --git a/source/_daily_emails/2024-09-12.md b/source/_posts/2024-09-12.md similarity index 100% rename from source/_daily_emails/2024-09-12.md rename to source/_posts/2024-09-12.md diff --git a/source/_daily_emails/2024-09-13.md b/source/_posts/2024-09-13.md similarity index 100% rename from source/_daily_emails/2024-09-13.md rename to source/_posts/2024-09-13.md diff --git a/source/_daily_emails/2024-09-14.md b/source/_posts/2024-09-14.md similarity index 100% rename from source/_daily_emails/2024-09-14.md rename to source/_posts/2024-09-14.md diff --git a/source/_daily_emails/2024-09-15.md b/source/_posts/2024-09-15.md similarity index 100% rename from source/_daily_emails/2024-09-15.md rename to source/_posts/2024-09-15.md diff --git a/source/_daily_emails/2024-09-16.md b/source/_posts/2024-09-16.md similarity index 100% rename from source/_daily_emails/2024-09-16.md rename to source/_posts/2024-09-16.md diff --git a/source/_daily_emails/2024-09-17.md b/source/_posts/2024-09-17.md similarity index 100% rename from source/_daily_emails/2024-09-17.md rename to source/_posts/2024-09-17.md diff --git a/source/_daily_emails/2024-09-18.md b/source/_posts/2024-09-18.md similarity index 100% rename from source/_daily_emails/2024-09-18.md rename to source/_posts/2024-09-18.md diff --git a/source/_daily_emails/2024-09-19.md b/source/_posts/2024-09-19.md similarity index 100% rename from source/_daily_emails/2024-09-19.md rename to source/_posts/2024-09-19.md diff --git a/source/_daily_emails/2024-09-20.md b/source/_posts/2024-09-20.md similarity index 100% rename from source/_daily_emails/2024-09-20.md rename to source/_posts/2024-09-20.md diff --git a/source/_daily_emails/2024-09-21.md b/source/_posts/2024-09-21.md similarity index 100% rename from source/_daily_emails/2024-09-21.md rename to source/_posts/2024-09-21.md diff --git a/source/_daily_emails/2024-09-22.md b/source/_posts/2024-09-22.md similarity index 100% rename from source/_daily_emails/2024-09-22.md rename to source/_posts/2024-09-22.md diff --git a/source/_daily_emails/2024-09-23.md b/source/_posts/2024-09-23.md similarity index 100% rename from source/_daily_emails/2024-09-23.md rename to source/_posts/2024-09-23.md diff --git a/source/_daily_emails/2024-09-24.md b/source/_posts/2024-09-24.md similarity index 100% rename from source/_daily_emails/2024-09-24.md rename to source/_posts/2024-09-24.md diff --git a/source/_daily_emails/2024-09-25.md b/source/_posts/2024-09-25.md similarity index 100% rename from source/_daily_emails/2024-09-25.md rename to source/_posts/2024-09-25.md diff --git a/source/_daily_emails/2024-09-26.md b/source/_posts/2024-09-26.md similarity index 100% rename from source/_daily_emails/2024-09-26.md rename to source/_posts/2024-09-26.md diff --git a/source/_daily_emails/2024-09-27.md b/source/_posts/2024-09-27.md similarity index 100% rename from source/_daily_emails/2024-09-27.md rename to source/_posts/2024-09-27.md diff --git a/source/_daily_emails/2024-09-28.md b/source/_posts/2024-09-28.md similarity index 100% rename from source/_daily_emails/2024-09-28.md rename to source/_posts/2024-09-28.md diff --git a/source/_daily_emails/2024-09-29.md b/source/_posts/2024-09-29.md similarity index 100% rename from source/_daily_emails/2024-09-29.md rename to source/_posts/2024-09-29.md diff --git a/source/_daily_emails/2024-10-01.md b/source/_posts/2024-10-01.md similarity index 100% rename from source/_daily_emails/2024-10-01.md rename to source/_posts/2024-10-01.md diff --git a/source/_daily_emails/2024-10-02.md b/source/_posts/2024-10-02.md similarity index 100% rename from source/_daily_emails/2024-10-02.md rename to source/_posts/2024-10-02.md diff --git a/source/_daily_emails/2024-10-03.md b/source/_posts/2024-10-03.md similarity index 100% rename from source/_daily_emails/2024-10-03.md rename to source/_posts/2024-10-03.md diff --git a/source/_daily_emails/2024-10-04.md b/source/_posts/2024-10-04.md similarity index 100% rename from source/_daily_emails/2024-10-04.md rename to source/_posts/2024-10-04.md diff --git a/source/_daily_emails/2024-10-06.md b/source/_posts/2024-10-06.md similarity index 100% rename from source/_daily_emails/2024-10-06.md rename to source/_posts/2024-10-06.md diff --git a/source/_daily_emails/2024-10-07.md b/source/_posts/2024-10-07.md similarity index 100% rename from source/_daily_emails/2024-10-07.md rename to source/_posts/2024-10-07.md diff --git a/source/_daily_emails/2024-10-08.md b/source/_posts/2024-10-08.md similarity index 100% rename from source/_daily_emails/2024-10-08.md rename to source/_posts/2024-10-08.md diff --git a/source/_daily_emails/2024-10-09.md b/source/_posts/2024-10-09.md similarity index 100% rename from source/_daily_emails/2024-10-09.md rename to source/_posts/2024-10-09.md diff --git a/source/_daily_emails/2024-10-15.md b/source/_posts/2024-10-15.md similarity index 100% rename from source/_daily_emails/2024-10-15.md rename to source/_posts/2024-10-15.md diff --git a/source/_daily_emails/2024-10-16.md b/source/_posts/2024-10-16.md similarity index 100% rename from source/_daily_emails/2024-10-16.md rename to source/_posts/2024-10-16.md diff --git a/source/_daily_emails/2024-10-17.md b/source/_posts/2024-10-17.md similarity index 100% rename from source/_daily_emails/2024-10-17.md rename to source/_posts/2024-10-17.md diff --git a/source/_daily_emails/2024-10-18.md b/source/_posts/2024-10-18.md similarity index 100% rename from source/_daily_emails/2024-10-18.md rename to source/_posts/2024-10-18.md diff --git a/source/_daily_emails/2024-10-19.md b/source/_posts/2024-10-19.md similarity index 100% rename from source/_daily_emails/2024-10-19.md rename to source/_posts/2024-10-19.md diff --git a/source/_daily_emails/2024-10-20.md b/source/_posts/2024-10-20.md similarity index 100% rename from source/_daily_emails/2024-10-20.md rename to source/_posts/2024-10-20.md diff --git a/source/_daily_emails/2024-10-21.md b/source/_posts/2024-10-21.md similarity index 100% rename from source/_daily_emails/2024-10-21.md rename to source/_posts/2024-10-21.md diff --git a/source/_daily_emails/2024-10-22.md b/source/_posts/2024-10-22.md similarity index 100% rename from source/_daily_emails/2024-10-22.md rename to source/_posts/2024-10-22.md diff --git a/source/_daily_emails/2024-10-23.md b/source/_posts/2024-10-23.md similarity index 100% rename from source/_daily_emails/2024-10-23.md rename to source/_posts/2024-10-23.md diff --git a/source/_daily_emails/2024-10-24.md b/source/_posts/2024-10-24.md similarity index 100% rename from source/_daily_emails/2024-10-24.md rename to source/_posts/2024-10-24.md diff --git a/source/_daily_emails/2024-10-25.md b/source/_posts/2024-10-25.md similarity index 100% rename from source/_daily_emails/2024-10-25.md rename to source/_posts/2024-10-25.md diff --git a/source/_daily_emails/2024-10-26.md b/source/_posts/2024-10-26.md similarity index 100% rename from source/_daily_emails/2024-10-26.md rename to source/_posts/2024-10-26.md diff --git a/source/_daily_emails/2024-10-27.md b/source/_posts/2024-10-27.md similarity index 100% rename from source/_daily_emails/2024-10-27.md rename to source/_posts/2024-10-27.md diff --git a/source/_daily_emails/2024-10-28.md b/source/_posts/2024-10-28.md similarity index 100% rename from source/_daily_emails/2024-10-28.md rename to source/_posts/2024-10-28.md diff --git a/source/_daily_emails/2024-10-30.md b/source/_posts/2024-10-30.md similarity index 100% rename from source/_daily_emails/2024-10-30.md rename to source/_posts/2024-10-30.md diff --git a/source/_daily_emails/2024-11-03.md b/source/_posts/2024-11-03.md similarity index 100% rename from source/_daily_emails/2024-11-03.md rename to source/_posts/2024-11-03.md diff --git a/source/_daily_emails/2024-11-04.md b/source/_posts/2024-11-04.md similarity index 100% rename from source/_daily_emails/2024-11-04.md rename to source/_posts/2024-11-04.md diff --git a/source/_daily_emails/2024-11-05.md b/source/_posts/2024-11-05.md similarity index 100% rename from source/_daily_emails/2024-11-05.md rename to source/_posts/2024-11-05.md diff --git a/source/_daily_emails/2024-11-06.md b/source/_posts/2024-11-06.md similarity index 100% rename from source/_daily_emails/2024-11-06.md rename to source/_posts/2024-11-06.md diff --git a/source/_daily_emails/2024-11-07.md b/source/_posts/2024-11-07.md similarity index 100% rename from source/_daily_emails/2024-11-07.md rename to source/_posts/2024-11-07.md diff --git a/source/_daily_emails/2024-11-08.md b/source/_posts/2024-11-08.md similarity index 100% rename from source/_daily_emails/2024-11-08.md rename to source/_posts/2024-11-08.md diff --git a/source/_daily_emails/2024-11-09.md b/source/_posts/2024-11-09.md similarity index 100% rename from source/_daily_emails/2024-11-09.md rename to source/_posts/2024-11-09.md diff --git a/source/_daily_emails/2024-11-10.md b/source/_posts/2024-11-10.md similarity index 100% rename from source/_daily_emails/2024-11-10.md rename to source/_posts/2024-11-10.md diff --git a/source/_daily_emails/2024-11-11.md b/source/_posts/2024-11-11.md similarity index 100% rename from source/_daily_emails/2024-11-11.md rename to source/_posts/2024-11-11.md diff --git a/source/_daily_emails/2024-11-12.md b/source/_posts/2024-11-12.md similarity index 100% rename from source/_daily_emails/2024-11-12.md rename to source/_posts/2024-11-12.md diff --git a/source/_daily_emails/2024-11-13.md b/source/_posts/2024-11-13.md similarity index 100% rename from source/_daily_emails/2024-11-13.md rename to source/_posts/2024-11-13.md diff --git a/source/_daily_emails/2024-11-14.md b/source/_posts/2024-11-14.md similarity index 100% rename from source/_daily_emails/2024-11-14.md rename to source/_posts/2024-11-14.md diff --git a/source/_daily_emails/2024-11-15.md b/source/_posts/2024-11-15.md similarity index 100% rename from source/_daily_emails/2024-11-15.md rename to source/_posts/2024-11-15.md diff --git a/source/_daily_emails/2024-11-16.md b/source/_posts/2024-11-16.md similarity index 100% rename from source/_daily_emails/2024-11-16.md rename to source/_posts/2024-11-16.md diff --git a/source/_daily_emails/2024-11-17.md b/source/_posts/2024-11-17.md similarity index 100% rename from source/_daily_emails/2024-11-17.md rename to source/_posts/2024-11-17.md diff --git a/source/_daily_emails/2024-11-18.md b/source/_posts/2024-11-18.md similarity index 100% rename from source/_daily_emails/2024-11-18.md rename to source/_posts/2024-11-18.md diff --git a/source/_daily_emails/2024-11-19.md b/source/_posts/2024-11-19.md similarity index 100% rename from source/_daily_emails/2024-11-19.md rename to source/_posts/2024-11-19.md diff --git a/source/_daily_emails/2024-11-20.md b/source/_posts/2024-11-20.md similarity index 100% rename from source/_daily_emails/2024-11-20.md rename to source/_posts/2024-11-20.md diff --git a/source/_daily_emails/2024-11-21.md b/source/_posts/2024-11-21.md similarity index 100% rename from source/_daily_emails/2024-11-21.md rename to source/_posts/2024-11-21.md diff --git a/source/_daily_emails/2024-11-22.md b/source/_posts/2024-11-22.md similarity index 100% rename from source/_daily_emails/2024-11-22.md rename to source/_posts/2024-11-22.md diff --git a/source/_daily_emails/2024-11-23.md b/source/_posts/2024-11-23.md similarity index 100% rename from source/_daily_emails/2024-11-23.md rename to source/_posts/2024-11-23.md diff --git a/source/_daily_emails/2024-11-24.md b/source/_posts/2024-11-24.md similarity index 100% rename from source/_daily_emails/2024-11-24.md rename to source/_posts/2024-11-24.md diff --git a/source/_daily_emails/2024-11-25.md b/source/_posts/2024-11-25.md similarity index 100% rename from source/_daily_emails/2024-11-25.md rename to source/_posts/2024-11-25.md diff --git a/source/_daily_emails/2024-11-26.md b/source/_posts/2024-11-26.md similarity index 100% rename from source/_daily_emails/2024-11-26.md rename to source/_posts/2024-11-26.md diff --git a/source/_daily_emails/2024-11-27.md b/source/_posts/2024-11-27.md similarity index 100% rename from source/_daily_emails/2024-11-27.md rename to source/_posts/2024-11-27.md diff --git a/source/_daily_emails/2024-11-28.md b/source/_posts/2024-11-28.md similarity index 100% rename from source/_daily_emails/2024-11-28.md rename to source/_posts/2024-11-28.md diff --git a/source/_daily_emails/2024-11-29.md b/source/_posts/2024-11-29.md similarity index 100% rename from source/_daily_emails/2024-11-29.md rename to source/_posts/2024-11-29.md diff --git a/source/_daily_emails/2024-11-30.md b/source/_posts/2024-11-30.md similarity index 100% rename from source/_daily_emails/2024-11-30.md rename to source/_posts/2024-11-30.md diff --git a/source/_daily_emails/2024-12-01.md b/source/_posts/2024-12-01.md similarity index 100% rename from source/_daily_emails/2024-12-01.md rename to source/_posts/2024-12-01.md diff --git a/source/_daily_emails/2024-12-02.md b/source/_posts/2024-12-02.md similarity index 100% rename from source/_daily_emails/2024-12-02.md rename to source/_posts/2024-12-02.md diff --git a/source/_daily_emails/2024-12-03.md b/source/_posts/2024-12-03.md similarity index 100% rename from source/_daily_emails/2024-12-03.md rename to source/_posts/2024-12-03.md diff --git a/source/_daily_emails/2024-12-04.md b/source/_posts/2024-12-04.md similarity index 100% rename from source/_daily_emails/2024-12-04.md rename to source/_posts/2024-12-04.md diff --git a/source/_daily_emails/2024-12-05.md b/source/_posts/2024-12-05.md similarity index 100% rename from source/_daily_emails/2024-12-05.md rename to source/_posts/2024-12-05.md diff --git a/source/_daily_emails/2024-12-06.md b/source/_posts/2024-12-06.md similarity index 100% rename from source/_daily_emails/2024-12-06.md rename to source/_posts/2024-12-06.md diff --git a/source/_daily_emails/2024-12-07.md b/source/_posts/2024-12-07.md similarity index 100% rename from source/_daily_emails/2024-12-07.md rename to source/_posts/2024-12-07.md diff --git a/source/_daily_emails/2024-12-08.md b/source/_posts/2024-12-08.md similarity index 100% rename from source/_daily_emails/2024-12-08.md rename to source/_posts/2024-12-08.md diff --git a/source/_daily_emails/2024-12-09.md b/source/_posts/2024-12-09.md similarity index 100% rename from source/_daily_emails/2024-12-09.md rename to source/_posts/2024-12-09.md diff --git a/source/_daily_emails/2024-12-10.md b/source/_posts/2024-12-10.md similarity index 100% rename from source/_daily_emails/2024-12-10.md rename to source/_posts/2024-12-10.md diff --git a/source/_daily_emails/2024-12-11.md b/source/_posts/2024-12-11.md similarity index 100% rename from source/_daily_emails/2024-12-11.md rename to source/_posts/2024-12-11.md diff --git a/source/_daily_emails/2024-12-12.md b/source/_posts/2024-12-12.md similarity index 100% rename from source/_daily_emails/2024-12-12.md rename to source/_posts/2024-12-12.md diff --git a/source/_daily_emails/2024-12-13.md b/source/_posts/2024-12-13.md similarity index 100% rename from source/_daily_emails/2024-12-13.md rename to source/_posts/2024-12-13.md diff --git a/source/_daily_emails/2024-12-14.md b/source/_posts/2024-12-14.md similarity index 100% rename from source/_daily_emails/2024-12-14.md rename to source/_posts/2024-12-14.md diff --git a/source/_daily_emails/2024-12-15.md b/source/_posts/2024-12-15.md similarity index 100% rename from source/_daily_emails/2024-12-15.md rename to source/_posts/2024-12-15.md diff --git a/source/_daily_emails/2024-12-16.md b/source/_posts/2024-12-16.md similarity index 100% rename from source/_daily_emails/2024-12-16.md rename to source/_posts/2024-12-16.md diff --git a/source/_daily_emails/2024-12-17.md b/source/_posts/2024-12-17.md similarity index 100% rename from source/_daily_emails/2024-12-17.md rename to source/_posts/2024-12-17.md diff --git a/source/_daily_emails/2024-12-18.md b/source/_posts/2024-12-18.md similarity index 100% rename from source/_daily_emails/2024-12-18.md rename to source/_posts/2024-12-18.md diff --git a/source/_daily_emails/2024-12-19.md b/source/_posts/2024-12-19.md similarity index 100% rename from source/_daily_emails/2024-12-19.md rename to source/_posts/2024-12-19.md diff --git a/source/_daily_emails/2024-12-20.md b/source/_posts/2024-12-20.md similarity index 100% rename from source/_daily_emails/2024-12-20.md rename to source/_posts/2024-12-20.md diff --git a/source/_daily_emails/2024-12-21.md b/source/_posts/2024-12-21.md similarity index 100% rename from source/_daily_emails/2024-12-21.md rename to source/_posts/2024-12-21.md diff --git a/source/_daily_emails/2024-12-22.md b/source/_posts/2024-12-22.md similarity index 100% rename from source/_daily_emails/2024-12-22.md rename to source/_posts/2024-12-22.md diff --git a/source/_daily_emails/2024-12-23.md b/source/_posts/2024-12-23.md similarity index 100% rename from source/_daily_emails/2024-12-23.md rename to source/_posts/2024-12-23.md diff --git a/source/_daily_emails/2024-12-24.md b/source/_posts/2024-12-24.md similarity index 100% rename from source/_daily_emails/2024-12-24.md rename to source/_posts/2024-12-24.md diff --git a/source/_daily_emails/2024-12-25.md b/source/_posts/2024-12-25.md similarity index 100% rename from source/_daily_emails/2024-12-25.md rename to source/_posts/2024-12-25.md diff --git a/source/_daily_emails/2024-12-26.md b/source/_posts/2024-12-26.md similarity index 100% rename from source/_daily_emails/2024-12-26.md rename to source/_posts/2024-12-26.md diff --git a/source/_daily_emails/2024-12-27.md b/source/_posts/2024-12-27.md similarity index 100% rename from source/_daily_emails/2024-12-27.md rename to source/_posts/2024-12-27.md diff --git a/source/_daily_emails/2024-12-28.md b/source/_posts/2024-12-28.md similarity index 100% rename from source/_daily_emails/2024-12-28.md rename to source/_posts/2024-12-28.md diff --git a/source/_daily_emails/2024-12-29.md b/source/_posts/2024-12-29.md similarity index 100% rename from source/_daily_emails/2024-12-29.md rename to source/_posts/2024-12-29.md diff --git a/source/_daily_emails/2024-12-30.md b/source/_posts/2024-12-30.md similarity index 100% rename from source/_daily_emails/2024-12-30.md rename to source/_posts/2024-12-30.md diff --git a/source/_daily_emails/2024-12-31.md b/source/_posts/2024-12-31.md similarity index 100% rename from source/_daily_emails/2024-12-31.md rename to source/_posts/2024-12-31.md diff --git a/source/_daily_emails/2025-01-01.md b/source/_posts/2025-01-01.md similarity index 100% rename from source/_daily_emails/2025-01-01.md rename to source/_posts/2025-01-01.md diff --git a/source/_daily_emails/2025-01-02.md b/source/_posts/2025-01-02.md similarity index 100% rename from source/_daily_emails/2025-01-02.md rename to source/_posts/2025-01-02.md diff --git a/source/_daily_emails/2025-01-03.md b/source/_posts/2025-01-03.md similarity index 100% rename from source/_daily_emails/2025-01-03.md rename to source/_posts/2025-01-03.md diff --git a/source/_daily_emails/2025-01-04.md b/source/_posts/2025-01-04.md similarity index 100% rename from source/_daily_emails/2025-01-04.md rename to source/_posts/2025-01-04.md diff --git a/source/_daily_emails/2025-01-05.md b/source/_posts/2025-01-05.md similarity index 100% rename from source/_daily_emails/2025-01-05.md rename to source/_posts/2025-01-05.md diff --git a/source/_daily_emails/2025-01-06.md b/source/_posts/2025-01-06.md similarity index 100% rename from source/_daily_emails/2025-01-06.md rename to source/_posts/2025-01-06.md diff --git a/source/_daily_emails/2025-01-07.md b/source/_posts/2025-01-07.md similarity index 100% rename from source/_daily_emails/2025-01-07.md rename to source/_posts/2025-01-07.md diff --git a/source/_daily_emails/2025-01-08.md b/source/_posts/2025-01-08.md similarity index 100% rename from source/_daily_emails/2025-01-08.md rename to source/_posts/2025-01-08.md diff --git a/source/_daily_emails/2025-01-09.md b/source/_posts/2025-01-09.md similarity index 100% rename from source/_daily_emails/2025-01-09.md rename to source/_posts/2025-01-09.md diff --git a/source/_daily_emails/2025-01-10.md b/source/_posts/2025-01-10.md similarity index 100% rename from source/_daily_emails/2025-01-10.md rename to source/_posts/2025-01-10.md diff --git a/source/_daily_emails/2025-01-11.md b/source/_posts/2025-01-11.md similarity index 100% rename from source/_daily_emails/2025-01-11.md rename to source/_posts/2025-01-11.md diff --git a/source/_daily_emails/2025-01-12.md b/source/_posts/2025-01-12.md similarity index 100% rename from source/_daily_emails/2025-01-12.md rename to source/_posts/2025-01-12.md diff --git a/source/_daily_emails/2025-01-13.md b/source/_posts/2025-01-13.md similarity index 100% rename from source/_daily_emails/2025-01-13.md rename to source/_posts/2025-01-13.md diff --git a/source/_daily_emails/2025-01-14.md b/source/_posts/2025-01-14.md similarity index 100% rename from source/_daily_emails/2025-01-14.md rename to source/_posts/2025-01-14.md diff --git a/source/_daily_emails/2025-01-15.md b/source/_posts/2025-01-15.md similarity index 100% rename from source/_daily_emails/2025-01-15.md rename to source/_posts/2025-01-15.md diff --git a/source/_daily_emails/2025-01-16.md b/source/_posts/2025-01-16.md similarity index 100% rename from source/_daily_emails/2025-01-16.md rename to source/_posts/2025-01-16.md diff --git a/source/_daily_emails/2025-01-17.md b/source/_posts/2025-01-17.md similarity index 100% rename from source/_daily_emails/2025-01-17.md rename to source/_posts/2025-01-17.md diff --git a/source/_daily_emails/2025-01-18.md b/source/_posts/2025-01-18.md similarity index 100% rename from source/_daily_emails/2025-01-18.md rename to source/_posts/2025-01-18.md diff --git a/source/_daily_emails/2025-01-19.md b/source/_posts/2025-01-19.md similarity index 100% rename from source/_daily_emails/2025-01-19.md rename to source/_posts/2025-01-19.md diff --git a/source/_daily_emails/2025-01-20.md b/source/_posts/2025-01-20.md similarity index 100% rename from source/_daily_emails/2025-01-20.md rename to source/_posts/2025-01-20.md diff --git a/source/_daily_emails/2025-01-21.md b/source/_posts/2025-01-21.md similarity index 100% rename from source/_daily_emails/2025-01-21.md rename to source/_posts/2025-01-21.md diff --git a/source/_daily_emails/2025-01-22.md b/source/_posts/2025-01-22.md similarity index 100% rename from source/_daily_emails/2025-01-22.md rename to source/_posts/2025-01-22.md diff --git a/source/_daily_emails/2025-01-23.md b/source/_posts/2025-01-23.md similarity index 100% rename from source/_daily_emails/2025-01-23.md rename to source/_posts/2025-01-23.md diff --git a/source/_daily_emails/2025-01-24.md b/source/_posts/2025-01-24.md similarity index 100% rename from source/_daily_emails/2025-01-24.md rename to source/_posts/2025-01-24.md diff --git a/source/_daily_emails/2025-01-25.md b/source/_posts/2025-01-25.md similarity index 100% rename from source/_daily_emails/2025-01-25.md rename to source/_posts/2025-01-25.md diff --git a/source/_daily_emails/2025-01-26.md b/source/_posts/2025-01-26.md similarity index 100% rename from source/_daily_emails/2025-01-26.md rename to source/_posts/2025-01-26.md diff --git a/source/_daily_emails/2025-01-27.md b/source/_posts/2025-01-27.md similarity index 100% rename from source/_daily_emails/2025-01-27.md rename to source/_posts/2025-01-27.md diff --git a/source/_daily_emails/2025-01-28.md b/source/_posts/2025-01-28.md similarity index 100% rename from source/_daily_emails/2025-01-28.md rename to source/_posts/2025-01-28.md diff --git a/source/_daily_emails/2025-01-29.md b/source/_posts/2025-01-29.md similarity index 100% rename from source/_daily_emails/2025-01-29.md rename to source/_posts/2025-01-29.md diff --git a/source/_daily_emails/2025-01-30.md b/source/_posts/2025-01-30.md similarity index 100% rename from source/_daily_emails/2025-01-30.md rename to source/_posts/2025-01-30.md diff --git a/source/_daily_emails/2025-01-31.md b/source/_posts/2025-01-31.md similarity index 100% rename from source/_daily_emails/2025-01-31.md rename to source/_posts/2025-01-31.md diff --git a/source/_daily_emails/2025-02-01.md b/source/_posts/2025-02-01.md similarity index 100% rename from source/_daily_emails/2025-02-01.md rename to source/_posts/2025-02-01.md diff --git a/source/_daily_emails/2025-02-02.md b/source/_posts/2025-02-02.md similarity index 100% rename from source/_daily_emails/2025-02-02.md rename to source/_posts/2025-02-02.md diff --git a/source/_daily_emails/2025-02-03.md b/source/_posts/2025-02-03.md similarity index 100% rename from source/_daily_emails/2025-02-03.md rename to source/_posts/2025-02-03.md diff --git a/source/_daily_emails/2025-02-04.md b/source/_posts/2025-02-04.md similarity index 100% rename from source/_daily_emails/2025-02-04.md rename to source/_posts/2025-02-04.md diff --git a/source/_daily_emails/2025-02-05.md b/source/_posts/2025-02-05.md similarity index 100% rename from source/_daily_emails/2025-02-05.md rename to source/_posts/2025-02-05.md diff --git a/source/_daily_emails/2025-02-06.md b/source/_posts/2025-02-06.md similarity index 100% rename from source/_daily_emails/2025-02-06.md rename to source/_posts/2025-02-06.md diff --git a/source/_daily_emails/2025-02-07.md b/source/_posts/2025-02-07.md similarity index 100% rename from source/_daily_emails/2025-02-07.md rename to source/_posts/2025-02-07.md diff --git a/source/_daily_emails/2025-02-08.md b/source/_posts/2025-02-08.md similarity index 100% rename from source/_daily_emails/2025-02-08.md rename to source/_posts/2025-02-08.md diff --git a/source/_daily_emails/2025-02-09.md b/source/_posts/2025-02-09.md similarity index 100% rename from source/_daily_emails/2025-02-09.md rename to source/_posts/2025-02-09.md diff --git a/source/_daily_emails/2025-02-10.md b/source/_posts/2025-02-10.md similarity index 100% rename from source/_daily_emails/2025-02-10.md rename to source/_posts/2025-02-10.md diff --git a/source/_daily_emails/2025-02-11.md b/source/_posts/2025-02-11.md similarity index 100% rename from source/_daily_emails/2025-02-11.md rename to source/_posts/2025-02-11.md diff --git a/source/_daily_emails/2025-02-12.md b/source/_posts/2025-02-12.md similarity index 100% rename from source/_daily_emails/2025-02-12.md rename to source/_posts/2025-02-12.md diff --git a/source/_daily_emails/2025-02-13.md b/source/_posts/2025-02-13.md similarity index 100% rename from source/_daily_emails/2025-02-13.md rename to source/_posts/2025-02-13.md diff --git a/source/_daily_emails/2025-02-14.md b/source/_posts/2025-02-14.md similarity index 100% rename from source/_daily_emails/2025-02-14.md rename to source/_posts/2025-02-14.md diff --git a/source/_daily_emails/2025-02-15.md b/source/_posts/2025-02-15.md similarity index 100% rename from source/_daily_emails/2025-02-15.md rename to source/_posts/2025-02-15.md diff --git a/source/_daily_emails/2025-02-16.md b/source/_posts/2025-02-16.md similarity index 100% rename from source/_daily_emails/2025-02-16.md rename to source/_posts/2025-02-16.md diff --git a/source/_daily_emails/2025-02-17.md b/source/_posts/2025-02-17.md similarity index 100% rename from source/_daily_emails/2025-02-17.md rename to source/_posts/2025-02-17.md diff --git a/source/_daily_emails/2025-02-18.md b/source/_posts/2025-02-18.md similarity index 100% rename from source/_daily_emails/2025-02-18.md rename to source/_posts/2025-02-18.md diff --git a/source/_daily_emails/2025-02-19.md b/source/_posts/2025-02-19.md similarity index 100% rename from source/_daily_emails/2025-02-19.md rename to source/_posts/2025-02-19.md diff --git a/source/_daily_emails/2025-02-20.md b/source/_posts/2025-02-20.md similarity index 100% rename from source/_daily_emails/2025-02-20.md rename to source/_posts/2025-02-20.md diff --git a/source/_daily_emails/2025-02-21.md b/source/_posts/2025-02-21.md similarity index 100% rename from source/_daily_emails/2025-02-21.md rename to source/_posts/2025-02-21.md diff --git a/source/_daily_emails/2025-02-22.md b/source/_posts/2025-02-22.md similarity index 100% rename from source/_daily_emails/2025-02-22.md rename to source/_posts/2025-02-22.md diff --git a/source/_daily_emails/2025-02-23.md b/source/_posts/2025-02-23.md similarity index 100% rename from source/_daily_emails/2025-02-23.md rename to source/_posts/2025-02-23.md diff --git a/source/_daily_emails/2025-02-24.md b/source/_posts/2025-02-24.md similarity index 100% rename from source/_daily_emails/2025-02-24.md rename to source/_posts/2025-02-24.md diff --git a/source/_daily_emails/2025-02-25.md b/source/_posts/2025-02-25.md similarity index 100% rename from source/_daily_emails/2025-02-25.md rename to source/_posts/2025-02-25.md diff --git a/source/_daily_emails/2025-02-26.md b/source/_posts/2025-02-26.md similarity index 100% rename from source/_daily_emails/2025-02-26.md rename to source/_posts/2025-02-26.md diff --git a/source/_daily_emails/2025-02-27.md b/source/_posts/2025-02-27.md similarity index 100% rename from source/_daily_emails/2025-02-27.md rename to source/_posts/2025-02-27.md diff --git a/source/_daily_emails/2025-02-28.md b/source/_posts/2025-02-28.md similarity index 100% rename from source/_daily_emails/2025-02-28.md rename to source/_posts/2025-02-28.md diff --git a/source/_daily_emails/2025-03-01.md b/source/_posts/2025-03-01.md similarity index 100% rename from source/_daily_emails/2025-03-01.md rename to source/_posts/2025-03-01.md diff --git a/source/_daily_emails/2025-03-03.md b/source/_posts/2025-03-03.md similarity index 100% rename from source/_daily_emails/2025-03-03.md rename to source/_posts/2025-03-03.md diff --git a/source/_daily_emails/2025-03-05.md b/source/_posts/2025-03-05.md similarity index 100% rename from source/_daily_emails/2025-03-05.md rename to source/_posts/2025-03-05.md diff --git a/source/_daily_emails/2025-03-07.md b/source/_posts/2025-03-07.md similarity index 100% rename from source/_daily_emails/2025-03-07.md rename to source/_posts/2025-03-07.md diff --git a/source/_daily_emails/2025-03-08.md b/source/_posts/2025-03-08.md similarity index 100% rename from source/_daily_emails/2025-03-08.md rename to source/_posts/2025-03-08.md diff --git a/source/_daily_emails/2025-03-09.md b/source/_posts/2025-03-09.md similarity index 100% rename from source/_daily_emails/2025-03-09.md rename to source/_posts/2025-03-09.md diff --git a/source/_daily_emails/2025-03-10.md b/source/_posts/2025-03-10.md similarity index 100% rename from source/_daily_emails/2025-03-10.md rename to source/_posts/2025-03-10.md diff --git a/source/_daily_emails/2025-03-11.md b/source/_posts/2025-03-11.md similarity index 100% rename from source/_daily_emails/2025-03-11.md rename to source/_posts/2025-03-11.md diff --git a/source/_daily_emails/2025-03-12.md b/source/_posts/2025-03-12.md similarity index 100% rename from source/_daily_emails/2025-03-12.md rename to source/_posts/2025-03-12.md diff --git a/source/_daily_emails/2025-03-13.md b/source/_posts/2025-03-13.md similarity index 100% rename from source/_daily_emails/2025-03-13.md rename to source/_posts/2025-03-13.md diff --git a/source/_daily_emails/2025-03-14.md b/source/_posts/2025-03-14.md similarity index 100% rename from source/_daily_emails/2025-03-14.md rename to source/_posts/2025-03-14.md diff --git a/source/_daily_emails/2025-03-15.md b/source/_posts/2025-03-15.md similarity index 100% rename from source/_daily_emails/2025-03-15.md rename to source/_posts/2025-03-15.md diff --git a/source/_daily_emails/2025-03-16.md b/source/_posts/2025-03-16.md similarity index 100% rename from source/_daily_emails/2025-03-16.md rename to source/_posts/2025-03-16.md diff --git a/source/_daily_emails/2025-03-17.md b/source/_posts/2025-03-17.md similarity index 100% rename from source/_daily_emails/2025-03-17.md rename to source/_posts/2025-03-17.md diff --git a/source/_daily_emails/2025-03-18.md b/source/_posts/2025-03-18.md similarity index 100% rename from source/_daily_emails/2025-03-18.md rename to source/_posts/2025-03-18.md diff --git a/source/_daily_emails/2025-03-19.md b/source/_posts/2025-03-19.md similarity index 100% rename from source/_daily_emails/2025-03-19.md rename to source/_posts/2025-03-19.md diff --git a/source/_daily_emails/2025-03-21.md b/source/_posts/2025-03-21.md similarity index 100% rename from source/_daily_emails/2025-03-21.md rename to source/_posts/2025-03-21.md diff --git a/source/_daily_emails/2025-03-22.md b/source/_posts/2025-03-22.md similarity index 100% rename from source/_daily_emails/2025-03-22.md rename to source/_posts/2025-03-22.md diff --git a/source/_daily_emails/2025-03-24.md b/source/_posts/2025-03-24.md similarity index 100% rename from source/_daily_emails/2025-03-24.md rename to source/_posts/2025-03-24.md diff --git a/source/_daily_emails/2025-03-25.md b/source/_posts/2025-03-25.md similarity index 100% rename from source/_daily_emails/2025-03-25.md rename to source/_posts/2025-03-25.md diff --git a/source/_daily_emails/2025-03-26.md b/source/_posts/2025-03-26.md similarity index 100% rename from source/_daily_emails/2025-03-26.md rename to source/_posts/2025-03-26.md diff --git a/source/_daily_emails/2025-03-27.md b/source/_posts/2025-03-27.md similarity index 100% rename from source/_daily_emails/2025-03-27.md rename to source/_posts/2025-03-27.md diff --git a/source/_daily_emails/2025-03-28.md b/source/_posts/2025-03-28.md similarity index 100% rename from source/_daily_emails/2025-03-28.md rename to source/_posts/2025-03-28.md diff --git a/source/_daily_emails/2025-03-29.md b/source/_posts/2025-03-29.md similarity index 100% rename from source/_daily_emails/2025-03-29.md rename to source/_posts/2025-03-29.md diff --git a/source/_daily_emails/2025-03-30.md b/source/_posts/2025-03-30.md similarity index 100% rename from source/_daily_emails/2025-03-30.md rename to source/_posts/2025-03-30.md diff --git a/source/_daily_emails/2025-03-31.md b/source/_posts/2025-03-31.md similarity index 100% rename from source/_daily_emails/2025-03-31.md rename to source/_posts/2025-03-31.md diff --git a/source/_daily_emails/2025-04-01.md b/source/_posts/2025-04-01.md similarity index 100% rename from source/_daily_emails/2025-04-01.md rename to source/_posts/2025-04-01.md diff --git a/source/_daily_emails/2025-04-02.md b/source/_posts/2025-04-02.md similarity index 100% rename from source/_daily_emails/2025-04-02.md rename to source/_posts/2025-04-02.md diff --git a/source/_daily_emails/2025-04-03.md b/source/_posts/2025-04-03.md similarity index 100% rename from source/_daily_emails/2025-04-03.md rename to source/_posts/2025-04-03.md diff --git a/source/_daily_emails/2025-04-04.md b/source/_posts/2025-04-04.md similarity index 100% rename from source/_daily_emails/2025-04-04.md rename to source/_posts/2025-04-04.md diff --git a/source/_daily_emails/2025-04-05.md b/source/_posts/2025-04-05.md similarity index 100% rename from source/_daily_emails/2025-04-05.md rename to source/_posts/2025-04-05.md diff --git a/source/_daily_emails/2025-04-06.md b/source/_posts/2025-04-06.md similarity index 100% rename from source/_daily_emails/2025-04-06.md rename to source/_posts/2025-04-06.md diff --git a/source/_daily_emails/2025-04-07.md b/source/_posts/2025-04-07.md similarity index 100% rename from source/_daily_emails/2025-04-07.md rename to source/_posts/2025-04-07.md diff --git a/source/_daily_emails/2025-04-08.md b/source/_posts/2025-04-08.md similarity index 100% rename from source/_daily_emails/2025-04-08.md rename to source/_posts/2025-04-08.md diff --git a/source/_daily_emails/2025-04-15.md b/source/_posts/2025-04-15.md similarity index 100% rename from source/_daily_emails/2025-04-15.md rename to source/_posts/2025-04-15.md diff --git a/source/_daily_emails/2025-04-16.md b/source/_posts/2025-04-16.md similarity index 100% rename from source/_daily_emails/2025-04-16.md rename to source/_posts/2025-04-16.md diff --git a/source/_daily_emails/2025-04-17.md b/source/_posts/2025-04-17.md similarity index 100% rename from source/_daily_emails/2025-04-17.md rename to source/_posts/2025-04-17.md diff --git a/source/_daily_emails/2025-04-18.md b/source/_posts/2025-04-18.md similarity index 100% rename from source/_daily_emails/2025-04-18.md rename to source/_posts/2025-04-18.md diff --git a/source/_daily_emails/2025-04-19.md b/source/_posts/2025-04-19.md similarity index 100% rename from source/_daily_emails/2025-04-19.md rename to source/_posts/2025-04-19.md diff --git a/source/_daily_emails/2025-04-20.md b/source/_posts/2025-04-20.md similarity index 100% rename from source/_daily_emails/2025-04-20.md rename to source/_posts/2025-04-20.md diff --git a/source/_daily_emails/2025-04-21.md b/source/_posts/2025-04-21.md similarity index 100% rename from source/_daily_emails/2025-04-21.md rename to source/_posts/2025-04-21.md diff --git a/source/_daily_emails/2025-05-01.md b/source/_posts/2025-05-01.md similarity index 100% rename from source/_daily_emails/2025-05-01.md rename to source/_posts/2025-05-01.md diff --git a/source/_daily_emails/2025-05-02.md b/source/_posts/2025-05-02.md similarity index 100% rename from source/_daily_emails/2025-05-02.md rename to source/_posts/2025-05-02.md diff --git a/source/_daily_emails/2025-05-03.md b/source/_posts/2025-05-03.md similarity index 100% rename from source/_daily_emails/2025-05-03.md rename to source/_posts/2025-05-03.md diff --git a/source/_daily_emails/2025-05-04.md b/source/_posts/2025-05-04.md similarity index 100% rename from source/_daily_emails/2025-05-04.md rename to source/_posts/2025-05-04.md diff --git a/source/_daily_emails/2025-05-07.md b/source/_posts/2025-05-07.md similarity index 100% rename from source/_daily_emails/2025-05-07.md rename to source/_posts/2025-05-07.md diff --git a/source/_daily_emails/2025-05-08.md b/source/_posts/2025-05-08.md similarity index 100% rename from source/_daily_emails/2025-05-08.md rename to source/_posts/2025-05-08.md diff --git a/source/_daily_emails/2025-05-09.md b/source/_posts/2025-05-09.md similarity index 100% rename from source/_daily_emails/2025-05-09.md rename to source/_posts/2025-05-09.md diff --git a/source/_posts/2025-05-10.md b/source/_posts/2025-05-10.md new file mode 100644 index 000000000..a6508c8dc --- /dev/null +++ b/source/_posts/2025-05-10.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-10 +title: Write it down +permalink: /daily/2025/05/10/write +--- + +There's nothing more frustrating for me than seeing an error I've seen before and not remembering how I fixed it last time.
I try to remember and search for the error message, just to find and read the same articles and posts again or watch the same videos.
I wrote my first blog post on my website in 2010 to document my learning for myself and to share with others.
I've also been a keen note taker, using tools like Evernote and others to take notes and write documentation for myself to refer to in the future.
These days, I just write plain text files using Nick Janetakis' notes program, which I've modified slightly by patching it to create daily notes instead of monthly ones.
They're fast to write, easy to search and available offline if I'm traveling or away from my computer.
I much prefer being able to search my notes and find what I'm looking for or, if it's a post that I've written publicly, searching online and finding my own answer.
Whether you're a new or experienced Developer, you're always learning new things, so write them down for yourself and, if you want, write publicly and share your learnings with others.
diff --git a/source/_posts/2025-05-11.md b/source/_posts/2025-05-11.md new file mode 100644 index 000000000..269fd2099 --- /dev/null +++ b/source/_posts/2025-05-11.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-11 +title: My daily email archive, powered by Drupal and Tome +permalink: /daily/2025/05/11/email-archive-tome +--- + +This email will be the first in my archive to be powered by Drupal and Tome.
I'm a long-time fan of static site generators and have used Sculpin for several years for my website, but it has slowed down recently - I think because of the number of pages it needs to generate for my email archive pages.
This email will be #821.
I've considered moving to Tome - a static site generator for Drupal - since recording a podcast episode with Sam Mortenson and, after porting across my theme and migrating the emails using the Feeds module, I've updated my Nginx configuration to serve the email archive section to HTML generated by Tome.
The main branch in my code repository now includes the Tome commits and I'll be working my way through my task list as I continue migrating incrementally and switching more sections to Tome.
diff --git a/source/_posts/2025-05-12.md b/source/_posts/2025-05-12.md new file mode 100644 index 000000000..337596590 --- /dev/null +++ b/source/_posts/2025-05-12.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-12 +title: Writing tests for Tome +permalink: /daily/2025/05/12/writing-tests-tome +--- + +I have recently migrated my daily email archive to Drupal and Tome.
The result is the same - a static website that I can upload onto my server, but it's created with Drupal 11 locally and exported to a static website.
Similar to being able to extend Sculpin with PHP, I get the same benefit with Tome.
I can write the same PHP code and custom Drupal modules as I would with a non-Tome Drupal website.
To count the number of sent daily emails, I created a opd_daily_emails
module with a token that generates the number of emails, and displays it on the page.
I can also write the same automated tests.
I have a functional test that confirms the token result is generated and rendered correctly using TokenTestTrait
- supported by some kernel tests and a custom DailyEmailTestTrait
that makes it easier to create daily email nodes within the tests.
I have all the power and flexibility of Drupal locally and the benefits of a static site when it's deployed.
P.S. If you want to learn how to write automated tests in Drupal, subscribe to my free 10-day email course.
diff --git a/source/_posts/2025-05-13.md b/source/_posts/2025-05-13.md new file mode 100644 index 000000000..1a10a9c9f --- /dev/null +++ b/source/_posts/2025-05-13.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-13 +title: Writing your own test traits +permalink: /daily/2025/05/13/writing-your-own-test-traits +--- + +In Drupal, there are different types of automated tests we can write.
The most common I use are Functional, Kernel and Unit - which I explain about in my Test Driven Drupal talk.
If I'm writing multiple of the same type, I'll often create my own base test class that extends BrowserTestCase
, KernelTestCase
or whatever base class I need rather than extending it directly.
This allows me to write custom helper functions and share behaviour between the tests.
An example is the createDailyEmailNode
method I wrote to simplify creating daily emails in my tests since migrating to Tome.
But, what if you want to do this for different types of test?
Enter, traits.
Traits are a way of reusing code without inheritance - meaning without extending a base class.
I can use a trait in my functional and kernel tests whilst both extend their required base classes.
I did this with my createDailyEmailNode
method so I could re-use it in both types of tests when counting the number of sent daily emails.
To see this, you can look at the code on my Forgejo instance.
P.S. If you want to learn how to write automated tests in Drupal, subscribe to my free 10-day email course.
diff --git a/source/_posts/2025-05-15.md b/source/_posts/2025-05-15.md new file mode 100644 index 000000000..3f1ca8bba --- /dev/null +++ b/source/_posts/2025-05-15.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-15 +title: Don't dump. Write a test. +permalink: /daily/2025/05/15/dont-dump-write-test +--- + +How often do you use functions like var_dump
, dump
, dd
or console.log
to debug an issue?
You want to check the type or value of something, so you add the debug code and reload the page.
If you don't resolve it on the first attempt, you change it or add more debugging lines which, hopefully, you'll remember to clean up before committing your code.
This is a time-consuming process, especially if the code you're debugging isn't easy to trigger.
Maybe it only happens when you've submitted a long form, so you need to manually complete the form each time you want to debug it, if certain steps have already happened or the application state is a certain way.
Instead, consider writing an automated test.
They can be run when needed without needing to manually fill in forms or complete complex steps, and become a permanent part of the codebase rather than something that's only added temporarily whilst debugging.
They can be run manually by Developers, automatically in a CI pipeline and serve as documentation and examples.
Don't dump. Test.
P.S. If you want to learn how to write automated tests in Drupal, subscribe to my free 10-day email course.
diff --git a/source/_posts/2025-05-18.md b/source/_posts/2025-05-18.md new file mode 100644 index 000000000..524f317b4 --- /dev/null +++ b/source/_posts/2025-05-18.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-18 +title: How quickly can you get back online? +permalink: /daily/2025/05/18/how-quickly-can-you-get-back-online +--- + +The DORA metrics are four key metrics used to indicate the velocity and stability of software development.
They are:
If you had an issue after a release to production, how long would it take you to recover?
If the amount of changes is small and it hasn't been long since the last release, it could be easy to revert the code change and re-deploy.
If it's been a while since the last release or the release contains large changes, this will be harder.
If you use feature flags, can you disable a flag and stop the code that's causing the issue?
What if you need to recreate the whole environment?
How old is your most recent backup? Have you verified the backup works and can be used to restore a database, the user-uploaded files or the whole environment?
A backup is only good if it is recent and can be restored. Otherwise, it's useless.
But, restoring from backups can take time and lose data, so this should be the last option.
Releasing small changes often and using tools like feature flags will help minimise the downtime from an issue and allow service to be restored as quickly as possible.
diff --git a/source/_posts/2025-05-19.md b/source/_posts/2025-05-19.md new file mode 100644 index 000000000..261032745 --- /dev/null +++ b/source/_posts/2025-05-19.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-19 +title: Learning lessons +permalink: /daily/2025/05/19/learning-lessons +--- + +Once you've resolved an issue and restored service, what lessons can be learned to ensure the same issue doesn't happen again?
Could the issue have been caught or identified sooner, before it got to production?
Ideally, an issue would be identified in a local environment, in a CI pipeline or a staging environment.
Anything before production, but the sooner, the better.
Can you introduce more tools or automated checks?
PHP in particular has a lot of tools for linting, analysing and testing code, such as PHPStan and PHPUnit.
These can be run locally or automatically within a CI pipeline.
If the pipeline is passing, the code should be deployable.
But, if there is an issue, what needs to be added to the pipeline that would have identified it?
How can you iterate and make your development and deployment processes better and more robust?
diff --git a/source/_posts/2025-05-20.md b/source/_posts/2025-05-20.md new file mode 100644 index 000000000..305e85fb1 --- /dev/null +++ b/source/_posts/2025-05-20.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-20 +title: Why write your own CMS? +permalink: /daily/2025/05/20/why-write-your-own-cms +--- + +I've been surprised to still recently find software development agencies using their own proprietary content management systems and frameworks.
With so many available open source options, like Drupal and Symfony, why would people write their own?
Why spend the time and effort to build basic functionality like user registration and login when existing tools already solve that problem?
Why ignore the thousands of open source modules, themes, plugins, packages and libraries that are available?
Instead, leverage the tools that already exist and focus on solving domain-specific issues and writing code that's genuinely specific to the project.
Then you can contribute some of the saved time back to the project and make it better for yourself and others in the future and ready for the next project.
diff --git a/source/_posts/2025-05-24.md b/source/_posts/2025-05-24.md new file mode 100644 index 000000000..e40f3c0cd --- /dev/null +++ b/source/_posts/2025-05-24.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-24 +title: Using AI for web coding with Luke McCormick +permalink: /daily/2025/05/24/using-ai-web-coding-luke-mccormick +--- + +This week, I was excited to welcome Luke McCormick back to the Beyond Blocks podcast.
We discussed his Simplify Drupal project and using AI tools, such as the Cursor editor, for web browsing.
Luke recently gave a talk about this at the Stanford WebCamp conference, so it was great to discuss this further and learn how he's been using AI in his development workflow.
I have a few new guests lined up, so expect more episodes of the Beyond Blocks podcast in the coming weeks.
If you want to be a guest on a future episode, reply to this email and let me know.
diff --git a/source/_posts/2025-05-25.md b/source/_posts/2025-05-25.md new file mode 100644 index 000000000..d426bfd19 --- /dev/null +++ b/source/_posts/2025-05-25.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-25 +title: Why I prefer a rolling Linux distribution +permalink: /daily/2025/05/25/why-i-prefer-rolling-linux-distribution +--- + +I use NixOS as the Linux distribution on my laptop and home server, and specifically the unstable channel.
This is the "rolling" version of NixOS that is continuously updated with the newest and latest packages, compared to the stable releases like 24.11 and 25.05 that are released twice a year.
I don't necessarily do this to get the latest packages.
I do it to keep on top of configuration changes.
I run "nix flake update" usually once a week to download the latest updates.
If there are breaking changes or notices since I last updated, I can address them and do it iteratively rather than waiting to do them every six months.
Similar to application deployments, I update early and often.
One of the great things about NixOS is, if there is an application that breaks on the unstable branch, I can pin it to the stable release until it works again.
This means I get the benefits of both the rolling and stable approaches.
If you want to see my NixOS configuration, it's publicly available on my Forgejo instance.
diff --git a/source/_posts/2025-05-27.md b/source/_posts/2025-05-27.md new file mode 100644 index 000000000..59f0471ad --- /dev/null +++ b/source/_posts/2025-05-27.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-27 +title: Using AI for web coding with Luke McCormick (re-uploaded) +permalink: /daily/2025/05/27/using-ai-web-coding-luke-mccormick-re-uploaded +--- + +A few days ago, I published a new episode of the Beyond Blocks podcast with Luke McCormick, where we spoke about using AI and tools like Cursor for web coding.
Unfortunately, there was an export issue with the episode that affected the sound quality.
The recording was fine and the mp3 file was re-created and uploaded again to the episode page and the podcast feed for Spotify, Pocket Casts, etc.
Apologies to Luke and anyone who listened to the original release for the poor quality, but it should be fine now and I'll add this to my checklist when editing podcast episodes to ensure it doesn't happen again.
diff --git a/source/_posts/2025-05-28.md b/source/_posts/2025-05-28.md new file mode 100644 index 000000000..e565b63c6 --- /dev/null +++ b/source/_posts/2025-05-28.md @@ -0,0 +1,50 @@ +--- +date: 2025-05-28 +title: Drupal-powered podcast pages +permalink: /daily/2025/05/28/drupal-powered-podcast-pages +--- + +Following my daily email archive, I've recently switched the podcast pages on my website from Sculpin to Drupal/Tome.
The recent episode with Luke McCormick was the first to be created in Drupal and served from static HTML generated by Tome, and I've since re-created the other podcast episodes and the podcast landing page.
The next steps are to re-add the links on a podcast episode page to other episodes with the same guests, and to rebuild the podcast feed that's used to update players like Spotify and PocketCasts.
Once I've finished this, I'll move on to my presentations pages as those are the ones that change next frequently.
A lot of the content is still served from HTML generated by Sculpin, which is stored in one directory on my server.
The newer content, generated by Tome, is stored in another directory.
In my Nginx configuration, I change the root
value based on the URL, so depending on which page you're visiting, you'll get content from Sculpin or Tome.
Here's part of that configuration:
server {
+ listen localhost:8095:
+ server_name www.oliverdavies.uk:
+ root /var/www/vhosts/website-sculpin;
+
+ location / {
+ try_files $uri $uri.html $uri/index.html =404;
+ }
+
+ location ~ ^/archive {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/core {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/daily/.+ {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/homelab {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/podcast {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/sites/default/files {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+
+ location ~ ^/themes/custom/opdavies {
+ try_files $uri $uri.html $uri/index.html =404;
+ root /var/www/vhosts/website-tome;
+ }
+}
This is the same approach as upgrading incrementally from old versions of software to new versions or different software.
Neither site knows about the other and they work independently.
My Nginx configuration is managed within my NixOS configuration, so you can see the whole configuration for my website and how I've leveraged the Nix language to simplify the process of migrating new paths to Tome.
diff --git a/source/_posts/2025-05-30.md b/source/_posts/2025-05-30.md new file mode 100644 index 000000000..25ca21bcd --- /dev/null +++ b/source/_posts/2025-05-30.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-30 +title: Do you need that module? +permalink: /daily/2025/05/30/do-you-need-module +--- + +You've been asked to add some new functionality to a project.
There is a module or library available that you could download and use.
You could write a custom module.
But do you really need it?
Is there another way to implement the feature without adding more modules or libraries to your application or writing custom code?
Is there an alternative implementation that is easier to implement with what you already have?
How flexible are the requirements?
Can they be bent to fit within an existing solution?
Having less code in your application will make it easier to maintain and upgrade in the future, so keep it as lean and minimal as possible.
diff --git a/source/_posts/2025-05-31.md b/source/_posts/2025-05-31.md new file mode 100644 index 000000000..995bc46c9 --- /dev/null +++ b/source/_posts/2025-05-31.md @@ -0,0 +1,7 @@ +--- +date: 2025-05-31 +title: Do you still need that module? +permalink: /daily/2025/05/31/do-you-still-need-module +--- + +If a module or library has been added to an application, it was done to serve a purpose.
It must add some required functionality that was asked for earlier in the application''s lifecycle.
It was needed then.
But it is still needed now?
Are the original requirements still valid?
Have they changed or are no longer needed?
If the code is no longer serving a purpose, it should be removed.
Common culprits in Drupal projects are the Feeds and Migrate modules, which are used to import data from external sources, such as legacy applications when migrating to Drupal.
Once the data has been imported and the site is live, the modules are often so longer needed.
As I said yesterday, having less code in your application will make it easier to maintain and upgrade in the future, so keep it as lean and minimal as possible - but this is an ongoing process as requirements change over time.
diff --git a/source/_posts/2025-06-01.md b/source/_posts/2025-06-01.md new file mode 100644 index 000000000..ac5d3b11c --- /dev/null +++ b/source/_posts/2025-06-01.md @@ -0,0 +1,7 @@ +--- +date: 2025-06-01 +title: Good commit messages don't always matter +permalink: /daily/2025/06/01/good-commit-messages-dont-always-matter +--- + +Writing good commit messages is important.
A good commit message doesn't just describe what changed, it captures why it was changed.
It can detail other approaches that were considered or tried before deciding on the end solution.
It can contain links to relevant issues, documentation pages, blog posts or videos.
It can document any manual deployment steps, or follow-up actions that will be addressed in future commits.
This all makes sense for permanent commits.
But, sometimes you may make a temporary commit that won't always remain in the codebase.
For example, if you're working in a pair or mob programming session, you want to be able to switch drivers as quickly and seamlessly as possible.
In that situation, you just need a basic commit message to share the latest changes, so a quick wip
commit is fine and it can be amended later.
As well as writing good commit messages, I've previously written about not squashing commits when merging.
I think it's beneficial to keep the history of the commits that led to a change, especially if detailed messages have been written for some of the commits.
Typically, if the commits are squashed as part of a pull or merge request, the history and information is lost or all the messages are merged together - making them hard to read and, arguably, less valuable.
If you're working in a pair or mob and creating temporary commits on a short-lived branch, that's a situation when squashing commits is OK - as long as it's done properly.
I wouldn't have a generic automatically generated message.
I'd take the time to review the changes on the temporary branch and compare them to the mainline, remove any unrelated changes and write a new commit message that describes all the changes.
I'd make sure the new message is used and not lost when merged - especially when using online tools.
Then I can squash any temporary commits and merge the final squashed version.
diff --git a/source/_posts/2025-06-03.md b/source/_posts/2025-06-03.md new file mode 100644 index 000000000..c855beee4 --- /dev/null +++ b/source/_posts/2025-06-03.md @@ -0,0 +1,7 @@ +--- +date: 2025-06-03 +title: Discussing Drupal CMS Recipes with Gareth Alexander +permalink: /daily/2025/06/03/discussing-drupal-cms-recipes-gareth-alexander +--- + +I''m happy to say that Gareth Alexander - Drupal CMS Accessibility Tools Track Lead - is the newest guest on the Beyond Blocks podcast.
Gareth was a speaker at the recent DrupalCamp England event in Cambridge, where he spoke about Drupal CMS and Recipes - something I was keen to learn more about, so I was delighted to have him on the show.
If you want to be a guest on a future episode or suggest someone who should be, reply to this email and let me know. Any suggestions or recommendations welcomed!
diff --git a/source/_posts/2025-06-04.md b/source/_posts/2025-06-04.md new file mode 100644 index 000000000..9dc4e0908 --- /dev/null +++ b/source/_posts/2025-06-04.md @@ -0,0 +1,7 @@ +--- +date: 2025-06-04 +title: Picking cherries +permalink: /daily/2025/06/04/picking-cherries +--- + +If you''re working on a feature branch, or a temporary branch for pair or mob programming, what do you do if you accidentally commit a change to the wrong branch?
Do you reset your changes, switch to the correct branch and re-create the same changes manually?
You don''t need to.
Git has a solution for this.
Create the commit as you would on the correct branch and copy the commit SHA.
Use git checkout
or git switch
to move to the correct branch and use git cherry-pick
with the commit SHA.
It will pluck the commit from the branch and re-apply the changes with the same commit message.
Then, if you merge or rebase your temporary branch, Git will know the change has already been applied and skip that commit.
No need to re-do the same changes again manually.
diff --git a/source/_posts/2025-06-08.md b/source/_posts/2025-06-08.md new file mode 100644 index 000000000..2178dc0aa --- /dev/null +++ b/source/_posts/2025-06-08.md @@ -0,0 +1,30 @@ +--- +date: 2025-06-08 +title: Switching to NixVim +permalink: /daily/2025/06/08/switching-nixvim +--- + +I've been [a full-time Neovim user][0] since July 2021. + +I've used Nix since September 2022, when I migrated my dotfiles from using Ansible to use Nix and Home Manager. + +My Neovim configuration has gone through several iterations to what it is today. + +I've used Nix for a while to install plugins for Neovim, but the configuration was all written in Lua files which were placed by Home Manager into the correct directory. + +Now, I've switched to using a project called NixVim. + +It enables configuring Neovim using the Nix language, which is converted to Lua code behind the scenes. + +Doing this makes my configuration files [more consistent and easier to maintain][1], and reduced the amount of code I needed for my Neovim configuration. + +Most of the configuration in Nix is equivalent to the options in Lua, but there are some great settings like `plugins.lsp.enable` and `plugins.cmp.enable` that make it easy to configure language servers and completion. + +I've also found a [great episode about this][2] on the Full Time Nix podcast that I'd recommend to find out more. + +If you're interested in Nix and/or Neovim, [give NixVim a look][3]. + +[0]: /blog/going-full-vim +[1]: /daily/2024/11/21/one-configuration-language-to-rule-them-all +[2]: https://fulltimenix.com/episodes/contributing-to-nixpkgs-nixvim-with-gaetan-lepage +[3]: https://github.com/nix-community/nixvim diff --git a/source/_posts/2025-06-09.md b/source/_posts/2025-06-09.md new file mode 100644 index 000000000..2c04788bb --- /dev/null +++ b/source/_posts/2025-06-09.md @@ -0,0 +1,38 @@ +--- +date: 2025-06-09 +title: tmux is my session manager +permalink: /daily/2025/06/09/tmux-my-session-manager +--- + +If you're subscribed to my mailing list, listened to a podcast episode or watched any of my presentations or live streams, you'll probably know that I use a command line-based approach to software development. + +I use NixOS as my operating system, Neovim and tmux for coding, and various other command-line tools as part of my daily workflow. + +tmux is a terminal multiplexer - a tool to run multiple sessions, windows and panes within the same terminal. + +I have one session per project or directory, each with its own windows and panes to run Neovim and other tools to work on that project. + +YouTube and Twitch streamer rwxrob said that tmux was his window manager, based on how he used it to organise his desktop. + +tmux is my session manager. + +As well as being able to easily switch between codebases, each has it's own startup script that bootstraps the project for me. + +This is the script for my website: + +```bash +PATH="${PATH}:./vendor/bin" + +tmux new-window -dn scratch +tmux new-window -dn server +tmux new-window -dn tailwindcss -c "themes/opdavies" + +tmux send-keys -t server "drush runserver" Enter +tmux send-keys -t tailwindcss "tailwindcss --input css/tailwind.css --output build/tailwind.css --watch" Enter + +nvim . +``` + +It creates windows for scratch commands, starts a web server with Drush, starts Tailwind CSS to generate any new styles and opens Neovim. + +Some are simpler and some are more complex, but it reduces the friction between switching projects and makes it quick and simple. diff --git a/source/_posts/2025-06-10.md b/source/_posts/2025-06-10.md new file mode 100644 index 000000000..6b768a584 --- /dev/null +++ b/source/_posts/2025-06-10.md @@ -0,0 +1,17 @@ +--- +date: 2025-06-10 +title: Easily amend commits with git-instafix +permalink: /daily/2025/06/10/easily-amend-commits-git-instafix +--- + +How often do you make commits to a Git branch to later realise that you need to amend one of your unpushed commits? + +A simple `git commit --amend` will only work on the most recent commit, so that won't work if you've added more commits after the one you want to amend. + +You can make a temporary commit, rebase your branch and squash the temporary commit into the original one. + +Or you can use [git-instafix][0] - a tool for easily fixing and amending old commits. + +Instead of making a temporary commit, running `git-instafix` will show your unpushed commits - allowing you to select one and it will amend it for you in a single step, making it easier to keep your Git commit history cleaner and easier to read and review. + +[0]: https://github.com/quodlibetor/git-instafix diff --git a/source/_posts/2025-06-11.md b/source/_posts/2025-06-11.md new file mode 100644 index 000000000..f6adaa86b --- /dev/null +++ b/source/_posts/2025-06-11.md @@ -0,0 +1,17 @@ +--- +date: 2025-06-11 +title: Nix for PHP Developers +permalink: /daily/2025/06/11/nix-php-developers +--- + +I've been brainstorming ideas for new presentations to give at meetups and conferences. + +The one that appeals to me at the moment is "Nix for PHP Developers". + +I've been using Nix since September 2022 and have replaced Docker in all of my projects with Nix-based development shells to add the required versions of PHP and anything else needed for each project. + +In the talk, I can introduce some Nix and NixOS basics before showing different PHP examples from basic development shells with PHP to full Docker Compose-like setups for Drupal applications. + +Does this sound interesting? + +If you have feedback or suggestions, or would like me to give this or another talk at your meetup, get in touch. diff --git a/source/_posts/2025-06-12.md b/source/_posts/2025-06-12.md new file mode 100644 index 000000000..dbc63abe7 --- /dev/null +++ b/source/_posts/2025-06-12.md @@ -0,0 +1,21 @@ +--- +date: 2025-06-12 +title: Refactoring is a rabbit hole +permalink: /daily/2025/06/12/refactoring-rabbit-hole +--- + +I enjoy refactoring code. + +Once I've finished writing some code and all the tests are passing, I like reviewing what I've written and looking for ways to make it more readable or easier to maintain whilst making sure it still works. + +I usually start with one small refactor. + +Then I spot another. + +And another. + +I end up going down a refactoring rabbit hole and I keep seeing changes I could make. + +But, at some point, you need to say enough refactoring and decide if the code is good enough to release, whether you do this yourself or as part of a pair or mob. + +It can always be refactored more in the future, if needed. diff --git a/source/_posts/2025-06-13.md b/source/_posts/2025-06-13.md new file mode 100644 index 000000000..41f44a76a --- /dev/null +++ b/source/_posts/2025-06-13.md @@ -0,0 +1,21 @@ +--- +date: 2025-06-13 +title: Refactorings should be small +permalink: /daily/2025/06/13/refactorings-should-be-small +--- + +When refactoring code, try and make each change as small as possible. + +Just renaming a variable to something easier to understand is a valid refactor. + +So is extracting a small method or moving logic to another class. + +I recently make [some refactoring commits](https://code.oliverdavies.uk/opdavies/oliverdavies.uk/commits/branch/main/search?q=Refactor) to my website and, rather than squashing them, I pushed them to show how simple refactoring can be. + +It's easier to see and review each refactor separately in its own commit instead of in one large squashed commit. + +It's also easier to keep the code in a working state if the refactors are smaller. + +If you break the code whilst refactoring, get back to a working state as soon as possible - even if it means resetting back to the last working commit. + +Don't keep making changes - it will be harder to get back to a working state. diff --git a/source/_posts/2025-06-14.md b/source/_posts/2025-06-14.md new file mode 100644 index 000000000..a3d81d1c2 --- /dev/null +++ b/source/_posts/2025-06-14.md @@ -0,0 +1,21 @@ +--- +date: 2025-06-14 +title: Do code reviews prevent refactoring? +permalink: /daily/2025/06/14/do-code-reviews-prevent-refactoring +--- + +Does having a strict code review process prevent or discourage refactoring? + +If I want to make a very small refactor, like renaming a variable, am I likely to do that if I need to make a feature branch, create a merge request, and wait for multiple reviews from team members? + +What if it takes a day or more for someone to review it? + +Is it worth a reviewer's time to review a refactoring that could only be a single line of changed code? + +Alternatively, what if you were doing trunk-based development and/or continuous integration? + +What if you could make the small change, push it and have a CI pipeline automatically review it? + +The whole process could be completed in minutes. + +No long wait for manual code review and once you finish that refactoring, [you may find another](/daily/2025/06/13/refactorings-should-be-small). diff --git a/source/_posts/2025-06-15.md b/source/_posts/2025-06-15.md new file mode 100644 index 000000000..85eb1bef7 --- /dev/null +++ b/source/_posts/2025-06-15.md @@ -0,0 +1,19 @@ +--- +date: 2025-06-15 +title: Is refactoring a lost art? +permalink: /daily/2025/06/15/refactoring-lost-art +--- + +How many people or teams take time to refactor their code? + +Once the code is written and working, is it immediately considered done and not looked at again? + +Or it is reviewed to check if it is as clear and readable as it can be? + +Is it changed to be easier to change in the future? + +How many open source projects have issues or merge requests for refactoring, or are they only focused on new features or fixing bugs? + +Like writing automated tests, time should be invested in refactoring code. + +Having cleaner code that's easier to read, understand and change in the future will make the tasks of future Developers easier and make the codebase easier to maintain and provide a solid foundation for future development. diff --git a/source/_posts/2025-06-16.md b/source/_posts/2025-06-16.md new file mode 100644 index 000000000..7bfcaba7a --- /dev/null +++ b/source/_posts/2025-06-16.md @@ -0,0 +1,31 @@ +--- +date: 2025-06-16 +title: Refactoring, semantic versioning and backward compatibility +permalink: /daily/2025/06/16/refactoring-semantic-versioning-and-backward-compatibility +--- + +There's an approach to refactoring I've seen in a number of open source projects, including Symfony and Drupal. + +In Drupal 7 and earlier, there were only minor version releases. + +Drupal 7 started at 7.0 and ended at 7.103. + +Code could be refactored, but it still needed to be backward compatible so existing code couldn't be removed. + +Now, many projects have adopted semantic versioning that contain major, minor and patch versions, like Drupal 11.2.0. + +Minor and patch versions are backward compatible, but major versions - such as Drupal 10 and 11 - can break backward compatibility. + +This means old code can be removed and the codebase can be tidied. + +A good example of this was the `drupal_set_message()` function that was replaced by the `Messenger` service. + +The original code was moved, the function was changed to use the new service and the function was marked as deprecated. + +If you used it, you were notified it would be removed in the next major version. + +It still worked so was still backward compatible. + +When the next major version was released, the old function was removed as backward compatibility could be broken. + +I like this approach as it means code can be refactored and improved, users are given time to update their code, new features can be continuously added, and the main codebase is kept clean and avoids a lot of legacy code. diff --git a/source/_posts/2025-06-17.md b/source/_posts/2025-06-17.md new file mode 100644 index 000000000..0d26f2151 --- /dev/null +++ b/source/_posts/2025-06-17.md @@ -0,0 +1,52 @@ +--- +date: 2025-06-17 +title: Drupal Bundle Classes +permalink: /daily/2025/06/17/drupal-bundle-classes +--- + +As someone who writes a lot of custom Drupal modules, one of my favourite additions to Drupal has been Bundle Classes. + +What do they do? + +When writing Drupal modules, instead of relying on generic classes like `Node` or `Term`, you can create your own class for each entity type (e.g. each content type or taxonomy vocabulary). + +This makes the code more readable and means you can add behaviour to each class by adding its own methods. + +You can see how I've done this on my website: + +```php +function opd_presentations_entity_bundle_info_alter(array &$bundles): void { + if (isset($bundles['node'])) { + $bundles['node'][Presentation::NODE_TYPE]['class'] = Presentation::class; + } + + if (isset($bundles['paragraph'])) { + $bundles['paragraph'][Event::PARAGRAPH_TYPE]['class'] = Event::class; + } +} +``` + +Within my `opd_presentations.module` file, I override the classes Drupal uses for Presentation nodes and Event paragraph types. + +My Presentation class looks like this: + +```php +final class Presentation extends Node implements NodeInterface { + + public const NODE_TYPE = 'presentation'; + + public function getEvents(): Events { + return Events::fromEvents($this->get('field_events')->referencedEntities()); + } + +} +``` + +With this, to get the events for any presentation, I can do something like `$presentation->getEvents()` and this code will be used. + +I use the same approach in my podcast module. The [code for my website is public][0] if you want to see other examples of how I'm using this approach. + +P.S. If you have questions about how to use this approach or other ways to improve your Drupal code, [book a one-on-one consulting call with me][1] and I'll help you get started. + +[0]: https://code.oliverdavies.uk/opdavies/oliverdavies.uk/src/commit/8a480121d203ca6f51310f952b15cfa09080b034/modules +[1]: /call diff --git a/source/_posts/2025-06-18.md b/source/_posts/2025-06-18.md new file mode 100644 index 000000000..6c6bda2fe --- /dev/null +++ b/source/_posts/2025-06-18.md @@ -0,0 +1,35 @@ +--- +date: 2025-06-18 +title: Exploring Drupal Test Traits +permalink: /daily/2025/06/18/exploring-drupal-test-traits +--- + +I've [given talks and workshops][3] on automated testing in Drupal. + +I created [a free 10-day email course][2]. + +Something I haven't used until recently is [Drupal Test Traits][4]. + +The built-in PHPUnit tests create a new installation of Drupal for each test, setting up everything from scratch and installing the specified modules and configuration for each test. + +The tests don't know about the site they're running on, which is what allows them to run in Drupal CI or on any Developer's computer. + +Each test is responsible for creating its own environment. + +This is part of the "arrange" step of writing an automated test - creating the situation for the test to run, such as installing configuration and creating content, before performing actions and making assertions. + +But, what if you want to test an existing website? + +Drupal Test Traits provides an `ExistingSiteBase` class and a number of traits that allow for testing an existing Drupal website and simplifies the setup process. + +You can see this in [my PresentationTest class][0] - there's no setup like recreating content type and field configuration as it knows about the "real" site I'm working on. + +Some tests like [my PresentationCounterTest][1] I've had to write differently to count for the existing content, but still work. + +I'm going to continue trying out Drupal Test Traits and, if it continues to go well, include it in my future talks and workshops. + +[0]: https://code.oliverdavies.uk/opdavies/oliverdavies.uk/src/commit/b8c3f6d9a761f126616f0be12d3c35dffef41bbe/modules/opd_presentations/tests/src/Functional/PresentationTest.php +[1]: https://code.oliverdavies.uk/opdavies/oliverdavies.uk/src/commit/b8c3f6d9a761f126616f0be12d3c35dffef41bbe/modules/opd_presentations/tests/src/Functional/PresentationCounterTest.php +[2]: /atdc +[3]: /presentations/tdd-test-driven-drupal +[4]: https://www.drupal.org/project/dtt diff --git a/source/_posts/2025-06-19.md b/source/_posts/2025-06-19.md new file mode 100644 index 000000000..d4912c14e --- /dev/null +++ b/source/_posts/2025-06-19.md @@ -0,0 +1,23 @@ +--- +date: 2025-06-19 +title: You have nothing to lose but your bugs +permalink: /daily/2025/06/19/you-have-nothing-lose-your-bugs +--- + +I'm re-reading a book called "Growing Object-Oriented Software, Guided by Tests", written by Steve Freeman and Nat Pryce. + +In it, is says this as one of the highlighted pieces of text: + +> ... you have nothing to lose but your bugs +> +> We cannot empathize strongly enough how liberating it is to work on test-driven code that has thorough test coverage. We find that we can concentrate on the task in hand, confident that we're doing the right work and that it's actually quite hard to break the system - as long as we follow the practices. + +I definitely agree with this. + +It's great to work on a codebase that has a working and thorough test suite. + +I can focus on adding a feature or fixing a bug without worrying about breaking the existing functionality. + +I can refactor code and know it still works by just running the tests. + +If you haven't already, make adding automated tests to your application a priority. diff --git a/source/_posts/2025-06-20.md b/source/_posts/2025-06-20.md new file mode 100644 index 000000000..d5495762c --- /dev/null +++ b/source/_posts/2025-06-20.md @@ -0,0 +1,41 @@ +--- +date: 2025-06-20 +title: My thoughts on the Action pattern +permalink: /daily/2025/06/20/my-thoughts-action-pattern +--- + +The Action pattern is a relatively new design pattern that's become popular in the PHP community, particularly with Laravel Developers. + +The pattern is a simplified version of the Command pattern, with no separate Handler class. The Action class is responsible for the handling and execution logic. + +In most cases, an Action class only has a single public method called `execute()` or `handle()`, or uses PHP's `__invoke()` magic method. + +This is a different approach from a Service class that has multiple methods to perform different tasks. + +Here's a simplified version of the code of an Action from my website: + +```php +classes(Selector::inNamespace('App\Action')) + ->shouldBeNamed( + fqcn: '/^(?!.*Action$).*$/', + regex: TRUE, + ); +} +``` + +This is using PHPat - an extension for PHPStan - that finds all classes in an `App\Action` namespace and checks the class name matches the given format. + +If the class name is incorrect, PHPStan will return an error: + +> App\Action\DoesSomethingAction should be named matching the regex /^(?!.*Action$).*$/ + +I [created more examples][0] to ensure the classes are final, read-only and don't extend or implement anything. + +PHPat has [an examples page][2] of potential use cases for architectural tests, and how to implement layered architectures or Model-View-Controller. + +Pest PHP also has an architectural testing library so, if you use PHP, try both and see which works best for you. + +[0]: https://code.oliverdavies.uk/opdavies/phpat-example/src/commit/cf07cec6d20bd4f6108736efdfbd2af549df2748/tests/Architecture/ArchitectureTest.php +[1]: /daily/2025/06/21/consistency-key +[2]: https://www.phpat.dev/examples diff --git a/source/_posts/2025-06-23.md b/source/_posts/2025-06-23.md new file mode 100644 index 000000000..2435fd46f --- /dev/null +++ b/source/_posts/2025-06-23.md @@ -0,0 +1,59 @@ +--- +date: 2025-06-23 +title: Giving things descriptive names +permalink: /daily/2025/06/23/giving-things-descriptive-names +--- + +An approach I like to use when writing code is value objects, and it was great to see a recent talk by Dan Leech (past guest on the [Beyond Blocks podcast][podcast]) about them at a recent PHP meetup. + +To quote from Dan's talk - "value objects are objects that represent a value". + +They are simple classes that give a meaningful name to a value. + +For example, I could write this value object to represent a railway station code: + +```php + readonly final class StationCode { + + public function __construct(public string $value) { + assert(strlen($value) === 3); + } + +} +``` + +Now, instead of referencing a generic `string` type, I can reference a `StationCode` object. + +This makes the code more readable and easier to understand. + +In this case, I can also validate the string is in the correct format so I know that anywhere a `StationCode` object is used, its values are the correct format and this is done in a single place. + +I can also take this a step further and introduce a `Journey` value object that represents a journey between two stations: + +``` +readonly final class Journey { + + public function __construct( + public StationCode $origin, + public StationCode $destination, + ) { + } + +} +``` + +In this case, a journey always has two stations - an origin and a destination. + +Creating an object to represent this gives it a name, but also prevents data clumping - where groups of variables are passed around together. + +These are two examples from my recent code, but I could find many others. + +And that's one reason why I like value objects - they are so easy and quick to use. + +If you haven't before, try introducing value objects into your code. + +If you already do, reply and tell me about some of the use cases you've found for them. + +You can see the slides from Dan's presentation at