diff --git a/.envrc b/.envrc index f773b0e6..d4b93ce1 100644 --- a/.envrc +++ b/.envrc @@ -1,4 +1,2 @@ use flake layout node -mkdir -p "${HOME}/Library/Application Support/SourceGit" -echo "${PATH}" > "${HOME}/Library/Application Support/SourceGit/PATH" diff --git a/.gitignore b/.gitignore index c4bb1388..eaedb263 100644 --- a/.gitignore +++ b/.gitignore @@ -161,31 +161,3 @@ fontawesome-pro-6.3.0-web ### Nix Flake gitignore ### result - -### MacOS gitignore ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 1fea400b..00000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -layouts/_default/index.manifest.json diff --git a/.prettierrc b/.prettierrc index 672b6f3c..7c5268b2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,6 +4,3 @@ overrides: - files: "*.html" options: parser: "go-template" - - files: "*.gotmpl" - options: - parser: "go-template" diff --git a/.woodpecker.yml b/.woodpecker.yml index b48e430b..4de02aa1 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,20 +1,17 @@ when: branch: master - event: - - push - - cron - cron: "weekly-build" + event: push steps: - name: Build site - image: hugomods/hugo:std-base-non-root-0.141.0 + image: nixos/nix:2.24.11 commands: - - hugo --minify + - echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf + - nix build + - mkdir public && cp -av result/* public - name: Deploy to pages image: codeberg.org/xfix/plugin-codeberg-pages-deploy:1 settings: folder: public - git_config_name: Woodpecker CI - git_config_email: ci@millironx.com ssh_key: from_secret: ssh_key diff --git a/.zed/settings.json b/.zed/settings.json deleted file mode 100644 index eb5924a9..00000000 --- a/.zed/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "languages": { - "HTML": { - "formatter": { - "external": { - "command": "prettier", - "arguments": ["--stdin-filepath", "{buffer_path}"] - } - } - } - }, - "file_types": { "HTML": ["gotmpl"] } -} diff --git a/README.md b/README.md index 165340a9..400066a1 100644 --- a/README.md +++ b/README.md @@ -6,20 +6,18 @@ My personal website. Hosted over at ## Notes to self -### Nix dev shell - -All developer dependencies are now bundled as a Nix Flake. The only trouble with -this is that npm packages don't play well with Nix (and especially Flakes), so -npm packages are specified twice: once in `package{-lock}.json` and then again -in `node*.nix`. +All dependencies are now bundled as a Nix Flake. The only trouble with this is +that npm packages don't play well with Nix (and especially Flakes), so npm +packages are specified twice: once in `package{-lock}.json` and then again in +`node*.nix`. Compounding this, there are formatters and commit hooks that require npm to be functional. So, to develop right now requires allowing direnv to setup the Nix development shell, then immediately installing npm packages via `npm ci`. VSCode -(with extensions) and Zed are smart enough to figure out how to use direnv, and -direnv will pass the PATH to SourceGit for Mac, but other programs aren't that -smart, so you'll need to launch those programs from inside a direnv shell to -make sure they have Prettier, Husky, and all that jazz to execute the hooks. +(with extensions) and Zed are smart enough to figure out how to use direnv, but +other programs (like SourceGit) not so much, so you'll need to launch those +programs from inside a direnv shell to make sure they have Prettier, Husky, and +all that jazz to execute the hooks. Last compounding factors: if `node_modules` is present in the root directory, then node2nix won't create a correct derivation, so `node_modules` will need to @@ -32,11 +30,3 @@ run. Yes, hopefully I can get completely away from npm here soon, but this is a minor inconvenience considering how (not) often I install new packages into this site, and really discourages me from contributing to the website obesity crisis. - -### Nix building - -Nix building will not work because Hugo reaches out to the internet via content -adapters, and that (by intention) is not perfectly reproducable. As such, -_development_ tools are installed in a Nix shell, but building has been removed -from the Flake. Thankfully, hugomods provides "canonical" Docker images for hugo -now. diff --git a/assets/characters/README.md b/assets/characters/README.md deleted file mode 100644 index 3b2d851d..00000000 --- a/assets/characters/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Characters - -Imaginary friends that help me inject personality into my articles. These are -anthropomorphized versions of animals that I have known in real life. I tried to -draw them roughly in the style of Chris Pasquini, but failed myself, then tried -using Perplexity's image generation. The style isn't quite the same, but I like -it for these animals. Also, Perplexity does a horrible job of labeling images, -so ignore the ref sheet emotion labels. - -## Spawn of Satan (aka Spawn aka SOS) - -![Spawn ref sheet](spawn/_ref-body-perplexity.png) - -Spawn of Satan is the name Travis gave to the cannulated cow, and it stuck. -Spawn is old and cynical after having every professor with a new idea experiment -on her. After being in academia for so long, she knows her way around -mathematics and the scientific method reasonably well, even if she's never -formally taken a college course in the sciences. She is the realist to any blog -post's optimist. - -## Whelen - -![Whelen ref sheet](whelen/_ref-body-perplexity.png) - -Whelen is a happy-go-lucky German Shepherd/Husky mix puppy. He's been to school -once - and that was just to get neutered - so his knowledge of math and science, -heck, even of the humanities, isn't very good. He is very naive and thinks -everyone is nice and wants to be his friend, but he is also friendly to everyone -and is very vocal when he feels left out. He will step in when any blog post is -getting too technical and demand an explanation for real people (dogs?). diff --git a/assets/characters/spawn/_ref-blueeye-perplexity.png b/assets/characters/spawn/_ref-blueeye-perplexity.png deleted file mode 100644 index b8bef002..00000000 Binary files a/assets/characters/spawn/_ref-blueeye-perplexity.png and /dev/null differ diff --git a/assets/characters/spawn/_ref-body-perplexity.png b/assets/characters/spawn/_ref-body-perplexity.png deleted file mode 100644 index 04f95a61..00000000 Binary files a/assets/characters/spawn/_ref-body-perplexity.png and /dev/null differ diff --git a/assets/characters/spawn/_ref-bodysmirk-perplexity.png b/assets/characters/spawn/_ref-bodysmirk-perplexity.png deleted file mode 100644 index afb9ba2c..00000000 Binary files a/assets/characters/spawn/_ref-bodysmirk-perplexity.png and /dev/null differ diff --git a/assets/characters/spawn/_ref-face-perplexity.png b/assets/characters/spawn/_ref-face-perplexity.png deleted file mode 100644 index de286dbc..00000000 Binary files a/assets/characters/spawn/_ref-face-perplexity.png and /dev/null differ diff --git a/assets/characters/spawn/body-anger.png b/assets/characters/spawn/body-anger.png deleted file mode 100644 index 0f9fd875..00000000 Binary files a/assets/characters/spawn/body-anger.png and /dev/null differ diff --git a/assets/characters/spawn/body-lazy.png b/assets/characters/spawn/body-lazy.png deleted file mode 100644 index 530eb46f..00000000 Binary files a/assets/characters/spawn/body-lazy.png and /dev/null differ diff --git a/assets/characters/spawn/body-skeptic.png b/assets/characters/spawn/body-skeptic.png deleted file mode 100644 index 8e110dc4..00000000 Binary files a/assets/characters/spawn/body-skeptic.png and /dev/null differ diff --git a/assets/characters/spawn/body-snark.png b/assets/characters/spawn/body-snark.png deleted file mode 100644 index e2be9e10..00000000 Binary files a/assets/characters/spawn/body-snark.png and /dev/null differ diff --git a/assets/characters/spawn/body-tired.png b/assets/characters/spawn/body-tired.png deleted file mode 100644 index 3d84c4d1..00000000 Binary files a/assets/characters/spawn/body-tired.png and /dev/null differ diff --git a/assets/characters/spawn/face-confusion.png b/assets/characters/spawn/face-confusion.png deleted file mode 100644 index 6a701662..00000000 Binary files a/assets/characters/spawn/face-confusion.png and /dev/null differ diff --git a/assets/characters/spawn/face-happy.png b/assets/characters/spawn/face-happy.png deleted file mode 100644 index 445dcef3..00000000 Binary files a/assets/characters/spawn/face-happy.png and /dev/null differ diff --git a/assets/characters/spawn/face-neutral.png b/assets/characters/spawn/face-neutral.png deleted file mode 100644 index 44b55222..00000000 Binary files a/assets/characters/spawn/face-neutral.png and /dev/null differ diff --git a/assets/characters/spawn/face-sad.png b/assets/characters/spawn/face-sad.png deleted file mode 100644 index 15fdb4e3..00000000 Binary files a/assets/characters/spawn/face-sad.png and /dev/null differ diff --git a/assets/characters/spawn/face-toldyouso.png b/assets/characters/spawn/face-toldyouso.png deleted file mode 100644 index 9a908bb5..00000000 Binary files a/assets/characters/spawn/face-toldyouso.png and /dev/null differ diff --git a/assets/characters/whelen/_ref-body-perplexity.png b/assets/characters/whelen/_ref-body-perplexity.png deleted file mode 100644 index e5d41035..00000000 Binary files a/assets/characters/whelen/_ref-body-perplexity.png and /dev/null differ diff --git a/assets/characters/whelen/_ref-face-perplexity.png b/assets/characters/whelen/_ref-face-perplexity.png deleted file mode 100644 index 107709c3..00000000 Binary files a/assets/characters/whelen/_ref-face-perplexity.png and /dev/null differ diff --git a/assets/characters/whelen/body-determined.png b/assets/characters/whelen/body-determined.png deleted file mode 100644 index 2c37c461..00000000 Binary files a/assets/characters/whelen/body-determined.png and /dev/null differ diff --git a/assets/characters/whelen/body-happy.png b/assets/characters/whelen/body-happy.png deleted file mode 100644 index ef40187f..00000000 Binary files a/assets/characters/whelen/body-happy.png and /dev/null differ diff --git a/assets/characters/whelen/body-neutral.png b/assets/characters/whelen/body-neutral.png deleted file mode 100644 index 9737ccc8..00000000 Binary files a/assets/characters/whelen/body-neutral.png and /dev/null differ diff --git a/assets/characters/whelen/body-sad.png b/assets/characters/whelen/body-sad.png deleted file mode 100644 index 2056f02d..00000000 Binary files a/assets/characters/whelen/body-sad.png and /dev/null differ diff --git a/assets/characters/whelen/body-tired.png b/assets/characters/whelen/body-tired.png deleted file mode 100644 index 855a49d0..00000000 Binary files a/assets/characters/whelen/body-tired.png and /dev/null differ diff --git a/assets/characters/whelen/body-worry.png b/assets/characters/whelen/body-worry.png deleted file mode 100644 index 2dd85e2d..00000000 Binary files a/assets/characters/whelen/body-worry.png and /dev/null differ diff --git a/assets/characters/whelen/face-anticipation.png b/assets/characters/whelen/face-anticipation.png deleted file mode 100644 index 0be27d0c..00000000 Binary files a/assets/characters/whelen/face-anticipation.png and /dev/null differ diff --git a/assets/characters/whelen/face-bored.png b/assets/characters/whelen/face-bored.png deleted file mode 100644 index d376b4d7..00000000 Binary files a/assets/characters/whelen/face-bored.png and /dev/null differ diff --git a/assets/characters/whelen/face-happy.png b/assets/characters/whelen/face-happy.png deleted file mode 100644 index af35cae4..00000000 Binary files a/assets/characters/whelen/face-happy.png and /dev/null differ diff --git a/assets/characters/whelen/face-neutral.png b/assets/characters/whelen/face-neutral.png deleted file mode 100644 index 1a934325..00000000 Binary files a/assets/characters/whelen/face-neutral.png and /dev/null differ diff --git a/assets/characters/whelen/face-skeptic.png b/assets/characters/whelen/face-skeptic.png deleted file mode 100644 index 33cc0636..00000000 Binary files a/assets/characters/whelen/face-skeptic.png and /dev/null differ diff --git a/assets/characters/whelen/face-tired.png b/assets/characters/whelen/face-tired.png deleted file mode 100644 index f395166d..00000000 Binary files a/assets/characters/whelen/face-tired.png and /dev/null differ diff --git a/assets/characters/whelen/face-worry.png b/assets/characters/whelen/face-worry.png deleted file mode 100644 index 563b68e2..00000000 Binary files a/assets/characters/whelen/face-worry.png and /dev/null differ diff --git a/assets/graphics/fa/bitcoin.svg b/assets/graphics/fa/bitcoin.svg deleted file mode 100644 index 8815bce0..00000000 --- a/assets/graphics/fa/bitcoin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/block-quote.svg b/assets/graphics/fa/block-quote.svg deleted file mode 100644 index faa51e9f..00000000 --- a/assets/graphics/fa/block-quote.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/candy-bar.svg b/assets/graphics/fa/candy-bar.svg deleted file mode 100644 index 3c0bdfa9..00000000 --- a/assets/graphics/fa/candy-bar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/chevrons-down.svg b/assets/graphics/fa/chevrons-down.svg deleted file mode 100644 index 0fab5529..00000000 --- a/assets/graphics/fa/chevrons-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/circle-info.svg b/assets/graphics/fa/circle-info.svg deleted file mode 100644 index 025e8d07..00000000 --- a/assets/graphics/fa/circle-info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/circle-quarters.svg b/assets/graphics/fa/circle-quarters.svg deleted file mode 100644 index 31f53d2f..00000000 --- a/assets/graphics/fa/circle-quarters.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/code.svg b/assets/graphics/fa/code.svg deleted file mode 100644 index c43b6d13..00000000 --- a/assets/graphics/fa/code.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/codeberg.svg b/assets/graphics/fa/codeberg.svg deleted file mode 100644 index d5fdd1a1..00000000 --- a/assets/graphics/fa/codeberg.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/graphics/fa/ebay.svg b/assets/graphics/fa/ebay.svg deleted file mode 100644 index cc19ef65..00000000 --- a/assets/graphics/fa/ebay.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/ethereum.svg b/assets/graphics/fa/ethereum.svg deleted file mode 100644 index b200fd22..00000000 --- a/assets/graphics/fa/ethereum.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/google-scholar.svg b/assets/graphics/fa/google-scholar.svg deleted file mode 100644 index e2b6347e..00000000 --- a/assets/graphics/fa/google-scholar.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/assets/graphics/fa/hacker-news.svg b/assets/graphics/fa/hacker-news.svg deleted file mode 100644 index 1d402c19..00000000 --- a/assets/graphics/fa/hacker-news.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/lightning.svg b/assets/graphics/fa/lightning.svg deleted file mode 100644 index e8cc00c3..00000000 --- a/assets/graphics/fa/lightning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/link.svg b/assets/graphics/fa/link.svg deleted file mode 100644 index 9ace2c76..00000000 --- a/assets/graphics/fa/link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/lutris.svg b/assets/graphics/fa/lutris.svg deleted file mode 100644 index fd6d2aa9..00000000 --- a/assets/graphics/fa/lutris.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/assets/graphics/fa/matrix.svg b/assets/graphics/fa/matrix.svg deleted file mode 100644 index a1789126..00000000 --- a/assets/graphics/fa/matrix.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/graphics/fa/monero.svg b/assets/graphics/fa/monero.svg deleted file mode 100644 index 2a1a5dc6..00000000 --- a/assets/graphics/fa/monero.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/p.svg b/assets/graphics/fa/p.svg deleted file mode 100644 index 8082e1db..00000000 --- a/assets/graphics/fa/p.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/right-to-bracket.svg b/assets/graphics/fa/right-to-bracket.svg deleted file mode 100644 index 0d86ac31..00000000 --- a/assets/graphics/fa/right-to-bracket.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/rss.svg b/assets/graphics/fa/rss.svg deleted file mode 100644 index ce2e0d49..00000000 --- a/assets/graphics/fa/rss.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/scroll.svg b/assets/graphics/fa/scroll.svg deleted file mode 100644 index 2d5e7a8a..00000000 --- a/assets/graphics/fa/scroll.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/spotify.svg b/assets/graphics/fa/spotify.svg deleted file mode 100644 index cb99987e..00000000 --- a/assets/graphics/fa/spotify.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/zcash.svg b/assets/graphics/fa/zcash.svg deleted file mode 100644 index 2a9c9d7f..00000000 --- a/assets/graphics/fa/zcash.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/graphics/fa/zotero.svg b/assets/graphics/fa/zotero.svg deleted file mode 100644 index 2948c62d..00000000 --- a/assets/graphics/fa/zotero.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/graphics/millironx-icon.png b/assets/graphics/millironx-icon.png deleted file mode 100644 index 1c4913fd..00000000 Binary files a/assets/graphics/millironx-icon.png and /dev/null differ diff --git a/assets/graphics/millironx-icon.svg b/assets/graphics/millironx-icon.svg deleted file mode 100644 index 42b27779..00000000 --- a/assets/graphics/millironx-icon.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - diff --git a/assets/graphics/millironx.svg b/assets/graphics/millironx.svg index 2e1c7561..c0e4bd14 100644 --- a/assets/graphics/millironx.svg +++ b/assets/graphics/millironx.svg @@ -1,42 +1,43 @@ - + + - + + + + + + diff --git a/content/thumbnail.jpg b/assets/images/charolette.jpg similarity index 100% rename from content/thumbnail.jpg rename to assets/images/charolette.jpg diff --git a/content/blogroll/thumbnail.jpg b/assets/images/eclipse.jpg similarity index 100% rename from content/blogroll/thumbnail.jpg rename to assets/images/eclipse.jpg diff --git a/content/academia/thumbnail.jpg b/assets/images/library.jpg similarity index 100% rename from content/academia/thumbnail.jpg rename to assets/images/library.jpg diff --git a/content/contact/thumbnail.jpg b/assets/images/venice-mailbox.jpg similarity index 100% rename from content/contact/thumbnail.jpg rename to assets/images/venice-mailbox.jpg diff --git a/assets/styles/millironx.css b/assets/styles/millironx.css index 00ad31ea..a4fcf707 100644 --- a/assets/styles/millironx.css +++ b/assets/styles/millironx.css @@ -165,18 +165,7 @@ ); --container-border: light-dark(var(--swiss-brown-6), var(--eclipse-16)); --container-background: light-dark(var(--swiss-brown-4), var(--eclipse-12)); - --container-border-alt: light-dark(var(--eclipse-16), var(--swiss-brown-6)); - --container-background-alt: light-dark( - var(--eclipse-12), - var(--swiss-brown-4) - ); --motto-background: rgba(0, 0, 0, 0.66); - --page-button-text: var(--prickly-pear-yellow-1); - --page-button-background: var(--prickly-pear-yellow-8); - --page-button-background-hover: var(--prickly-pear-yellow-10); - --page-button-background-active: var(--prickly-pear-yellow-12); - --page-button-background-disabled: var(--prickly-pear-yellow-6); - --page-button-text-disabled: var(--eclipse-7); /* Fonts @@ -185,10 +174,7 @@ "URW Bookman L", "Georgia Pro", Georgia, serif; --font-family-slab-serif: Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif", "Sitka Small", serif; - --font-family-transitional: Charter, "Bitstream Charter", "Sitka Text", - Cambria, serif; --font-family-system-ui: system-ui, sans-serif; - --font-family-monospace: "Nimbus Mono PS", "Courier New", monospace; } /* @@ -200,26 +186,6 @@ html { font-family: var(--font-family-slab-serif); } -body { - display: flex; - flex-direction: column; - min-height: 98vh; - margin: 0 8px; - align-items: center; -} - -.container { - max-width: min(60rem, 100vw - 2rem); -} - -.footer-inner { - width: min(60rem, 100vw - 2rem); - display: flex; - justify-content: space-between; - align-items: center; - flex-shrink: 0; -} - a { color: var(--link-color); } @@ -269,39 +235,6 @@ nav a:hover { background-color: var(--nav-button-background-hover); } -main { - display: flex; - flex-direction: column; -} - -article p, -.character-dialog-text, -article li { - font-family: var(--font-family-transitional); - font-size: 1.15rem; - text-justify: inter-word; - text-align: justify; - hyphens: auto; -} - -article > p { - text-indent: 2ch; - line-height: 1.5em; -} - -article h1 + p, -article h2 + p, -article h3 + p, -article h4 + p, -article h5 + p, -article h6 + p { - text-indent: 0; -} - -.footnotes p { - font-size: smaller; -} - figure { border-color: var(--container-border); border-width: 1.5pt; @@ -311,41 +244,33 @@ figure { padding: 1.25pt; } -figure:has(blockquote) { +blockquote { background: linear-gradient( to right, var(--container-border), var(--container-background) ); - border: none; - border-radius: 0; - border-left: 6px solid black; - padding: 0.25em 1em; + border-left: 5px solid black; + padding: 1px; + padding-left: 6px; } -figure:has(blockquote) > blockquote { - margin: 0; -} - -figure:has(blockquote) > figcaption::before { +blockquote small::before { content: "\2014 \00A0"; } -figure:has(blockquote) > figcaption { - margin-top: -1em; - margin-bottom: 1em; +blockquote small { font-size: 80%; } footer { - display: flex; - flex-direction: column; - align-items: center; background-color: var(--container-background); margin: 0 0 -1em -1em; width: calc(100% - 1em); padding: 0.25em 1.25em; - font-size: smaller; + display: flex; + justify-content: space-between; + align-items: center; } form { @@ -370,25 +295,6 @@ textarea:invalid { border-bottom-color: var(--ear-tag-red); } -code { - font-family: var(--font-family-monospace); -} - -/* - abbr element "tooltip" for mobile - heavily modified from https://bitsofco.de/making-abbr-work-for-touchscreen-keyboard-mouse/ -*/ -abbr[title]:focus::after { - content: attr(title); - background-color: #1e1e1e; - color: #fff; - border-radius: 0.125em; - box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.4); - font-size: smaller; - padding: 0.5em; - display: block; -} - /* Container-type helper classes */ @@ -398,12 +304,6 @@ abbr[title]:focus::after { width: 100%; } -.motto-wrapper { - display: block; - flex: 1 0 30vh; - margin-bottom: 1em; -} - .motto { position: relative; display: grid; @@ -413,7 +313,6 @@ abbr[title]:focus::after { font-weight: 600; text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); width: 100%; - height: 100%; padding: 0 0 0.5em 0; border-radius: 0.25rem; z-index: 10; @@ -441,7 +340,6 @@ abbr[title]:focus::after { .motto .motto-inside h1 { background-color: var(--motto-background); - padding: 0.5rem; } .card { @@ -453,23 +351,11 @@ abbr[title]:focus::after { margin: 1rem 0; padding: 0.5rem; padding-top: 0; + position: relative; display: flex; flex-direction: column; } -.card-content { - display: flex; - flex-direction: column; - flex-grow: 1; -} - -.card-header { - display: flex; - flex-direction: row; - justify-content: space-between; - flex-grow: 1; -} - .card-link { white-space: nowrap; display: inline-flex; @@ -477,26 +363,22 @@ abbr[title]:focus::after { align-items: center; text-underline-offset: 0.25em; backface-visibility: hidden; - margin: 0.1em 0.25em; - padding: 0.33em; - padding-right: 0.45em; -} - -.card-body { - margin-top: 0.33em; + margin: 0 0.5em; } .category-button { + position: absolute; + top: 1em; + right: 1em; display: grid; - align-items: center; - justify-items: center; color: white; background-color: var(--ear-tag-red); border-radius: 0.5em; padding: 1em; - margin: 1em; - height: 2em; - aspect-ratio: 1 / 1; +} + +.card-title a h3 { + margin-right: 3.5em; } .card-title > a { @@ -539,118 +421,6 @@ abbr[title]:focus::after { fill: currentColor; } -.account-bucket { - display: grid; - grid-template-columns: 3em 1em 1fr; - background-color: var(--container-background-alt); - padding: 1em 0; - border-radius: 0.5em; - border-color: var(--container-border-alt); - border-style: solid; - color: light-dark(white, black); - margin: 1em 0; - align-items: center; -} - -.account-bucket h3 { - align-self: center; - writing-mode: sideways-lr; -} - -.account-bucket details { - grid-column: 3; -} - -.account-bucket .crypto-list { - grid-column: 3; - max-width: 100%; -} - -.account-list { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - width: calc(100% - 1.5em); -} - -.account-bucket .account-list { - grid-column: 3; -} - -.account-list a { - font-size: xx-large; - text-decoration: none; - color: inherit; - padding: 0.5em; -} - -.account-list a:hover { - background-color: var(--container-background); - border-color: var(--container-border); - border-width: 2.5px; - border-radius: 0.5em; - border-style: solid; - padding: calc(0.5em - 2.5px); -} - -figcaption .mono { - color: light-dark(black, white); - overflow-wrap: anywhere; -} - -.crypto-list details { - max-width: 100%; -} - -.character-dialog { - display: grid; - width: calc(100% - 1rem); - grid-template-columns: 5rem 1fr; - grid-template-rows: auto auto; - gap: 1em; - margin: 0.5rem; -} - -.character-avatar { - display: grid; - max-width: 100%; - grid-row: 1 / span 2; - grid-column: 1; - align-self: start; - align-items: center; - justify-items: center; - min-width: 5rem; - min-height: 5rem; - border-radius: 5rem; - align-items: center; - border-style: solid; - border-color: var(--nav-button-background-hover); - background-color: var(--cowhide-2); -} - -.character-avatar > img { - max-width: 4rem; - max-height: 4rem; -} - -.character-dialog-bubble { - display: grid; - grid-template-rows: auto auto; - align-self: start; - border-radius: 0.5em; - border-width: 0.2rem; - border-color: var(--nav-button-background); - border-style: outset; - row-gap: 0.5rem; - padding: 0.5rem; - background-color: var(--container-border); - min-height: 5rem; -} - -.character-dialog-title { - font-weight: bolder; -} - /* Helper classes */ @@ -661,9 +431,6 @@ figcaption .mono { .img-fluid { max-width: 100%; height: auto; - display: grid; - align-items: center; - justify-items: center; } .float-left { @@ -676,68 +443,6 @@ figcaption .mono { max-width: 100%; } -.pagination { - display: flex; - justify-content: center; - gap: 0.5em; - padding-left: 0; -} - -.pagination li { - list-style-type: none; - color: var(--nav-button-text); -} - -.pagination li a { - color: var(--page-button-text); - background-color: var(--page-button-background); - border-radius: 0.05rem; - border-style: outset; - border-width: 0.2rem; - border-color: var(--page-button-background); - width: 2rem; - max-width: 1.8vw; - aspect-ratio: 1 / 1; - display: flex; - justify-content: center; - align-items: center; - margin: 0.2rem; - text-decoration: none; - padding: 0 0.2rem; - font-family: var(--font-family-system-ui); -} - -.pagination li a:hover { - background-color: var(--page-button-background-hover); -} - -.pagination li.active a { - background-color: var(--page-button-background-active); -} - -.pagination li.disabled a { - cursor: not-allowed; - background-color: var(--page-button-background-disabled); - color: var(--page-button-text-disabled); - border-style: solid; -} - -.mono { - font-family: var(--font-family-monospace); - font-weight: 600; -} - -.bolder { - font-weight: bolder; - background-color: rgba(0, 0, 0, 0.33); - border-radius: 0.25em; -} - -/* Specific elements */ -#content { - flex: 1 0 max-content; -} - /* Desktop screen size adjustments */ @@ -775,15 +480,6 @@ figcaption .mono { flex-direction: row; } - .person-profile { - position: sticky; - top: 0; - width: 300px; - min-width: 20vw; - max-width: 30vw; - margin-bottom: 5vh; - } - /* Helper classes */ @@ -805,19 +501,20 @@ figcaption .mono { margin-right: 1rem; } - .card-thumbnail { + .card-header { width: 20vw; flex-shrink: 0; } - .card-thumbnail:not( - :has(~ .card-content > .card-header > .card-title > .dt-published) - ) { - width: 10vw; + .card-body { + margin-left: 1rem; } - .card-content { - margin-left: 1rem; + .bolder { + font-weight: bolder; + background-color: rgba(0, 0, 0, 0.33); + border-radius: 0.25em; + padding: 0.25em 0.75em 0.5em 0.33em; } /* @@ -837,3 +534,79 @@ figcaption .mono { clear: both; } } /* end @media */ + +@media (prefers-reduced-motion: no-preference) { + @supports (animation-timeline: scroll()) and (animation-range: 0 50vh) { + @keyframes sticky-header { + from { + height: 50vh; + top: 6rem; + } + + to { + height: 10vh; + top: -1rem; + } + } + + @keyframes blurry-header { + from { + filter: blur(0); + } + + to { + filter: blur(2px); + } + } + + @keyframes transparent-text-bg { + from { + background-color: var(--motto-background); + } + to { + background-color: rgba(0, 0, 0, 0); + } + } + + main, + footer { + position: relative; + top: 55vh; + } + + .motto { + position: fixed; + top: 12rem; + + animation: sticky-header linear forwards; + animation-timeline: scroll(); + animation-range: 0 50vh; + } + + .motto::before { + filter: blur(12px); + + top: 2rem; + + animation: blurry-header linear forwards; + animation-timeline: scroll(); + animation-range: 0 50vh; + } + + .motto-inside h1 { + animation: transparent-text-bg linear forwards; + animation-timeline: scroll(); + animation-range: 0 40vh; + } + + @media (min-width: 768px) { + .motto { + width: calc(100% - 8rem); + } + + .motto::before { + top: 0; + } + } + } /* end @supports */ +} /* end @media */ diff --git a/assets/styles/mix-twbs.scss b/assets/styles/mix-twbs.scss new file mode 100644 index 00000000..536f92ef --- /dev/null +++ b/assets/styles/mix-twbs.scss @@ -0,0 +1,179 @@ +$web-font-path: "/fonts/nunito-sans/index.css"; + +@import "bootstrap/functions"; +@import "bootswatch/lux/variables"; +@import "bootstrap/bootstrap"; +@import "bootswatch/lux/bootswatch"; + +$peek-height: 25rem; + +.blurred-container { + position: relative; + width: 100%; + min-height: 35vh; + height: $peek-height; + top: 0; + left: 0; +} + +.blurred-container .motto { + color: #fff; + font-size: 76px; + font-weight: 600; + text-align: center; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); + text-transform: uppercase; + top: 7.5vh; + z-index: 3; + display: block; + margin: 0 auto; + position: relative; + width: 60%; + height: 0; +} + +.motto h1 { + background: #0000007d; + -webkit-text-stroke: 0.3px $gray-100; + line-height: 1; +} + +.blurred-container .img-src { + position: fixed; + width: 100%; + min-height: 35vh; + height: $peek-height; + background-repeat: no-repeat; + background-size: cover; + background-position: center center; +} + +.list-main { + position: relative; + background-color: #fff; + padding-bottom: calc(1rem + 95px); + padding-top: 1rem; +} + +.footer-contents { + position: relative; + background-color: $gray-200; +} + +/* Gives me greater control over fonts */ +.font-serif { + font-family: Georgia, "Times New Roman", Times, serif; +} + +.font-sans { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.font-mono { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} + +.font-small-caps { + font-variant-caps: small-caps; +} + +.strikethrough { + text-decoration: line-through; +} + +.sfTable { + margin: 0 auto; +} + +.text-align-left { + text-align: left; +} + +.text-align-right { + text-align: right; +} + +.float-left { + float: left; +} + +.float-right { + float: right; +} + +.media-object { + max-height: 100%; + max-width: 100%; +} + +@media (min-width: 768px) { + .pull-left { + max-width: 25%; + } + + .w-md-50 { + width: 50%; + } +} + +h1 small { + font-size: 60%; + color: #9a9a9a; + font-weight: 300; + line-height: 1.5; +} + +h1 { + font-weight: 400; + margin: 30px 0 15px; +} + +.dogear { + clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 25%, 75% 0); +} + +.fa-stack-top { + vertical-align: top; +} + +.table-condensed th { + padding: 0.5rem; +} + +.table-condensed td { + padding: 0.5rem; +} + +@media (min-width: map-get($grid-breakpoints, md)) { + .fixed-bottom { + left: 25%; + } + + .md-max-width-33 { + max-width: 33%; + } +} + +.card-link { + white-space: nowrap; +} + +.category-button { + position: absolute; + top: 1em; + right: 1em; + display: grid; +} + +.card-title { + margin-right: 2.25em; +} + +.thumb-icon-wrapper { + display: flex; + justify-content: center; +} + +.thumb-icon-badge { + font-size: xx-large; +} diff --git a/assets/styles/scrolling-header.css b/assets/styles/scrolling-header.css deleted file mode 100644 index acc8a4ba..00000000 --- a/assets/styles/scrolling-header.css +++ /dev/null @@ -1,68 +0,0 @@ -@media (prefers-reduced-motion: no-preference) { - @supports (animation-timeline: scroll()) and (animation-range: 0 50vh) { - @keyframes sticky-header { - from { - flex-basis: 30vh; - } - - to { - flex-basis: 0; - } - } - - .motto-wrapper { - position: sticky; - top: 0; - z-index: 100; - - animation: sticky-header linear forwards; - animation-timeline: scroll(); - animation-range: 0 30vh; - - contain: content; - } - - @keyframes blurry-header { - from { - filter: blur(0); - } - - to { - filter: blur(3.5px); - } - } - - .motto::before { - animation: blurry-header linear forwards; - animation-timeline: scroll(); - animation-range: 0 30vh; - } - - @keyframes transparent-text-bg { - from { - background-color: var(--motto-background); - text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); - } - to { - background-color: rgba(0, 0, 0, 0); - text-shadow: 0 0 10px rgba(0, 0, 0, 1); - } - } - .motto-inside h1 { - animation: transparent-text-bg linear forwards; - animation-timeline: scroll(); - animation-range: 0 30vh; - } - - .motto-inside h1 small { - display: block; - font-size: calc(1vh + 1vw); - line-height: calc(1vh + 1vw); - } - - main section { - margin: 0 0.25em; - contain: content; - } - } /* end @supports */ -} /* end @media */ diff --git a/config.toml b/config.toml index 8a730b3c..3051f2bb 100644 --- a/config.toml +++ b/config.toml @@ -1,9 +1,7 @@ baseURL = "https://millironx.com" languageCode = "en-us" -title = "Milliron X" - -[pagination] -pagerSize = 5 +title = "MillironX" +paginate = 5 [build] writeStats = true @@ -11,47 +9,8 @@ writeStats = true [Params] cardImage = "saddles" motto = "" -images = ["saddles.jpg"] -categories = [] [taxonomies] people = "people" tag = "tags" category = "categories" - -[mediaTypes] - -[mediaTypes."application/atom+xml"] -suffixes = ["xml"] - -[outputs] -home = ["atom", "html", "manifest"] -page = ["html"] -section = ["html", "atom"] -term = ["html", "atom"] - -[outputFormats] - -[outputFormats.atom] -mediaType = "application/atom+xml" -baseName = "feed" - -[outputFormats.manifest] -name = "manifest" -baseName = "manifest" -mediaType = "application/json" -notAlternative = "true" - -[markup] - -[markup.goldmark] - -[markup.goldmark.parser] - -[markup.goldmark.parser.attribute] -block = true - -[markup.goldmark.renderHooks] - -[markup.goldmark.renderHooks.link] -enableDefault = true diff --git a/content/_index.md b/content/_index.md index 1cfe7904..aae5dd7b 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,11 +1,12 @@ --- +title: Home cardImage: charolette cardImageDescription: She almost looks like she's in her native country again. motto: My name is Thomas Christensen
I am Milliron X description: The homepage of Thomas A. Christensen II +layout: _default/list menu: main: - name: Home params: icon: home weight: -1000 @@ -28,3 +29,58 @@ to a sense of withholding, prestige, and power. Together, these two symbols represent the qualities I strive for in each of my works: authenticity, originality, power, depth, and prestige. + +## Who am I? + +{{< imgproc me-and-lady Resize "768x" "float-right" >}} Image courtesy +[Guy McCutcheon Photography](https://www.guymccutcheon.com/) {{< /imgproc >}} + +I am + +- 🧬 A bioinformatician (by profession) +- πŸ“ An engineer (by education) +- πŸ‚ A rancher (by lifestyle) +- πŸ–₯️ A techie (self-taught) +- πŸŽ₯ And a filmmaker (at heart) + +I've got a soft spot for Brown Swiss dairy cows (just in case you couldn't tell +by the pictures), and am sometimes called "one of those crazy, Wyoming dairy cow +people." I love anything to do with cattle or technology, but especially +anything to do with both of them. + +_{{< abbr "Born again, fundamentalist, dispensationalist, King James Bible-believing, independent Baptist" >}}Christian{{< /abbr >}}, +American, Convervative, Pro-gun, Heterosexual - any questions?_ + +## Where am I? + +{{< imgproc wy-in-ks Resize "768x" "float-left" / >}} + +I am a Wyomingite sojurning in Kansas. That ought to lead to some interesting +stories. + +Around the web you can find me at (in order of subjective importance) + +- {{< fa github >}} GitHub: [@MillironX](https://github.com/MillironX) +- {{< fa orcid >}} ORDiD: + [0000-0003-1219-9320](https://orcid.org/0000-0003-1219-9320) +- {{< fa gitlab >}} GitLab: [@MillironX](https://gitlab.com/MillironX) +- {{< fa vimeo >}} Vimeo: + [Thomas Christensen II](https://vimeo.com/tchristensenii) +- {{< fa stack-overflow >}} StackExchange: + [Milliron X](https://stackexchange.com/users/4863541/milliron-x) +- {{< fa steam >}} Steam: [MillironX](https://steamcommunity.com/id/millironx) + +This list is intended to verify my identity on other sites. Please do _not_ use +it as fodder to try and "follow" me on each of these platforms. I stand with +RMS: + +{{< blockquote "Richard Stallman _in_ [If you feel your organization needs a 'presence' in Facebook](https://stallman.org/facebook-presence.html)" >}} +Facebook is a bad place for a person to be. When people find us on Facebook, we +lead them away from Facebook and then talk with them elsewhere. +{{< /blockquote >}} + +I typically don't respond to inquiries made on these platforms. Please use +[my contact form](/contact), instead. + + + diff --git a/content/academia/_index.md b/content/academia/_index.md index ea2eb55a..10e40835 100644 --- a/content/academia/_index.md +++ b/content/academia/_index.md @@ -14,15 +14,13 @@ menu: fa-thumbnail: university --- +> I have spent too long in school and not enough time in the middle of nowhere +> +> -- Baxter Black, DVM + During my time in academia, I have amassed a few notable accomplishments. Of course, as the old saying goes, "if it isn't published, then it never happened," -so here is a list of everything that actually happened. - -Academia is not the be-all and end-all of life (contrary to what your professor -might have told you). I've found the side-effects to be similar to this guy's: - - -> I have spent too long in school and not enough time in the middle of nowhere, -> and it has inhibited my ability to learn the simple things. -{author="Baxter Black, DVM"} - +so here is a list of everything that actually happened. Several of these +articles are also available on +[my Google Scholar page](https://scholar.google.com/citations?user=gbP4RDgAAAAJ), +but this is the complete list. diff --git a/content/academia/bpv-genetics.md b/content/academia/bpv-genetics.md deleted file mode 100644 index edd678f7..00000000 --- a/content/academia/bpv-genetics.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Genetic analysis of bovine papillomas" -date: 2024-09-19 -categories: - - poster -people: - - Thomas A. Christensen II - - Rachel Palinski - - Bob Gentry -journal: - "National Association of Animal Breeders Technical Conference Student Poster - session" -location: "Middleton, Wisconsin" ---- - -Bovine papillomavirus (BPV) is a major cause of reproductive failure in cattle. -In bulls, penile papillomas caused by BPV may cause reluctance to breed, and is -always a cause to fail an animal on a breeding soundness exam. Historically, it -has been thought that BPV was transmitted via direct contact and could be -controlled by managing clinically presenting animals in the herd, but more -recent evidence suggests alternative modes of transmission. BPV has been found -repeatably in clinically healthy animals, and in non-cutaneous secretions -including milk, blood, urine and semen. Currently, no commercially available BPV -vaccine uses isolated viral particles and naturally occurring virus does not -produce cross-protective immunity. In order to develop a proper vaccine for -penile papillomas further studies are required to understand the epidemiology of -BPV in herds. While vulvar, cutaneous, and mammary papillomas have been -genotyped in recent years, this information is not available for penile -papillomas. In this study there were 31 submissions, collected from 7 states, -NE, KS, NY, TX, AL, MO and SD (14 different cattle operations) Samples were -collected between August of 2022 and April 2024. Twenty-two submissions were -penile papillomas and with pooling of samples represented over 50 penile -papillomas. Samples were metagenomically sequenced at the Kansas State -Veterinary Diagnostic Lab, and the genotype of each sample was determined using -the phylogenetic analysis. The clade of each sample was determined by aligning -consensus sequences of the L1 gene (used for both for phylogeny and as a vaccine -target) using MAFFT and a maximum-likelihood phylogeny generated in Mega X. -Analysis found that all penile papilloma submissions were composed of BPV type -2, with one sample showing co-infection with BPV type 1. Conversely, cutaneous -and teat papillomas had BPV genotypes that were more variable with genotypes of -1,2,7,12,14,29 and 40. These results indicate that BPV type 2 and type 1 provide -a unified target for bovine penile papilloma vaccine development. diff --git a/content/academia/got-warts-naab.md b/content/academia/got-warts-naab.md deleted file mode 100644 index adea3d83..00000000 --- a/content/academia/got-warts-naab.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: - "Got Warts? Bovine Papillomavirus Pathogenesis, Transmission, and Vaccination" -date: 2024-09-19 -featured: false -categories: - - presentation -people: - - Bob Gentry - - Thomas A. Christensen II -journal: - "National Association of Animal Breeders Technical Conference Sponsor session" -location: "Middleton, Wisconsin" ---- diff --git a/content/academia/metagenomics/thumbnail.jpg b/content/academia/metagenomics/thumbnail.jpg deleted file mode 100644 index b952da2e..00000000 Binary files a/content/academia/metagenomics/thumbnail.jpg and /dev/null differ diff --git a/content/academia/pva-aiche/thumbnail.jpg b/content/academia/pva-aiche/thumbnail.jpg deleted file mode 100644 index 80f1c8e1..00000000 Binary files a/content/academia/pva-aiche/thumbnail.jpg and /dev/null differ diff --git a/content/academia/taxprofiler.md b/content/academia/taxprofiler.md index b629a8ad..88c62e4d 100644 --- a/content/academia/taxprofiler.md +++ b/content/academia/taxprofiler.md @@ -1,7 +1,6 @@ --- title: - "nf-core/taxprofiler: highly parallelised and flexible pipeline for - metagenomic taxonomic classification and profiling" + "nf-core/taxprofiler: highly parallelised and flexible pipeline for metagenomic taxonomic classification and profiling" date: 2023-10-23 featured: true tags: @@ -17,25 +16,9 @@ people: - Maxime Borry - Mahwash Jamy - nf-core community - - James A. Fellows Yates + - James A. Fellows Yate link: https://doi.org/10.1101/2023.10.20.563221 journal: bioRxiv --- -Metagenomic classification tackles the problem of characterising the taxonomic -source of all DNA sequencing reads in a sample. A common approach to address the -differences and biases between the many different taxonomic classification tools -is to run metagenomic data through multiple classification tools and databases. -This, however, is a very time-consuming task when performed manually - -particularly when combined with the appropriate preprocessing of sequencing -reads before the classification. Here we present nf-core/taxprofiler, a highly -parallelised read-processing and taxonomic classification pipeline. It is -designed for the automated and simultaneous classification and/or profiling of -both short- and long-read metagenomic sequencing libraries against a 11 -taxonomic classifiers and profilers as well as databases within a single -pipeline run. Implemented in Nextflow and as part of the nf-core initiative, the -pipeline benefits from high levels of scalability and portability, accommodating -from small to extremely large projects on a wide range of computing -infrastructure. It has been developed following best-practise software -development practises and community support to ensure longevity and adaptability -of the pipeline, to help keep it up to date with the field of metagenomics. +Metagenomic classification tackles the problem of characterising the taxonomic source of all DNA sequencing reads in a sample. A common approach to address the differences and biases between the many different taxonomic classification tools is to run metagenomic data through multiple classification tools and databases. This, however, is a very time-consuming task when performed manually - particularly when combined with the appropriate preprocessing of sequencing reads before the classification. Here we present nf-core/taxprofiler, a highly parallelised read-processing and taxonomic classification pipeline. It is designed for the automated and simultaneous classification and/or profiling of both short- and long-read metagenomic sequencing libraries against a 11 taxonomic classifiers and profilers as well as databases within a single pipeline run. Implemented in Nextflow and as part of the nf-core initiative, the pipeline benefits from high levels of scalability and portability, accommodating from small to extremely large projects on a wide range of computing infrastructure. It has been developed following best-practise software development practises and community support to ensure longevity and adaptability of the pipeline, to help keep it up to date with the field of metagenomics. diff --git a/content/academia/yavsap/index.md b/content/academia/yavsap/index.md deleted file mode 100644 index 3ffc79c9..00000000 --- a/content/academia/yavsap/index.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "YAVSAP: versatile viral quasispecies analysis for veterinary samples" -date: 2024-03-05 -featured: false -categories: - - presentation -people: - - Thomas A. Christensen II - - Steven Stancic - - Andrea Lu - - Dana Mitzel - - William Wilson - - Rachel Palinski -journal: "Phi Zeta Research Day" -location: "Manhattan, Kansas" -tags: - - virus - - quasispecies - - next-generation sequencing - - pipeline -awards: - - "2nd Place Large Animal Applied Research Presentation" -link: "/academia/yavsap/yavsap.pdf" ---- - -Viral populations within an infected host are composed of viral particles with a -spectrum of genetic mutations rather than a unified genome. This phenomenon is -referred to as viral "quasispecies," and has been useful for the understanding -of viral transmission and early detection of new viral variants. Next generation -sequencing (NGS) has enabled the study of these quasispecies for many viral -species, notably Influenza A and B, Human Immunodeficiency Virus (HIV), Foot and -Mouth Disease Virus (FMDV), and Severe Acute Respiratory Syndrome Coronavirus 2 -(SARS CoV2), and established protocols and computer analysis tools have been -developed for these species. Some of the most important viruses, such as -emerging and exotic disease agents, however, do not have replicatable protocols -or software tools capable of producing valid output from their sequence data. -Here, we present Yet Another Viral Subspecies Analysis Pipeline (YAVSAP). YAVSAP -is a fully automated bioinformatic pipeline built from the ground up to identify -and analyze viral quasispecies of any arbitrary virus in human and veterinary -samples. YAVSAP provides reference-based genome mapping of both long- and -short-read sequencing reads to any reference genome that the user chooses, -identifies subconsensus variants and haplotypes, and assesses the phylogenies of -all viral sequences found within a sample. YAVSAP is written in Nextflow and -conforms to the nf-core initiative's standards, which allows it to run on -low-end computers, high performance computing (HPC) clusters, or anything in -between with zero configuration. YAVSAP has been tested on viruses of interest -to veterinary medicine and public health, including Japanese Encephalitis Virus -(JEV), Influenza D Virus (IDV), Bovine Coronavirus (BCoV), SARS CoV2, and Rift -Valley Fever Virus (RVFV), and can correctly identify consensus genomes and -quasispecies within samples containing each of these viruses. This tool provides -a means for biologists with little bioinformatic experience to analyze deep -sequence data while correcting for many of the pitfalls associated with previous -and current analysis platforms. YAVSAP is open source software and is publicly -available at https://github.com/ksumngs/yavsap. diff --git a/content/academia/yavsap/yavsap.pdf b/content/academia/yavsap/yavsap.pdf deleted file mode 100644 index 14462c79..00000000 Binary files a/content/academia/yavsap/yavsap.pdf and /dev/null differ diff --git a/content/blogroll/_index.md b/content/blogroll/_index.md index 307a6192..2a17fb5b 100644 --- a/content/blogroll/_index.md +++ b/content/blogroll/_index.md @@ -1,15 +1,5 @@ --- -title: "Blogroll" -menu: - main: - name: Blogroll - params: - icon: scroll - weight: -800 -cardImage: eclipse -cardImageDescription: | - Randall Monroe was right. Eclipses are way cooler than they sound. -suppressRss: true +draft: true --- ## Stuff I like on the internet @@ -17,4 +7,39 @@ suppressRss: true This section of a website used to be called a "blogroll." I don't know what it's called now. In order to be on this list, I must have been subscribed or otherwise follow it for over a year. It's amazing how little stuff on the -internet can make that cut. +internet can't make that cut. + +### [Thru the Bible](https://ttb.org/) + +I'm convinced that the word of God is timeless, and we need less commentary and +cherry-picking of favorite verses, and more study of the complete Bible. Dr. +McGee does just that. + +### [Enoch the Cow Vet](https://youtube.com/channel/UC6PPmHUbcdOSzX5tLB3uXdw) + +A veterinarian/agricultural channel that doesn't make me cringe. "God built +these things for cows for vets ... [there are] so many aspects of the cow that +are just designed for vets." Amen, Enoch. Amen. + +### [Proglogion](https://blog.drwile.com/) + +The blog of my high school science teacher (of sorts). It is refreshing to find +a creationist who can still think critically. I love his "bad sermon +illustrations" posts. + +### [The Milk Check](https://www.jacoby.com/learning-center/podcasts-overview/) + +A pragmatic inside look at dairy marketing. I only understand half of what +they're talking about, but I learn something new every episode. + +### [Brian Harry's Blog](https://devblogs.microsoft.com/bharry/) + +Where else are you going to find a blog about cows _and_ version control? The +blog is basically dead now, but it's still fun to go back and read the farm +stories. + +### [Car Talk](https://cartalk.com/) + +The antics of these guys are enough to make anyone have to pull over to the side +of the road from laughing too much. I dread the day when NPR fully axes the only +good program to cross their airwaves. diff --git a/content/blogroll/brian-harry/index.md b/content/blogroll/brian-harry/index.md deleted file mode 100644 index a75e0bd8..00000000 --- a/content/blogroll/brian-harry/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Brian Harry's blog -link: https://devblogs.microsoft.com/bharry/ ---- - -Where else are you going to find a blog about cows _and_ version control? The -blog is basically dead now, but it's still fun to go back and read the farm -stories. diff --git a/content/blogroll/brian-harry/thumbnail.png b/content/blogroll/brian-harry/thumbnail.png deleted file mode 100644 index 98cd5b5c..00000000 Binary files a/content/blogroll/brian-harry/thumbnail.png and /dev/null differ diff --git a/content/blogroll/car-talk/index.md b/content/blogroll/car-talk/index.md deleted file mode 100644 index ee66c77b..00000000 --- a/content/blogroll/car-talk/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Car Talk -link: https://cartalk.com ---- - -The antics of these guys are enough to make anyone have to pull over to the side -of the road from laughing too much. I dread the day when NPR fully axes the only -good program to cross their airwaves. diff --git a/content/blogroll/car-talk/thumbnail.jpg b/content/blogroll/car-talk/thumbnail.jpg deleted file mode 100644 index d09dcaf1..00000000 Binary files a/content/blogroll/car-talk/thumbnail.jpg and /dev/null differ diff --git a/content/blogroll/enoch-the-cow-vet/index.md b/content/blogroll/enoch-the-cow-vet/index.md deleted file mode 100644 index 0e3f074e..00000000 --- a/content/blogroll/enoch-the-cow-vet/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Enoch the Cow Vet -link: https://youtube.com/channel/UC6PPmHUbcdOSzX5tLB3uXdw ---- - -A veterinarian/agricultural channel that doesn't make me cringe. "God built -these things for cows for vets ... [there are] so many aspects of the cow that -are just designed for vets." Amen, Enoch. Amen. diff --git a/content/blogroll/enoch-the-cow-vet/thumbnail.jpg b/content/blogroll/enoch-the-cow-vet/thumbnail.jpg deleted file mode 100644 index 3e99c2f3..00000000 Binary files a/content/blogroll/enoch-the-cow-vet/thumbnail.jpg and /dev/null differ diff --git a/content/blogroll/proslogion/index.md b/content/blogroll/proslogion/index.md deleted file mode 100644 index f73002f5..00000000 --- a/content/blogroll/proslogion/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Proslogion -link: https://blog.drwile.com ---- - -The blog of my high school science teacher (of sorts). It is refreshing to find -a creationist who can still think critically. I love his "bad sermon -illustrations" posts. diff --git a/content/blogroll/proslogion/thumbnail.jpg b/content/blogroll/proslogion/thumbnail.jpg deleted file mode 100644 index 2369d6cb..00000000 Binary files a/content/blogroll/proslogion/thumbnail.jpg and /dev/null differ diff --git a/content/blogroll/thru-the-bible/index.md b/content/blogroll/thru-the-bible/index.md deleted file mode 100644 index 9863380c..00000000 --- a/content/blogroll/thru-the-bible/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Thru the Bible -link: https://ttb.org ---- - -I'm convinced that the word of God is timeless, and we need less commentary and -cherry-picking of favorite verses, and more study of the complete Bible. Dr. -McGee does just that. diff --git a/content/blogroll/thru-the-bible/thumbnail.jpg b/content/blogroll/thru-the-bible/thumbnail.jpg deleted file mode 100644 index 87c7d57a..00000000 Binary files a/content/blogroll/thru-the-bible/thumbnail.jpg and /dev/null differ diff --git a/content/code/_content.gotmpl b/content/code/_content.gotmpl deleted file mode 100644 index 2992e8b2..00000000 --- a/content/code/_content.gotmpl +++ /dev/null @@ -1,75 +0,0 @@ -{{ $data := dict }} -{{ $url := "https://code.millironx.com/api/v1/users/millironx/repos" }} -{{ with try (resources.GetRemote $url) }} - {{ with .Err }} - {{ errorf "Unable to get remote resource %s: %s" $url . }} - {{ else with .Value }} - {{ $data = . | transform.Unmarshal }} - {{ end }} -{{ else }} - {{ errorf "Unable to get remote resource %s" $url }} -{{ end }} - -{{ range $data }} - {{/* Get tags of this repository. To quote Steve Edstrom, "If it doesn't have a - tag, it doesn't count." - */}} - {{ $tagUrl := print "https://code.millironx.com/api/v1/repos/millironx/" .name "/tags" }} - {{ $tagData := dict }} - {{ with try (resources.GetRemote $tagUrl) }} - {{ with .Err }} - {{ errorf "Unable to get remote resource %s: %s" $tagUrl . }} - {{ else with .Value }} - {{ $tagData = . | transform.Unmarshal }} - {{ end }} - {{ else }} - {{ errorf "Unable to get remote resource %s" $tagUrl }} - {{ end }} - - {{ $firstTag := index $tagData 0 }} - - {{ if $firstTag }} - {{ $dates := dict "date" (time.AsTime $firstTag.commit.created) }} - - {{ $content := dict "mediaType" "text/markdown" "value" .description }} - {{ $categories := slice "code" }} - {{ $people := slice "Thomas A. Christensen II" }} - {{ $link := .html_url }} - {{ $featured := (gt .stars_count 0) }} - {{ $tags := .topics }} - {{ $params := dict - "categories" $categories - "people" $people - "link" $link - "featured" $featured - "tags" $tags - }} - {{ $page := dict - "content" $content - "dates" $dates - "title" .name - "path" .name - "params" $params - }} - {{ $.AddPage $page }} - - {{ $item := . }} - {{ with $url := $item.avatar_url }} - {{ with resources.GetRemote $url }} - {{ with .Err }} - {{ errorf "Unable to get remote resource %s: %s" $url . }} - {{ else }} - {{ $content := dict "mediaType" .MediaType.Type "value" .Content }} - {{ $resource := dict - "content" $content - "path" (print $item.name "/thumbnail." .MediaType.SubType) - }} - {{ $.AddResource $resource }} - {{ end }} - {{ else }} - {{ errorf "Unable to get remote resource %s" $url }} - {{ end }} - {{ end }} - {{ end }} - -{{ end }} diff --git a/content/code/_index.md b/content/code/_index.md deleted file mode 100644 index c7c7df50..00000000 --- a/content/code/_index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Coding projects -menu: - main: - name: Code - params: - icon: code - link: https://code.millironx.com - weight: 50 -fa-thumbnail: code -link: https://code.millironx.com ---- - -A Forgejo instance dedicated to cows and technology diff --git a/content/contact/_index.html b/content/contact/_index.html index 5e2c18f1..79d864c2 100644 --- a/content/contact/_index.html +++ b/content/contact/_index.html @@ -12,25 +12,15 @@ menu: name: Contact params: icon: file-signature - link: mailto:hello@millironx.com weight: 1 fa-thumbnail: file-signature validation: true -suppressRss: true --- - -
Contact Me - + - - -
-