Compare commits

..

No commits in common. "b20e4a981d01e2962c8c8e775cfaf81308bf3b01" and "394718bcd4428feca1da19f094ac5a5d39ccc0ed" have entirely different histories.

9 changed files with 40 additions and 49 deletions

View file

@ -1,4 +1,4 @@
# conditional finality - yet another developer blog # gradient ascent - yet another developer blog
This repository hosts the source code for my blog, written in Haskell and This repository hosts the source code for my blog, written in Haskell and
powered by [hakyll](https://jaspervdj.be/hakyll/) and powered by [hakyll](https://jaspervdj.be/hakyll/) and

View file

@ -1,5 +1,5 @@
{ {
description = "conditional finality"; description = "gradient ascent";
nixConfig = { nixConfig = {
allow-import-from-derivation = "true"; allow-import-from-derivation = "true";

View file

@ -13,12 +13,12 @@
@layer utilities { @layer utilities {
.external-link { .external-link {
@apply underline decoration-solid decoration-2 underline-offset-2 hover:text-love-light dark:hover:text-love-dark decoration-love-light decoration-love-dark; @apply dark:text-violet-500 text-indigo-600 hover:bg-indigo-200 pr-3 rounded-sm dark:hover:bg-violet-950 transition-colors duration-300 relative;
} }
.external-link-muted { .external-link::after {
@apply underline decoration-solid decoration-2 underline-offset-2 hover:text-love-light dark:hover:text-love-dark decoration-accent-light decoration-accent-dark; @apply absolute top-1 right-[6px] w-2 h-2 border-2 border-indigo-600 dark:border-violet-600 rounded-full translate-x-1/2 -translate-y-1/2;
content: "";
} }
.small-caps { .small-caps {
font-variant: all-small-caps; font-variant: all-small-caps;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -2,21 +2,25 @@
author: "Youwen Wu" author: "Youwen Wu"
authorTwitter: "@youwen" authorTwitter: "@youwen"
desc: "a purely functional...blog?" desc: "a purely functional...blog?"
image: "./images/conditional-finality.png" image: "./images/gradient-ascent.jpg"
keywords: "haskell, blog, functional programming" keywords: "haskell, blog, functional programming"
lang: "en" lang: "en"
title: "a haskellian blog" title: "why I made my blog in haskell"
updated: "2024-05-25T12:00:00Z" updated: "2024-05-25T12:00:00Z"
--- ---
Welcome! This is the first post on _conditional finality_ and also one that tests all Welcome! This is the first post on _gradient ascent_ and also one that tests all
of the features. of the features.
<img <img
alt="conditional finality" alt="gradient ascent"
src="./images/conditional-finality.png" src="./images/gradient-ascent.jpg"
style="height: 200px; width: 100%; object-fit: cover"
/> />
I'll be writing about computers, code, math, video games, and whatever else
here.
> A monad is just a monoid in the category of endofunctors, what's the problem? > A monad is just a monoid in the category of endofunctors, what's the problem?
## haskell? ## haskell?
@ -55,6 +59,11 @@ The code highlighting is also generated by hakyll.
Haskell is a purely functional language with no mutable state. Its syntax Haskell is a purely functional language with no mutable state. Its syntax
actually makes it pretty elegant for declaring routes and "rendering" pipelines. actually makes it pretty elegant for declaring routes and "rendering" pipelines.
I originally wanted to build this entire blog myself. I had a working version
with the Svelte framework, complete with GFM rendering, table of contents, KaTeX
math, code highlighting, static generation, and other goodies. However, it
seemed like a little too much work to maintain. I switched to hakyll because
1. Haskell is cool. 1. Haskell is cool.
2. It comes with enough features that I don't feel like I have to build 2. It comes with enough features that I don't feel like I have to build
everything from scratch. everything from scratch.
@ -68,7 +77,7 @@ actually makes it pretty elegant for declaring routes and "rendering" pipelines.
### speaking of math ### speaking of math
We can have math inline, like so: We can have math inline, like so:
$\int_{-\infty}^\infty \, e^{-x^2}\,dx = \sqrt{\pi}$. This site ships semantic $\int_\infty^\infty \, e^{-x^2}\,dx = \sqrt{\pi}$. This site ships semantic
MathML math with its HTML, and the MathJax script to the client. MathML math with its HTML, and the MathJax script to the client.
It'd be nice if MathML could just be used and supported across all browsers, but It'd be nice if MathML could just be used and supported across all browsers, but

View file

@ -1,7 +1,7 @@
<!doctype html> <!doctype html>
<html lang="$lang$"> <html lang="$lang$">
<head> <head>
<title>$title$ | conditional finality</title> <title>$title$ | gradient ascent</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
@ -116,7 +116,7 @@
<a <a
href="/" href="/"
class="dark:hover:text-muted-dark hover:text-muted-light transition-all duration-500 text-nowrap tracking-wide" class="dark:hover:text-muted-dark hover:text-muted-light transition-all duration-500 text-nowrap tracking-wide"
><em>Conditional Finality.</em></a ><em>Gradient Ascent.</em></a
> >
</h1> </h1>
<div <div
@ -126,18 +126,18 @@
<p class="mt-8 mb-3 px-1 italic font-light"> <p class="mt-8 mb-3 px-1 italic font-light">
a web-log about computers, math, hacks, and all the rest. a web-log about computers, math, hacks, and all the rest.
</p> </p>
<a class="text-sm text-iris-light dark:text-iris-dark hover:text-love-light dark:hover:text-love-dark" href="https://youwen.dev" <a class="text-sm external-link" href="https://youwen.dev"
><em>by </em>Youwen Wu</a ><em>by </em>Youwen Wu</a
> >
<span class="ml-2 font-serif">|</span> <span class="ml-2 font-serif">|</span>
<button <button
id="theme-toggle" id="theme-toggle"
class="ml-2 text-sm hover:text-accent-light dark:hover:text-muted-dark" class="ml-2 text-sm hover:bg-indigo-200 dark:hover:bg-violet-950 rounded-sm transition-colors p-1 duration-500"
></button> ></button>
<span class="ml-2 font-serif">|</span> <span class="ml-2 font-serif">|</span>
<button <button
id="font-toggle" id="font-toggle"
class="ml-2 text-sm hover:text-accent-light dark:hover:text-muted-dark" class="ml-2 text-sm hover:bg-indigo-200 dark:hover:bg-violet-950 rounded-sm transition-colors p-1 duration-500"
></button> ></button>
</header> </header>
$body$ $body$
@ -149,14 +149,14 @@
&copy; 2024 Youwen Wu. Generated by &copy; 2024 Youwen Wu. Generated by
<a <a
href="https://jaspervdj.be/hakyll/" href="https://jaspervdj.be/hakyll/"
class="external-link-muted" class="external-link"
target="__blank" target="__blank"
>Hakyll.</a >Hakyll.</a
> >
View the source View the source
<a <a
href="https://github.com/couscousdude/blog" href="https://github.com/couscousdude/blog"
class="external-link-muted" class="external-link"
target="__blank" target="__blank"
>on GitHub.</a >on GitHub.</a
> >
@ -164,7 +164,7 @@
<p class="text-sm leading-relaxed mt-2"> <p class="text-sm leading-relaxed mt-2">
Content freely available under Content freely available under
<a <a
class="external-link-muted" class="external-link"
target="__blank" target="__blank"
href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en"
><span class="smallcaps">CC BY-NC-SA</span> 4.0</a ><span class="smallcaps">CC BY-NC-SA</span> 4.0</a

View file

@ -28,13 +28,13 @@ import Text.Pandoc.Options (
-- PERSONALIZATION -- PERSONALIZATION
mySiteName :: String mySiteName :: String
mySiteName = "conditional finality" mySiteName = "gradient ascent"
mySiteRoot :: String mySiteRoot :: String
mySiteRoot = "https://blog.youwen.dev" mySiteRoot = "https://blog.youwen.dev"
myFeedTitle :: String myFeedTitle :: String
myFeedTitle = "conditional finality" myFeedTitle = "gradient ascent"
myFeedDescription :: String myFeedDescription :: String
myFeedDescription = "on computers, hacks, math, and life" myFeedDescription = "on computers, hacks, math, and life"

View file

@ -10,42 +10,24 @@ module.exports = {
}, },
colors: { colors: {
primary: { primary: {
//dark: "#e7e5e4", dark: "#e7e5e4",
light: "#44403c", light: "#44403c",
dark: "#e0def4",
//light: "#575279",
}, },
secondary: { secondary: {
//dark: "#4c1d95", dark: "#4c1d95",
//light: "#4338ca", light: "#4338ca",
dark: "#1f1d2e",
light: "#fffaf3",
}, },
accent: { accent: {
//dark: "#9ca3af", dark: "#9ca3af",
//light: "#78716c", light: "#78716c",
dark: "#908caa",
light: "#797593",
}, },
muted: { muted: {
//dark: "#6b7280", dark: "#6b7280",
//light: "#a8a29e", light: "#a8a29e",
dark: "#6e6a86",
light: "#9893a5",
}, },
background: { background: {
//light: "#d6d3d1", light: "#d6d3d1",
//dark: "#101017", dark: "#101017",
dark: "#191724",
light: "#faf4ed",
},
iris: {
dark: "#c4a7e7",
light: "#907aa9",
},
love: {
dark: "#eb6f92",
light: "#b4637a",
}, },
}, },
}, },