aboutsummaryrefslogtreecommitdiff
path: root/dhall
diff options
context:
space:
mode:
authorXe Iaso <me@christine.website>2022-11-25 19:01:10 -0500
committerGitHub <noreply@github.com>2022-11-25 19:01:10 -0500
commitcc933b31fd23bb06e95bf41f848a1c99353d44ae (patch)
treeaf8288dbd4db2ad886d6b326bffb1c9d5b568de3 /dhall
parent551e0384c923ff3ee98cfddf7e3eb42c6dbb2941 (diff)
downloadxesite-cc933b31fd23bb06e95bf41f848a1c99353d44ae.tar.xz
xesite-cc933b31fd23bb06e95bf41f848a1c99353d44ae.zip
Start version 3 (#573)
* Start version 3 * Change version to 3.0.0 in Cargo.toml * Add metadata for series * Change types for signal boosts * Add start of LaTeX resume generation at Nix time * Add start of proper author tagging for posts in JSONFeed and ldjson * Convert templates to use Maud * Add start of dynamic resume generation from dhall * Make patrons page embed thumbnails TODO: * [ ] Remove the rest of the old templates * [ ] Bring in Xeact for the share on mastodon button * [ ] Site update post Signed-off-by: Xe <me@christine.website> * fix nix builds Signed-off-by: Xe Iaso <me@christine.website> * fix dhall build Signed-off-by: Xe Iaso <me@christine.website> * fix non-flakes build Signed-off-by: Xe Iaso <me@christine.website> * make new mastodon share button Signed-off-by: Xe Iaso <me@christine.website> * remove the rest of the ructe templates that I can remove Signed-off-by: Xe Iaso <me@christine.website> * refactor blogposts to its own file Signed-off-by: Xe Iaso <me@christine.website> * move resume to be generated by nix Signed-off-by: Xe Iaso <me@christine.website> * write article Signed-off-by: Xe Iaso <me@christine.website> * blog/site-update-v3: hero image Signed-off-by: Xe Iaso <me@christine.website> * add site update series tag to site updates Signed-off-by: Xe Iaso <me@christine.website> Signed-off-by: Xe <me@christine.website> Signed-off-by: Xe Iaso <me@christine.website>
Diffstat (limited to 'dhall')
-rw-r--r--dhall/Prelude.dhall3
-rw-r--r--dhall/authors.dhall64
-rw-r--r--dhall/authors/xe.dhall19
-rw-r--r--dhall/latex/.gitignore5
-rw-r--r--dhall/latex/resume.cls131
-rw-r--r--dhall/latex/resume.dhall110
-rw-r--r--dhall/package.dhall78
-rw-r--r--dhall/resume.dhall91
-rw-r--r--dhall/seriesDescriptions.dhall135
-rw-r--r--dhall/signalboost.dhall186
-rw-r--r--dhall/types/Author.dhall16
-rw-r--r--dhall/types/Config.dhall18
-rw-r--r--dhall/types/Link.dhall4
-rw-r--r--dhall/types/Person.dhall25
-rw-r--r--dhall/types/Resume.dhall10
-rw-r--r--dhall/types/SeriesDescription.dhall3
-rw-r--r--dhall/types/package.dhall1
17 files changed, 667 insertions, 232 deletions
diff --git a/dhall/Prelude.dhall b/dhall/Prelude.dhall
new file mode 100644
index 0000000..f1f4324
--- /dev/null
+++ b/dhall/Prelude.dhall
@@ -0,0 +1,3 @@
+ env:DHALL_PRELUDE
+? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v20.1.0/Prelude/package.dhall
+ sha256:26b0ef498663d269e4dc6a82b0ee289ec565d683ef4c00d0ebdd25333a5a3c98
diff --git a/dhall/authors.dhall b/dhall/authors.dhall
index 69cccdb..a921222 100644
--- a/dhall/authors.dhall
+++ b/dhall/authors.dhall
@@ -1,30 +1,38 @@
let Author = ./types/Author.dhall
-in [ Author::{
- , name = "Xe Iaso"
- , handle = "xe"
- , picUrl = Some "/static/img/avatar.png"
- , link = Some "https://xeiaso.net"
- , twitter = Some "theprincessxena"
- , default = True
- , inSystem = True
- }
- , Author::{
- , name = "Jessie"
- , handle = "Heartmender"
- , picUrl = Some
- "https://cdn.xeiaso.net/file/christine-static/img/UPRcp1pO_400x400.jpg"
- , twitter = Some "BeJustFine"
- , inSystem = True
- }
- , Author::{
- , name = "Ashe"
- , handle = "ectamorphic"
- , picUrl = Some
- "https://cdn.xeiaso.net/file/christine-static/img/FFVV1InX0AkDX3f_cropped_smol.jpg"
- , inSystem = True
- }
- , Author::{ name = "Nicole", handle = "Twi", inSystem = True }
- , Author::{ name = "Mai", handle = "Mai", inSystem = True }
- , Author::{ name = "Sephira", handle = "Sephie", inSystem = True }
- ]
+let Prelude = ./Prelude.dhall
+
+let default = ./authors/xe.dhall
+
+let authors =
+ [ default
+ , Author::{
+ , name = "Jessie"
+ , handle = "Heartmender"
+ , image = Some
+ "https://cdn.xeiaso.net/file/christine-static/img/UPRcp1pO_400x400.jpg"
+ , url = Some "https://vulpine.club/@heartmender"
+ , inSystem = True
+ }
+ , Author::{
+ , name = "Ashe"
+ , handle = "ectamorphic"
+ , image = Some
+ "https://cdn.xeiaso.net/file/christine-static/img/FFVV1InX0AkDX3f_cropped_smol.jpg"
+ , inSystem = True
+ }
+ , Author::{ name = "Nicole", handle = "Twi", inSystem = True }
+ , Author::{ name = "Mai", handle = "Mai", inSystem = True }
+ , Author::{ name = "Sephira", handle = "sephiraloveboo", inSystem = True }
+ ]
+
+let authorToMapValue = \(a : Author.Type) -> { mapKey = a.handle, mapValue = a }
+
+let map =
+ Prelude.List.map
+ Author.Type
+ (Prelude.Map.Entry Text Author.Type)
+ authorToMapValue
+ authors
+
+in { authors, map, default }
diff --git a/dhall/authors/xe.dhall b/dhall/authors/xe.dhall
new file mode 100644
index 0000000..718de7f
--- /dev/null
+++ b/dhall/authors/xe.dhall
@@ -0,0 +1,19 @@
+let xesite = ../types/package.dhall
+
+let Author = xesite.Author
+
+in Author::{
+ , name = "Xe Iaso"
+ , handle = "xe"
+ , image = Some "https://xeiaso.net/static/img/avatar.png"
+ , url = Some "https://xeiaso.net"
+ , sameAs =
+ [ "https://pony.social/@cadey"
+ , "https://github.com/Xe"
+ , "https://www.linkedin.com/in/xe-iaso-87a883254/"
+ , "https://www.youtube.com/user/shadowh511"
+ , "https://patreon.com/cadey"
+ ]
+ , jobTitle = "Archmage of Infrastructure"
+ , inSystem = True
+ }
diff --git a/dhall/latex/.gitignore b/dhall/latex/.gitignore
new file mode 100644
index 0000000..19b9311
--- /dev/null
+++ b/dhall/latex/.gitignore
@@ -0,0 +1,5 @@
+resume.tex
+resume.pdf
+resume.aux
+resume.out
+resume.log
diff --git a/dhall/latex/resume.cls b/dhall/latex/resume.cls
new file mode 100644
index 0000000..e7c4dcd
--- /dev/null
+++ b/dhall/latex/resume.cls
@@ -0,0 +1,131 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Medium Length Professional CV - RESUME CLASS FILE
+%
+% This template has been downloaded from:
+% http://www.LaTeXTemplates.com
+%
+% This class file defines the structure and design of the template.
+%
+% Original header:
+% Copyright (C) 2010 by Trey Hunner
+%
+% Copying and distribution of this file, with or without modification,
+% are permitted in any medium without royalty provided the copyright
+% notice and this notice are preserved. This file is offered as-is,
+% without any warranty.
+%
+% Created by Trey Hunner and modified by www.LaTeXTemplates.com
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesClass{resume}[2010/07/10 v0.9 Resume class]
+
+\LoadClass[11pt,letterpaper]{article} % Font size and paper type
+
+\usepackage[parfill]{parskip} % Remove paragraph indentation
+\usepackage{array} % Required for boldface (\bf and \bfseries) tabular columns
+\usepackage{ifthen} % Required for ifthenelse statements
+
+\pagestyle{empty} % Suppress page numbers
+
+%----------------------------------------------------------------------------------------
+% HEADINGS COMMANDS: Commands for printing name and address
+%----------------------------------------------------------------------------------------
+
+\def \name#1{\def\@name{#1}} % Defines the \name command to set name
+\def \@name {} % Sets \@name to empty by default
+
+\def \addressSep {$\diamond$} % Set default address separator to a diamond
+
+% One, two or three address lines can be specified
+\let \@addressone \relax
+\let \@addresstwo \relax
+\let \@addressthree \relax
+
+% \address command can be used to set the first, second, and third address (last 2 optional)
+\def \address #1{
+ \@ifundefined{@addresstwo}{
+ \def \@addresstwo {#1}
+ }{
+ \@ifundefined{@addressthree}{
+ \def \@addressthree {#1}
+ }{
+ \def \@addressone {#1}
+ }}
+}
+
+% \printaddress is used to style an address line (given as input)
+\def \printaddress #1{
+ \begingroup
+ \def \\ {\addressSep\ }
+ \centerline{#1}
+ \endgroup
+ \par
+ \addressskip
+}
+
+% \printname is used to print the name as a page header
+\def \printname {
+ \begingroup
+ \hfil{\MakeUppercase{\namesize\bf \@name}}\hfil
+ \nameskip\break
+ \endgroup
+}
+
+%----------------------------------------------------------------------------------------
+% PRINT THE HEADING LINES
+%----------------------------------------------------------------------------------------
+
+\let\ori@document=\document
+\renewcommand{\document}{
+ \ori@document % Begin document
+ \printname % Print the name specified with \name
+ \@ifundefined{@addressone}{}{ % Print the first address if specified
+ \printaddress{\@addressone}}
+ \@ifundefined{@addresstwo}{}{ % Print the second address if specified
+ \printaddress{\@addresstwo}}
+ \@ifundefined{@addressthree}{}{ % Print the third address if specified
+ \printaddress{\@addressthree}}
+}
+
+%----------------------------------------------------------------------------------------
+% SECTION FORMATTING
+%----------------------------------------------------------------------------------------
+
+% Defines the rSection environment for the large sections within the CV
+\newenvironment{rSection}[1]{ % 1 input argument - section name
+ \sectionskip
+ \MakeUppercase{\bf #1} % Section title
+ \sectionlineskip
+ \hrule % Horizontal line
+ \begin{list}{}{ % List for each individual item in the section
+ \setlength{\leftmargin}{1.5em} % Margin within the section
+ }
+ \item[]
+}{
+ \end{list}
+}
+
+%----------------------------------------------------------------------------------------
+% WORK EXPERIENCE FORMATTING
+%----------------------------------------------------------------------------------------
+
+\newenvironment{rSubsection}[4]{ % 4 input arguments - company name, year(s) employed, job title and location
+ {\bf #1} \hfill {#2} % Bold company name and date on the right
+ \ifthenelse{\equal{#3}{}}{}{ % If the third argument is not specified, don't print the job title and location line
+ \\
+ {\em #3} \hfill {\em #4} % Italic job title and location
+ }\smallskip
+ \begin{list}{$\cdot$}{\leftmargin=0em} % \cdot used for bullets, no indentation
+ \itemsep -0.5em \vspace{-0.5em} % Compress items in list together for aesthetics
+ }{
+ \end{list}
+ \vspace{0.5em} % Some space after the list of bullet points
+}
+
+% The below commands define the whitespace after certain things in the document - they can be \smallskip, \medskip or \bigskip
+\def\namesize{\huge} % Size of the name at the top of the document
+\def\addressskip{\smallskip} % The space between the two address (or phone/email) lines
+\def\sectionlineskip{\medskip} % The space above the horizontal line for each section
+\def\nameskip{\bigskip} % The space after your name at the top
+\def\sectionskip{\medskip} % The space after the heading section
diff --git a/dhall/latex/resume.dhall b/dhall/latex/resume.dhall
new file mode 100644
index 0000000..e9318f6
--- /dev/null
+++ b/dhall/latex/resume.dhall
@@ -0,0 +1,110 @@
+let xesite = ../types/package.dhall
+
+let Link = xesite.Link
+
+let Location = xesite.Location
+
+let Job = xesite.Job
+
+let Prelude = ../Prelude.dhall
+
+let xe = ../authors/xe.dhall
+
+let resume = ../resume.dhall
+
+let buzzwords =
+ let doer = \(item : Text) -> item
+
+ in Prelude.Text.concatMapSep ", " Text doer resume.buzzwords
+
+let jobHistory =
+ let showDate =
+ \(job : Job.Type) ->
+ let endDate =
+ merge
+ { Some = \(t : Text) -> t, None = "current" }
+ job.endDate
+
+ in "${job.startDate} - ${endDate}"
+
+ let showLoc =
+ \(l : Location.Type) ->
+ "${l.city}, ${l.stateOrProvince}, ${l.country}"
+
+ let workedLocs =
+ \(j : Job.Type) ->
+ let doer =
+ \(l : Location.Type) -> "\\item Work location: ${showLoc l}"
+
+ in Prelude.Text.concatMapSep "\n" Location.Type doer j.locations
+
+ let highlights =
+ \(j : Job.Type) ->
+ let doer = \(t : Text) -> "\\item ${t}"
+
+ in Prelude.Text.concatMapSep "\n" Text doer j.highlights
+
+ let doer =
+ \(job : Job.Type) ->
+ ''
+ \begin{rSubsection}{${job.company.name}}{${showDate
+ job}}{${job.title}}{${showLoc
+ job.company.location}}
+
+ ${workedLocs job}
+ ${highlights job}
+
+ \end{rSubsection}
+ ''
+
+ in Prelude.Text.concatMapSep "\n" Job.Type doer resume.jobs
+
+let publications =
+ let doer =
+ \(link : Link.Type) ->
+ ''
+ \begin{rSubsection}{\href{${link.url}}{${link.title}}}{}{}{}
+
+ \item ${link.description}
+
+ \end{rSubsection}
+ ''
+
+ in Prelude.Text.concatMapSep
+ "\n"
+ Link.Type
+ doer
+ resume.notablePublications
+
+in ''
+ \documentclass{resume}
+
+ \usepackage[left=0.75in,top=0.6in,right=0.75in,bottom=0.6in]{geometry} % Document margins
+ \usepackage{hyperref}
+ \newcommand{\tab}[1]{\hspace{.2667\textwidth}\rlap{#1}}
+ \newcommand{\itab}[1]{\hspace{0em}\rlap{#1}}
+ \name{${xe.name}}
+ \address{https://xeiaso.net \\ me@xeiaso.net}
+
+ \begin{document}
+
+ \begin{rSection}{Technical Strengths}
+
+ ${buzzwords}
+
+ \end{rSection}
+
+ \begin{rSection}{Experience}
+
+ ${jobHistory}
+
+ \end{rSection}
+
+ \begin{rSection}{Notable Publications}
+
+ ${publications}
+
+ \end{rSection}
+
+ \end{document}
+ ''
diff --git a/dhall/package.dhall b/dhall/package.dhall
new file mode 100644
index 0000000..fdbcc67
--- /dev/null
+++ b/dhall/package.dhall
@@ -0,0 +1,78 @@
+let xesite = ./types/package.dhall
+
+let Config = xesite.Config
+
+let Link = xesite.Link
+
+let authors = ./authors.dhall
+
+let desc = ./seriesDescriptions.dhall
+
+in Config::{
+ , signalboost = ./signalboost.dhall
+ , authors = authors.map
+ , defaultAuthor = authors.default
+ , clackSet =
+ [ "Ashlynn", "Terry Davis", "Dennis Ritchie", "Steven Hawking" ]
+ , jobHistory = ./jobHistory.dhall
+ , seriesDescriptions = desc.descriptions
+ , seriesDescMap = desc.map
+ , notableProjects =
+ [ Link::{
+ , url = "https://github.com/PonyvilleFM/aura"
+ , title = "Aura"
+ , description = "PonyvilleFM live DJ recording bot"
+ }
+ , Link::{
+ , url = "https://github.com/Xe/olin"
+ , title = "Olin"
+ , description = "WebAssembly on the server"
+ }
+ , Link::{
+ , url = "https://printerfacts.cetacean.club/"
+ , title = "Printer Facts"
+ , description = "Useful facts about printers"
+ }
+ , Link::{
+ , url = "https://github.com/Xe/waifud"
+ , title = "waifud"
+ , description = "A VM manager for my homelab cluster"
+ }
+ , Link::{
+ , url = "https://when-then-zen.christine.website/"
+ , title = "When Then Zen"
+ , description = "Meditation instructions in plain English"
+ }
+ , Link::{
+ , url = "https://github.com/Xe/x"
+ , title = "x"
+ , description =
+ "A monorepo of my experiments, toy programs and other interesting things of that nature."
+ }
+ , Link::{
+ , url = "https://github.com/Xe/Xeact"
+ , title = "Xeact"
+ , description =
+ "My personal JavaScript femtoframework for high productivity development"
+ }
+ , Link::{
+ , url = "https://github.com/Xe/site"
+ , title = "Xesite"
+ , description = "The backend and templates for this website"
+ }
+ , Link::{
+ , url = "https://github.com/Xe/Xess"
+ , title = "Xess"
+ , description = "My personal CSS framework"
+ }
+ ]
+ , contactLinks =
+ [ Link::{ url = "https://github.com/Xe", title = "GitHub" }
+ , Link::{ url = "https://keybase.io/xena", title = "Keybase" }
+ , Link::{ url = "https://www.patreon.com/cadey", title = "Patreon" }
+ , Link::{ url = "https://twitch.tv/princessxen", title = "Twitch" }
+ , Link::{ url = "https://pony.social/@cadey", title = "Fediverse" }
+ , Link::{ url = "https://t.me/miamorecadenza", title = "Telegram" }
+ , Link::{ url = "irc://irc.libera.chat/#xeserv", title = "IRC" }
+ ]
+ }
diff --git a/dhall/resume.dhall b/dhall/resume.dhall
index d6eba82..6290404 100644
--- a/dhall/resume.dhall
+++ b/dhall/resume.dhall
@@ -5,34 +5,95 @@ let Resume = xesite.Resume
let Link = xesite.Link
in Resume::{
- , hnLinks =
+ , buzzwords =
+ [ "Docker"
+ , "Git"
+ , "Go"
+ , "Rust"
+ , "C"
+ , "DevOps"
+ , "Heroku"
+ , "WebAssembly"
+ , "Lua"
+ , "Mindfulness"
+ , "Nix"
+ , "NixOS"
+ , "HTTP/2"
+ , "Ubuntu"
+ , "Alpine Linux"
+ , "GraphViz"
+ , "JavaScript"
+ , "TypeScript"
+ , "SQLite"
+ , "PostgreSQL"
+ , "Dudeism"
+ , "Technical writing"
+ , "Emacs"
+ , "Continuous Integration"
+ , "Continuous Delivery"
+ ]
+ , jobs = ./jobHistory.dhall
+ , notablePublications =
[ Link::{
- , url = "https://news.ycombinator.com/item?id=29522941"
- , title = "'Open Source' is Broken"
+ , url = "https://blog.heroku.com/how-to-make-progressive-web-app"
+ , title = "How to Make a Progressive Web App From Your Existing Website"
+ , description =
+ "An article summarizing how easy it is to make a webpage into an installable Progressive Web App."
+ }
+ , Link::{
+ , url =
+ "https://web.archive.org/web/20210318102148/https://tech.lightspeedhq.com/palisade-version-bumping-at-scale-in-ci/"
+ , title = "Palisade: Version Bumping at Scale in CI"
+ , description =
+ "The release post for Palisade, a tool to automate version bumping, release tagging and more."
+ }
+ , Link::{
+ , url = "https://tailscale.com/blog/grafana-auth/"
+ , title = "How To Seamlessly Authenticate to Grafana using Tailscale"
+ , description =
+ "The release post for grafana-auth, a tool that lets Grafana users automagically authenticate to Grafana using Tailscale."
+ }
+ , Link::{
+ , url = "https://tailscale.com/blog/tailscale-auth-minecraft/"
+ , title = "Tailscale Authentication for Minecraft"
+ , description =
+ "A post explaining how Tailscale as an authentication mechanism can be used in absurd places, such as making authentication for Minecraft servers."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=29167560"
- , title = "The Surreal Horror of PAM"
+ , url = "https://tailscale.com/blog/tailscale-auth-nginx/"
+ , title = "Tailscale Authentication for NGINX"
+ , description =
+ "The release post for nginx-auth, a tool that uses Tailscale's knowledge of IP address to person mappings to provide a weak authentication factor."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=27175960"
- , title = "Systemd: The Good Parts"
+ , url = "https://tailscale.com/blog/steam-deck/"
+ , title = "Putting Tailscale on the Steam Deck"
+ , description =
+ "An engineering log of all the steps taken to run Tailscale on the Valve Steam Deck and the tradeoffs between the various methods you could use to do this."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=26845355"
- , title = "I Implemented /dev/printerfact in Rust"
+ , url = "https://tailscale.com/blog/gitops-acls/"
+ , title = "GitOps for Tailscale ACLs"
+ , description =
+ "The release post of the Sync Tailscale ACLs GitHub Action, allowing administrators to automatically sync Tailscale ACLs from a GitHub repository."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=25978511"
- , title = "A Model for Identity in Software"
+ , url = "https://tailscale.com/blog/hamachi/"
+ , title = "Tailscale: A modern replacement for Hamachi"
+ , description =
+ "A nostalgic piece recalling the magic of Hamachi (a product that did a similar thing to Tailscale), and how Tailscale builds on top of that to do even better things."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=31390506"
- , title = "Fly.io: The reclaimer of Heroku's magic"
+ , url = "https://tailscale.com/blog/magicdns-why-name/"
+ , title = "An epic treatise on DNS, magical and otherwise"
+ , description =
+ "A deep dive into all of the problems that DNS has at scale and how Tailscale makes most of those problems go away, with the rest of them being easier in comparison."
}
, Link::{
- , url = "https://news.ycombinator.com/item?id=31149801"
- , title = "Crimes with Go Generics"
+ , url = "https://tailscale.com/blog/tsnet-virtual-private-services/"
+ , title = "Virtual private services with tsnet"
+ , description =
+ "Tailscale lets you connect to your network from anywhere, but you have to set it up on individual computers for it to work. In this article Xe covers how to use tsnet to get all of the goodness of Tailscale in userspace so that you can have your services join your tailnet like they were separate computers."
}
]
}
diff --git a/dhall/seriesDescriptions.dhall b/dhall/seriesDescriptions.dhall
new file mode 100644
index 0000000..88ab46d
--- /dev/null
+++ b/dhall/seriesDescriptions.dhall
@@ -0,0 +1,135 @@
+let xesite = ./types/package.dhall
+
+let Prelude = ./Prelude.dhall
+
+let Desc = xesite.SeriesDescription
+
+let descriptions
+ : List Desc.Type
+ = [ Desc::{
+ , name = "colemak"
+ , details =
+ "My efforts at learning to type with colemak instead of qwerty."
+ }
+ , Desc::{
+ , name = "conlangs"
+ , details =
+ "Information about constructed languages I've attempted to make."
+ }
+ , Desc::{
+ , name = "dreams"
+ , details = "My attempts to write about my dreams"
+ }
+ , Desc::{
+ , name = "ethereum"
+ , details = "Why Ethereum doesn't work in the real world."
+ }
+ , Desc::{
+ , name = "freenode"
+ , details =
+ "My lamentations about the collapse of the IRC network freenode."
+ }
+ , Desc::{
+ , name = "get-going"
+ , details = "Tutorials for the Go programming language."
+ }
+ , Desc::{
+ , name = "h"
+ , details = "Evolution of the h human/programming language."
+ }
+ , Desc::{
+ , name = "howto"
+ , details = "Instructions on how to do various things."
+ }
+ , Desc::{ name = "keeb", details = "Keyboard reviews." }
+ , Desc::{
+ , name = "magick"
+ , details =
+ "Writeups on things I've learned on my trip through chaos magick."
+ }
+ , Desc::{
+ , name = "malto"
+ , details = "Stories from my constructed world Malto."
+ }
+ , Desc::{
+ , name = "medium-archive"
+ , details = "Articles from my attempt at making a Medium blog long ago."
+ }
+ , Desc::{
+ , name = "nix-flakes"
+ , details =
+ "Instructions on how to use Nix flakes, a new way to use Nix in a more reproducible way."
+ }
+ , Desc::{
+ , name = "olin"
+ , details = "My attempts at running WebAssembly on the server."
+ }
+ , Desc::{ name = "plt", details = "The saga of plt." }
+ , Desc::{
+ , name = "recipes"
+ , details =
+ "Recipes for use in your kitchen presented in a no-bullshit fashion."
+ }
+ , Desc::{
+ , name = "reconlangmo"
+ , details =
+ "More details on how I tried to make a language named L'ewa."
+ }
+ , Desc::{
+ , name = "reviews"
+ , details = "Reviews on various tech or media properties."
+ }
+ , Desc::{
+ , name = "short-stories"
+ , details = "Flash fiction stories I've written over the years"
+ }
+ , Desc::{
+ , name = "site-update"
+ , details =
+ "Updates on this website. These articles will contain details on how this website is changed, new things I'm cooking up with it or more."
+ }
+ , Desc::{
+ , name = "site-to-site-wireguard"
+ , details = "Instructions on setting up your own VPN with WireGuard."
+ }
+ , Desc::{
+ , name = "spellblade"
+ , details = "Sections of my web novel Spellblade."
+ }
+ , Desc::{
+ , name = "templeos"
+ , details =
+ "Articles about TempleOS, a public domain operating system for AMD64 computers."
+ }
+ , Desc::{
+ , name = "thesource"
+ , details = "Expansions for my TTRPG The Source."
+ }
+ , Desc::{
+ , name = "twitter"
+ , details =
+ "Lamentations on the death of Twitter, a microblogging community."
+ }
+ , Desc::{ name = "v", details = "The V programming language." }
+ , Desc::{ name = "vtuber", details = "My experience as a VTuber." }
+ , Desc::{
+ , name = "waifud"
+ , details = "Information about my VM manager waifud."
+ }
+ , Desc::{
+ , name = "when-then-zen"
+ , details = "Meditation information sans bullshit."
+ }
+ ]
+
+let descToMapValue =
+ \(desc : Desc.Type) -> { mapKey = desc.name, mapValue = desc.details }
+
+let map =
+ Prelude.List.map
+ Desc.Type
+ (Prelude.Map.Entry Text Text)
+ descToMapValue
+ descriptions
+
+in { descriptions, map }
diff --git a/dhall/signalboost.dhall b/dhall/signalboost.dhall
index b24c5aa..c7224bf 100644
--- a/dhall/signalboost.dhall
+++ b/dhall/signalboost.dhall
@@ -1,89 +1,8 @@
+let Link = ./types/Link.dhall
+
let Person = ./types/Person.dhall
in [ Person::{
- , name = "Chuck Nelson"
- , tags = [ "C++", "Python", "JSON", "GO", "Linux", "bash", "PHP", "Java" ]
- , gitLink = Some "https://github.com/chuckn408"
- }
- , Person::{
- , name = "Christian Sullivan"
- , tags =
- [ "go"
- , "wasm"
- , "react"
- , "rust"
- , "react-native"
- , "swift"
- , "google-cloud"
- , "aws"
- , "docker"
- , "kubernetes"
- , "istio"
- , "typescript"
- ]
- , gitLink = Some "https://github.com/euforic"
- , twitter = Some "https://twitter.com/euforic"
- }
- , Person::{
- , name = "David Roberts"
- , tags =
- [ "ux"
- , "ui"
- , "documentation"
- , "web"
- , "html5"
- , "javascript"
- , "python"
- , "qt"
- , "bash"
- , "front-end"
- , "full-stack"
- , "linux"
- , "embedded"
- , "sql"
- ]
- , gitLink = Some "https://github.com/ddr0"
- , twitter = Some "https://twitter.com/DDR_4"
- }
- , Person::{
- , name = "Faizan Jamil"
- , tags =
- [ "java"
- , "c#"
- , "python"
- , "javascript"
- , "typescript"
- , "html"
- , "css"
- , "vue.js"
- , "express.js"
- , "flask"
- , "asp.net core"
- , "razor pages"
- , "ef core"
- , "front-end"
- , "back-end"
- , "full-stack"
- , "linux"
- ]
- , gitLink = Some "https://github.com/faizjamil"
- }
- , Person::{
- , name = "Joseph Crawley"
- , tags =
- [ "javascript"
- , "react"
- , "csharp"
- , "python"
- , "full-stack"
- , "web"
- , "bash"
- , "linux"
- ]
- , gitLink = Some "https://github.com/espe-on"
- , twitter = Some "https://twitter.com/espe_on_"
- }
- , Person::{
, name = "nicoo"
, tags =
[ "cryptography"
@@ -96,7 +15,8 @@ in [ Person::{
, "security"
, "SDR"
]
- , gitLink = Some "https://github.com/nbraud"
+ , links =
+ [ Link::{ url = "https://github.com/nbraud", title = "GitHub" } ]
}
, Person::{
, name = "Prajjwal Singh"
@@ -112,8 +32,10 @@ in [ Person::{
, "google-cloud"
, "typescript"
]
- , gitLink = Some "https://github.com/Prajjwal"
- , twitter = Some "https://twitter.com/prajjwalsin"
+ , links =
+ [ Link::{ url = "https://github.com/Prajjwal", title = "GitHub" }
+ , Link::{ url = "https://twitter.com/prajjwalsin", title = "Twitter" }
+ ]
}
, Person::{
, name = "Piyushh Bhutoria"
@@ -125,25 +47,10 @@ in [ Person::{
, "php"
, "google-cloud"
]
- , gitLink = Some "https://github.com/Piyushhbhutoria"
- , twitter = Some "https://twitter.com/PiyushhB"
- }
- , Person::{
- , name = "Ryan Casalino"
- , tags =
- [ "golang"
- , "react"
- , "python"
- , "javascript"
- , "aws"
- , "vue"
- , "sql"
- , "ruby"
- , "rails"
- , "flask"
- , "unix"
+ , links =
+ [ Link::{ url = "https://github.com/Piyushhbhutoria", title = "GitHub" }
+ , Link::{ url = "https://twitter.com/PiyushhB", title = "twitter" }
]
- , gitLink = Some "https://github.com/rjpcasalino"
}
, Person::{
, name = "Jeremy White"
@@ -162,53 +69,10 @@ in [ Person::{
, "google-cloud"
, "azure"
]
- , gitLink = Some "https://github.com/dudymas"
- , twitter = Some "https://twitter.com/dudymas"
- }
- , Person::{
- , name = "Jeffin Mathew"
- , tags =
- [ "Python"
- , "routing&switching"
- , "django"
- , "vue"
- , "ansible"
- , "aws"
- , "javascript"
- , "iot"
+ , links =
+ [ Link::{ url = "https://github.com/dudymas", title = "GitHub" }
+ , Link::{ url = "https://twitter.com/dudymas", title = "Twitter" }
]
- , gitLink = Some "https://github.com/mjeffin"
- , twitter = Some "https://twitter.com/mpjeffin"
- }
- , Person::{
- , name = "Nasir Hussain"
- , tags =
- [ "python"
- , "linux"
- , "javascript"
- , "ansible"
- , "nix"
- , "docker&podman"
- , "django"
- , "golang"
- , "rpm packaging"
- ]
- , gitLink = Some "https://github.com/nasirhm"
- , twitter = Some "https://twitter.com/_nasirhm_"
- }
- , Person::{
- , name = "Avi Parshan"
- , tags =
- [ "python", "windows", "javascript", "html", "android", "java", "C#" ]
-