-
-
diff --git a/src/about.md b/src/about.md
deleted file mode 100644
index 97a91d8..0000000
--- a/src/about.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# About
-
-[![Actions Status](https://github.com/bcomnes/bret.io/workflows/tests/badge.svg)](https://github.com/bcomnes/bret.io/actions)
-![Deploy to neociteis](https://github.com/bcomnes/bret.io/workflows/Deploy%20to%20neociteis/badge.svg)
-
-This is a simple professional website that is generated using [bcomnes/siteup](https://github.com/bcomnes/siteup).
\ No newline at end of file
diff --git a/src/about/README.md b/src/about/README.md
new file mode 100644
index 0000000..e119018
--- /dev/null
+++ b/src/about/README.md
@@ -0,0 +1,7 @@
+# About
+
+This is [Bret Comnes](https://bret.io)' personal website built with the follwowing tools:
+
+```json
+{{{ vars.pkg }}}
+```
diff --git a/src/about/page.vars.js b/src/about/page.vars.js
new file mode 100644
index 0000000..5b1d72a
--- /dev/null
+++ b/src/about/page.vars.js
@@ -0,0 +1,11 @@
+import { readFile } from 'node:fs/promises'
+import { join } from 'node:path'
+const __dirname = import.meta.dirname
+
+export default async () => {
+ const pkg = await readFile(join(__dirname, '../../package.json'))
+
+ return {
+ pkg
+ }
+}
diff --git a/src/blog/2023/page.js b/src/blog/2023/page.js
index ea408ff..27f6544 100644
--- a/src/blog/2023/page.js
+++ b/src/blog/2023/page.js
@@ -1,6 +1,6 @@
/**
* @template T
- * @typedef {import('@siteup/cli').PageFunction} PageFunction
+ * @typedef {import('top-bun').PageFunction} PageFunction
*/
export const vars = {
diff --git a/src/blog/2023/reorganized/README.md b/src/blog/2023/reorganized/README.md
new file mode 100644
index 0000000..a3b52e9
--- /dev/null
+++ b/src/blog/2023/reorganized/README.md
@@ -0,0 +1,24 @@
+---
+layout: article
+title: "Reorganized"
+publishDate: "2023-12-02T20:49:41.713Z"
+---
+
+Behold, a mildly redesigned and reorganized landing page:
+
+![screenshot of the new website](./img/screenshot.png)
+
+It's still not great, but it should make it easier to keep it up to date going forward.
+
+It has 3 sections:
+
+- [Featured Projects](/#): important projects of note.
+- [Recent Posts](/#recent-posts ): now that this site has proper blog support, I can highlight recent posts on the landing page.
+- [Open Source](/#open-source): interesting and notable projects that have found some use and that I still maintain. This section now includes a bunch of open source work from the past year that I've never had time to write about.
+- [Past projects](/#past-projects): inactive projects that are not longer active, but still interesting enough to share.
+
+I removed a bunch of older inactive projects and links and stashed them in a [project](/projects/previous-projects/).
+
+Additionally, the edit button in the page footer now takes you to the correct page in GitHub for editing, so if you ever see a typo, feel free to send in a fix!
+
+Finally, the [about](/about/) page includes a live dump of the dependencies that were used to build the website.
diff --git a/src/blog/2023/reorganized/img/screenshot.png b/src/blog/2023/reorganized/img/screenshot.png
new file mode 100644
index 0000000..ce79c4f
--- /dev/null
+++ b/src/blog/2023/reorganized/img/screenshot.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5b83050d2250a721358b11412476678db48e2ce4ec140348b4a391f9924b110
+size 346564
diff --git a/src/blog/page.js b/src/blog/page.js
index c4bf42e..7df98df 100644
--- a/src/blog/page.js
+++ b/src/blog/page.js
@@ -3,7 +3,7 @@ import { dirname, basename } from 'node:path'
/**
* @template T
- * @typedef {import('@siteup/cli').PageFunction} PageFunction
+ * @typedef {import('top-bun').PageFunction} PageFunction
*/
export const vars = {
diff --git a/src/booklist.md b/src/booklist.md
deleted file mode 100644
index 959a169..0000000
--- a/src/booklist.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Booklist
-
-Books I've read and enjoyed for various reasons.
-
-
-## Technical Books
-
-### Javascript
-
-### Go
-
-### Swift & Objective-C
-
-### Unix
-
-## Non-Fiction
-
-## Fiction
-
diff --git a/src/components/blog-index-list/index.css b/src/components/blog-index-list/index.css
new file mode 100644
index 0000000..0288308
--- /dev/null
+++ b/src/components/blog-index-list/index.css
@@ -0,0 +1,15 @@
+.blog-index-list {
+ padding-left: 0px;
+
+ & .blog-entry {
+ width: 100%;
+ display: inline-flex;
+ justify-content: space-between;
+ }
+ & .blog-entry-link {}
+ & .blog-entry-date {
+ color: var(--accent-foreground);
+ font-family: var(--font-code);
+ flex-shrink: 0;
+ }
+}
diff --git a/src/language-bullets.css b/src/components/language-bullets.css
similarity index 93%
rename from src/language-bullets.css
rename to src/components/language-bullets.css
index 454e0c5..932cc1f 100644
--- a/src/language-bullets.css
+++ b/src/components/language-bullets.css
@@ -40,6 +40,10 @@ li.objc::before {
color: #6866fb;
}
+li.cpp::before {
+ color: #f34b7d;
+}
+
li.docker::before {
color: #384d54;
}
diff --git a/src/feeds.template.js b/src/feeds.template.js
index 5a59e67..bdc0e1d 100644
--- a/src/feeds.template.js
+++ b/src/feeds.template.js
@@ -3,7 +3,7 @@ import jsonfeedToAtom from 'jsonfeed-to-atom'
/**
* @template T
- * @typedef {import('@siteup/cli').TemplateAsyncIterator} TemplateAsyncIterator
+ * @typedef {import('top-bun').TemplateAsyncIterator} TemplateAsyncIterator
*/
/** @type {TemplateAsyncIterator<{
diff --git a/src/globals/global.css b/src/globals/global.css
index 02797a6..c2bd6cd 100644
--- a/src/globals/global.css
+++ b/src/globals/global.css
@@ -60,7 +60,7 @@ footer > .top-bar-link:first-child {
margin-left: unset;
}
-@media screen and (max-width: 72em) {
+@media screen and (max-width: 106em) {
footer.top-bar {
position: inherit;
top: inherit;
@@ -68,7 +68,7 @@ footer > .top-bar-link:first-child {
}
}
-@media screen and (max-width: 78em) {
+@media screen and (max-width: 106em) {
nav.top-bar {
backdrop-filter: contrast(100%) blur(10px);
z-index: 1; /* float over interactive content below */
diff --git a/src/globals/global.vars.js b/src/globals/global.vars.js
index 14eca42..fe9230a 100644
--- a/src/globals/global.vars.js
+++ b/src/globals/global.vars.js
@@ -6,6 +6,7 @@ export default async function globalVars () {
authorName: 'Bret Comnes',
authorUrl: 'https://bret.io',
authorImgUrl: '/favicons/apple-touch-icon-1024x1024.png',
- authorImgAlt: 'Picture of author'
+ authorImgAlt: 'Picture of author',
+ githubRootUrl: 'https://github.com/bcomnes/bret.io/blob/master/src/'
}
}
diff --git a/src/static/atom.svg b/src/globals/static/atom.svg
similarity index 100%
rename from src/static/atom.svg
rename to src/globals/static/atom.svg
diff --git a/src/static/bsky.png b/src/globals/static/bsky.png
similarity index 100%
rename from src/static/bsky.png
rename to src/globals/static/bsky.png
diff --git a/src/static/github.svg b/src/globals/static/github.svg
similarity index 100%
rename from src/static/github.svg
rename to src/globals/static/github.svg
diff --git a/src/static/jsonfeed.svg b/src/globals/static/jsonfeed.svg
similarity index 100%
rename from src/static/jsonfeed.svg
rename to src/globals/static/jsonfeed.svg
diff --git a/src/static/light-dark.svg b/src/globals/static/light-dark.svg
similarity index 100%
rename from src/static/light-dark.svg
rename to src/globals/static/light-dark.svg
diff --git a/src/static/mastodon.svg b/src/globals/static/mastodon.svg
similarity index 100%
rename from src/static/mastodon.svg
rename to src/globals/static/mastodon.svg
diff --git a/src/static/neocitieshead.svg b/src/globals/static/neocitieshead.svg
similarity index 100%
rename from src/static/neocitieshead.svg
rename to src/globals/static/neocitieshead.svg
diff --git a/src/static/npm.svg b/src/globals/static/npm.svg
similarity index 100%
rename from src/static/npm.svg
rename to src/globals/static/npm.svg
diff --git a/src/static/twtr.svg b/src/globals/static/twtr.svg
similarity index 100%
rename from src/static/twtr.svg
rename to src/globals/static/twtr.svg
diff --git a/src/jobs/landrover.md b/src/jobs/landrover.md
deleted file mode 100644
index 8dd3e4d..0000000
--- a/src/jobs/landrover.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# Jaguar Land Rover
-
-At Jaguar Land Rover I worked as a Javascript developer working on various internal infrastructure products and product prototype applications.
-
-## Infotainment Prototypes
-
-I was lead developer on various in-vehicle operating system prototypes targeting the following experiences:
-
-- Rear seat infotainment systems.
-- Application IO architecture relating to communication with vehicular CAN buses.
-- Express based (Node.js) servers for coordinating applications running across multiple screens.
-- Prototype implementations of JLR's next generation in vehicle operating system.
-- Hardware accelerated GUIs using Qt.
-- Implementing novel media library experiences and HMIs.
-- Facilitate user testing and focus sessions.
-
-## Internal infrastrucutre
-
-The JLR Portland office had recently opened when I joined and I was able to contribute in various ways to their internal infrastructure.
-
-### SSO
-
-I designed and developed a custom single sign-on service for the on-premise hosted infrastructure using the following technologies:
-
-- Express
-- Browserify
-- Passport
-- Node.js
-- Debian
-- Google apps
-
-### Documentation server
-
-I developed a custom documentation server that integrated with the SSO service that provided a CI service for building and updating various internal documentation websites that use various static site generators. Built with:
-
-- Express
-- Browserify
-- Nginx
-- Jekyll
-- Metalsmith
-
-*[HMI]: Human machine interface
-*[CAN]: Controller area network
-*[SSO]: Single Sign On
-*[CI]: Continuous integration
diff --git a/src/jobs/page.js b/src/jobs/page.js
index 342a749..295de2e 100644
--- a/src/jobs/page.js
+++ b/src/jobs/page.js
@@ -1,6 +1,6 @@
/**
* @template T
- * @typedef {import('@siteup/cli').PageFunction} PageFunction
+ * @typedef {import('top-bun').PageFunction} PageFunction
*/
export const vars = {
diff --git a/src/jobs/psu.md b/src/jobs/psu.md
deleted file mode 100644
index e5965a9..0000000
--- a/src/jobs/psu.md
+++ /dev/null
@@ -1 +0,0 @@
-# PSU Academic Research Computing
diff --git a/src/jobs/zhealth.md b/src/jobs/zhealth.md
deleted file mode 100644
index 0a6d4ce..0000000
--- a/src/jobs/zhealth.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Zhealth Etch CV Suite
-
-At Zhealth, I helped develop a custom structured documentation app for doctors and physicians in cardiac surgery centers. The app's claim to fame was its ability reduce a 30 minute documentation session down to 3 minutes, while recording precise observations that wasn't possible by the standard 'by hand' recording methods.
-
-Etch implemented a custom interactive SVG bodymap engine that allowed for direct input on top of an industry standard cardiac model.
-
-## Etch CV
-
-## Registry
-
-## IT and small office support
diff --git a/src/layouts/blog-auto-index.layout.js b/src/layouts/blog-auto-index.layout.js
index 14aebb9..f5de41c 100644
--- a/src/layouts/blog-auto-index.layout.js
+++ b/src/layouts/blog-auto-index.layout.js
@@ -3,7 +3,7 @@ import { dirname } from 'node:path'
/**
* @template T
- * @typedef {import('@siteup/cli').LayoutFunction} LayoutFunction
+ * @typedef {import('top-bun').LayoutFunction} LayoutFunction
*/
/**
diff --git a/src/layouts/blog-index.layout.css b/src/layouts/blog-index.layout.css
index 333ca5b..6685fb3 100644
--- a/src/layouts/blog-index.layout.css
+++ b/src/layouts/blog-index.layout.css
@@ -1,19 +1,2 @@
@import '../components/breadcrumb/index.css';
-
-
-.blog-index-list {
- padding-left: 0px;
-
- & .blog-entry {
- width: 100%;
- display: inline-flex;
- justify-content: space-between;
- }
- & .blog-entry-link {}
- & .blog-entry-date {
- color: var(--accent-foreground);
- font-family: var(--font-code);
- flex-shrink: 0;
- }
-}
-
+@import '../components/blog-index-list/index.css';
diff --git a/src/layouts/blog-index.layout.js b/src/layouts/blog-index.layout.js
index c61e19b..ee6e7be 100644
--- a/src/layouts/blog-index.layout.js
+++ b/src/layouts/blog-index.layout.js
@@ -4,7 +4,7 @@ import { breadcrumb } from '../components/breadcrumb/index.js'
/**
* @template T
- * @typedef {import('@siteup/cli').LayoutFunction} LayoutFunction
+ * @typedef {import('top-bun').LayoutFunction} LayoutFunction
*/
/**
diff --git a/src/layouts/root.layout.js b/src/layouts/root.layout.js
index 9e8aa8a..3dfdee9 100644
--- a/src/layouts/root.layout.js
+++ b/src/layouts/root.layout.js
@@ -2,13 +2,14 @@ import { html } from 'uhtml-isomorphic'
/**
* @template T
- * @typedef {import('@siteup/cli').LayoutFunction} LayoutFunction
+ * @typedef {import('top-bun').LayoutFunction} LayoutFunction
*/
/**
* @typedef {{
* title: string,
* siteName: string,
+ * githubRootUrl: string,
* [key: string]: any
* }} RootLayoutVars
*/
@@ -17,11 +18,14 @@ import { html } from 'uhtml-isomorphic'
export default async function rootLayout ({
vars: {
title,
- siteName
+ siteName,
+ githubRootUrl
},
scripts,
styles,
- children
+ children,
+ page
+ /* pages */
}) {
return html`
@@ -79,15 +83,15 @@ export default async function rootLayout ({
hifiwi.fi
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -96,7 +100,7 @@ export default async function rootLayout ({