diff --git a/astro.config.mjs b/astro.config.mjs
index 0152b6f..5e6c56d 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -10,25 +10,34 @@ import icon from "astro-icon";
// https://astro.build/config
export default defineConfig({
- site: "https://hoelting.dev",
- trailingSlash: "always",
+ site: "https://hoelting.dev",
+ trailingSlash: "always",
- integrations: [mdx(), sitemap(), icon(), solidJs(), matomo({
- enabled: import.meta.env.PROD, // only enable in production
- url: "https://analytics.hoelting.dev",
- siteId: 3,
- disableCookies: true,
- enableCrossDomainLinking: true,
- domains: ["*.hoelting.dev", "*.www.hoelting.dev"],
- respectDoNotTrack: true,
- })],
+ integrations: [
+ mdx(),
+ sitemap(),
+ icon(),
+ solidJs(),
+ matomo({
+ enabled: import.meta.env.PROD, // only enable in production
+ url: "https://analytics.hoelting.dev",
+ siteId: 3,
+ disableCookies: true,
+ enableCrossDomainLinking: true,
+ domains: ["*.hoelting.dev", "*.www.hoelting.dev"],
+ respectDoNotTrack: true,
+ }),
+ ],
- markdown: {
- remarkPlugins: [remarkMath],
- rehypePlugins: [rehypeKatex],
- },
+ markdown: {
+ remarkPlugins: [remarkMath],
+ rehypePlugins: [rehypeKatex],
+ },
- vite: {
- plugins: [tailwindcss({ applyBaseStyles: false })],
- },
-});
\ No newline at end of file
+ vite: {
+ plugins: [tailwindcss({ applyBaseStyles: false })],
+ server: {
+ watch: {},
+ },
+ },
+});
diff --git a/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayDisplay.astro b/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayDisplay.astro
new file mode 100644
index 0000000..857be78
--- /dev/null
+++ b/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayDisplay.astro
@@ -0,0 +1,136 @@
+---
+import { cn } from "@/lib/utils";
+
+export interface Props {
+ display:
+ | "weekday"
+ | "weekday-number"
+ | "year"
+ | "january-day"
+ | "february-day";
+ prefix?: string;
+ suffix?: string;
+ offset?: number;
+ valueClass?: string;
+}
+
+const {
+ display,
+ prefix,
+ suffix,
+ offset,
+ valueClass: customClass,
+} = Astro.props;
+---
+
+{prefix}...{suffix}
+
+
diff --git a/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayYearSelector.astro b/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayYearSelector.astro
new file mode 100644
index 0000000..6bf246b
--- /dev/null
+++ b/src/components/blog/content/doomsday-algorithm/DynamicDoomsdayYearSelector.astro
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/content/blog/doomsday-algorithm/index.mdx b/src/content/blog/doomsday-algorithm/index.mdx
new file mode 100644
index 0000000..ee691e8
--- /dev/null
+++ b/src/content/blog/doomsday-algorithm/index.mdx
@@ -0,0 +1,41 @@
+---
+title: "Doomsday Algorithm"
+summary: How to compute the day of the week of an arbitrary date in your head.
+date: 2026-03-19
+tags:
+ - Math Trick
+---
+
+import DynamicDoomsdayDisplay from "@/components/blog/content/doomsday-algorithm/DynamicDoomsdayDisplay.astro";
+import DynamicDoomsdayYearSelector from "@/components/blog/content/doomsday-algorithm/DynamicDoomsdayYearSelector.astro";
+
+Generally, the idea is that there are certain dates in a year, that always fall on the same day of the week. We call those dates Doomsdays and there are rules for finding the Doomsday of every month. We get started with the easiest months:
+
+## (Most) Even Months
+
+We can use (almost) any even month for determining the Doomsday of a given year. For any even-numbered month except February, the same day is the Doomsday as the months number. This means:
+
+- the 4th of April (4) is a Doomsday,
+- the 6th of June (6) is a Doomsday,
+- the 10th of October (10) is a Doomsday,
+- the 12th of December (12) is a Doomsday.
+
+Generally, for the Nth _even_ month, the Nth day is a Doomsday.
+
+We can use this for our first weekday calculation. Let's ask ourselves, what weekday is Halloween (31st of October) this year?
+We know that the 10th of October is a because it is a Doomsday. Calculating 31 - 10 = 21, we know that it is exactly three weeks afterward a Doomsday.
+Therefore, **Halloween is a Doomsday**. This year, Halloween falls on a
+
+To make finding the weekday easier, we can represent the weekdays as numbers ranging from 0 (Sunday) to 6 (Saturday). The number of the weekday of any given date can be computed by adding the number of the Doomsday weekday and the offset to the nearest Doomsday and then computing modulo 7 of that value.
+
+Let's take a look at the remaining even month:
+
+## February
+
+The Doomsday is always the last day of february, e.g. **February 28 or 29**.
+
+For February is a
+
+Afterwards
+
+