Add human banner, format code.

This commit is contained in:
Andrew Lalis 2026-02-18 16:13:09 -05:00
parent 40ac416804
commit 2b6e4755c9
11 changed files with 341 additions and 340 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue'; import { computed } from 'vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -8,7 +8,7 @@ const props = defineProps<{
}>() }>()
const active = computed(() => { const active = computed(() => {
return props.path !== '/' && route.path.startsWith(props.path) || props.path === route.path return (props.path !== '/' && route.path.startsWith(props.path)) || props.path === route.path
}) })
</script> </script>

View File

@ -28,8 +28,8 @@ const router = createRouter({
path: 'about', path: 'about',
component: AboutView, component: AboutView,
meta: { meta: {
title: "About Andrew (and this site)", title: 'About Andrew (and this site)',
description: "Information about Andrew, and technical information about this website." description: 'Information about Andrew, and technical information about this website.'
} }
}, },
{ {
@ -37,7 +37,7 @@ const router = createRouter({
component: ContactView, component: ContactView,
meta: { meta: {
title: "Andrew's Contact Info", title: "Andrew's Contact Info",
description: "Information for how to get in touch with Andrew." description: 'Information for how to get in touch with Andrew.'
} }
}, },
{ {
@ -45,7 +45,7 @@ const router = createRouter({
component: SoftwareView, component: SoftwareView,
meta: { meta: {
title: "Andrew's Software", title: "Andrew's Software",
description: "A brief collection of software developed by Andrew." description: 'A brief collection of software developed by Andrew.'
} }
}, },
{ {
@ -61,7 +61,7 @@ const router = createRouter({
component: HikingView, component: HikingView,
meta: { meta: {
title: "Andrew's Hiking", title: "Andrew's Hiking",
description: "A logbook of notable summits and hikes Andrew has completed." description: 'A logbook of notable summits and hikes Andrew has completed.'
} }
}, },
{ {
@ -69,7 +69,8 @@ const router = createRouter({
component: LogBookView, component: LogBookView,
meta: { meta: {
title: "Andrew's Logbook", title: "Andrew's Logbook",
description: "Interactive messageboard where people can leave a public note on Andrew's website." description:
"Interactive messageboard where people can leave a public note on Andrew's website."
} }
} }
] ]
@ -94,7 +95,7 @@ const router = createRouter({
router.afterEach((to) => { router.afterEach((to) => {
nextTick(() => { nextTick(() => {
// Set document title if available. // Set document title if available.
if (to.meta.title && typeof(to.meta.title) === 'string') { if (to.meta.title && typeof to.meta.title === 'string') {
document.title = to.meta.title document.title = to.meta.title
} else { } else {
document.title = 'Andrew Lalis' document.title = 'Andrew Lalis'
@ -102,7 +103,7 @@ router.afterEach((to) => {
// Set document description meta tag if available. // Set document description meta tag if available.
const metaTag = document.querySelector("meta[name='description']") as HTMLMetaElement const metaTag = document.querySelector("meta[name='description']") as HTMLMetaElement
if (metaTag) { if (metaTag) {
if (to.meta.description && typeof(to.meta.description) === 'string') { if (to.meta.description && typeof to.meta.description === 'string') {
metaTag.content = to.meta.description metaTag.content = to.meta.description
} else { } else {
metaTag.content = "Andrew's homepage on the internet." metaTag.content = "Andrew's homepage on the internet."

View File

@ -31,12 +31,11 @@
<h3>About Me</h3> <h3>About Me</h3>
<p> <p>
Like you saw on the homepage, I'm a software engineer, pilot, gardener, Like you saw on the homepage, I'm a software engineer, pilot, gardener, hiker, and lots of
hiker, and lots of other things; once you do enough things, the labels other things; once you do enough things, the labels start to become pointless. I currently
start to become pointless. I currently live in Florida with my partner live in Florida with my partner Grace (who's a teacher, by the way), and our cat Finn. We like
Grace (who's a teacher, by the way), and our cat Finn. We like to spend to spend our time going to Disney, exploring new restaurants, and enjoying modern media
our time going to Disney, exploring new restaurants, and enjoying modern (movies, shows, video games, etc.).
media (movies, shows, video games, etc.).
</p> </p>
</main> </main>
</template> </template>

View File

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import GardenSpeciesCard from '@/components/GardenSpeciesCard.vue'; import GardenSpeciesCard from '@/components/GardenSpeciesCard.vue'
import { SPECIES } from '@/garden_data'; import { SPECIES } from '@/garden_data'
const sortedSpecies = [...SPECIES].sort((a, b) => const sortedSpecies = [...SPECIES].sort((a, b) =>
a['Scientific Name'] > b['Scientific Name'] ? 1 : -1 a['Scientific Name'] > b['Scientific Name'] ? 1 : -1
@ -11,10 +11,7 @@ const sortedSpecies = [...SPECIES].sort((a, b) =>
<h1>My Home's Garden</h1> <h1>My Home's Garden</h1>
</header> </header>
<main> <main>
<p> <p>On this page, you'll find a list of all plants currently (or formerly) in my garden.</p>
On this page, you'll find a list of all plants currently (or formerly)
in my garden.
</p>
<p> <p>
I keep a spreadsheet of all the species in my garden (or that have been present in the past). I keep a spreadsheet of all the species in my garden (or that have been present in the past).
In total, my garden currently has <strong>52 unique species</strong>, with In total, my garden currently has <strong>52 unique species</strong>, with
@ -25,8 +22,12 @@ const sortedSpecies = [...SPECIES].sort((a, b) =>
</p> </p>
<div class="garden-cards-container"> <div class="garden-cards-container">
<GardenSpeciesCard v-for="species in sortedSpecies" :key="species['Scientific Name']" :species="species" <GardenSpeciesCard
style="width: 300px;" /> v-for="species in sortedSpecies"
:key="species['Scientific Name']"
:species="species"
style="width: 300px"
/>
</div> </div>
</main> </main>
</template> </template>

View File

@ -1,5 +1,4 @@
<script setup lang="ts"> <script setup lang="ts"></script>
</script>
<template> <template>
<header> <header>
<h1>My Herb Garden</h1> <h1>My Herb Garden</h1>
@ -9,23 +8,22 @@
</header> </header>
<main> <main>
<p> <p>
Towards the end of the western portion of the garden, I've set up a Towards the end of the western portion of the garden, I've set up a small patch of common
small patch of common kitchen herbs so that we don't have to buy kitchen herbs so that we don't have to buy overpriced stuff from grocery stores.
overpriced stuff from grocery stores.
</p> </p>
<p> <p>
As you can see, there's more here than we can use ourselves, so if As you can see, there's more here than we can use ourselves, so if you're in the area and
you're in the area and would like some, feel free to get your would like some, feel free to get your scissors and take a bit for whatever you're cooking.
scissors and take a bit for whatever you're cooking. All I ask is All I ask is that you please
that you please <strong>only take what you need, and refrain from <strong
pruning anything that looks like it's not very abundant</strong>. >only take what you need, and refrain from pruning anything that looks like it's not very
With your respectful cooperation, I can easily maintain these herbs abundant</strong
for many people to use. >. With your respectful cooperation, I can easily maintain these herbs for many people to use.
</p> </p>
<div class="status-note"> <div class="status-note">
<p> <p>
Note: At this time, I'm still trying to get the following herbs Note: At this time, I'm still trying to get the following herbs established, so please don't
established, so please don't take any of these: take any of these:
</p> </p>
<ul> <ul>
<li>Mojito Mint</li> <li>Mojito Mint</li>
@ -34,14 +32,11 @@
<li>Chamomile</li> <li>Chamomile</li>
<li>Basil</li> <li>Basil</li>
</ul> </ul>
<p> <p>I also just pruned the Oregano, so please don't take too much of that.</p>
I also just pruned the Oregano, so please don't take too much
of that.
</p>
</div> </div>
<p> <p>
The image below provides a quick reference guide on which herbs are The image below provides a quick reference guide on which herbs are which, but if you have any
which, but if you have any other questions, other questions,
<RouterLink to="/contact" class="link-local">feel free to ask.</RouterLink> <RouterLink to="/contact" class="link-local">feel free to ask.</RouterLink>
</p> </p>
<img src="@/assets/images/herb-guide.jpg" /> <img src="@/assets/images/herb-guide.jpg" />
@ -49,47 +44,44 @@
<section> <section>
<h2>Basic Herb Usage Guide</h2> <h2>Basic Herb Usage Guide</h2>
<p> <p>
Since it might be helpful, here's a brief guide on where you Since it might be helpful, here's a brief guide on where you might want to use the herbs
might want to use the herbs growing in the garden: growing in the garden:
</p> </p>
<ul> <ul>
<li> <li>
<strong><u>Mint and Chamomile</u></strong> can be used in various <strong><u>Mint and Chamomile</u></strong> can be used in various cocktails, or sparingly
cocktails, or sparingly in baked goods, or added to tea. in baked goods, or added to tea.
</li> </li>
<li> <li>
<strong><u>Chives</u></strong> add a splash of green, and a fresh <strong><u>Chives</u></strong> add a splash of green, and a fresh allium flavor, and can
allium flavor, and can be chopped finely to garnish pretty be chopped finely to garnish pretty much any dish, especially things like stews, potatoes,
much any dish, especially things like stews, potatoes, or or meats.
meats.
</li> </li>
<li> <li>
<strong><u>Oregano</u></strong> is a great all-purpose herb that <strong><u>Oregano</u></strong> is a great all-purpose herb that you can add to pizzas,
you can add to pizzas, sauces, and basically any Italian, sauces, and basically any Italian, Mexican, or Mediterranean dish.
Mexican, or Mediterranean dish.
</li> </li>
<li> <li>
<strong><u>Rosemary</u></strong> has a strong, evergreen flavor <strong><u>Rosemary</u></strong> has a strong, evergreen flavor that pairs well with beef
that pairs well with beef dishes and slow-cooked stews dishes and slow-cooked stews and soups.
and soups.
</li> </li>
<li> <li>
<strong><u>Thyme</u></strong>, like rosemary, is quite universal <strong><u>Thyme</u></strong
in its applications, but works especially well on chicken, >, like rosemary, is quite universal in its applications, but works especially well on
lamb, and other lighter meats, or when infused in oil for chicken, lamb, and other lighter meats, or when infused in oil for salad dressings.
salad dressings.
</li> </li>
<li> <li>
<strong><u>Basil</u></strong>, with its distinct, almost spicy <strong><u>Basil</u></strong
aroma, can be added directly to salads or chopped up and >, with its distinct, almost spicy aroma, can be added directly to salads or chopped up
thrown into a tomato sauce or onto a pizza. and thrown into a tomato sauce or onto a pizza.
</li> </li>
</ul> </ul>
</section> </section>
</main> </main>
</template> </template>
<style scoped> <style scoped>
h1,h2 { h1,
h2 {
text-align: center; text-align: center;
} }

View File

@ -1,18 +1,20 @@
<script setup lang="ts"> <script setup lang="ts"></script>
</script>
<template> <template>
<main> <main>
<p> <p>
I'd like to call myself an avid gardener, with a particular interest in creating native-friendly garden habitats. I'd like to call myself an avid gardener, with a particular interest in creating
native-friendly garden habitats.
</p> </p>
<p> <p>
I work on my own garden that I share with my partner, and I like to help out with others' too. So if you're I work on my own garden that I share with my partner, and I like to help out with others' too.
thinking about killing your lawn and providing a space for non-invasive and native species to thrive, So if you're thinking about killing your lawn and providing a space for non-invasive and
I'd be happy to help! native species to thrive, I'd be happy to help!
</p> </p>
<p> <p>
<a href="/gardening/herbs" class="link-local">Click here to view a guide to my garden's herb patch.</a> <a href="/gardening/herbs" class="link-local"
>Click here to view a guide to my garden's herb patch.</a
>
</p> </p>
</main> </main>
</template> </template>

View File

@ -1,11 +1,9 @@
<script setup lang="ts"> <script setup lang="ts"></script>
</script>
<template> <template>
<main> <main>
<p> <p>
Once in a while, I'll go out hiking, so here's a record of all the Once in a while, I'll go out hiking, so here's a record of all the mountains I've sumitted.
mountains I've sumitted.
</p> </p>
<div class="hiking-entry"> <div class="hiking-entry">
<header> <header>
@ -13,13 +11,15 @@
<time datetime="2025-07-16">July 16th, 2025</time> <time datetime="2025-07-16">July 16th, 2025</time>
</header> </header>
<p> <p>
A 7-mile out-and-back run / hike which started at the Spirit A 7-mile out-and-back run / hike which started at the Spirit River casino in Tulsa,
River casino in Tulsa, Oklahoma, and crossed the Arkansas River Oklahoma, and crossed the Arkansas River and climbed 300 feet to the lookout point on Turkey
and climbed 300 feet to the lookout point on Turkey Mountain. Mountain.
</p> </p>
<div class="hiking-entry-attributes"> <div class="hiking-entry-attributes">
<span class="elevation">912 ft.</span> <span class="elevation">912 ft.</span>
<a href="https://www.strava.com/activities/15133078684" class="strava-link" target="_blank">Strava</a> <a href="https://www.strava.com/activities/15133078684" class="strava-link" target="_blank"
>Strava</a
>
</div> </div>
</div> </div>
<div class="hiking-entry"> <div class="hiking-entry">
@ -28,14 +28,15 @@
<time datetime="2025-05-25">May 25th, 2025</time> <time datetime="2025-05-25">May 25th, 2025</time>
</header> </header>
<p> <p>
Starting at Wakeena Falls, we first hiked over to Multnomah Starting at Wakeena Falls, we first hiked over to Multnomah Falls, then up into the Mt. Hood
Falls, then up into the Mt. Hood Wilderness on the Larch Wilderness on the Larch Mountain Trail. It was a very long hike, taking just about 8 hours
Mountain Trail. It was a very long hike, taking just about 8 to complete the entire 16-mile distance.
hours to complete the entire 16-mile distance.
</p> </p>
<div class="hiking-entry-attributes"> <div class="hiking-entry-attributes">
<span class="elevation">4,056 ft.</span> <span class="elevation">4,056 ft.</span>
<a href="https://www.strava.com/activities/14595451892" class="strava-link" target="_blank">Strava</a> <a href="https://www.strava.com/activities/14595451892" class="strava-link" target="_blank"
>Strava</a
>
<a href="https://youtu.be/9A5dGchdbeM" class="youtube-link" target="_blank">YouTube</a> <a href="https://youtu.be/9A5dGchdbeM" class="youtube-link" target="_blank">YouTube</a>
</div> </div>
</div> </div>
@ -45,13 +46,14 @@
<time datetime="2025-04-12">April 12th, 2025</time> <time datetime="2025-04-12">April 12th, 2025</time>
</header> </header>
<p> <p>
After sumitting King's Mountain, we headed back down for a much After sumitting King's Mountain, we headed back down for a much more technical climb to Elk
more technical climb to Elk Mountain, involving sketchy trails Mountain, involving sketchy trails with steep drop-offs, and a lot of scrambling over rocks.
with steep drop-offs, and a lot of scrambling over rocks.
</p> </p>
<div class="hiking-entry-attributes"> <div class="hiking-entry-attributes">
<span class="elevation">2,788 ft.</span> <span class="elevation">2,788 ft.</span>
<a href="https://www.strava.com/activities/14160565820" class="strava-link" target="_blank">Strava</a> <a href="https://www.strava.com/activities/14160565820" class="strava-link" target="_blank"
>Strava</a
>
</div> </div>
</div> </div>
<div class="hiking-entry"> <div class="hiking-entry">
@ -60,13 +62,14 @@
<time datetime="2025-04-12">April 12th, 2025</time> <time datetime="2025-04-12">April 12th, 2025</time>
</header> </header>
<p> <p>
Summitted as the first part of the King's Mountain / Elk Summitted as the first part of the King's Mountain / Elk Mountain 10-mile loop. This one
Mountain 10-mile loop. This one wasn't technical, but just wasn't technical, but just a very long, brutal uphill climb.
a very long, brutal uphill climb.
</p> </p>
<div class="hiking-entry-attributes"> <div class="hiking-entry-attributes">
<span class="elevation">3,226 ft.</span> <span class="elevation">3,226 ft.</span>
<a href="https://www.strava.com/activities/14160565820" class="strava-link" target="_blank">Strava</a> <a href="https://www.strava.com/activities/14160565820" class="strava-link" target="_blank"
>Strava</a
>
</div> </div>
</div> </div>
<div class="hiking-entry"> <div class="hiking-entry">
@ -75,13 +78,14 @@
<time datetime="2024-09-21">September 21st, 2024</time> <time datetime="2024-09-21">September 21st, 2024</time>
</header> </header>
<p> <p>
My first actual "mountain" summit, when I visted Oregon in the My first actual "mountain" summit, when I visted Oregon in the fall of 2024. It was a great
fall of 2024. It was a great hike, but since I had never hike, but since I had never climbed any mountains before, it was exhausting.
climbed any mountains before, it was exhausting.
</p> </p>
<div class="hiking-entry-attributes"> <div class="hiking-entry-attributes">
<span class="elevation">1,475 ft.</span> <span class="elevation">1,475 ft.</span>
<a href="https://www.strava.com/activities/12471616389" class="strava-link" target="_blank">Strava</a> <a href="https://www.strava.com/activities/12471616389" class="strava-link" target="_blank"
>Strava</a
>
</div> </div>
</div> </div>
</main> </main>

View File

@ -3,11 +3,9 @@
<template> <template>
<main> <main>
<p> <p>
My name's Andrew, and I'm a software engineer, pilot, gardener, runner, home cook, and probably many My name's Andrew, and I'm a software engineer, pilot, gardener, runner, home cook, and
other things too, depending on who you ask. Welcome to my website! probably many other things too, depending on who you ask. Welcome to my website!
</p>
<p>
Click one of the links to check out something more interesting.
</p> </p>
<p>Click one of the links to check out something more interesting.</p>
</main> </main>
</template> </template>

View File

@ -7,7 +7,7 @@ See src/router/index.ts to see the nested set of routes that use this component.
--> -->
<script setup lang="ts"> <script setup lang="ts">
import { RouterView } from 'vue-router' import { RouterView } from 'vue-router'
import NavLink from '@/components/NavLink.vue'; import NavLink from '@/components/NavLink.vue'
</script> </script>
<template> <template>
<div class="bisection-container"> <div class="bisection-container">
@ -21,6 +21,11 @@ import NavLink from '@/components/NavLink.vue';
<NavLink path="/hiking">Hiking</NavLink> <NavLink path="/hiking">Hiking</NavLink>
<NavLink path="/logbook">Logbook</NavLink> <NavLink path="/logbook">Logbook</NavLink>
<NavLink path="/contact">Contact</NavLink> <NavLink path="/contact">Contact</NavLink>
<div id="badges" style="text-align: right; margin: 1rem 0">
<a href="https://cadence.moe/blog/2024-10-05-created-by-a-human-badges">
<img src="@/assets/images/created-by-a-human-with-a-brain-1x.png" />
</a>
</div>
</nav> </nav>
</header> </header>

View File

@ -23,10 +23,9 @@ import SoftwareProjectTile from '@/components/SoftwareProjectTile.vue'
:tags="['Dlang', 'Vue', 'Typescript', 'Finance']" :tags="['Dlang', 'Vue', 'Typescript', 'Finance']"
> >
<p> <p>
An evolution of my previous desktop app <em>Perfin</em>, this is a An evolution of my previous desktop app <em>Perfin</em>, this is a web application that
web application that provides a more universal platform for personal provides a more universal platform for personal finance management, with responsive views
finance management, with responsive views and more comprehensive and more comprehensive tools for searching, along with so many other improvements over the
tools for searching, along with so many other improvements over the
first iteration. first iteration.
</p> </p>
</SoftwareProjectTile> </SoftwareProjectTile>