+
+ {{ content | safe }}
+
diff --git a/about/index.md b/about/index.md
index a9c51a9..cada3b2 100644
--- a/about/index.md
+++ b/about/index.md
@@ -1,9 +1,8 @@
---
-title = 'about'
-draft = false
-menus = 'main'
-images = ['about/taco.png']
-description = 'but who is taco? and how much does it weigh?'
+title: "about"
+layout: base.njk
+images: ["about/taco.png"]
+description: "but who is taco? and how much does it weigh?"
---
@@ -11,19 +10,21 @@ description = 'but who is taco? and how much does it weigh?'
artwork by heyheymomo
-**Daniel A. Gallegos**, also known as **โtacoโ,** is a [Full-Stack Software Developer](https://en.wikipedia.org/wiki/Solution_stack) and [Site Reliability Engineer](https://en.wikipedia.org/wiki/Site_reliability_engineering) who works with businesses, governments, [educators](https://web.archive.org/web/20230131144232/https://eberly.wvu.edu/news-events/eberly-news/2021/04/12/eberly-college-students-lead-gender-inclusivity-anti-racism-training-at-wvu), [non-profits](https://carrynaloxone.org/), and [startups](https://web.archive.org/web/20160901215818/https://devacademy.la/) to create digital solutions for your real-world problems, ranging from ๐ฅ๏ธ developing government enterprise applications, to ๐จ creating graphic assets for professional digital portfolios, to ๐ ๏ธ administering servers for a harm reduction coalition.
+# {{ title }}
-After spending a decade working with a variety of frontends, backends, deadends, software, hardware, various operating systems and more, Daniel is more than capable of handling whatever software or hardware problem you need solved.
+**Daniel A. Gallegos**, also known as **"taco",** is a [full-stack software developer](https://en.wikipedia.org/wiki/Solution_stack) and [site reliability engineer](https://en.wikipedia.org/wiki/Site_reliability_engineering) who works with businesses, governments, [educators](https://web.archive.org/web/20230131144232/https://eberly.wvu.edu/news-events/eberly-news/2021/04/12/eberly-college-students-lead-gender-inclusivity-anti-racism-training-at-wvu), [non-profits](https://carrynaloxone.org/), and [startups](https://web.archive.org/web/20160901215818/https://devacademy.la/) to create digital solutions for your real-world problems, ranging from developing government enterprise applications ๐ฅ๏ธ, to creating graphic assets for professional digital presence ๐จ, to administering servers for harm reduction coalitions ๐ ๏ธ.
-Daniel has contributed to projects around the world, including developing enterprise software applications for the ๐ต๐ช Peruvian government, creating on-brand graphic assets for multiple offices at ๐ West Virginia University, redesigning an entire technical instituteโs website, working as a HIPAA-compliant system administrator for a ๐งโโ๏ธ harm reduction coalition and managing hundreds of ๐ง Linux servers in the cloud daily. In addition to his extensive software development and system operations experience, Daniel is a skilled technical writer, copywriter, graphic designer, and definitely doesnโt feel weird writing about himself in the third person. Heโs a pro! ๐
+after spending over 15 years working with a variety of frontends, backends, deadends, software, hardware, various operating systems, and more, daniel is more than capable of handling whatever software or hardware problem you need solved.
+
+Daniel has contributed to projects around the world, including developing enterprise software applications for the peruvian government ๐ต๐ช, creating on-brand graphic assets for multiple offices at west virginia university ๐, redesigning an entire technical instituteโs website, working as a hipaa-compliant system administrator for a harm reduction coalition ๐งโโ๏ธ, and managing hundreds of linux servers in the cloud daily ๐ง. in addition to his extensive software development and system operations experience, daniel is a skilled technical writer, copywriter, graphic designer, and definitely doesnโt feel weird writing about himself in the third person. heโs a pro! ๐
Daniel holds a Bachelors in Multidisciplinary Studies (BMdS) from [West Virginia University](https://web.archive.org/web/20230728010055/https://lists.wvu.edu/graduation?county=&letter=--&name=&page=5&state=&term=fall&year=2021), which includes areas of study such as:
-- ๐ป Computer Science
-- ๐บ๐ธ English
-- ๐ช๐ธ Spanish
-- ๐ช๐จ๐จ๐ด๐ป๐ช Latin American Studies
-- ๐ณ๏ธโ๐ LGBTQ+ Studies
+- ๐ป computer science
+- ๐บ๐ธ english
+- ๐ช๐ธ spanish
+- ๐ช๐จ๐จ๐ด๐ป๐ช latin american studies
+- ๐ณ๏ธโ๐ lgbtq+ studies
- and other classes he took and just enjoyed, tbh
-He currently works as a [Site Reliability Engineer](https://en.wikipedia.org/wiki/Site_reliability_engineering) for some big healthcare corporation and as a [Webmaster](https://en.wikipedia.org/wiki/Webmaster) for a harm reduction coalition. In his free time, Daniel likes tinkering with Linux server administration and self-hosting technologies to better his life and the lives of those around him. As it is with most folks, Danielโs opinions are his own and do not represent the views of his employer(s).
+he currently works as a [site reliability engineer](https://en.wikipedia.org/wiki/Site_reliability_engineering) for some big healthcare corporation and as a [webmaster](https://en.wikipedia.org/wiki/Webmaster) for various nonprofit organizations. in his free time, daniel likes tinkering with linux server administration and self-hosting technologies to better his life and the lives of those around him. as it is with most folks, danielโs opinions are his own and do not represent the views of his employer(s).
diff --git a/assets/css/colors.css b/assets/css/colors.css
new file mode 100644
index 0000000..e69de29
diff --git a/assets/css/fonts.css b/assets/css/fonts.css
new file mode 100644
index 0000000..b90f7ef
--- /dev/null
+++ b/assets/css/fonts.css
@@ -0,0 +1,29 @@
+@font-face {
+ font-family: "VT323";
+ src: url("/fonts/VT323.woff2") format("woff2");
+}
+@font-face {
+ font-family: "Martian Grotesk";
+ font-display: swap;
+ src: url("/fonts/MartianGrotesk-StdLt.woff2") format("woff2");
+ font-weight: 300;
+ font-stretch: 100%;
+}
+
+h1,
+h2,
+h3,
+h4 {
+ font-family: "VT323", monospace;
+ font-weight: 400;
+ font-style: normal;
+}
+
+p,
+ul,
+li,
+ol {
+ font-family: "Martian Grotesk";
+ font-weight: 400;
+ font-style: normal;
+}
diff --git a/assets/css/layout.css b/assets/css/layout.css
new file mode 100644
index 0000000..83afd17
--- /dev/null
+++ b/assets/css/layout.css
@@ -0,0 +1,120 @@
+body {
+ display: grid;
+ place-items: center;
+}
+
+main {
+ padding: 1em;
+}
+
+header {
+ display: flex;
+ justify-content: start;
+ align-content: center;
+ img {
+ width: 4em;
+ }
+ nav {
+ width: 100%;
+ display: flex;
+ padding-left: 1em;
+ h1 {
+ align-content: center;
+ }
+ ul {
+ align-content: center;
+ li {
+ font-size: 1.5em;
+ padding: 0.5em;
+ list-style: none;
+ display: inline-block;
+ }
+ }
+ }
+}
+
+article {
+ padding: 0.5em;
+ hgroup {
+ ul {
+ list-style: none;
+ padding: 0;
+ text-align: justify;
+ }
+ }
+}
+p {
+ padding-top: 1em;
+ padding-bottom: 1em;
+}
+
+footer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+@media only screen and (max-width: 576px) {
+ main {
+ width: 100%;
+ }
+ nav {
+ display: flex;
+ h1 {
+ display: none;
+ }
+ justify-content: flex-end;
+ }
+}
+
+@media only screen and (min-width: 577px) and (max-width: 768px) {
+ main {
+ width: 80%;
+ nav {
+ justify-content: space-between;
+ ul {
+ li {
+ font-size: 1em;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (min-width: 769px) and (max-width: 1024px) {
+ main {
+ width: 666px;
+ nav {
+ justify-content: space-between;
+ ul {
+ li {
+ font-size: 1.2em;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (min-width: 1025px) and (max-width: 1440px) {
+ main {
+ width: 666px;
+ nav {
+ justify-content: space-between;
+ ul {
+ li {
+ font-size: 1.3em;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (min-width: 1441px) {
+ main {
+ width: 666px;
+ nav {
+ justify-content: space-between;
+ }
+ }
+}
diff --git a/assets/css/main.css b/assets/css/main.css
new file mode 100644
index 0000000..039af0b
--- /dev/null
+++ b/assets/css/main.css
@@ -0,0 +1,4 @@
+@import "reset.css";
+@import "layout.css";
+@import "fonts.css";
+@import "colors.css";
diff --git a/assets/css/reset.css b/assets/css/reset.css
new file mode 100644
index 0000000..359e9a0
--- /dev/null
+++ b/assets/css/reset.css
@@ -0,0 +1,65 @@
+/* stolen from https://www.joshwcomeau.com/css/custom-css-reset/ */
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+*:not(dialog) {
+ margin: 0;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ html {
+ interpolate-size: allow-keywords;
+ }
+}
+
+body {
+ line-height: 1.5;
+ -webkit-font-smoothing: antialiased;
+}
+
+img,
+picture,
+video,
+canvas,
+svg {
+ display: block;
+ max-width: 100%;
+}
+
+input,
+button,
+textarea,
+select {
+ font: inherit;
+}
+
+p,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ overflow-wrap: break-word;
+}
+
+p {
+ text-wrap: pretty;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ text-wrap: balance;
+}
+
+#root,
+#__next {
+ isolation: isolate;
+}
diff --git a/assets/fonts/MartianGrotesk-StdLt.woff2 b/assets/fonts/MartianGrotesk-StdLt.woff2
new file mode 100644
index 0000000..03359b0
Binary files /dev/null and b/assets/fonts/MartianGrotesk-StdLt.woff2 differ
diff --git a/assets/fonts/VT323.woff2 b/assets/fonts/VT323.woff2
new file mode 100644
index 0000000..a4556be
Binary files /dev/null and b/assets/fonts/VT323.woff2 differ
diff --git a/assets/taco.png b/assets/img/taco.png
similarity index 100%
rename from assets/taco.png
rename to assets/img/taco.png
diff --git a/assets/taco.svg b/assets/img/taco.svg
similarity index 100%
rename from assets/taco.svg
rename to assets/img/taco.svg
diff --git a/assets/wolf.svg b/assets/img/wolf.svg
similarity index 100%
rename from assets/wolf.svg
rename to assets/img/wolf.svg
diff --git a/assets/wolf_taco.svg b/assets/img/wolf_taco.svg
similarity index 100%
rename from assets/wolf_taco.svg
rename to assets/img/wolf_taco.svg
diff --git a/eleventy.config.js b/eleventy.config.js
index 3fd589b..ea8f79c 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -1,9 +1,10 @@
import markdownIt from "markdown-it";
+import footnote_plugin from "markdown-it-footnote";
import readingTime from "eleventy-plugin-reading-time";
/** @param {import("@11ty/eleventy").UserConfig} eleventyConfig */
export default async function (eleventyConfig) {
- eleventyConfig.addPassthroughCopy("assets");
+ eleventyConfig.addPassthroughCopy({ assets: "/" });
eleventyConfig.addPassthroughCopy(".well-known");
eleventyConfig.addPassthroughCopy("**/*.jpg");
eleventyConfig.addPassthroughCopy("**/*.png");
@@ -26,16 +27,21 @@ export default async function (eleventyConfig) {
return redirects;
});
- eleventyConfig.addCollection("posts", function (collection) {
- return collection.getFilteredByGlob("posts/**/*.md");
- });
+ function sortByDate(values) {
+ // inspired by
+ let vals = [...values];
+ return vals.sort((a, b) => {
+ return a.data.date < b.data.date ? 1 : -1;
+ });
+ }
+ eleventyConfig.addFilter("sortByDate", sortByDate);
- let options = {
+ let markdownItOptions = {
html: true,
breaks: true,
linkify: true,
};
-
- eleventyConfig.setLibrary("md", markdownIt(options));
+ eleventyConfig.setLibrary("md", markdownIt(markdownItOptions));
+ eleventyConfig.amendLibrary("md", (mdLib) => mdLib.use(footnote_plugin));
eleventyConfig.addPlugin(readingTime);
}
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..2888dd2
Binary files /dev/null and b/favicon.ico differ
diff --git a/index.md b/index.md
index 8964e0b..3fe79fd 100644
--- a/index.md
+++ b/index.md
@@ -1,9 +1,10 @@
---
title: "home"
+layout: base.njk
description: "words by taco, the mestizo monster."
---
-the [wedsite](https://web.archive.org/web/20240708121013/http://hrwiki.org/wiki/Homestar_Runner%27s_Website) of
+the [wedsite](https://homestar.wiki/wiki/Homestar_Runner%27s_Website) of
# daniel a. gallegos
diff --git a/package-lock.json b/package-lock.json
index f71698d..e137e4f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,12 @@
"dependencies": {
"@11ty/eleventy": "^3.1.5",
"eleventy-plugin-reading-time": "^0.0.1",
- "markdown-it": "^14.1.1"
+ "markdown-it": "^14.1.1",
+ "markdown-it-footnote": "^4.0.0"
+ },
+ "devDependencies": {
+ "prettier": "^3.8.1",
+ "prettier-plugin-jinja-template": "^2.1.0"
}
},
"node_modules/@11ty/dependency-tree": {
@@ -1041,6 +1046,12 @@
"markdown-it": "bin/markdown-it.mjs"
}
},
+ "node_modules/markdown-it-footnote": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-4.0.0.tgz",
+ "integrity": "sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==",
+ "license": "MIT"
+ },
"node_modules/mdurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
@@ -1283,6 +1294,32 @@
"node": ">=12"
}
},
+ "node_modules/prettier": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
+ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-plugin-jinja-template": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-jinja-template/-/prettier-plugin-jinja-template-2.1.0.tgz",
+ "integrity": "sha512-mzoCp2Oy9BDSug80fw3B3J4n4KQj1hRvoQOL1akqcDKBb5nvYxrik9zUEDs4AEJ6nK7QDTGoH0y9rx7AlnQ78Q==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "prettier": "^3.0.0"
+ }
+ },
"node_modules/prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
diff --git a/package.json b/package.json
index 90670a2..2f8fcc4 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,8 @@
"dependencies": {
"@11ty/eleventy": "^3.1.5",
"eleventy-plugin-reading-time": "^0.0.1",
- "markdown-it": "^14.1.1"
+ "markdown-it": "^14.1.1",
+ "markdown-it-footnote": "^4.0.0"
},
"name": "mestizo.monster",
"version": "1.0.0",
@@ -14,5 +15,9 @@
"keywords": [],
"author": "",
"license": "ISC",
- "type": "module"
+ "type": "module",
+ "devDependencies": {
+ "prettier": "^3.8.1",
+ "prettier-plugin-jinja-template": "^2.1.0"
+ }
}
diff --git a/posts/index.md b/posts/index.md
index 79ff3df..542a684 100644
--- a/posts/index.md
+++ b/posts/index.md
@@ -1,5 +1,7 @@
---
-title: 'posts'
+title: "posts"
+layout: post-list.njk
+tags: nav
---
posts i done gone and wrote
diff --git a/posts/letting-myself-relax.md b/posts/letting-myself-relax.md
new file mode 100644
index 0000000..4bbb910
--- /dev/null
+++ b/posts/letting-myself-relax.md
@@ -0,0 +1,16 @@
+---
+title: letting myself relax
+description: "the first post of many, i hope"
+layout: post.njk
+draft: false
+date: 2026-04-09
+tags: post
+---
+
+i think i'm putting a barrier between me and posting words on my website that there shouldn't be. like everything needs to be "curated" and be an effective essay to publish stuff. but i don't think this is healthy, scrutinizing myself to a specific point and not getting this stuff out into the world. i want my work to be read by other people and to do that i need to start publishing more. i want to develop my skills as a writer and hone my own voice. that means i need to be willing to make more mistakes. blogs and their posts should, by design, be ugly. they should be representations of the people who write them, who are mostly miserable little piles of secrets.[^1]
+
+here's my promise to you, dear reader: i will start writing more. i will start publishing more. not, like, consistently, but moreโข. it will not be perfect but it will be my organically written words. you are going to be reading real thoughts written by a real, genuine dumbass on the other end of the screen who doesn't know what they're doing, like the rest of us are.
+
+maybe the posts will be long, maybe the posts will be short. but i will post more. it's good for the brain to get these thoughts and ideas out to other people instead of letting it sit and gather dust. i think that's the whole point of this communicating thing, so i really need to exercise it if i want to get better at talking to others. talking to my preferred markdown editor is a good start.
+
+[^1]: but enough talk. [have at you!](https://www.youtube.com/watch?v=5tV33Ewf_hw)
diff --git a/posts/moving-on-from-freenom/images/header.png b/posts/moving-on-from-freenom/header.png
similarity index 100%
rename from posts/moving-on-from-freenom/images/header.png
rename to posts/moving-on-from-freenom/header.png
diff --git a/posts/moving-on-from-freenom/index.md b/posts/moving-on-from-freenom/index.md
index d80d53f..87206a8 100644
--- a/posts/moving-on-from-freenom/index.md
+++ b/posts/moving-on-from-freenom/index.md
@@ -1,9 +1,9 @@
---
title: "moving on from freenom ๐"
-date: "2023-10-06"
+date: 2023-10-06
+tags: post
layout: post.njk
draft: false
-categories: ["life", "technology"]
keywords:
[
"ga",
@@ -22,25 +22,9 @@ keywords:
"life",
"technology",
]
-tags:
- [
- "ga",
- "daniel-ga",
- "dns",
- "domain",
- "domain-names",
- "freenom",
- "gabon",
- "mestizo-monster",
- "networking",
- "personal-websites",
- "taco-ga",
- "website",
- "websites",
- ]
-images: ["posts/moving-on-from-freenom/images/header.png"]
+images: ["posts/moving-on-from-freenom/header.png"]
description: "what's the harm in a free domain name?"
-aliases: ["/2023/10/06/moving-on-from-freenom/index.html"]
+aliases: ["../2023/10/06/moving-on-from-freenom/"]
kind: "page"
---
@@ -58,7 +42,7 @@ kind: "page"
+src="header.png"/>
goodnight, sweet prince.
diff --git a/redirects.njk b/redirects.njk
index 4cbbc68..90ab0a2 100644
--- a/redirects.njk
+++ b/redirects.njk
@@ -3,18 +3,19 @@ pagination:
data: collections.redirects
size: 1
alias: redirect
-permalink: "{{redirect[1]}}"
+permalink: "{{ redirect[1] }}"
layout: ""
---
+
-
-
-
-
- Redirecting to: {{ redirect[0] }}
-
-
- You should be redirecting to {{ redirect[0] }} now.
-
+
+
+
+
+ Redirecting to: {{ redirect[0] }}
+
+
+ You should be redirecting to {{ redirect[0] }} now.
+